From 5c519f9665abe4a8e4b1bc7617b22704602fb8b2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 7 Aug 2019 10:15:35 -0400 Subject: [PATCH 001/339] Start teaching hushd to track various stats about shielded xtns --- src/chain.h | 28 ++++++++++++++++++++++++++++ src/main.cpp | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/src/chain.h b/src/chain.h index b893e3a06..ce7ca7014 100644 --- a/src/chain.h +++ b/src/chain.h @@ -263,6 +263,29 @@ public: //! Change to 64-bit type when necessary; won't happen before 2030 unsigned int nChainTx; + //! (memory only) Number of shielded transactions (of any kind) in the chain up to and including this block. + //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes + //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as + //! inputs and outputs. + int64_t nShieldedChainTx; + + //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined + //! as a transaction containing JoinSplits and only shielded inputs and outputs + int64_t nFullyShieldedChainTx; + + //! (memory only) Number of deshielding transactions. A deshielding transaction is defined + //! as a transaction containing JoinSplits and at least one transparent output. + int64_t nDeshieldingChainTx; + + //! (memory only) Number of shielding transactions. A shielding transaction is defined + //! as a transaction containing JoinSplits and at least one transparent input + int64_t nShieldingChainTx; + + + //! (memory only) Number of shielding transactions which contain multiple shielded input notes + //! z_sendmany cannot make these and so it indicates raw shielded transaction usage currently + int64_t nMultipleShieldedInputsChainTx; + //! Verification status of this block. See enum BlockStatus unsigned int nStatus; @@ -321,6 +344,11 @@ public: chainPower = CChainPower(); nTx = 0; nChainTx = 0; + nShieldedChainTx = 0; + nShieldingChainTx = 0; + nDeshieldingChainTx = 0; + nFullyShieldedChainTx = 0; + nMultipleShieldedInputsChainTx = 0; nStatus = 0; nCachedBranchId = boost::none; hashSproutAnchor = uint256(); diff --git a/src/main.cpp b/src/main.cpp index e01cba61f..cef96d381 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4734,6 +4734,11 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl while (!queue.empty()) { CBlockIndex *pindex = queue.front(); queue.pop_front(); + // TODO: Count zxtns properly, even amount=0 xtns + // TODO: count number of joinsplits instead + if(saplingValue>0) { + pindex->nShieldedChainTx = pindex->nShieldedChainTx ? 0 : pindex->nShieldedChainTx + 1; + } pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; if (pindex->pprev) { if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { From bfe058f29b51270f01fff33d0915e75dceb25b08 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 8 Aug 2019 13:27:27 -0400 Subject: [PATCH 002/339] Keep track of more zxtn stats --- src/main.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index cef96d381..d52d3a557 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4700,8 +4700,14 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl { pindexNew->nTx = block.vtx.size(); pindexNew->nChainTx = 0; + pindexNew->nShieldedChainTx = 0; CAmount sproutValue = 0; CAmount saplingValue = 0; + int64_t nShieldedSpends=0,nShieldedOutputs=0; + int64_t nShieldedPayments=0; + int64_t nFullyShielded=0,nShielding=0,nDeshielding=0,nMultipleShieldedInputs=0; + bool hasShieldedTx = false; + for (auto tx : block.vtx) { // Negative valueBalance "takes" money from the transparent value pool // and adds it to the Sapling value pool. Positive valueBalance "gives" @@ -4713,6 +4719,41 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue += js.vpub_old; sproutValue -= js.vpub_new; } + nShieldedSpends = tx.vShieldedSpend.size(); + nShieldedOutputs = tx.vShieldedOutput.size(); + + // If we have not seen any zxtns, see if current xtn has any + if(!hasShieldedTx) { + hasShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; + } + if(hasShieldedTx) { + if(tx.vin.size()==0 && tx.vout.size()==0) { + nFullyShielded++; + } + if(tx.vin.size()>0) { + nShielding++; + } + if(tx.out.size()>0) { + nDeshielding++; + } + if(nShieldedSpends>1) { + nMultipleShieldedInputs++; + } + //TODO: These are at best heuristics. Improve them as much as possible + //NOTE: You cannot compare payment data from different sets of heuristics + + if (nShieldedOutputs > 1) { + // If there are multiple shielded outputs, count each as a payment + nShieldedPayments += nShieldedOutputs; + } else { + nShieldedPayments++; + } + if (nShieldedSpends==1) { + // If we see a single zaddr input, that counts as a single shielded payment + nShieldedPayments++; + } + + } } pindexNew->nSproutValue = sproutValue; pindexNew->nChainSproutValue = boost::none; @@ -4734,10 +4775,12 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl while (!queue.empty()) { CBlockIndex *pindex = queue.front(); queue.pop_front(); - // TODO: Count zxtns properly, even amount=0 xtns - // TODO: count number of joinsplits instead - if(saplingValue>0) { - pindex->nShieldedChainTx = pindex->nShieldedChainTx ? 0 : pindex->nShieldedChainTx + 1; + + // Keep track of shielded transaction stats + if(hasShieldedTx) { + pindex->vShieldedSpend; + pindex->vShieldedOutput; + pindex->nShieldedChainTx = pindex->nShieldedChainTx ? 0 : pindex->nShieldedChainTx + 1; } pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; if (pindex->pprev) { From 188b44937b5e654bb3bf04f1d831459e9af8a80e Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 8 Aug 2019 16:47:46 -0700 Subject: [PATCH 003/339] Clean up and improve some definitions of shielded stats; fix some compiler issues --- src/chain.h | 53 +++++++++++++++++++++++++++++++++++++++------------- src/main.cpp | 14 ++++++++------ 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/chain.h b/src/chain.h index ce7ca7014..077ad92d8 100644 --- a/src/chain.h +++ b/src/chain.h @@ -263,28 +263,51 @@ public: //! Change to 64-bit type when necessary; won't happen before 2030 unsigned int nChainTx; + //! (memory only) Number of payments (shielded or transparent) in the chain + //! up to and including this block. One transaction can contain one or more + //! payments. This stat allows us to calculate ratios of shielded/transparent + //! when combined with shielded payment stats + int64_t nChainPayments; + //! (memory only) Number of shielded transactions (of any kind) in the chain up to and including this block. //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as //! inputs and outputs. - int64_t nShieldedChainTx; + int64_t nShieldedTx; //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined - //! as a transaction containing JoinSplits and only shielded inputs and outputs - int64_t nFullyShieldedChainTx; + //! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent + // inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc... + int64_t nFullyShieldedTx; + + //! (memory only) Number of shielding payments. A shielding payment is defined + //! as having a shielded output but transparent input: t->z + int64_t nShieldingPayments; + + //! (memory only) Number of shielded payments. A shielded payment is defined + //! as having a shielded input or output: t->z or z->t + int64_t nShieldedPayments; + + //! (memory only) Number of fully shielded payments. A fully shielded payment is defined + //! as having a shielded input and shielded output: z->z + int64_t nFullyShieldedPayments; //! (memory only) Number of deshielding transactions. A deshielding transaction is defined //! as a transaction containing JoinSplits and at least one transparent output. - int64_t nDeshieldingChainTx; + int64_t nDeshieldingTx; + + //! (memory only) Number of deshielding payments. A deshielding payment is defined + //! as one transparent input and one shielded output: z->t + int64_t nDeshieldingPayments; //! (memory only) Number of shielding transactions. A shielding transaction is defined //! as a transaction containing JoinSplits and at least one transparent input - int64_t nShieldingChainTx; + // i.e. t->z or t->(z,t) or z->(z,z,t) + int64_t nShieldingTx; - - //! (memory only) Number of shielding transactions which contain multiple shielded input notes + //! (memory only) Number of shielded transactions which contain multiple shielded input notes //! z_sendmany cannot make these and so it indicates raw shielded transaction usage currently - int64_t nMultipleShieldedInputsChainTx; + int64_t nMultipleShieldedInputsTx; //! Verification status of this block. See enum BlockStatus unsigned int nStatus; @@ -344,11 +367,15 @@ public: chainPower = CChainPower(); nTx = 0; nChainTx = 0; - nShieldedChainTx = 0; - nShieldingChainTx = 0; - nDeshieldingChainTx = 0; - nFullyShieldedChainTx = 0; - nMultipleShieldedInputsChainTx = 0; + nShieldedTx = 0; + nShieldingTx = 0; + nDeshieldingTx = 0; + nFullyShieldedTx = 0; + nShieldedPayments = 0; + nShieldingPayments = 0; + nDeshieldingPayments = 0; + nFullyShieldedPayments = 0; + nMultipleShieldedInputsTx = 0; nStatus = 0; nCachedBranchId = boost::none; hashSproutAnchor = uint256(); diff --git a/src/main.cpp b/src/main.cpp index 0eb2184d1..a3581e7f2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4769,7 +4769,10 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl { pindexNew->nTx = block.vtx.size(); pindexNew->nChainTx = 0; - pindexNew->nShieldedChainTx = 0; + pindexNew->nChainPayments = 0; + pindexNew->nShieldedTx = 0; + pindexNew->nShieldingTx = 0; + pindexNew->nDeshieldingTx = 0; CAmount sproutValue = 0; CAmount saplingValue = 0; int64_t nShieldedSpends=0,nShieldedOutputs=0; @@ -4791,10 +4794,11 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl nShieldedSpends = tx.vShieldedSpend.size(); nShieldedOutputs = tx.vShieldedOutput.size(); - // If we have not seen any zxtns, see if current xtn has any + // If we have not seen any zxtns, see if current block has any if(!hasShieldedTx) { hasShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; } + //TODO: this is if block has shielded txes, not if current xtn is shielded if(hasShieldedTx) { if(tx.vin.size()==0 && tx.vout.size()==0) { nFullyShielded++; @@ -4802,7 +4806,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl if(tx.vin.size()>0) { nShielding++; } - if(tx.out.size()>0) { + if(tx.vout.size()>0) { nDeshielding++; } if(nShieldedSpends>1) { @@ -4847,9 +4851,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl // Keep track of shielded transaction stats if(hasShieldedTx) { - pindex->vShieldedSpend; - pindex->vShieldedOutput; - pindex->nShieldedChainTx = pindex->nShieldedChainTx ? 0 : pindex->nShieldedChainTx + 1; + pindex->nShieldedTx = pindex->nShieldedTx ? 0 : pindex->nShieldedTx + 1; } pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; if (pindex->pprev) { From 8db846da675b47820a79a08fe6f7f495f3abbea8 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 8 Aug 2019 22:15:00 -0700 Subject: [PATCH 004/339] Improve calculation of shielded stats --- src/main.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a3581e7f2..697df6cdf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4778,8 +4778,8 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl int64_t nShieldedSpends=0,nShieldedOutputs=0; int64_t nShieldedPayments=0; int64_t nFullyShielded=0,nShielding=0,nDeshielding=0,nMultipleShieldedInputs=0; - bool hasShieldedTx = false; + bool hasShieldedTx = false; for (auto tx : block.vtx) { // Negative valueBalance "takes" money from the transparent value pool // and adds it to the Sapling value pool. Positive valueBalance "gives" @@ -4794,11 +4794,8 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl nShieldedSpends = tx.vShieldedSpend.size(); nShieldedOutputs = tx.vShieldedOutput.size(); - // If we have not seen any zxtns, see if current block has any - if(!hasShieldedTx) { - hasShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; - } - //TODO: this is if block has shielded txes, not if current xtn is shielded + hasShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; + if(hasShieldedTx) { if(tx.vin.size()==0 && tx.vout.size()==0) { nFullyShielded++; @@ -4813,16 +4810,21 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl nMultipleShieldedInputs++; } //TODO: These are at best heuristics. Improve them as much as possible - //NOTE: You cannot compare payment data from different sets of heuristics + //TODO: Take into account change addresses + //NOTE: You cannot compare stats generated from different sets of heuristics - if (nShieldedOutputs > 1) { - // If there are multiple shielded outputs, count each as a payment - nShieldedPayments += nShieldedOutputs; - } else { - nShieldedPayments++; - } - if (nShieldedSpends==1) { - // If we see a single zaddr input, that counts as a single shielded payment + if (nShieldedOutputs >= 1) { + // If there are shielded outputs, count each as a payment + // t->(t,t,z) = 1 shielded payment + // z->(z,z) = 1 shielded payment + shielded change + // t->(z,z) = 1 shielded payment + shielded change + // t->(t,z) = 1 shielded payment + transparent change + // z->(z,z,z) = 2 shielded payments + shielded change + nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + } else if (nShieldedSpends >=1) { + // z->t = 1 shielded payment + // (z,z)->z = 1 shielded payment + // z->(t,t) = 1 shielded payment nShieldedPayments++; } From 6ddcdc249757c5bc1e0650ffe979f4cd79ef20d6 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 10 Aug 2019 22:00:14 -0700 Subject: [PATCH 005/339] Various improvements to shielded transaction and payment stats gathering --- src/main.cpp | 81 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 697df6cdf..450a60dd5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4767,19 +4767,20 @@ CBlockIndex* AddToBlockIndex(const CBlockHeader& block) /** Mark a block as having its data received and checked (up to BLOCK_VALID_TRANSACTIONS). */ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBlockIndex *pindexNew, const CDiskBlockPos& pos) { - pindexNew->nTx = block.vtx.size(); - pindexNew->nChainTx = 0; + pindexNew->nTx = block.vtx.size(); + pindexNew->nChainTx = 0; pindexNew->nChainPayments = 0; - pindexNew->nShieldedTx = 0; - pindexNew->nShieldingTx = 0; + pindexNew->nShieldedTx = 0; + pindexNew->nShieldingTx = 0; pindexNew->nDeshieldingTx = 0; - CAmount sproutValue = 0; - CAmount saplingValue = 0; - int64_t nShieldedSpends=0,nShieldedOutputs=0; - int64_t nShieldedPayments=0; - int64_t nFullyShielded=0,nShielding=0,nDeshielding=0,nMultipleShieldedInputs=0; + CAmount sproutValue = 0; + CAmount saplingValue = 0; + bool isShieldedTx = false; + + int64_t nShieldedSpends=0,nShieldedOutputs=0,nChainPayments=0; + int64_t nShieldedTx=0,nFullyShieldedTx=0,nDeshieldingTx=0,nShieldingTx=0; + int64_t nShieldedPayments=0,nFullyShieldedPayments=0,nShieldingPayments=0,nDeshieldingPayments=0; - bool hasShieldedTx = false; for (auto tx : block.vtx) { // Negative valueBalance "takes" money from the transparent value pool // and adds it to the Sapling value pool. Positive valueBalance "gives" @@ -4791,43 +4792,49 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue += js.vpub_old; sproutValue -= js.vpub_new; } - nShieldedSpends = tx.vShieldedSpend.size(); - nShieldedOutputs = tx.vShieldedOutput.size(); + nShieldedSpends = tx.vShieldedSpend.size(); + nShieldedOutputs = tx.vShieldedOutput.size(); + isShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; - hasShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; - - if(hasShieldedTx) { + if(isShieldedTx) { + nShieldedTx++; if(tx.vin.size()==0 && tx.vout.size()==0) { - nFullyShielded++; + nFullyShieldedTx++; } if(tx.vin.size()>0) { - nShielding++; + nShieldingTx++; } if(tx.vout.size()>0) { - nDeshielding++; + nDeshieldingTx++; } - if(nShieldedSpends>1) { - nMultipleShieldedInputs++; - } - //TODO: These are at best heuristics. Improve them as much as possible - //TODO: Take into account change addresses - //NOTE: You cannot compare stats generated from different sets of heuristics + //NOTE: These are at best heuristics. Improve them as much as possible + // You cannot compare stats generated from different sets of heuristics if (nShieldedOutputs >= 1) { // If there are shielded outputs, count each as a payment + // By default, if there is more than 1 output, we assume 1 change output which is not a payment. + // In the case of multiple outputs which spend inputs exactly, there is no change output and this + // heuristic will undercount payments. Since this edge case is rare, this seems acceptable. // t->(t,t,z) = 1 shielded payment // z->(z,z) = 1 shielded payment + shielded change // t->(z,z) = 1 shielded payment + shielded change // t->(t,z) = 1 shielded payment + transparent change + // (z,z)->z = 1 shielded payment (has this xtn ever occurred?) // z->(z,z,z) = 2 shielded payments + shielded change + // Assume that there is always 1 change output when there are more than one nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; } else if (nShieldedSpends >=1) { + // Shielded inputs with no shielded outputs. We know none are change output because + // change would flow back to the zaddr // z->t = 1 shielded payment - // (z,z)->z = 1 shielded payment - // z->(t,t) = 1 shielded payment - nShieldedPayments++; + // z->(t,t) = 2 shielded payments + // z->(t,t,t) = 3 shielded payments + nShieldedPayments += tx.vout.size(); } - + nChainPayments += nShieldedPayments; + } else { + // No shielded payments, add transparent payments minus a change address + nChainPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); } } pindexNew->nSproutValue = sproutValue; @@ -4839,6 +4846,18 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nUndoPos = 0; pindexNew->nStatus |= BLOCK_HAVE_DATA; pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS); + + // Store data for later use by gettxchainstats and other RPCs + pindexNew->nChainPayments = nChainPayments; + pindexNew->nShieldedTx = nShieldedTx; + pindexNew->nFullyShieldedTx = nFullyShieldedTx; + pindexNew->nDeshieldingTx = nDeshieldingTx; + pindexNew->nShieldingTx = nShieldingTx; + pindexNew->nShieldedPayments = nShieldedPayments; + pindexNew->nFullyShieldedPayments = nFullyShieldedPayments; + pindexNew->nDeshieldingPayments = nDeshieldingPayments; + pindexNew->nShieldingPayments = nShieldingPayments; + setDirtyBlockIndex.insert(pindexNew); if (pindexNew->pprev == NULL || pindexNew->pprev->nChainTx) { @@ -4851,10 +4870,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl CBlockIndex *pindex = queue.front(); queue.pop_front(); - // Keep track of shielded transaction stats - if(hasShieldedTx) { - pindex->nShieldedTx = pindex->nShieldedTx ? 0 : pindex->nShieldedTx + 1; - } pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; if (pindex->pprev) { if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { @@ -4892,6 +4907,8 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl } } + fprintf(stderr, "ht.%d, ShieldedPayments=%d, ShieldedTx=%d, FullyShieldedTx=%d\n", + pindexNew->GetHeight(), nShieldedPayments, nShieldedTx, nFullyShieldedTx ); return true; } From 464251bdc3590f9ddeb7b0e906b452f7982a570e Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 12 Aug 2019 17:38:37 -0700 Subject: [PATCH 006/339] Add total payment stats to getchaintxstats --- src/rpc/blockchain.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index c63def984..374725ba5 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1949,7 +1949,7 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) "{\n" " \"time\": xxxxx, (numeric) The timestamp for the final block in the window in UNIX format.\n" " \"txcount\": xxxxx, (numeric) The total number of transactions in the chain up to that point.\n" - " \"window_final_block_hash\": \"...\", (string) The hash of the final block in the window.\n" + " \"window_final_block_hash\": \"...\", (string) The hash of the final block in the window.\n" " \"window_block_count\": xxxxx, (numeric) Size of the window in number of blocks.\n" " \"window_tx_count\": xxxxx, (numeric) The number of transactions in the window. Only returned if \"window_block_count\" is > 0.\n" " \"window_interval\": xxxxx, (numeric) The elapsed time in the window in seconds. Only returned if \"window_block_count\" is > 0.\n" @@ -1991,8 +1991,9 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) } const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); - int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); - int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; + int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); + int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; + int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; UniValue ret(UniValue::VOBJ); ret.pushKV("time", (int64_t)pindex->nTime); @@ -2003,7 +2004,8 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("window_tx_count", nTxDiff); ret.pushKV("window_interval", nTimeDiff); if (nTimeDiff > 0) { - ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); + ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); + ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); } } From 70eb669e6382957c50795a388f0675e31ba44026 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 13 Aug 2019 07:08:31 -0700 Subject: [PATCH 007/339] Return json data about shielded xtns/payments --- src/rpc/blockchain.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 374725ba5..5803f8a7f 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1994,18 +1994,25 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; + int64_t nShieldedPaymentsDiff = pindex->nShieldedPayments - pindexPast->nShieldedPayments; UniValue ret(UniValue::VOBJ); ret.pushKV("time", (int64_t)pindex->nTime); ret.pushKV("txcount", (int64_t)pindex->nChainTx); + ret.pushKV("shielded_txcount", (int64_t)pindex->nShieldedTx); + ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nFullyShieldedTx); + ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); ret.pushKV("window_block_count", blockcount); if (blockcount > 0) { ret.pushKV("window_tx_count", nTxDiff); + ret.pushKV("window_payment_count", nPaymentsDiff); + ret.pushKV("window_shielded_payment_count", nShieldedPaymentsDiff); ret.pushKV("window_interval", nTimeDiff); if (nTimeDiff > 0) { ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); + ret.pushKV("shieled_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); } } From 22c0a2292659813633a9df7a8e41ca4f670119e9 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 05:56:07 -0700 Subject: [PATCH 008/339] Compiles, RPC gives back some shielded stats, which have bugs --- src/chain.h | 76 +++++++++++++++++++++++++++++++++++------- src/main.cpp | 27 +++++++++------ src/rpc/blockchain.cpp | 5 ++- 3 files changed, 83 insertions(+), 25 deletions(-) diff --git a/src/chain.h b/src/chain.h index 077ad92d8..52028563d 100644 --- a/src/chain.h +++ b/src/chain.h @@ -254,22 +254,18 @@ public: //! (memory only) Total amount of work (expected number of hashes) in the chain up to and including this block CChainPower chainPower; + // block stats //! Number of transactions in this block. //! Note: in a potential headers-first mode, this number cannot be relied upon unsigned int nTx; - //! (memory only) Number of transactions in the chain up to and including this block. - //! This value will be non-zero only if and only if transactions for this block and all its parents are available. - //! Change to 64-bit type when necessary; won't happen before 2030 - unsigned int nChainTx; - - //! (memory only) Number of payments (shielded or transparent) in the chain + //! (memory only) Number of payments (shielded or transparent) in the block //! up to and including this block. One transaction can contain one or more //! payments. This stat allows us to calculate ratios of shielded/transparent //! when combined with shielded payment stats - int64_t nChainPayments; + int64_t nPayments; - //! (memory only) Number of shielded transactions (of any kind) in the chain up to and including this block. + //! (memory only) Number of shielded transactions (of any kind) in the block up to and including this block. //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as //! inputs and outputs. @@ -305,9 +301,56 @@ public: // i.e. t->z or t->(z,t) or z->(z,z,t) int64_t nShieldingTx; - //! (memory only) Number of shielded transactions which contain multiple shielded input notes - //! z_sendmany cannot make these and so it indicates raw shielded transaction usage currently - int64_t nMultipleShieldedInputsTx; + + + // chain stats + //! (memory only) Number of transactions in the chain up to and including this block. + //! This value will be non-zero only if and only if transactions for this block and all its parents are available. + //! Change to 64-bit type when necessary; won't happen before 2030 + unsigned int nChainTx; + + //! (memory only) Number of payments (shielded or transparent) in the chain + //! up to and including this block. One transaction can contain one or more + //! payments. This stat allows us to calculate ratios of shielded/transparent + //! when combined with shielded payment stats + int64_t nChainPayments; + + //! (memory only) Number of shielded transactions (of any kind) in the chain up to and including this block. + //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes + //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as + //! inputs and outputs. + int64_t nChainShieldedTx; + + //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined + //! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent + // inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc... + int64_t nChainFullyShieldedTx; + + //! (memory only) Number of shielding payments. A shielding payment is defined + //! as having a shielded output but transparent input: t->z + int64_t nChainShieldingPayments; + + //! (memory only) Number of shielded payments. A shielded payment is defined + //! as having a shielded input or output: t->z or z->t + int64_t nChainShieldedPayments; + + //! (memory only) Number of fully shielded payments. A fully shielded payment is defined + //! as having a shielded input and shielded output: z->z + int64_t nChainFullyShieldedPayments; + + //! (memory only) Number of deshielding transactions. A deshielding transaction is defined + //! as a transaction containing JoinSplits and at least one transparent output. + int64_t nChainDeshieldingTx; + + //! (memory only) Number of deshielding payments. A deshielding payment is defined + //! as one transparent input and one shielded output: z->t + int64_t nChainDeshieldingPayments; + + //! (memory only) Number of shielding transactions. A shielding transaction is defined + //! as a transaction containing JoinSplits and at least one transparent input + // i.e. t->z or t->(z,t) or z->(z,z,t) + int64_t nChainShieldingTx; + //! Verification status of this block. See enum BlockStatus unsigned int nStatus; @@ -367,6 +410,15 @@ public: chainPower = CChainPower(); nTx = 0; nChainTx = 0; + + nChainShieldedTx = 0; + nChainShieldingTx = 0; + nChainDeshieldingTx = 0; + nChainFullyShieldedTx = 0; + nChainShieldedPayments = 0; + nChainShieldingPayments = 0; + nChainDeshieldingPayments = 0; + nChainFullyShieldedPayments = 0; nShieldedTx = 0; nShieldingTx = 0; nDeshieldingTx = 0; @@ -375,7 +427,7 @@ public: nShieldingPayments = 0; nDeshieldingPayments = 0; nFullyShieldedPayments = 0; - nMultipleShieldedInputsTx = 0; + nStatus = 0; nCachedBranchId = boost::none; hashSproutAnchor = uint256(); diff --git a/src/main.cpp b/src/main.cpp index 450a60dd5..df3eaa2a5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4770,14 +4770,10 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nTx = block.vtx.size(); pindexNew->nChainTx = 0; pindexNew->nChainPayments = 0; - pindexNew->nShieldedTx = 0; - pindexNew->nShieldingTx = 0; - pindexNew->nDeshieldingTx = 0; CAmount sproutValue = 0; CAmount saplingValue = 0; bool isShieldedTx = false; - - int64_t nShieldedSpends=0,nShieldedOutputs=0,nChainPayments=0; + int64_t nShieldedSpends=0,nShieldedOutputs=0,nPayments=0; int64_t nShieldedTx=0,nFullyShieldedTx=0,nDeshieldingTx=0,nShieldingTx=0; int64_t nShieldedPayments=0,nFullyShieldedPayments=0,nShieldingPayments=0,nDeshieldingPayments=0; @@ -4831,12 +4827,14 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl // z->(t,t,t) = 3 shielded payments nShieldedPayments += tx.vout.size(); } - nChainPayments += nShieldedPayments; + //TODO: correctly add shielded payments to total chain payments + nPayments += nShieldedPayments; } else { // No shielded payments, add transparent payments minus a change address - nChainPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); + nPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); } } + pindexNew->nSproutValue = sproutValue; pindexNew->nChainSproutValue = boost::none; pindexNew->nSaplingValue = saplingValue; @@ -4847,8 +4845,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nStatus |= BLOCK_HAVE_DATA; pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS); - // Store data for later use by gettxchainstats and other RPCs - pindexNew->nChainPayments = nChainPayments; + pindexNew->nPayments = nPayments; pindexNew->nShieldedTx = nShieldedTx; pindexNew->nFullyShieldedTx = nFullyShieldedTx; pindexNew->nDeshieldingTx = nDeshieldingTx; @@ -4870,7 +4867,17 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl CBlockIndex *pindex = queue.front(); queue.pop_front(); - pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; + pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; + pindex->nChainShieldedTx = (pindex->pprev ? pindex->pprev->nChainShieldedTx : 0) + pindex->nShieldedTx; + pindex->nChainFullyShieldedTx = (pindex->pprev ? pindex->pprev->nChainFullyShieldedTx : 0) + pindex->nFullyShieldedTx; + pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; + pindex->nChainDeshieldingTx = (pindex->pprev ? pindex->pprev->nChainDeshieldingTx : 0) + pindex->nDeshieldingTx; + + pindex->nChainShieldedPayments = (pindex->pprev ? pindex->pprev->nChainShieldedPayments : 0) + pindex->nShieldedPayments; + pindex->nChainFullyShieldedPayments = (pindex->pprev ? pindex->pprev->nChainFullyShieldedPayments : 0) + pindex->nFullyShieldedPayments; + pindex->nChainShieldingPayments = (pindex->pprev ? pindex->pprev->nChainShieldingPayments : 0) + pindex->nShieldingPayments; + pindex->nChainDeshieldingPayments = (pindex->pprev ? pindex->pprev->nChainDeshieldingPayments : 0) + pindex->nDeshieldingPayments; + if (pindex->pprev) { if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 5803f8a7f..dea832d97 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1994,14 +1994,13 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; - int64_t nShieldedPaymentsDiff = pindex->nShieldedPayments - pindexPast->nShieldedPayments; + int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; UniValue ret(UniValue::VOBJ); ret.pushKV("time", (int64_t)pindex->nTime); ret.pushKV("txcount", (int64_t)pindex->nChainTx); - ret.pushKV("shielded_txcount", (int64_t)pindex->nShieldedTx); + ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nFullyShieldedTx); - ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); ret.pushKV("window_block_count", blockcount); if (blockcount > 0) { From c9b00ef093723cdce5730a2cbaf1de1e6c94cc3f Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 06:15:03 -0700 Subject: [PATCH 009/339] Add chain payments --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index df3eaa2a5..d432565a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4873,6 +4873,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; pindex->nChainDeshieldingTx = (pindex->pprev ? pindex->pprev->nChainDeshieldingTx : 0) + pindex->nDeshieldingTx; + pindex->nChainPayments = (pindex->pprev ? pindex->pprev->nChainPayments : 0) + pindex->nPayments; pindex->nChainShieldedPayments = (pindex->pprev ? pindex->pprev->nChainShieldedPayments : 0) + pindex->nShieldedPayments; pindex->nChainFullyShieldedPayments = (pindex->pprev ? pindex->pprev->nChainFullyShieldedPayments : 0) + pindex->nFullyShieldedPayments; pindex->nChainShieldingPayments = (pindex->pprev ? pindex->pprev->nChainShieldingPayments : 0) + pindex->nShieldingPayments; From 1a6c19dc811624af3d2ccd5865a68784f6719be0 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 06:26:13 -0700 Subject: [PATCH 010/339] Also calc shielded stats on index load --- src/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index d432565a7..8b37525fc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6147,7 +6147,11 @@ bool static LoadBlockIndexDB() if (pindex->nTx > 0) { if (pindex->pprev) { if (pindex->pprev->nChainTx) { - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; } else { From 2b3023444d53d84639aeefb486c2dbe3053b7aa0 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 12:46:40 -0700 Subject: [PATCH 011/339] Properly serialize/deserialize new blockindex with zstats --- src/chain.h | 11 +++++++++++ src/main.cpp | 39 ++++++++++++++++++++++++++++++--------- src/txdb.cpp | 43 ++++++++++++++++++++++++++----------------- 3 files changed, 67 insertions(+), 26 deletions(-) diff --git a/src/chain.h b/src/chain.h index 52028563d..f815b5c8a 100644 --- a/src/chain.h +++ b/src/chain.h @@ -613,6 +613,17 @@ public: READWRITE(VARINT(chainPower.nHeight)); READWRITE(VARINT(nStatus)); READWRITE(VARINT(nTx)); + + READWRITE(VARINT(nShieldedTx)); + READWRITE(VARINT(nShieldingTx)); + READWRITE(VARINT(nDeshieldingTx)); + READWRITE(VARINT(nFullyShieldedTx)); + + READWRITE(VARINT(nShieldedPayments)); + READWRITE(VARINT(nShieldingPayments)); + READWRITE(VARINT(nDeshieldingPayments)); + READWRITE(VARINT(nFullyShieldedPayments)); + if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT(nFile)); if (nStatus & BLOCK_HAVE_DATA) diff --git a/src/main.cpp b/src/main.cpp index 8b37525fc..616054880 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6148,9 +6148,15 @@ bool static LoadBlockIndexDB() if (pindex->pprev) { if (pindex->pprev->nChainTx) { - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; - pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->pprev->nChainShieldingTx + pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->pprev->nChainShieldingPayments + pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainDeshieldingPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainFullyShieldedTx = pindex->pprev->nChainFullyShieldedTx + pindex->nFullyShieldedTx; + pindex->nChainFullyShieldedPayments = pindex->pprev->nChainFullyShieldedPayments + pindex->nFullyShieldedPayments; if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; @@ -6163,15 +6169,30 @@ bool static LoadBlockIndexDB() pindex->nChainSaplingValue = boost::none; } } else { - pindex->nChainTx = 0; - pindex->nChainSproutValue = boost::none; - pindex->nChainSaplingValue = boost::none; + pindex->nChainTx = 0; + pindex->nChainShieldedTx = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainShieldedPayments = 0; + pindex->nChainShieldingPayments = 0; + pindex->nChainDeshieldingTx = 0; + pindex->nChainDeshieldingPayments = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainFullyShieldedPayments = 0; + pindex->nChainSproutValue = boost::none; + pindex->nChainSaplingValue = boost::none; mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex)); } } else { - pindex->nChainTx = pindex->nTx; - pindex->nChainSproutValue = pindex->nSproutValue; - pindex->nChainSaplingValue = pindex->nSaplingValue; + pindex->nChainTx = pindex->nTx; + pindex->nChainShieldedTx = pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->nDeshieldingTx; + pindex->nChainDeshieldingPayments = pindex->nDeshieldingPayments; + pindex->nChainFullyShieldedPayments = pindex->nFullyShieldedPayments; + pindex->nChainSproutValue = pindex->nSproutValue; + pindex->nChainSaplingValue = pindex->nSaplingValue; } } // Construct in-memory chain of branch IDs. diff --git a/src/txdb.cpp b/src/txdb.cpp index 82885044e..a462061a1 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -702,24 +702,33 @@ bool CBlockTreeDB::LoadBlockIndexGuts() CBlockIndex* pindexNew = InsertBlockIndex(diskindex.GetBlockHash()); pindexNew->pprev = InsertBlockIndex(diskindex.hashPrev); pindexNew->SetHeight(diskindex.GetHeight()); - pindexNew->nFile = diskindex.nFile; - pindexNew->nDataPos = diskindex.nDataPos; - pindexNew->nUndoPos = diskindex.nUndoPos; - pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor; - pindexNew->nVersion = diskindex.nVersion; - pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot; + pindexNew->nFile = diskindex.nFile; + pindexNew->nDataPos = diskindex.nDataPos; + pindexNew->nUndoPos = diskindex.nUndoPos; + pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor; + pindexNew->nVersion = diskindex.nVersion; + pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot; pindexNew->hashFinalSaplingRoot = diskindex.hashFinalSaplingRoot; - pindexNew->nTime = diskindex.nTime; - pindexNew->nBits = diskindex.nBits; - pindexNew->nNonce = diskindex.nNonce; - pindexNew->nSolution = diskindex.nSolution; - pindexNew->nStatus = diskindex.nStatus; - pindexNew->nCachedBranchId = diskindex.nCachedBranchId; - pindexNew->nTx = diskindex.nTx; - pindexNew->nSproutValue = diskindex.nSproutValue; - pindexNew->nSaplingValue = diskindex.nSaplingValue; - pindexNew->segid = diskindex.segid; - pindexNew->nNotaryPay = diskindex.nNotaryPay; + pindexNew->nTime = diskindex.nTime; + pindexNew->nBits = diskindex.nBits; + pindexNew->nNonce = diskindex.nNonce; + pindexNew->nSolution = diskindex.nSolution; + pindexNew->nStatus = diskindex.nStatus; + pindexNew->nCachedBranchId = diskindex.nCachedBranchId; + pindexNew->nTx = diskindex.nTx; + pindexNew->nShieldedTx = diskindex.nShieldedTx; + pindexNew->nShieldedPayments = diskindex.nShieldedPayments; + pindexNew->nShieldingTx = diskindex.nShieldingTx; + pindexNew->nShieldingPayments = diskindex.nShieldingPayments; + pindexNew->nDeshieldingTx = diskindex.nDeshieldingTx; + pindexNew->nDeshieldingPayments = diskindex.nDeshieldingPayments; + pindexNew->nFullyShieldedTx = diskindex.nFullyShieldedTx; + pindexNew->nFullyShieldedPayments = diskindex.nFullyShieldedPayments; + pindexNew->nSproutValue = diskindex.nSproutValue; + pindexNew->nSaplingValue = diskindex.nSaplingValue; + pindexNew->segid = diskindex.segid; + pindexNew->nNotaryPay = diskindex.nNotaryPay; + //fprintf(stderr,"loadguts ht.%d\n",pindexNew->GetHeight()); // Consistency checks auto header = pindexNew->GetBlockHeader(); From 469c3c9cf27670f5b78b6229889da3f49462c533 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 21:20:10 -0700 Subject: [PATCH 012/339] So many zstats --- src/rpc/blockchain.cpp | 72 +++++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index dea832d97..436f3d613 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1990,29 +1990,77 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) } } - const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); - int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); - int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; - int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; - int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; + const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); + int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); + int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; + int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; + int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx; + int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx; + int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx; + int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx; + int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; + int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments; + int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments; + int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments; UniValue ret(UniValue::VOBJ); ret.pushKV("time", (int64_t)pindex->nTime); + ret.pushKV("txcount", (int64_t)pindex->nChainTx); ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); - ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nFullyShieldedTx); + ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); + ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); + ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); + ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); + ret.pushKV("fully_shielded_payments", (int64_t)pindex->nChainFullyShieldedPayments); + ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); + ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); + ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); ret.pushKV("window_block_count", blockcount); + if (blockcount > 0) { - ret.pushKV("window_tx_count", nTxDiff); - ret.pushKV("window_payment_count", nPaymentsDiff); - ret.pushKV("window_shielded_payment_count", nShieldedPaymentsDiff); ret.pushKV("window_interval", nTimeDiff); + ret.pushKV("window_txcount", nTxDiff); + ret.pushKV("window_payments", nPaymentsDiff); + ret.pushKV("window_fully_shielded_payments", nFullyShieldedPaymentsDiff); + ret.pushKV("window_shielded_payments", nShieldedPaymentsDiff); + ret.pushKV("window_shielding_payments", nShieldingPaymentsDiff); + ret.pushKV("window_deshielding_payments", nDeshieldingPaymentsDiff); + if (nTimeDiff > 0) { - ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); - ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); - ret.pushKV("shieled_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); + ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); + ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); + ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); + ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); + ret.pushKV("shielded_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); + ret.pushKV("fully_shielded_paymentrate", ((double)nFullyShieldedPaymentsDiff) / nTimeDiff); } + if (nTxDiff > 0) { + ret.pushKV("shielded_tx_percent", ((double)pindex->nShieldedTx) / nTxDiff); + ret.pushKV("fully_shielded_tx_percent", ((double)pindex->nFullyShieldedTx) / nTxDiff); + ret.pushKV("shielding_tx_percent", ((double)pindex->nShieldingTx) / nTxDiff); + ret.pushKV("deshielding_tx_percent", ((double)pindex->nDeshieldingTx) / nTxDiff); + } + if (nPaymentsDiff > 0) { + ret.pushKV("shielded_payments_percent", ((double)pindex->nShieldedPayments) / nPaymentsDiff); + ret.pushKV("fully_shielded_payments_percent", ((double)pindex->nFullyShieldedPayments) / nPaymentsDiff); + ret.pushKV("shielding_payments_percent", ((double)pindex->nShieldingPayments) / nPaymentsDiff); + ret.pushKV("deshielding_payments_percent", ((double)pindex->nDeshieldingPayments) / nPaymentsDiff); + } + // Shielded-only statistics + UniValue shielded(UniValue::VOBJ); + if (pindex->nShieldedTx > 0 ) { + shielded.pushKV("fully_shielded_tx_percent", ((double)pindex->nFullyShieldedTx) / pindex->nShieldedTx ); + shielded.pushKV("shielding_tx_percent", ((double)pindex->nShieldingTx) / pindex->nShieldedTx ); + shielded.pushKV("deshielding_tx_percent", ((double)pindex->nDeshieldingTx) / pindex->nShieldedTx ); + } + if (pindex->nShieldedPayments > 0 ) { + shielded.pushKV("fully_shielded_payments_percent", ((double)pindex->nFullyShieldedPayments) / pindex->nShieldedPayments ); + shielded.pushKV("shielding_payments_percent", ((double)pindex->nShieldingPayments) / pindex->nShieldedPayments ); + shielded.pushKV("deshielding_payments_percent", ((double)pindex->nDeshieldingPayments) / pindex->nShieldedPayments ); + } + ret.pushKV("shielded_only", shielded); } return ret; From 80b1479184d1ecf8d7fcbd1cdca95a79ad4db55b Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 21:54:48 -0700 Subject: [PATCH 013/339] Improve shielded-only zstats --- src/rpc/blockchain.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 436f3d613..f963052d4 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2048,19 +2048,21 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("shielding_payments_percent", ((double)pindex->nShieldingPayments) / nPaymentsDiff); ret.pushKV("deshielding_payments_percent", ((double)pindex->nDeshieldingPayments) / nPaymentsDiff); } + // Shielded-only statistics UniValue shielded(UniValue::VOBJ); - if (pindex->nShieldedTx > 0 ) { - shielded.pushKV("fully_shielded_tx_percent", ((double)pindex->nFullyShieldedTx) / pindex->nShieldedTx ); - shielded.pushKV("shielding_tx_percent", ((double)pindex->nShieldingTx) / pindex->nShieldedTx ); - shielded.pushKV("deshielding_tx_percent", ((double)pindex->nDeshieldingTx) / pindex->nShieldedTx ); + if (nShieldedTxDiff > 0) { + shielded.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nShieldedTxDiff ); + shielded.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nShieldedTxDiff ); + shielded.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nShieldedTxDiff ); } - if (pindex->nShieldedPayments > 0 ) { - shielded.pushKV("fully_shielded_payments_percent", ((double)pindex->nFullyShieldedPayments) / pindex->nShieldedPayments ); - shielded.pushKV("shielding_payments_percent", ((double)pindex->nShieldingPayments) / pindex->nShieldedPayments ); - shielded.pushKV("deshielding_payments_percent", ((double)pindex->nDeshieldingPayments) / pindex->nShieldedPayments ); + if (nShieldedPaymentsDiff > 0) { + shielded.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nShieldedPaymentsDiff ); + shielded.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nShieldedPaymentsDiff ); + shielded.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nShieldedPaymentsDiff ); } - ret.pushKV("shielded_only", shielded); + if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) + ret.pushKV("shielded_only", shielded); } return ret; From 3f94feb8369c15d3b60d5006cc0d1835bbacb726 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sat, 17 Aug 2019 22:08:17 -0700 Subject: [PATCH 014/339] Shielding+deshielding payments in z-only section --- src/main.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 616054880..bcfb83f77 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4818,14 +4818,17 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl // (z,z)->z = 1 shielded payment (has this xtn ever occurred?) // z->(z,z,z) = 2 shielded payments + shielded change // Assume that there is always 1 change output when there are more than one - nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + // TODO: fully shielded should not count toward shielding/deshielding + nShieldingPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; } else if (nShieldedSpends >=1) { // Shielded inputs with no shielded outputs. We know none are change output because // change would flow back to the zaddr // z->t = 1 shielded payment // z->(t,t) = 2 shielded payments // z->(t,t,t) = 3 shielded payments - nShieldedPayments += tx.vout.size(); + nShieldedPayments += tx.vout.size(); + nDeshieldingPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); } //TODO: correctly add shielded payments to total chain payments nPayments += nShieldedPayments; From 5365d15e693f1a3e1e5543ca48ce19d6490157f7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sun, 18 Aug 2019 18:06:12 -0700 Subject: [PATCH 015/339] Correct various stats and add block height to response --- src/main.cpp | 15 +++++++++------ src/rpc/blockchain.cpp | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index bcfb83f77..fda64ce02 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4796,11 +4796,9 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl nShieldedTx++; if(tx.vin.size()==0 && tx.vout.size()==0) { nFullyShieldedTx++; - } - if(tx.vin.size()>0) { + } else if(tx.vin.size()>0) { nShieldingTx++; - } - if(tx.vout.size()>0) { + } else if(tx.vout.size()>0) { nDeshieldingTx++; } //NOTE: These are at best heuristics. Improve them as much as possible @@ -4819,8 +4817,13 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl // z->(z,z,z) = 2 shielded payments + shielded change // Assume that there is always 1 change output when there are more than one nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; - // TODO: fully shielded should not count toward shielding/deshielding - nShieldingPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + + // Fully shielded do not count toward shielding/deshielding + if(tx.vin.size()==0 && tx.vout.size()==0) { + nFullyShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + } else { + nShieldingPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; + } } else if (nShieldedSpends >=1) { // Shielded inputs with no shielded outputs. We know none are change output because // change would flow back to the zaddr diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index f963052d4..d18f4e5c1 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2017,6 +2017,7 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); + ret.pushKV("window_final_block_height", pindex->GetHeight()); ret.pushKV("window_block_count", blockcount); if (blockcount > 0) { From 5c310aa0486ee910fb9bc8f3d00977c8e17079c5 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sun, 18 Aug 2019 18:55:34 -0700 Subject: [PATCH 016/339] Define -zindex --- src/chain.h | 21 +++++++++++++-------- src/init.cpp | 6 ++++++ src/main.cpp | 15 ++++++++++++--- src/main.h | 1 + 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/chain.h b/src/chain.h index f815b5c8a..1a0a7057d 100644 --- a/src/chain.h +++ b/src/chain.h @@ -29,6 +29,7 @@ class CChainPower; #include "tinyformat.h" #include "uint256.h" extern int8_t is_STAKED(const char *chain_name); +extern bool fZindex; #include @@ -614,15 +615,19 @@ public: READWRITE(VARINT(nStatus)); READWRITE(VARINT(nTx)); - READWRITE(VARINT(nShieldedTx)); - READWRITE(VARINT(nShieldingTx)); - READWRITE(VARINT(nDeshieldingTx)); - READWRITE(VARINT(nFullyShieldedTx)); + // These values only serialized when -zindex=1 + //if (fZindex != GetBoolArg("-zindex", false)) { + if(fZindex) { + READWRITE(VARINT(nShieldedTx)); + READWRITE(VARINT(nShieldingTx)); + READWRITE(VARINT(nDeshieldingTx)); + READWRITE(VARINT(nFullyShieldedTx)); - READWRITE(VARINT(nShieldedPayments)); - READWRITE(VARINT(nShieldingPayments)); - READWRITE(VARINT(nDeshieldingPayments)); - READWRITE(VARINT(nFullyShieldedPayments)); + READWRITE(VARINT(nShieldedPayments)); + READWRITE(VARINT(nShieldingPayments)); + READWRITE(VARINT(nDeshieldingPayments)); + READWRITE(VARINT(nFullyShieldedPayments)); + } if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT(nFile)); diff --git a/src/init.cpp b/src/init.cpp index f8875af44..18985e842 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1668,6 +1668,12 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) break; } + // Check for changed -zindex state + if (fZindex != GetBoolArg("-zindex", false)) { + strLoadError = _("You need to rebuild the database using -reindex to change -zindex"); + break; + } + // Check for changed -prune state. What we are concerned about is a user who has pruned blocks // in the past, but is now trying to run unpruned. if (fHavePruned && !fPruneMode) { diff --git a/src/main.cpp b/src/main.cpp index fda64ce02..f1057699f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -98,6 +98,7 @@ bool fExperimentalMode = true; bool fImporting = false; bool fReindex = false; bool fTxIndex = false; +bool fZindex = false; bool fAddressIndex = false; bool fTimestampIndex = false; bool fSpentIndex = false; @@ -6279,6 +6280,9 @@ bool static LoadBlockIndexDB() // Check whether we have an address index pblocktree->ReadFlag("addressindex", fAddressIndex); LogPrintf("%s: address index %s\n", __func__, fAddressIndex ? "enabled" : "disabled"); + // Check whether we have a shielded index + pblocktree->ReadFlag("zindex", fZindex); + LogPrintf("%s: shielded index %s\n", __func__, fZindex ? "enabled" : "disabled"); // Check whether we have a timestamp index pblocktree->ReadFlag("timestampindex", fTimestampIndex); @@ -6643,17 +6647,22 @@ bool InitBlockIndex() { // Use the provided setting for -txindex in the new database fTxIndex = GetBoolArg("-txindex", true); pblocktree->WriteFlag("txindex", fTxIndex); + // Use the provided setting for -addressindex in the new database fAddressIndex = GetBoolArg("-addressindex", DEFAULT_ADDRESSINDEX); pblocktree->WriteFlag("addressindex", fAddressIndex); - + + // Use the provided setting for -zindex in the new database + fAddressIndex = GetBoolArg("-zindex", DEFAULT_SHIELDEDINDEX); + pblocktree->WriteFlag("zindex", fZindex); + // Use the provided setting for -timestampindex in the new database fTimestampIndex = GetBoolArg("-timestampindex", DEFAULT_TIMESTAMPINDEX); pblocktree->WriteFlag("timestampindex", fTimestampIndex); - + fSpentIndex = GetBoolArg("-spentindex", DEFAULT_SPENTINDEX); pblocktree->WriteFlag("spentindex", fSpentIndex); - fprintf(stderr,"fAddressIndex.%d/%d fSpentIndex.%d/%d\n",fAddressIndex,DEFAULT_ADDRESSINDEX,fSpentIndex,DEFAULT_SPENTINDEX); + fprintf(stderr,"fAddressIndex.%d/%d fSpentIndex.%d/%d fZindex.%d/%d\n",fAddressIndex,DEFAULT_ADDRESSINDEX,fSpentIndex,DEFAULT_SPENTINDEX,fZindex, DEFAULT_SHIELDEDINDEX ); LogPrintf("Initializing databases...\n"); } // Only add the genesis block if not reindexing (in which case we reuse the one already on disk) diff --git a/src/main.h b/src/main.h index 931954da0..08104a885 100644 --- a/src/main.h +++ b/src/main.h @@ -125,6 +125,7 @@ static const int64_t DEFAULT_MAX_TIP_AGE = 24 * 60 * 60; #define DEFAULT_ADDRESSINDEX (GetArg("-ac_cc",0) != 0 || GetArg("-ac_ccactivate",0) != 0) #define DEFAULT_SPENTINDEX (GetArg("-ac_cc",0) != 0 || GetArg("-ac_ccactivate",0) != 0) static const bool DEFAULT_TIMESTAMPINDEX = false; +static const bool DEFAULT_SHIELDEDINDEX = false; static const unsigned int DEFAULT_DB_MAX_OPEN_FILES = 1000; static const bool DEFAULT_DB_COMPRESSION = true; From 44f34a22e75bc3d4c3fcbdc027b44c08f7e3d5fb Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 19 Aug 2019 05:07:34 -0700 Subject: [PATCH 017/339] more -zindex --- src/init.cpp | 1 + src/main.cpp | 112 ++++++++++++++++++++++++----------------- src/rpc/blockchain.cpp | 92 +++++++++++++++++---------------- 3 files changed, 118 insertions(+), 87 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 18985e842..9a1f0f666 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -400,6 +400,7 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-addressindex", strprintf(_("Maintain a full address index, used to query for the balance, txids and unspent outputs for addresses (default: %u)"), DEFAULT_ADDRESSINDEX)); strUsage += HelpMessageOpt("-timestampindex", strprintf(_("Maintain a timestamp index for block hashes, used to query blocks hashes by a range of timestamps (default: %u)"), DEFAULT_TIMESTAMPINDEX)); strUsage += HelpMessageOpt("-spentindex", strprintf(_("Maintain a full spent index, used to query the spending txid and input index for an outpoint (default: %u)"), DEFAULT_SPENTINDEX)); + strUsage += HelpMessageOpt("-zindex", strprintf(_("Maintain extra statistics about shielded transactions and payments (default: %u)"), 0)); strUsage += HelpMessageGroup(_("Connection options:")); strUsage += HelpMessageOpt("-addnode=", _("Add a node to connect to and attempt to keep the connection open")); strUsage += HelpMessageOpt("-banscore=", strprintf(_("Threshold for disconnecting misbehaving peers (default: %u)"), 100)); diff --git a/src/main.cpp b/src/main.cpp index f1057699f..41cc3a579 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4777,6 +4777,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl int64_t nShieldedSpends=0,nShieldedOutputs=0,nPayments=0; int64_t nShieldedTx=0,nFullyShieldedTx=0,nDeshieldingTx=0,nShieldingTx=0; int64_t nShieldedPayments=0,nFullyShieldedPayments=0,nShieldingPayments=0,nDeshieldingPayments=0; + int64_t nNotarizations=0; for (auto tx : block.vtx) { // Negative valueBalance "takes" money from the transparent value pool @@ -4789,10 +4790,19 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue += js.vpub_old; sproutValue -= js.vpub_new; } + + if (!fZindex) + continue; + nShieldedSpends = tx.vShieldedSpend.size(); nShieldedOutputs = tx.vShieldedOutput.size(); isShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; + + if(tx.vin.size()==13 && tx.vout.size()==2) { + nNotarizations++; + } + if(isShieldedTx) { nShieldedTx++; if(tx.vin.size()==0 && tx.vout.size()==0) { @@ -4852,15 +4862,17 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nStatus |= BLOCK_HAVE_DATA; pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS); - pindexNew->nPayments = nPayments; - pindexNew->nShieldedTx = nShieldedTx; - pindexNew->nFullyShieldedTx = nFullyShieldedTx; - pindexNew->nDeshieldingTx = nDeshieldingTx; - pindexNew->nShieldingTx = nShieldingTx; - pindexNew->nShieldedPayments = nShieldedPayments; - pindexNew->nFullyShieldedPayments = nFullyShieldedPayments; - pindexNew->nDeshieldingPayments = nDeshieldingPayments; - pindexNew->nShieldingPayments = nShieldingPayments; + if (fZindex) { + pindexNew->nPayments = nPayments; + pindexNew->nShieldedTx = nShieldedTx; + pindexNew->nFullyShieldedTx = nFullyShieldedTx; + pindexNew->nDeshieldingTx = nDeshieldingTx; + pindexNew->nShieldingTx = nShieldingTx; + pindexNew->nShieldedPayments = nShieldedPayments; + pindexNew->nFullyShieldedPayments = nFullyShieldedPayments; + pindexNew->nDeshieldingPayments = nDeshieldingPayments; + pindexNew->nShieldingPayments = nShieldingPayments; + } setDirtyBlockIndex.insert(pindexNew); @@ -4874,17 +4886,19 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl CBlockIndex *pindex = queue.front(); queue.pop_front(); - pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; - pindex->nChainShieldedTx = (pindex->pprev ? pindex->pprev->nChainShieldedTx : 0) + pindex->nShieldedTx; - pindex->nChainFullyShieldedTx = (pindex->pprev ? pindex->pprev->nChainFullyShieldedTx : 0) + pindex->nFullyShieldedTx; - pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; - pindex->nChainDeshieldingTx = (pindex->pprev ? pindex->pprev->nChainDeshieldingTx : 0) + pindex->nDeshieldingTx; + if (fZindex) { + pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; + pindex->nChainShieldedTx = (pindex->pprev ? pindex->pprev->nChainShieldedTx : 0) + pindex->nShieldedTx; + pindex->nChainFullyShieldedTx = (pindex->pprev ? pindex->pprev->nChainFullyShieldedTx : 0) + pindex->nFullyShieldedTx; + pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; + pindex->nChainDeshieldingTx = (pindex->pprev ? pindex->pprev->nChainDeshieldingTx : 0) + pindex->nDeshieldingTx; - pindex->nChainPayments = (pindex->pprev ? pindex->pprev->nChainPayments : 0) + pindex->nPayments; - pindex->nChainShieldedPayments = (pindex->pprev ? pindex->pprev->nChainShieldedPayments : 0) + pindex->nShieldedPayments; - pindex->nChainFullyShieldedPayments = (pindex->pprev ? pindex->pprev->nChainFullyShieldedPayments : 0) + pindex->nFullyShieldedPayments; - pindex->nChainShieldingPayments = (pindex->pprev ? pindex->pprev->nChainShieldingPayments : 0) + pindex->nShieldingPayments; - pindex->nChainDeshieldingPayments = (pindex->pprev ? pindex->pprev->nChainDeshieldingPayments : 0) + pindex->nDeshieldingPayments; + pindex->nChainPayments = (pindex->pprev ? pindex->pprev->nChainPayments : 0) + pindex->nPayments; + pindex->nChainShieldedPayments = (pindex->pprev ? pindex->pprev->nChainShieldedPayments : 0) + pindex->nShieldedPayments; + pindex->nChainFullyShieldedPayments = (pindex->pprev ? pindex->pprev->nChainFullyShieldedPayments : 0) + pindex->nFullyShieldedPayments; + pindex->nChainShieldingPayments = (pindex->pprev ? pindex->pprev->nChainShieldingPayments : 0) + pindex->nShieldingPayments; + pindex->nChainDeshieldingPayments = (pindex->pprev ? pindex->pprev->nChainDeshieldingPayments : 0) + pindex->nDeshieldingPayments; + } if (pindex->pprev) { if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { @@ -4922,8 +4936,10 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl } } - fprintf(stderr, "ht.%d, ShieldedPayments=%d, ShieldedTx=%d, FullyShieldedTx=%d\n", - pindexNew->GetHeight(), nShieldedPayments, nShieldedTx, nFullyShieldedTx ); + if (fZindex) + fprintf(stderr, "ht.%d, ShieldedPayments=%d, ShieldedTx=%d, FullyShieldedTx=%d, ntz=%d\n", + pindexNew->GetHeight(), nShieldedPayments, nShieldedTx, nFullyShieldedTx, nNotarizations ); + return true; } @@ -6155,15 +6171,17 @@ bool static LoadBlockIndexDB() if (pindex->pprev) { if (pindex->pprev->nChainTx) { - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; - pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; - pindex->nChainShieldingTx = pindex->pprev->nChainShieldingTx + pindex->nShieldingTx; - pindex->nChainShieldingPayments = pindex->pprev->nChainShieldingPayments + pindex->nShieldingPayments; - pindex->nChainDeshieldingTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainDeshieldingPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; - pindex->nChainFullyShieldedTx = pindex->pprev->nChainFullyShieldedTx + pindex->nFullyShieldedTx; - pindex->nChainFullyShieldedPayments = pindex->pprev->nChainFullyShieldedPayments + pindex->nFullyShieldedPayments; + if (fZindex) { + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->pprev->nChainShieldingTx + pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->pprev->nChainShieldingPayments + pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainDeshieldingPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainFullyShieldedTx = pindex->pprev->nChainFullyShieldedTx + pindex->nFullyShieldedTx; + pindex->nChainFullyShieldedPayments = pindex->pprev->nChainFullyShieldedPayments + pindex->nFullyShieldedPayments; + } if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; @@ -6177,29 +6195,33 @@ bool static LoadBlockIndexDB() } } else { pindex->nChainTx = 0; - pindex->nChainShieldedTx = 0; - pindex->nChainFullyShieldedTx = 0; - pindex->nChainShieldedPayments = 0; - pindex->nChainShieldingPayments = 0; - pindex->nChainDeshieldingTx = 0; - pindex->nChainDeshieldingPayments = 0; - pindex->nChainFullyShieldedTx = 0; - pindex->nChainFullyShieldedPayments = 0; + if (fZindex) { + pindex->nChainShieldedTx = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainShieldedPayments = 0; + pindex->nChainShieldingPayments = 0; + pindex->nChainDeshieldingTx = 0; + pindex->nChainDeshieldingPayments = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainFullyShieldedPayments = 0; + } pindex->nChainSproutValue = boost::none; pindex->nChainSaplingValue = boost::none; mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex)); } } else { pindex->nChainTx = pindex->nTx; - pindex->nChainShieldedTx = pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->nShieldedPayments; - pindex->nChainShieldingTx = pindex->nShieldingTx; - pindex->nChainShieldingPayments = pindex->nShieldingPayments; - pindex->nChainDeshieldingTx = pindex->nDeshieldingTx; - pindex->nChainDeshieldingPayments = pindex->nDeshieldingPayments; - pindex->nChainFullyShieldedPayments = pindex->nFullyShieldedPayments; pindex->nChainSproutValue = pindex->nSproutValue; pindex->nChainSaplingValue = pindex->nSaplingValue; + if (fZindex) { + pindex->nChainShieldedTx = pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->nDeshieldingTx; + pindex->nChainDeshieldingPayments = pindex->nDeshieldingPayments; + pindex->nChainFullyShieldedPayments = pindex->nFullyShieldedPayments; + } } } // Construct in-memory chain of branch IDs. diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index d18f4e5c1..2df621066 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -49,6 +49,7 @@ using namespace std; extern int32_t KOMODO_INSYNC; +extern bool fZindex; extern void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry); void ScriptPubKeyToJSON(const CScript& scriptPubKey, UniValue& out, bool fIncludeHex); int32_t komodo_notarized_height(int32_t *prevMoMheightp,uint256 *hashp,uint256 *txidp); @@ -2007,14 +2008,16 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("time", (int64_t)pindex->nTime); ret.pushKV("txcount", (int64_t)pindex->nChainTx); - ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); - ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); - ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); - ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); - ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); - ret.pushKV("fully_shielded_payments", (int64_t)pindex->nChainFullyShieldedPayments); - ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); - ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); + if (fZindex) { + ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); + ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); + ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); + ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); + ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); + ret.pushKV("fully_shielded_payments", (int64_t)pindex->nChainFullyShieldedPayments); + ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); + ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); + } ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); ret.pushKV("window_final_block_height", pindex->GetHeight()); @@ -2024,46 +2027,51 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("window_interval", nTimeDiff); ret.pushKV("window_txcount", nTxDiff); ret.pushKV("window_payments", nPaymentsDiff); - ret.pushKV("window_fully_shielded_payments", nFullyShieldedPaymentsDiff); - ret.pushKV("window_shielded_payments", nShieldedPaymentsDiff); - ret.pushKV("window_shielding_payments", nShieldingPaymentsDiff); - ret.pushKV("window_deshielding_payments", nDeshieldingPaymentsDiff); if (nTimeDiff > 0) { ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); - ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); - ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); - ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); - ret.pushKV("shielded_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); - ret.pushKV("fully_shielded_paymentrate", ((double)nFullyShieldedPaymentsDiff) / nTimeDiff); - } - if (nTxDiff > 0) { - ret.pushKV("shielded_tx_percent", ((double)pindex->nShieldedTx) / nTxDiff); - ret.pushKV("fully_shielded_tx_percent", ((double)pindex->nFullyShieldedTx) / nTxDiff); - ret.pushKV("shielding_tx_percent", ((double)pindex->nShieldingTx) / nTxDiff); - ret.pushKV("deshielding_tx_percent", ((double)pindex->nDeshieldingTx) / nTxDiff); - } - if (nPaymentsDiff > 0) { - ret.pushKV("shielded_payments_percent", ((double)pindex->nShieldedPayments) / nPaymentsDiff); - ret.pushKV("fully_shielded_payments_percent", ((double)pindex->nFullyShieldedPayments) / nPaymentsDiff); - ret.pushKV("shielding_payments_percent", ((double)pindex->nShieldingPayments) / nPaymentsDiff); - ret.pushKV("deshielding_payments_percent", ((double)pindex->nDeshieldingPayments) / nPaymentsDiff); + if (fZindex) { + ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); + ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); + ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); + ret.pushKV("shielded_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); + ret.pushKV("fully_shielded_paymentrate", ((double)nFullyShieldedPaymentsDiff) / nTimeDiff); + } } - // Shielded-only statistics - UniValue shielded(UniValue::VOBJ); - if (nShieldedTxDiff > 0) { - shielded.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nShieldedTxDiff ); - shielded.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nShieldedTxDiff ); - shielded.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nShieldedTxDiff ); + if (fZindex) { + ret.pushKV("window_fully_shielded_payments", nFullyShieldedPaymentsDiff); + ret.pushKV("window_shielded_payments", nShieldedPaymentsDiff); + ret.pushKV("window_shielding_payments", nShieldingPaymentsDiff); + ret.pushKV("window_deshielding_payments", nDeshieldingPaymentsDiff); + if (nTxDiff > 0) { + ret.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / nTxDiff); + ret.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nTxDiff); + ret.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nTxDiff); + ret.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nTxDiff); + } + if (nPaymentsDiff > 0) { + ret.pushKV("shielded_payments_percent", ((double)nShieldedPaymentsDiff) / nPaymentsDiff); + ret.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nPaymentsDiff); + ret.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nPaymentsDiff); + ret.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nPaymentsDiff); + } + + // Shielded-only statistics + UniValue shielded(UniValue::VOBJ); + if (nShieldedTxDiff > 0) { + shielded.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nShieldedTxDiff ); + shielded.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nShieldedTxDiff ); + shielded.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nShieldedTxDiff ); + } + if (nShieldedPaymentsDiff > 0) { + shielded.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nShieldedPaymentsDiff ); + shielded.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nShieldedPaymentsDiff ); + shielded.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nShieldedPaymentsDiff ); + } + if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) + ret.pushKV("shielded_only", shielded); } - if (nShieldedPaymentsDiff > 0) { - shielded.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nShieldedPaymentsDiff ); - shielded.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nShieldedPaymentsDiff ); - shielded.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nShieldedPaymentsDiff ); - } - if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) - ret.pushKV("shielded_only", shielded); } return ret; From b2c03c82a57b1a521f47cd63df53e4d043624fb9 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 19 Aug 2019 05:25:25 -0700 Subject: [PATCH 018/339] Explain about changing heuristics + on-disk data --- src/main.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 41cc3a579..8ed78f512 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4791,6 +4791,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue -= js.vpub_new; } + // Ignore following stats unless -zindex if (!fZindex) continue; @@ -4812,8 +4813,10 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl } else if(tx.vout.size()>0) { nDeshieldingTx++; } - //NOTE: These are at best heuristics. Improve them as much as possible - // You cannot compare stats generated from different sets of heuristics + //NOTE: These are at best heuristics. Improve them as much as possible. + // You cannot compare stats generated from different sets of heuristics, so + // if you change this code, you must delete and resync from scratch, or you + // will be mixing together data from two set of heuristics. if (nShieldedOutputs >= 1) { // If there are shielded outputs, count each as a payment @@ -6299,9 +6302,11 @@ bool static LoadBlockIndexDB() // Check whether we have a transaction index pblocktree->ReadFlag("txindex", fTxIndex); LogPrintf("%s: transaction index %s\n", __func__, fTxIndex ? "enabled" : "disabled"); + // Check whether we have an address index pblocktree->ReadFlag("addressindex", fAddressIndex); LogPrintf("%s: address index %s\n", __func__, fAddressIndex ? "enabled" : "disabled"); + // Check whether we have a shielded index pblocktree->ReadFlag("zindex", fZindex); LogPrintf("%s: shielded index %s\n", __func__, fZindex ? "enabled" : "disabled"); From d03d774c184d400f88288abe732a712b12700496 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 20 Aug 2019 20:19:24 -0700 Subject: [PATCH 019/339] Fix zindex flag detection --- src/init.cpp | 8 +++----- src/main.cpp | 2 +- src/main.h | 1 + 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 9a1f0f666..8d37f2a46 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1283,14 +1283,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Komodo is probably already running.") + " %s.", strDataDir, e.what())); } - fprintf(stderr,"About to create pidfile\n"); #ifndef _WIN32 CreatePidFile(GetPidFile(), getpid()); #endif - fprintf(stderr,"created pidfile\n"); if (GetBoolArg("-shrinkdebugfile", !fDebug)) ShrinkDebugFile(); - fprintf(stderr,"past shrinkdebugfile\n"); LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); LogPrintf("Komodo version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); @@ -1669,8 +1666,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) break; } - // Check for changed -zindex state - if (fZindex != GetBoolArg("-zindex", false)) { + fprintf(stderr, "zindex=%s in block index??\n", fZindex ? "enabled" : "disabled"); + // Turning on -zindex requires a reindex, turning it off doesn't + if (fZindex && (fZindex != GetBoolArg("-zindex", false))) { strLoadError = _("You need to rebuild the database using -reindex to change -zindex"); break; } diff --git a/src/main.cpp b/src/main.cpp index 8ed78f512..524110948 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6680,7 +6680,7 @@ bool InitBlockIndex() { pblocktree->WriteFlag("addressindex", fAddressIndex); // Use the provided setting for -zindex in the new database - fAddressIndex = GetBoolArg("-zindex", DEFAULT_SHIELDEDINDEX); + fZindex = GetBoolArg("-zindex", DEFAULT_SHIELDEDINDEX); pblocktree->WriteFlag("zindex", fZindex); // Use the provided setting for -timestampindex in the new database diff --git a/src/main.h b/src/main.h index 08104a885..800f05745 100644 --- a/src/main.h +++ b/src/main.h @@ -158,6 +158,7 @@ extern bool fImporting; extern bool fReindex; extern int nScriptCheckThreads; extern bool fTxIndex; +extern bool fZindex; extern bool fIsBareMultisigStd; extern bool fCheckBlockIndex; extern bool fCheckpointsEnabled; From 3b49c1d256e198ba7ba036ec1b892054f90ce514 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 21 Aug 2019 06:43:41 -0700 Subject: [PATCH 020/339] Improve ntz detection and serialize to disk --- src/chain.h | 12 ++++++++++-- src/main.cpp | 9 +++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/chain.h b/src/chain.h index 1a0a7057d..0ae37a90e 100644 --- a/src/chain.h +++ b/src/chain.h @@ -260,6 +260,10 @@ public: //! Note: in a potential headers-first mode, this number cannot be relied upon unsigned int nTx; + //! Number of notarization transactions in this block. + unsigned int nNotarizations; + + // TODO: convert block-stats to unsigned int ? //! (memory only) Number of payments (shielded or transparent) in the block //! up to and including this block. One transaction can contain one or more //! payments. This stat allows us to calculate ratios of shielded/transparent @@ -310,6 +314,9 @@ public: //! Change to 64-bit type when necessary; won't happen before 2030 unsigned int nChainTx; + //! Number of notarization transactions in this chain + int64_t nChainNotarizations; + //! (memory only) Number of payments (shielded or transparent) in the chain //! up to and including this block. One transaction can contain one or more //! payments. This stat allows us to calculate ratios of shielded/transparent @@ -615,8 +622,7 @@ public: READWRITE(VARINT(nStatus)); READWRITE(VARINT(nTx)); - // These values only serialized when -zindex=1 - //if (fZindex != GetBoolArg("-zindex", false)) { + // These values only serialized when -zindex enabled if(fZindex) { READWRITE(VARINT(nShieldedTx)); READWRITE(VARINT(nShieldingTx)); @@ -627,6 +633,8 @@ public: READWRITE(VARINT(nShieldingPayments)); READWRITE(VARINT(nDeshieldingPayments)); READWRITE(VARINT(nFullyShieldedPayments)); + + READWRITE(VARINT(nChainNotarizations)); } if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) diff --git a/src/main.cpp b/src/main.cpp index 524110948..b970663f7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4799,8 +4799,8 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl nShieldedOutputs = tx.vShieldedOutput.size(); isShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; - - if(tx.vin.size()==13 && tx.vout.size()==2) { + // We want to avoid full verification with a low false-positive rate + if(tx.vin.size()==13 && tx.vout.size()==2 && tx.vout[1].scriptPubKey.IsOpReturn() && tx.vout[1].nValue==0) { nNotarizations++; } @@ -4875,6 +4875,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nFullyShieldedPayments = nFullyShieldedPayments; pindexNew->nDeshieldingPayments = nDeshieldingPayments; pindexNew->nShieldingPayments = nShieldingPayments; + pindexNew->nNotarizations = nNotarizations; } setDirtyBlockIndex.insert(pindexNew); @@ -4891,6 +4892,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl if (fZindex) { pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; + pindex->nChainNotarizations = (pindex->pprev ? pindex->pprev->nChainNotarizations : 0) + pindex->nNotarizations; pindex->nChainShieldedTx = (pindex->pprev ? pindex->pprev->nChainShieldedTx : 0) + pindex->nShieldedTx; pindex->nChainFullyShieldedTx = (pindex->pprev ? pindex->pprev->nChainFullyShieldedTx : 0) + pindex->nFullyShieldedTx; pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; @@ -6175,6 +6177,7 @@ bool static LoadBlockIndexDB() if (pindex->pprev->nChainTx) { if (fZindex) { + pindex->nChainNotarizations = pindex->pprev->nChainNotarizations + pindex->nNotarizations; pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; @@ -6199,6 +6202,7 @@ bool static LoadBlockIndexDB() } else { pindex->nChainTx = 0; if (fZindex) { + pindex->nChainNotarizations = 0; pindex->nChainShieldedTx = 0; pindex->nChainFullyShieldedTx = 0; pindex->nChainShieldedPayments = 0; @@ -6217,6 +6221,7 @@ bool static LoadBlockIndexDB() pindex->nChainSproutValue = pindex->nSproutValue; pindex->nChainSaplingValue = pindex->nSaplingValue; if (fZindex) { + pindex->nChainNotarizations = pindex->nNotarizations; pindex->nChainShieldedTx = pindex->nShieldedTx; pindex->nChainShieldedPayments = pindex->nShieldedPayments; pindex->nChainShieldingTx = pindex->nShieldingTx; From c91d1d1fdfabae2c496a0dabe1344698cdfe2137 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 21 Aug 2019 11:25:38 -0700 Subject: [PATCH 021/339] Use uints to save RAM/disk on block stats; fix ntz serialization --- src/chain.h | 23 ++++++++++------------- src/rpc/blockchain.cpp | 25 +++++++++++++++---------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/chain.h b/src/chain.h index 0ae37a90e..f6c2bf980 100644 --- a/src/chain.h +++ b/src/chain.h @@ -263,50 +263,47 @@ public: //! Number of notarization transactions in this block. unsigned int nNotarizations; - // TODO: convert block-stats to unsigned int ? //! (memory only) Number of payments (shielded or transparent) in the block //! up to and including this block. One transaction can contain one or more //! payments. This stat allows us to calculate ratios of shielded/transparent //! when combined with shielded payment stats - int64_t nPayments; + unsigned int nPayments; //! (memory only) Number of shielded transactions (of any kind) in the block up to and including this block. //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as //! inputs and outputs. - int64_t nShieldedTx; + unsigned int nShieldedTx; //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined //! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent // inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc... - int64_t nFullyShieldedTx; + unsigned int nFullyShieldedTx; //! (memory only) Number of shielding payments. A shielding payment is defined //! as having a shielded output but transparent input: t->z - int64_t nShieldingPayments; + unsigned int nShieldingPayments; //! (memory only) Number of shielded payments. A shielded payment is defined //! as having a shielded input or output: t->z or z->t - int64_t nShieldedPayments; + unsigned int nShieldedPayments; //! (memory only) Number of fully shielded payments. A fully shielded payment is defined //! as having a shielded input and shielded output: z->z - int64_t nFullyShieldedPayments; + unsigned int nFullyShieldedPayments; //! (memory only) Number of deshielding transactions. A deshielding transaction is defined //! as a transaction containing JoinSplits and at least one transparent output. - int64_t nDeshieldingTx; + unsigned int nDeshieldingTx; //! (memory only) Number of deshielding payments. A deshielding payment is defined //! as one transparent input and one shielded output: z->t - int64_t nDeshieldingPayments; + unsigned int nDeshieldingPayments; //! (memory only) Number of shielding transactions. A shielding transaction is defined //! as a transaction containing JoinSplits and at least one transparent input // i.e. t->z or t->(z,t) or z->(z,z,t) - int64_t nShieldingTx; - - + unsigned int nShieldingTx; // chain stats //! (memory only) Number of transactions in the chain up to and including this block. @@ -634,7 +631,7 @@ public: READWRITE(VARINT(nDeshieldingPayments)); READWRITE(VARINT(nFullyShieldedPayments)); - READWRITE(VARINT(nChainNotarizations)); + READWRITE(VARINT(nNotarizations)); } if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 2df621066..f965fdeef 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1994,21 +1994,13 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; - int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; - int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx; - int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx; - int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx; - int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx; - int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; - int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments; - int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments; - int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments; UniValue ret(UniValue::VOBJ); ret.pushKV("time", (int64_t)pindex->nTime); - ret.pushKV("txcount", (int64_t)pindex->nChainTx); + if (fZindex) { + ret.pushKV("notarizations", (int64_t)pindex->nChainNotarizations); ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); @@ -2024,13 +2016,26 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("window_block_count", blockcount); if (blockcount > 0) { + int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; + int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx; + int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx; + int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx; + int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx; + int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; + int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments; + int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments; + int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments; + unsigned int nNotarizationsDiff = pindex->nChainNotarizations - pindexPast->nChainNotarizations; + ret.pushKV("window_interval", nTimeDiff); ret.pushKV("window_txcount", nTxDiff); ret.pushKV("window_payments", nPaymentsDiff); + ret.pushKV("window_notarizations", (int) nNotarizationsDiff); if (nTimeDiff > 0) { ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); if (fZindex) { + ret.pushKV("notarization_txrate", ((double)nNotarizationsDiff) / nTimeDiff); ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); From 76543056abb4c2d03d02b7dfe459db56cea70edb Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 21 Aug 2019 19:50:50 -0700 Subject: [PATCH 022/339] Changing -zindex on or off requires reindex --- src/init.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 8d37f2a46..a12cad1dd 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1666,9 +1666,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) break; } - fprintf(stderr, "zindex=%s in block index??\n", fZindex ? "enabled" : "disabled"); - // Turning on -zindex requires a reindex, turning it off doesn't - if (fZindex && (fZindex != GetBoolArg("-zindex", false))) { + fprintf(stderr, "zindex=%s in block index\n", fZindex ? "enabled" : "disabled"); + if (fZindex != GetBoolArg("-zindex", false)) { strLoadError = _("You need to rebuild the database using -reindex to change -zindex"); break; } From 13dad469c7dcce001899ccc3fceb33ee27a9d0cd Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 22 Aug 2019 05:43:51 -0700 Subject: [PATCH 023/339] add missing zstat and new dep --- INSTALL.md | 4 ++-- src/rpc/blockchain.cpp | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 38c49c68b..348aa9f3d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,7 +24,7 @@ sudo swapon /swapfile # install build depedencies sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib \ autoconf libtool ncurses-dev unzip git python zlib1g-dev wget \ - bsdmainutils automake curl unzip nano + bsdmainutils automake curl unzip nano libsodium-dev # pull git clone https://github.com/MyHush/hush3.git cd hush3 @@ -49,7 +49,7 @@ Get dependencies: sudo apt-get install \ build-essential pkg-config libc6-dev m4 g++-multilib \ autoconf libtool ncurses-dev unzip git python \ - zlib1g-dev wget bsdmainutils automake mingw-w64 cmake + zlib1g-dev wget bsdmainutils automake mingw-w64 cmake libsodium-dev ``` Downloading Git source repo, building and running Hush: diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 0d8c0a46a..ecc5cd848 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2049,6 +2049,8 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("window_shielded_payments", nShieldedPaymentsDiff); ret.pushKV("window_shielding_payments", nShieldingPaymentsDiff); ret.pushKV("window_deshielding_payments", nDeshieldingPaymentsDiff); + ret.pushKV("window_shielded_txcount", nShieldedTxDiff); + if (nTxDiff > 0) { ret.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / nTxDiff); ret.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nTxDiff); From f686d9288ce4d1e7e75086c5d122ed54aa1831b2 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 23 Aug 2019 04:08:47 -0700 Subject: [PATCH 024/339] blockindex bugfix suggested by blackjoker --- src/chain.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chain.h b/src/chain.h index f6c2bf980..167e69af7 100644 --- a/src/chain.h +++ b/src/chain.h @@ -620,7 +620,7 @@ public: READWRITE(VARINT(nTx)); // These values only serialized when -zindex enabled - if(fZindex) { + if((s.GetType() & SER_DISK) && fZindex) { READWRITE(VARINT(nShieldedTx)); READWRITE(VARINT(nShieldingTx)); READWRITE(VARINT(nDeshieldingTx)); From 6a3e69d34412e914f39026f804c391edfb1841d5 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sun, 25 Aug 2019 10:52:23 -0700 Subject: [PATCH 025/339] fix --- src/cc/gateways.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cc/gateways.cpp b/src/cc/gateways.cpp index 5f167a224..2a2168de8 100644 --- a/src/cc/gateways.cpp +++ b/src/cc/gateways.cpp @@ -1114,6 +1114,7 @@ std::string GatewaysClaim(uint64_t txfee,uint256 bindtxid,std::string refcoin,ui if ( CCchange != 0 ) mtx.vout.push_back(MakeTokensCC1vout(EVAL_GATEWAYS,CCchange,gatewayspk)); return(FinalizeCCTx(0,cp,mtx,mypk,txfee,EncodeGatewaysClaimOpRet('C',tokenid,bindtxid,refcoin,deposittxid,destpub,amount))); } + return ""; } std::string GatewaysWithdraw(uint64_t txfee,uint256 bindtxid,std::string refcoin,CPubKey withdrawpub,int64_t amount) From 5e26d8ec4cf7ef763c80300dbc6121d910cc6bac Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 27 Aug 2019 04:42:24 -0700 Subject: [PATCH 026/339] WIP organic txstats and add some missing stats --- src/rpc/blockchain.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index ecc5cd848..122c6ba25 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2037,6 +2037,8 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) if (fZindex) { ret.pushKV("notarization_txrate", ((double)nNotarizationsDiff) / nTimeDiff); ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); + ret.pushKV("shielding_txrate", ((double)nShieldingTxDiff) / nTimeDiff); + ret.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff) / nTimeDiff); ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); ret.pushKV("shielded_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); @@ -2078,6 +2080,17 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) } if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) ret.pushKV("shielded_only", shielded); + + // Organic tx stats = Raw - Coinbase - DPoW + UniValue organic(UniValue::VOBJ); + organic.pushKV("shielded_txrate", ((double)nShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("shielding_txrate", ((double)nShieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + + if (nTxDiff > 0) { + ret.pushKV("organic", organic); + } } } From 024f6ff43d533640857958f36a7b6e609b7706b7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 27 Aug 2019 05:58:49 -0700 Subject: [PATCH 027/339] More organic stats --- src/rpc/blockchain.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 122c6ba25..8703d6a95 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1937,6 +1937,8 @@ inline CBlockIndex* LookupBlockIndex(const uint256& hash) return it == mapBlockIndex.end() ? nullptr : it->second; } +#define ORG(X) (X - blockcount - nNotarizationsDiff) + UniValue getchaintxstats(const UniValue& params, bool fHelp) { if (fHelp || params.size() > 2) @@ -2082,13 +2084,17 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("shielded_only", shielded); // Organic tx stats = Raw - Coinbase - DPoW - UniValue organic(UniValue::VOBJ); - organic.pushKV("shielded_txrate", ((double)nShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("shielding_txrate", ((double)nShieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - if (nTxDiff > 0) { + UniValue organic(UniValue::VOBJ); + organic.pushKV("shielded_txrate", ((double)nShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("shielding_txrate", ((double)nShieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + organic.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); + + ret.pushKV("shielded_tx_percent", ((double)ORG(nShieldedTxDiff)) / nTxDiff); + ret.pushKV("fully_shielded_tx_percent", ((double)ORG(nFullyShieldedTxDiff)) / nTxDiff); + ret.pushKV("shielding_tx_percent", ((double)ORG(nShieldingTxDiff)) / nTxDiff); + ret.pushKV("deshielding_tx_percent", ((double)ORG(nDeshieldingTxDiff)) / nTxDiff); ret.pushKV("organic", organic); } } From 715dc7cb363d6c17ffafb533837fe154084e6ec3 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 27 Aug 2019 06:23:02 -0700 Subject: [PATCH 028/339] These organic stats actually make sense --- src/rpc/blockchain.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 8703d6a95..b6285d96f 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -2086,16 +2087,14 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) // Organic tx stats = Raw - Coinbase - DPoW if (nTxDiff > 0) { UniValue organic(UniValue::VOBJ); - organic.pushKV("shielded_txrate", ((double)nShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("shielding_txrate", ((double)nShieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - organic.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff - blockcount - nNotarizationsDiff ) / nTimeDiff); - ret.pushKV("shielded_tx_percent", ((double)ORG(nShieldedTxDiff)) / nTxDiff); - ret.pushKV("fully_shielded_tx_percent", ((double)ORG(nFullyShieldedTxDiff)) / nTxDiff); - ret.pushKV("shielding_tx_percent", ((double)ORG(nShieldingTxDiff)) / nTxDiff); - ret.pushKV("deshielding_tx_percent", ((double)ORG(nDeshieldingTxDiff)) / nTxDiff); - ret.pushKV("organic", organic); + organic.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / ORG(nTxDiff)); + organic.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / ORG(nTxDiff)); + organic.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / ORG(nTxDiff)); + organic.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / ORG(nTxDiff)); + + organic.pushKV("txcount", (int) ORG(nTxDiff)); + organic.pushKV("organic", organic); } } } From c1dd6e5b961969c7656a88d3ed442f11a06b1f97 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 4 Sep 2019 14:04:49 -0700 Subject: [PATCH 029/339] Add organic payment percents, organic paymentrate and txrate and organic payment count --- src/rpc/blockchain.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index b6285d96f..a7cca202d 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2003,15 +2003,15 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) ret.pushKV("txcount", (int64_t)pindex->nChainTx); if (fZindex) { - ret.pushKV("notarizations", (int64_t)pindex->nChainNotarizations); - ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); + ret.pushKV("notarizations", (int64_t)pindex->nChainNotarizations); + ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); - ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); - ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); - ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); - ret.pushKV("fully_shielded_payments", (int64_t)pindex->nChainFullyShieldedPayments); - ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); - ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); + ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); + ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); + ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); + ret.pushKV("fully_shielded_payments",(int64_t)pindex->nChainFullyShieldedPayments); + ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); + ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); } ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); @@ -2088,12 +2088,18 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) if (nTxDiff > 0) { UniValue organic(UniValue::VOBJ); - organic.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / ORG(nTxDiff)); - organic.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / ORG(nTxDiff)); - organic.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / ORG(nTxDiff)); - organic.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / ORG(nTxDiff)); - + organic.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / ORG(nTxDiff)); + organic.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / ORG(nTxDiff)); + organic.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / ORG(nTxDiff)); + organic.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / ORG(nTxDiff)); + organic.pushKV("shielded_payments_percent", ((double)nShieldedPaymentsDiff) / ORG(nPaymentsDiff)); + organic.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / ORG(nPaymentsDiff)); + organic.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / ORG(nPaymentsDiff)); + organic.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / ORG(nPaymentsDiff)); + organic.pushKV("paymentrate", ((double)ORG(nPaymentsDiff)) / nTimeDiff); + organic.pushKV("txrate", ((double)ORG(nTxDiff)) / nTimeDiff); organic.pushKV("txcount", (int) ORG(nTxDiff)); + organic.pushKV("payments", (int) ORG(nPaymentsDiff)); organic.pushKV("organic", organic); } } From 4b970170775168054cc913f12bcd3d5e1995b2f5 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 5 Sep 2019 08:19:04 +0200 Subject: [PATCH 030/339] Correctly return organic json --- src/rpc/blockchain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index a7cca202d..b8a0e7c23 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2100,7 +2100,7 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) organic.pushKV("txrate", ((double)ORG(nTxDiff)) / nTimeDiff); organic.pushKV("txcount", (int) ORG(nTxDiff)); organic.pushKV("payments", (int) ORG(nPaymentsDiff)); - organic.pushKV("organic", organic); + ret.pushKV("organic", organic); } } } From 22c2aa8fda545113c4fb6be5813594f4896601f9 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 5 Sep 2019 08:49:35 -0400 Subject: [PATCH 031/339] shielded is a better name for this key --- src/rpc/blockchain.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index a7cca202d..105d8f6f5 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -2082,7 +2082,7 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) shielded.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nShieldedPaymentsDiff ); } if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) - ret.pushKV("shielded_only", shielded); + ret.pushKV("shielded", shielded); // Organic tx stats = Raw - Coinbase - DPoW if (nTxDiff > 0) { From 799f6d757b484ed6a12cc315a0e848fc35981b31 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 5 Sep 2019 08:56:47 -0400 Subject: [PATCH 032/339] Add some docs for getchaintxstats new features --- src/rpc/blockchain.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index d1ce1188c..055ba5566 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1946,15 +1946,18 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp) throw runtime_error( "getchaintxstats\n" "\nCompute statistics about the total number and rate of transactions in the chain.\n" + "\nThis RPC will return extra data about shielded transactions, payments and notarizations if the zindex is enabled .\n" "\nArguments:\n" "1. nblocks (numeric, optional) Number of blocks in averaging window.\n" "2. blockhash (string, optional) The hash of the block which ends the window.\n" "\nResult:\n" "{\n" " \"time\": xxxxx, (numeric) The timestamp for the final block in the window in UNIX format.\n" + " \"notarizations\": xxxxx, (optional, numeric) The number of notarizations in the chain.\n" " \"txcount\": xxxxx, (numeric) The total number of transactions in the chain up to that point.\n" " \"window_final_block_hash\": \"...\", (string) The hash of the final block in the window.\n" " \"window_block_count\": xxxxx, (numeric) Size of the window in number of blocks.\n" + " \"window_notarizations\": xxxxx, (optional, numeric) Number of notarization transactions in window.\n" " \"window_tx_count\": xxxxx, (numeric) The number of transactions in the window. Only returned if \"window_block_count\" is > 0.\n" " \"window_interval\": xxxxx, (numeric) The elapsed time in the window in seconds. Only returned if \"window_block_count\" is > 0.\n" " \"txrate\": x.xx, (numeric) The average rate of transactions per second in the window. Only returned if \"window_interval\" is > 0.\n" From 3657b91025909eb5dc00c50be974e7dfbb950f71 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 15 Oct 2019 21:33:19 -0700 Subject: [PATCH 033/339] Port mempool coredump fix from blackjoker --- src/main.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a57686a7e..3b798d5fd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1922,7 +1922,8 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // Bring the best block into scope view.GetBestBlock(); - nValueIn = view.GetValueIn(chainActive.LastTip()->GetHeight(),&interest,tx,chainActive.LastTip()->nTime); + if (!fSkipExpiry) + nValueIn = view.GetValueIn(chainActive.LastTip()->GetHeight(),&interest,tx,chainActive.LastTip()->nTime); if ( 0 && interest != 0 ) fprintf(stderr,"add interest %.8f\n",(double)interest/COIN); // we have all inputs cached now, so switch back to dummy, so we don't need to keep lock on mempool @@ -1930,7 +1931,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } // Check for non-standard pay-to-script-hash in inputs - if (Params().RequireStandard() && !AreInputsStandard(tx, view, consensusBranchId)) + if (!fSkipExpiry && Params().RequireStandard() && !AreInputsStandard(tx, view, consensusBranchId)) return error("AcceptToMemoryPool: reject nonstandard transaction input"); // Check that the transaction doesn't have an excessive number of @@ -1939,7 +1940,8 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // MAX_BLOCK_SIGOPS; we still consider this an invalid rather than // merely non-standard transaction. unsigned int nSigOps = GetLegacySigOpCount(tx); - nSigOps += GetP2SHSigOpCount(tx, view); + if (!fSkipExpiry) + nSigOps += GetP2SHSigOpCount(tx, view); if (nSigOps > MAX_STANDARD_TX_SIGOPS) { fprintf(stderr,"accept failure.4\n"); @@ -1948,7 +1950,13 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa CAmount nValueOut = tx.GetValueOut(); CAmount nFees = nValueIn-nValueOut; - double dPriority = view.GetPriority(tx, chainActive.Height()); + double dPriority = 0; + if (!fSkipExpiry) + { + dPriority = view.GetPriority(tx, chainActive.Height()); + nFees = 0; + } + if ( nValueOut > 777777*COIN && KOMODO_VALUETOOBIG(nValueOut - 777777*COIN) != 0 ) // some room for blockreward and txfees return state.DoS(100, error("AcceptToMemoryPool: GetValueOut too big"),REJECT_INVALID,"tx valueout is too big"); @@ -1996,7 +2004,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // Continuously rate-limit free (really, very-low-fee) transactions // This mitigates 'penny-flooding' -- sending thousands of free transactions just to // be annoying or make others' transactions take longer to confirm. - if (fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize) && !tx.IsCoinImport() && !tx.IsPegsImport()) + if ( !fSkipExpiry && fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize) && !tx.IsCoinImport() && !tx.IsPegsImport()) { static CCriticalSection csFreeLimiter; static double dFreeCount; @@ -2019,7 +2027,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa dFreeCount += nSize; } - if (!tx.IsCoinImport() && !tx.IsPegsImport() && fRejectAbsurdFee && nFees > ::minRelayTxFee.GetFee(nSize) * 10000 && nFees > nValueOut/19) + if (!fSkipExpiry && !tx.IsCoinImport() && !tx.IsPegsImport() && fRejectAbsurdFee && nFees > ::minRelayTxFee.GetFee(nSize) * 10000 && nFees > nValueOut/19) { string errmsg = strprintf("absurdly high fees %s, %d > %d", hash.ToString(), @@ -2066,7 +2074,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // Store transaction in memory pool.addUnchecked(hash, entry, !IsInitialBlockDownload()); - if (!tx.IsCoinImport()) + if (!fSkipExpiry && !tx.IsCoinImport()) { // Add memory address index if (fAddressIndex) { From ee5b2481ae70961b2fd3e1c29441b223c3bb3df4 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 17 Oct 2019 07:08:30 -0700 Subject: [PATCH 034/339] update versions and manpages --- configure.ac | 4 ++-- doc/man/komodo-cli.1 | 6 +++--- doc/man/komodo-tx.1 | 10 +++++----- doc/man/komodod.1 | 6 +++--- src/clientversion.h | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/configure.ac b/configure.ac index 38d891bed..88872aad8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,9 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) -define(_CLIENT_VERSION_MINOR, 1) +define(_CLIENT_VERSION_MINOR, 2) define(_CLIENT_VERSION_REVISION, 0) -define(_CLIENT_VERSION_BUILD, 0) +define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) define(_CLIENT_VERSION_IS_RELEASE, true) diff --git a/doc/man/komodo-cli.1 b/doc/man/komodo-cli.1 index 4c20f0fde..c8e0052ff 100644 --- a/doc/man/komodo-cli.1 +++ b/doc/man/komodo-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODO-CLI "1" "June 2019" "komodo-cli v3.0.0" "User Commands" +.TH KOMODO-CLI "1" "October 2019" "komodo-cli v3.2.0" "User Commands" .SH NAME -komodo-cli \- manual page for komodo-cli v3.0.0 +komodo-cli \- manual page for komodo-cli v3.2.0 .SH DESCRIPTION -Komodo RPC client version v3.0.0\-beta2\-ab9d87166\-dirty +Komodo RPC client version v3.2.0\-61917057d\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . diff --git a/doc/man/komodo-tx.1 b/doc/man/komodo-tx.1 index 899b0ce93..6a98d0604 100644 --- a/doc/man/komodo-tx.1 +++ b/doc/man/komodo-tx.1 @@ -1,15 +1,15 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODO-TX "1" "June 2019" "komodo-tx v3.0.0" "User Commands" +.TH KOMODO-TX "1" "October 2019" "komodo-tx v3.2.0" "User Commands" .SH NAME -komodo-tx \- manual page for komodo-tx v3.0.0 +komodo-tx \- manual page for komodo-tx v3.2.0 .SH DESCRIPTION -Zcash zcash\-tx utility version v3.0.0\-beta2\-ab9d87166\-dirty +Hush komodo\-tx utility version v3.2.0\-61917057d\-dirty .SS "Usage:" .TP -zcash\-tx [options] [commands] +komodo\-tx [options] [commands] Update hex\-encoded zcash transaction .TP -zcash\-tx [options] \fB\-create\fR [commands] +komodo\-tx [options] \fB\-create\fR [commands] Create hex\-encoded zcash transaction .SH OPTIONS .HP diff --git a/doc/man/komodod.1 b/doc/man/komodod.1 index 9a8dd439a..0c298cd46 100644 --- a/doc/man/komodod.1 +++ b/doc/man/komodod.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODOD "1" "June 2019" "komodod v3.0.0" "User Commands" +.TH KOMODOD "1" "October 2019" "komodod v3.2.0" "User Commands" .SH NAME -komodod \- manual page for komodod v3.0.0 +komodod \- manual page for komodod v3.2.0 .SH DESCRIPTION -Komodo Daemon version v3.0.0\-beta2\-ab9d87166\-dirty +Komodo Daemon version v3.2.0\-61917057d\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . diff --git a/src/clientversion.h b/src/clientversion.h index 64e0e6f65..75504940a 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -33,9 +33,9 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it // Must be kept in sync with configure.ac ! #define CLIENT_VERSION_MAJOR 3 -#define CLIENT_VERSION_MINOR 1 +#define CLIENT_VERSION_MINOR 2 #define CLIENT_VERSION_REVISION 0 -#define CLIENT_VERSION_BUILD 0 +#define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build #define CLIENT_VERSION_IS_RELEASE true @@ -56,7 +56,7 @@ #define DO_STRINGIZE(X) #X //! Copyright string used in Windows .rc files -#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, The Zcash developers, Komodo developers, and Verus developers" +#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, The Zcash developers, Komodo developers, Hush developers and Verus developers" /** * bitcoind-res.rc includes this file, but it cannot cope with real c++ code. From 111dfaca978757bcc833e2a442f0bbb459539142 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 17 Oct 2019 07:23:21 -0700 Subject: [PATCH 035/339] build system updates --- README-mac.md | 7 +++---- doc/man/verus-cli/linux/README.txt | 13 ------------- doc/man/verus-cli/mac/README.txt | 17 ----------------- doc/man/verus-cli/windows/README.txt | 21 --------------------- makeReleaseMac.sh | 10 +++++++++- 5 files changed, 12 insertions(+), 56 deletions(-) delete mode 100644 doc/man/verus-cli/linux/README.txt delete mode 100644 doc/man/verus-cli/mac/README.txt delete mode 100644 doc/man/verus-cli/windows/README.txt diff --git a/README-mac.md b/README-mac.md index 5ac074dd9..1fbe7bf89 100644 --- a/README-mac.md +++ b/README-mac.md @@ -22,13 +22,12 @@ brew tap discoteq/discoteq; brew install flock autoconf autogen automake gcc@6 b Get all that installed, then run: ```shell -git clone https://github.com/VerusCoin/VerusCoin.git -cd VerusCoin +git clone https://github.com/MyHush/hush3 +cd hush3 ./zcutil/build-mac.sh -./zcutil/fetch-params.sh ``` -To build a distributable version of VerusCoin then run the makeReleaseMac.sh script after building. This will fix the dependency references and move the komodod and komodo-cli binaries to the kmd/mac/verus-cli directory along with the 6 libraries required for it to work properly. +To build a distributable version of Hush then run the makeReleaseMac.sh script after building. This will fix the dependency references and move the komodod and komodo-cli binaries to the kmd/mac/verus-cli directory along with the 6 libraries required for it to work properly. When you are done building, you need to create `Komodo.conf` the Mac way. diff --git a/doc/man/verus-cli/linux/README.txt b/doc/man/verus-cli/linux/README.txt deleted file mode 100644 index cb2c10f0f..000000000 --- a/doc/man/verus-cli/linux/README.txt +++ /dev/null @@ -1,13 +0,0 @@ -VerusCoin Command Line Tools v0.4.0c - -Contents: -komodod - VerusCoin's enhanced Komodo daemon -komodo-cli - VerusCoin's Komodo command line utility -verus - wrapper for komodo-cli that applies the command to the VRSC coin -verusd - wrapper for komodod that sets the VerusCoin parameters to defaults properly - -The first time on a new system you will need to run ./fetch-params before using komodod or verusd. - -Run ./verusd to launch komodod, and use verus to run commands such as: -./verus stop -Which signals komodod (if it is running) to stop running. diff --git a/doc/man/verus-cli/mac/README.txt b/doc/man/verus-cli/mac/README.txt deleted file mode 100644 index 367e52fce..000000000 --- a/doc/man/verus-cli/mac/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -VerusCoin Command Line Tools v0.4.0c -Contents: -komodod - VerusCoin's enhanced Komodo daemon. -komodo-cli - VerusCoin's enhanced Komodo command line utility. -verus - wrapper for komodo-cli that applies the command to the VRSC coin -verusd - wrapper for komodod that sets the VerusCoin parameters to defaults properly -fetch_params.sh - utility to download the zcash parameters needed to start the VerusCoin command line tools and scripts -lib*.dylib - assorted dynamic libraries, dependencies needed by fetch-params.sh, komodod and/or komodo-cli - -Command line tools are run from the terminal. You can launch the terminal on a Mac by using the Finder, selecting Applications and from that select Utilities, finally selecting Terminal from the Utilities folder. -You will need to switch to the directory you extracted the verus-cl into. If you extracted it in the Download folder then the change directory command is -cd ~/Downloads/verus-cli -The first time on a new system you will need to run ./fetch-params before using komodod or verusd. - -Run ./verusd to launch komodod, and use verus to run commands such as: -./verus stop -Which signals komodod (if it is running) to stop running. diff --git a/doc/man/verus-cli/windows/README.txt b/doc/man/verus-cli/windows/README.txt deleted file mode 100644 index aa71d8c3f..000000000 --- a/doc/man/verus-cli/windows/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -VerusCoin Command Line Tools v0.4.0c -Contents: -komodod.exe - VerusCoin's enhanced Komodo daemon -komodo-cli.exe - VerusCoin's Komodo command line utility -verus.bat - wrapper for komodo-cli that applies the command to the VRSC coin -verusd.bat - wrapper for komodod that sets the VerusCoin parameters to defaults properly - -You need to run a command prompt, for example hit and type cmd -From the command prompt change to the directory where you installed verus-cli. If you downloaded the file to your Downloads directory and extracted it there then the change directory command is -cd \Users\MyName\Downloads\verus-cli -From this directory you can run the Verus command line utilities. -The first time on a new system you will need to run fetch-params before using komodod.exe or verusd. -Many anti-virus products interfere with the VerusCoin tool's ability to open ports and will need to be configured to allow what the scanner says is unsafe behavior. -Extreme cases can result in the virus scanner deleting Agama.exe or moving it to "protect" the system. You will to add the executables to a whitelist and re-extract the verus-cli-windows.zip file if that happens. -Run verusd.bat to launch komodod, and use verus.bat to run commands such as: -verus.bat stop -Which signals komodod.exe (if it is running) to stop running. - -Note that if you pass in command line options to verus.bat or verusd.bat that include an = like -ac_veruspos=50 you must surround it with double quotes like this: -verusd.bat "-ac_veruspos=50" -Otherwise Windows will drop the = and pass the two values in as separate command line options. diff --git a/makeReleaseMac.sh b/makeReleaseMac.sh index e20df75aa..171ccb43f 100755 --- a/makeReleaseMac.sh +++ b/makeReleaseMac.sh @@ -1,12 +1,16 @@ -#!/bin/sh +#!/bin/bash +# Copyright ? various authors too lazy to put a copyright header +# Copyright 2019 The Hush Developers PACKAGE_DIR="$@" mkdir ${PACKAGE_DIR} +echo "Created ${PACKAGE_DIR}" binaries=("komodo-cli" "komodod") alllibs=() for binary in "${binaries[@]}"; do + echo "Processing binary ${binary}" # do the work in the destination directory cp src/${binary} ${PACKAGE_DIR} # find the dylibs to copy for komodod @@ -20,6 +24,7 @@ libraries=("libgcc_s.1.dylib" "libgomp.1.dylib" "libidn2.0.dylib" "libstdc++.6.d for binary in "${libraries[@]}"; do + echo "Processing binary ${binary}" # find the dylibs to copy for komodod DYLIBS=`otool -L ${PACKAGE_DIR}/${binary} | grep "/usr/local" | awk -F' ' '{ print $1 }'` echo "copying ${DYLIBS} to ${PACKAGE_DIR}" @@ -31,6 +36,7 @@ indirectlibraries=("libintl.8.dylib" "libunistring.2.dylib") for binary in "${indirectlibraries[@]}"; do + echo "Processing binary ${binary}" # Need to undo this for the dylibs when we are done chmod 755 src/${binary} # find the dylibs to copy for komodod @@ -42,6 +48,7 @@ done for binary in "${binaries[@]}"; do + echo "Processing binary ${binary}" # modify komodod to point to dylibs echo "modifying ${binary} to use local libraries" for dylib in "${alllibs[@]}" @@ -54,6 +61,7 @@ done for binary in "${libraries[@]}"; do + echo "Processing binary ${binary}" # modify libraries to point to dylibs echo "modifying ${binary} to use local libraries" for dylib in "${alllibs[@]}" From 7c413bfaf615a560a03050d35ffc0e52cf4d501a Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 17 Oct 2019 07:32:55 -0700 Subject: [PATCH 036/339] update contrib --- contrib/README.md | 21 +- contrib/zcash-cli.bash-completion | 160 - contrib/zcash-tx.bash-completion | 57 - contrib/zcashd.bash-completion | 57 - doc/man/zcash-cli.1 | 88 - doc/man/zcash-fetch-params.1 | 28 - doc/man/zcash-tx.1 | 101 - doc/man/zcashd.1 | 483 -- patches | 9072 ----------------------------- 9 files changed, 12 insertions(+), 10055 deletions(-) delete mode 100644 contrib/zcash-cli.bash-completion delete mode 100644 contrib/zcash-tx.bash-completion delete mode 100644 contrib/zcashd.bash-completion delete mode 100644 doc/man/zcash-cli.1 delete mode 100644 doc/man/zcash-fetch-params.1 delete mode 100644 doc/man/zcash-tx.1 delete mode 100644 doc/man/zcashd.1 delete mode 100644 patches diff --git a/contrib/README.md b/contrib/README.md index 70378d100..5a5596cac 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -1,7 +1,13 @@ -*** Warning: This document has not been updated for Zcash and may be inaccurate. *** +# Hush Contrib -Wallet Tools ---------------------- +This is mostly very old stuff inherited from Bitcoin and Zcash! + +Do not expect all scripts to work! + +Please fix bugs and report things you find. + + +## Wallet Tools ### [BitRPC](/contrib/bitrpc) ### Allows for sending of all standard Bitcoin commands via RPC rather than as command line args. @@ -11,8 +17,7 @@ Allows for sending of all standard Bitcoin commands via RPC rather than as comma Use the raw transactions API to send coins received on a particular address (or addresses). -Repository Tools ---------------------- +## Repository Tools ### [Developer tools](/contrib/devtools) ### Specific tools for developers working on this repository. @@ -31,8 +36,7 @@ A Linux bash script that will set up traffic control (tc) to limit the outgoing ### [Seeds](/contrib/seeds) ### Utility to generate the pnSeed[] array that is compiled into the client. -Build Tools and Keys ---------------------- +## Build Tools and Keys ### [Debian](/contrib/debian) ### Contains files used to package bitcoind/bitcoin-qt @@ -47,8 +51,7 @@ Various PGP files of core developers. ### [MacDeploy](/contrib/macdeploy) ### Scripts and notes for Mac builds. -Test and Verify Tools ---------------------- +## Test and Verify Tools ### [TestGen](/contrib/testgen) ### Utilities to generate test vectors for the data-driven Bitcoin tests. diff --git a/contrib/zcash-cli.bash-completion b/contrib/zcash-cli.bash-completion deleted file mode 100644 index 37fa1d116..000000000 --- a/contrib/zcash-cli.bash-completion +++ /dev/null @@ -1,160 +0,0 @@ -# bash programmable completion for zcash-cli(1) -# Copyright (c) 2012-2016 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -# call $zcash-cli for RPC -_zcash_rpc() { - # determine already specified args necessary for RPC - local rpcargs=() - for i in ${COMP_LINE}; do - case "$i" in - -conf=*|-datadir=*|-regtest|-rpc*|-testnet) - rpcargs=( "${rpcargs[@]}" "$i" ) - ;; - esac - done - $zcash_cli "${rpcargs[@]}" "$@" -} - -# Add wallet accounts to COMPREPLY -_zcash_accounts() { - local accounts - # Accounts are deprecated in Zcash - #accounts=$(_zcash_rpc listaccounts | awk -F '"' '{ print $2 }') - accounts="\\\"\\\"" - COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) ) -} - -_zcash_cli() { - local cur prev words=() cword - local zcash_cli - - # save and use original argument to invoke zcash-cli for -help, help and RPC - # as zcash-cli might not be in $PATH - zcash_cli="$1" - - COMPREPLY=() - _get_comp_words_by_ref -n = cur prev words cword - - if ((cword > 5)); then - case ${words[cword-5]} in - sendtoaddress) - COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) - return 0 - ;; - esac - fi - - if ((cword > 4)); then - case ${words[cword-4]} in - importaddress|listtransactions|setban) - COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) - return 0 - ;; - signrawtransaction) - COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) ) - return 0 - ;; - esac - fi - - if ((cword > 3)); then - case ${words[cword-3]} in - addmultisigaddress) - _zcash_accounts - return 0 - ;; - getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock) - COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) - return 0 - ;; - esac - fi - - if ((cword > 2)); then - case ${words[cword-2]} in - addnode) - COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) ) - return 0 - ;; - setban) - COMPREPLY=( $( compgen -W "add remove" -- "$cur" ) ) - return 0 - ;; - fundrawtransaction|getblock|getblockheader|getmempoolancestors|getmempooldescendants|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction) - COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) - return 0 - ;; - z_importkey|z_importviewingkey) - COMPREPLY=( $( compgen -W "yes no whenkeyisnew" -- "$cur" ) ) - return 0 - ;; - move|setaccount) - _zcash_accounts - return 0 - ;; - esac - fi - - case "$prev" in - backupwallet|dumpwallet|importwallet|z_exportwallet|z_importwallet) - _filedir - return 0 - ;; - getaddednodeinfo|getrawmempool|lockunspent|setgenerate) - COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) - return 0 - ;; - getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany) - _zcash_accounts - return 0 - ;; - esac - - case "$cur" in - -conf=*) - cur="${cur#*=}" - _filedir - return 0 - ;; - -datadir=*) - cur="${cur#*=}" - _filedir -d - return 0 - ;; - -*=*) # prevent nonsense completions - return 0 - ;; - *) - local helpopts commands - - # only parse -help if senseful - if [[ -z "$cur" || "$cur" =~ ^- ]]; then - helpopts=$($zcash_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) - fi - - # only parse help if senseful - if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then - commands=$(_zcash_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }') - fi - - COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) ) - - # Prevent space if an argument is desired - if [[ $COMPREPLY == *= ]]; then - compopt -o nospace - fi - return 0 - ;; - esac -} && -complete -F _zcash_cli zcash-cli - -# Local variables: -# mode: shell-script -# sh-basic-offset: 4 -# sh-indent-comment: t -# indent-tabs-mode: nil -# End: -# ex: ts=4 sw=4 et filetype=sh diff --git a/contrib/zcash-tx.bash-completion b/contrib/zcash-tx.bash-completion deleted file mode 100644 index e808f93cb..000000000 --- a/contrib/zcash-tx.bash-completion +++ /dev/null @@ -1,57 +0,0 @@ -# bash programmable completion for zcash-tx(1) -# Copyright (c) 2016 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -_zcash_tx() { - local cur prev words=() cword - local zcash_tx - - # save and use original argument to invoke zcash-tx for -help - # it might not be in $PATH - zcash_tx="$1" - - COMPREPLY=() - _get_comp_words_by_ref -n =: cur prev words cword - - case "$cur" in - load=*:*) - cur="${cur#load=*:}" - _filedir - return 0 - ;; - *=*) # prevent attempts to complete other arguments - return 0 - ;; - esac - - if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then - # only options (or an uncompletable hex-string) allowed - # parse zcash-tx -help for options - local helpopts - helpopts=$($zcash_tx -help | sed -e '/^ -/ p' -e d ) - COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) - else - # only commands are allowed - # parse -help for commands - local helpcmds - helpcmds=$($zcash_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d ) - COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) ) - fi - - # Prevent space if an argument is desired - if [[ $COMPREPLY == *= ]]; then - compopt -o nospace - fi - - return 0 -} && -complete -F _zcash_tx zcash-tx - -# Local variables: -# mode: shell-script -# sh-basic-offset: 4 -# sh-indent-comment: t -# indent-tabs-mode: nil -# End: -# ex: ts=4 sw=4 et filetype=sh diff --git a/contrib/zcashd.bash-completion b/contrib/zcashd.bash-completion deleted file mode 100644 index 65f07cd80..000000000 --- a/contrib/zcashd.bash-completion +++ /dev/null @@ -1,57 +0,0 @@ -# bash programmable completion for zcashd(1) -# Copyright (c) 2012-2017 The Bitcoin Core developers -# Copyright (c) 2016-2017 The Zcash developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -_zcashd() { - local cur prev words=() cword - local zcashd - - # save and use original argument to invoke zcashd for -help - # it might not be in $PATH - zcashd="$1" - - COMPREPLY=() - _get_comp_words_by_ref -n = cur prev words cword - - case "$cur" in - -conf=*|-pid=*|-loadblock=*|-rpccookiefile=*|-wallet=*) - cur="${cur#*=}" - _filedir - return 0 - ;; - -datadir=*|-exportdir=*) - cur="${cur#*=}" - _filedir -d - return 0 - ;; - -*=*) # prevent nonsense completions - return 0 - ;; - *) - - # only parse -help if senseful - if [[ -z "$cur" || "$cur" =~ ^- ]]; then - local helpopts - helpopts=$($zcashd -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) - COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) - fi - - # Prevent space if an argument is desired - if [[ $COMPREPLY == *= ]]; then - compopt -o nospace - fi - return 0 - ;; - esac -} && -complete -F _zcashd zcashd - -# Local variables: -# mode: shell-script -# sh-basic-offset: 4 -# sh-indent-comment: t -# indent-tabs-mode: nil -# End: -# ex: ts=4 sw=4 et filetype=sh diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 deleted file mode 100644 index c1bd12a78..000000000 --- a/doc/man/zcash-cli.1 +++ /dev/null @@ -1,88 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASH-CLI "1" "October 2018" "zcash-cli v2.0.1" "User Commands" -.SH NAME -zcash-cli \- manual page for zcash-cli v2.0.1 -.SH DESCRIPTION -Zcash RPC client version v2.0.1 -.PP -In order to ensure you are adequately protecting your privacy when using Zcash, -please see . -.SS "Usage:" -.TP -zcash\-cli [options] [params] -Send command to Zcash -.TP -zcash\-cli [options] help -List commands -.TP -zcash\-cli [options] help -Get help for a command -.SH OPTIONS -.HP -\-? -.IP -This help message -.HP -\fB\-conf=\fR -.IP -Specify configuration file (default: zcash.conf) -.HP -\fB\-datadir=\fR -.IP -Specify data directory -.HP -\fB\-testnet\fR -.IP -Use the test network -.HP -\fB\-regtest\fR -.IP -Enter regression test mode, which uses a special chain in which blocks -can be solved instantly. This is intended for regression testing tools -and app development. -.HP -\fB\-rpcconnect=\fR -.IP -Send commands to node running on (default: 127.0.0.1) -.HP -\fB\-rpcport=\fR -.IP -Connect to JSON\-RPC on (default: 8232 or testnet: 18232) -.HP -\fB\-rpcwait\fR -.IP -Wait for RPC server to start -.HP -\fB\-rpcuser=\fR -.IP -Username for JSON\-RPC connections -.HP -\fB\-rpcpassword=\fR -.IP -Password for JSON\-RPC connections -.HP -\fB\-rpcclienttimeout=\fR -.IP -Timeout in seconds during HTTP requests, or 0 for no timeout. (default: -900) -.HP -\fB\-stdin\fR -.IP -Read extra arguments from standard input, one per line until EOF/Ctrl\-D -(recommended for sensitive information such as passphrases) -.SH COPYRIGHT - -In order to ensure you are adequately protecting your privacy when using Zcash, -please see . - -Copyright (C) 2009-2017 The Bitcoin Core Developers -Copyright (C) 2015-2017 The Zcash Developers - -This is experimental software. - -Distributed under the MIT software license, see the accompanying file COPYING -or . - -This product includes software developed by the OpenSSL Project for use in the -OpenSSL Toolkit and cryptographic software written -by Eric Young. diff --git a/doc/man/zcash-fetch-params.1 b/doc/man/zcash-fetch-params.1 deleted file mode 100644 index 76dab4c23..000000000 --- a/doc/man/zcash-fetch-params.1 +++ /dev/null @@ -1,28 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASH-FETCH-PARAMS "1" "January 2017" "Zcash - zcash-fetch-params" "User Commands" -.SH NAME -zcash-fetch-params \- Downloads the Zcash network parameters -.SH DESCRIPTION -Zcash \- zcash-fetch\-params -.PP -This script will fetch the Zcash zkSNARK parameters and verify their -integrity with sha256sum. -.PP -If they already exist locally, it will exit now and do nothing else. -.PP -This script will fetch the Zcash zkSNARK parameters and verify their -integrity with sha256sum. -.PP -If they already exist locally, it will exit now and do nothing else. -.SH "SEE ALSO" -The full documentation for -.B Zcash -is maintained as a Texinfo manual. If the -.B info -and -.B Zcash -programs are properly installed at your site, the command -.IP -.B info Zcash -.PP -should give you access to the complete manual. diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1 deleted file mode 100644 index 110f79de7..000000000 --- a/doc/man/zcash-tx.1 +++ /dev/null @@ -1,101 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASH-TX "1" "October 2018" "zcash-tx v2.0.1" "User Commands" -.SH NAME -zcash-tx \- manual page for zcash-tx v2.0.1 -.SH DESCRIPTION -Zcash zcash\-tx utility version v2.0.1 -.SS "Usage:" -.TP -zcash\-tx [options] [commands] -Update hex\-encoded zcash transaction -.TP -zcash\-tx [options] \fB\-create\fR [commands] -Create hex\-encoded zcash transaction -.SH OPTIONS -.HP -\-? -.IP -This help message -.HP -\fB\-create\fR -.IP -Create new, empty TX. -.HP -\fB\-json\fR -.IP -Select JSON output -.HP -\fB\-txid\fR -.IP -Output only the hex\-encoded transaction id of the resultant transaction. -.HP -\fB\-regtest\fR -.IP -Enter regression test mode, which uses a special chain in which blocks -can be solved instantly. -.HP -\fB\-testnet\fR -.IP -Use the test network -.PP -Commands: -.IP -delin=N -.IP -Delete input N from TX -.IP -delout=N -.IP -Delete output N from TX -.IP -in=TXID:VOUT(:SEQUENCE_NUMBER) -.IP -Add input to TX -.IP -locktime=N -.IP -Set TX lock time to N -.IP -nversion=N -.IP -Set TX version to N -.IP -outaddr=VALUE:ADDRESS -.IP -Add address\-based output to TX -.IP -outscript=VALUE:SCRIPT -.IP -Add raw script output to TX -.IP -sign=HEIGHT:SIGHASH\-FLAGS -.IP -Add zero or more signatures to transaction. This command requires JSON -registers:prevtxs=JSON object, privatekeys=JSON object. See -signrawtransaction docs for format of sighash flags, JSON objects. -.PP -Register Commands: -.IP -load=NAME:FILENAME -.IP -Load JSON file FILENAME into register NAME -.IP -set=NAME:JSON\-STRING -.IP -Set register NAME to given JSON\-STRING -.SH COPYRIGHT - -In order to ensure you are adequately protecting your privacy when using Zcash, -please see . - -Copyright (C) 2009-2017 The Bitcoin Core Developers -Copyright (C) 2015-2017 The Zcash Developers - -This is experimental software. - -Distributed under the MIT software license, see the accompanying file COPYING -or . - -This product includes software developed by the OpenSSL Project for use in the -OpenSSL Toolkit and cryptographic software written -by Eric Young. diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 deleted file mode 100644 index 3900a29c3..000000000 --- a/doc/man/zcashd.1 +++ /dev/null @@ -1,483 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -.TH ZCASHD "1" "October 2018" "zcashd v2.0.1" "User Commands" -.SH NAME -zcashd \- manual page for zcashd v2.0.1 -.SH DESCRIPTION -Zcash Daemon version v2.0.1 -.PP -In order to ensure you are adequately protecting your privacy when using Zcash, -please see . -.SS "Usage:" -.TP -zcashd [options] -Start Zcash Daemon -.SH OPTIONS -.HP -\-? -.IP -This help message -.HP -\fB\-alerts\fR -.IP -Receive and display P2P network alerts (default: 1) -.HP -\fB\-alertnotify=\fR -.IP -Execute command when a relevant alert is received or we see a really -long fork (%s in cmd is replaced by message) -.HP -\fB\-blocknotify=\fR -.IP -Execute command when the best block changes (%s in cmd is replaced by -block hash) -.HP -\fB\-checkblocks=\fR -.IP -How many blocks to check at startup (default: 288, 0 = all) -.HP -\fB\-checklevel=\fR -.IP -How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3) -.HP -\fB\-conf=\fR -.IP -Specify configuration file (default: zcash.conf) -.HP -\fB\-daemon\fR -.IP -Run in the background as a daemon and accept commands -.HP -\fB\-datadir=\fR -.IP -Specify data directory -.HP -\fB\-exportdir=\fR -.IP -Specify directory to be used when exporting data -.HP -\fB\-dbcache=\fR -.IP -Set database cache size in megabytes (4 to 16384, default: 450) -.HP -\fB\-loadblock=\fR -.IP -Imports blocks from external blk000??.dat file on startup -.HP -\fB\-maxorphantx=\fR -.IP -Keep at most unconnectable transactions in memory (default: 100) -.HP -\fB\-mempooltxinputlimit=\fR -.IP -[DEPRECATED FROM OVERWINTER] Set the maximum number of transparent -inputs in a transaction that the mempool will accept (default: 0 = no -limit applied) -.HP -\fB\-par=\fR -.IP -Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 = -leave that many cores free, default: 0) -.HP -\fB\-pid=\fR -.IP -Specify pid file (default: zcashd.pid) -.HP -\fB\-prune=\fR -.IP -Reduce storage requirements by pruning (deleting) old blocks. This mode -disables wallet support and is incompatible with \fB\-txindex\fR. Warning: -Reverting this setting requires re\-downloading the entire blockchain. -(default: 0 = disable pruning blocks, >550 = target size in MiB to use -for block files) -.HP -\fB\-reindex\fR -.IP -Rebuild block chain index from current blk000??.dat files on startup -.HP -\fB\-sysperms\fR -.IP -Create new files with system default permissions, instead of umask 077 -(only effective with disabled wallet functionality) -.HP -\fB\-txindex\fR -.IP -Maintain a full transaction index, used by the getrawtransaction rpc -call (default: 0) -.PP -Connection options: -.HP -\fB\-addnode=\fR -.IP -Add a node to connect to and attempt to keep the connection open -.HP -\fB\-banscore=\fR -.IP -Threshold for disconnecting misbehaving peers (default: 100) -.HP -\fB\-bantime=\fR -.IP -Number of seconds to keep misbehaving peers from reconnecting (default: -86400) -.HP -\fB\-bind=\fR -.IP -Bind to given address and always listen on it. Use [host]:port notation -for IPv6 -.HP -\fB\-connect=\fR -.IP -Connect only to the specified node(s) -.HP -\fB\-discover\fR -.IP -Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR -or \fB\-proxy\fR) -.HP -\fB\-dns\fR -.IP -Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1) -.HP -\fB\-dnsseed\fR -.IP -Query for peer addresses via DNS lookup, if low on addresses (default: 1 -unless \fB\-connect\fR) -.HP -\fB\-externalip=\fR -.IP -Specify your own public address -.HP -\fB\-forcednsseed\fR -.IP -Always query for peer addresses via DNS lookup (default: 0) -.HP -\fB\-listen\fR -.IP -Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR) -.HP -\fB\-listenonion\fR -.IP -Automatically create Tor hidden service (default: 1) -.HP -\fB\-maxconnections=\fR -.IP -Maintain at most connections to peers (default: 125) -.HP -\fB\-maxreceivebuffer=\fR -.IP -Maximum per\-connection receive buffer, *1000 bytes (default: 5000) -.HP -\fB\-maxsendbuffer=\fR -.IP -Maximum per\-connection send buffer, *1000 bytes (default: 1000) -.HP -\fB\-onion=\fR -.IP -Use separate SOCKS5 proxy to reach peers via Tor hidden services -(default: \fB\-proxy\fR) -.HP -\fB\-onlynet=\fR -.IP -Only connect to nodes in network (ipv4, ipv6 or onion) -.HP -\fB\-permitbaremultisig\fR -.IP -Relay non\-P2SH multisig (default: 1) -.HP -\fB\-peerbloomfilters\fR -.IP -Support filtering of blocks and transaction with Bloom filters (default: -1) -.HP -\fB\-port=\fR -.IP -Listen for connections on (default: 8233 or testnet: 18233) -.HP -\fB\-proxy=\fR -.IP -Connect through SOCKS5 proxy -.HP -\fB\-proxyrandomize\fR -.IP -Randomize credentials for every proxy connection. This enables Tor -stream isolation (default: 1) -.HP -\fB\-seednode=\fR -.IP -Connect to a node to retrieve peer addresses, and disconnect -.HP -\fB\-timeout=\fR -.IP -Specify connection timeout in milliseconds (minimum: 1, default: 5000) -.HP -\fB\-torcontrol=\fR: -.IP -Tor control port to use if onion listening enabled (default: -127.0.0.1:9051) -.HP -\fB\-torpassword=\fR -.IP -Tor control port password (default: empty) -.HP -\fB\-whitebind=\fR -.IP -Bind to given address and whitelist peers connecting to it. Use -[host]:port notation for IPv6 -.HP -\fB\-whitelist=\fR -.IP -Whitelist peers connecting from the given netmask or IP address. Can be -specified multiple times. Whitelisted peers cannot be DoS banned and -their transactions are always relayed, even if they are already in the -mempool, useful e.g. for a gateway -.PP -Wallet options: -.HP -\fB\-disablewallet\fR -.IP -Do not load the wallet and disable wallet RPC calls -.HP -\fB\-keypool=\fR -.IP -Set key pool size to (default: 100) -.HP -\fB\-paytxfee=\fR -.IP -Fee (in ZEC/kB) to add to transactions you send (default: 0.00) -.HP -\fB\-rescan\fR -.IP -Rescan the block chain for missing wallet transactions on startup -.HP -\fB\-salvagewallet\fR -.IP -Attempt to recover private keys from a corrupt wallet.dat on startup -.HP -\fB\-sendfreetransactions\fR -.IP -Send transactions as zero\-fee transactions if possible (default: 0) -.HP -\fB\-spendzeroconfchange\fR -.IP -Spend unconfirmed change when sending transactions (default: 1) -.HP -\fB\-txconfirmtarget=\fR -.IP -If paytxfee is not set, include enough fee so transactions begin -confirmation on average within n blocks (default: 2) -.HP -\fB\-txexpirydelta\fR -.IP -Set the number of blocks after which a transaction that has not been -mined will become invalid (default: 20) -.HP -\fB\-maxtxfee=\fR -.IP -Maximum total fees (in ZEC) to use in a single wallet transaction; -setting this too low may abort large transactions (default: 0.10) -.HP -\fB\-upgradewallet\fR -.IP -Upgrade wallet to latest format on startup -.HP -\fB\-wallet=\fR -.IP -Specify wallet file (within data directory) (default: wallet.dat) -.HP -\fB\-walletbroadcast\fR -.IP -Make the wallet broadcast transactions (default: 1) -.HP -\fB\-walletnotify=\fR -.IP -Execute command when a wallet transaction changes (%s in cmd is replaced -by TxID) -.HP -\fB\-zapwallettxes=\fR -.IP -Delete all wallet transactions and only recover those parts of the -blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g. -account owner and payment request information, 2 = drop tx meta data) -.PP -ZeroMQ notification options: -.HP -\fB\-zmqpubhashblock=\fR
-.IP -Enable publish hash block in
-.HP -\fB\-zmqpubhashtx=\fR
-.IP -Enable publish hash transaction in
-.HP -\fB\-zmqpubrawblock=\fR
-.IP -Enable publish raw block in
-.HP -\fB\-zmqpubrawtx=\fR
-.IP -Enable publish raw transaction in
-.PP -Debugging/Testing options: -.HP -\fB\-debug=\fR -.IP -Output debugging information (default: 0, supplying is -optional). If is not supplied or if = 1, output -all debugging information. can be: addrman, alert, bench, -coindb, db, estimatefee, http, libevent, lock, mempool, net, -partitioncheck, pow, proxy, prune, rand, reindex, rpc, selectcoins, tor, -zmq, zrpc, zrpcunsafe (implies zrpc). -.HP -\fB\-experimentalfeatures\fR -.IP -Enable use of experimental features -.HP -\fB\-help\-debug\fR -.IP -Show all debugging options (usage: \fB\-\-help\fR \fB\-help\-debug\fR) -.HP -\fB\-logips\fR -.IP -Include IP addresses in debug output (default: 0) -.HP -\fB\-logtimestamps\fR -.IP -Prepend debug output with timestamp (default: 1) -.HP -\fB\-minrelaytxfee=\fR -.IP -Fees (in ZEC/kB) smaller than this are considered zero fee for relaying -(default: 0.000001) -.HP -\fB\-printtoconsole\fR -.IP -Send trace/debug info to console instead of debug.log file -.HP -\fB\-shrinkdebugfile\fR -.IP -Shrink debug.log file on client startup (default: 1 when no \fB\-debug\fR) -.HP -\fB\-testnet\fR -.IP -Use the test network -.PP -Node relay options: -.HP -\fB\-datacarrier\fR -.IP -Relay and mine data carrier transactions (default: 1) -.HP -\fB\-datacarriersize\fR -.IP -Maximum size of data in data carrier transactions we relay and mine -(default: 80) -.PP -Block creation options: -.HP -\fB\-blockminsize=\fR -.IP -Set minimum block size in bytes (default: 0) -.HP -\fB\-blockmaxsize=\fR -.IP -Set maximum block size in bytes (default: 2000000) -.HP -\fB\-blockprioritysize=\fR -.IP -Set maximum size of high\-priority/low\-fee transactions in bytes -(default: 1000000) -.PP -Mining options: -.HP -\fB\-gen\fR -.IP -Generate coins (default: 0) -.HP -\fB\-genproclimit=\fR -.IP -Set the number of threads for coin generation if enabled (\fB\-1\fR = all -cores, default: 1) -.HP -\fB\-equihashsolver=\fR -.IP -Specify the Equihash solver to be used if enabled (default: "default") -.HP -\fB\-mineraddress=\fR -.IP -Send mined coins to a specific single address -.HP -\fB\-minetolocalwallet\fR -.IP -Require that mined blocks use a coinbase address in the local wallet -(default: 1) -.PP -RPC server options: -.HP -\fB\-server\fR -.IP -Accept command line and JSON\-RPC commands -.HP -\fB\-rest\fR -.IP -Accept public REST requests (default: 0) -.HP -\fB\-rpcbind=\fR -.IP -Bind to given address to listen for JSON\-RPC connections. Use -[host]:port notation for IPv6. This option can be specified multiple -times (default: bind to all interfaces) -.HP -\fB\-rpcuser=\fR -.IP -Username for JSON\-RPC connections -.HP -\fB\-rpcpassword=\fR -.IP -Password for JSON\-RPC connections -.HP -\fB\-rpcport=\fR -.IP -Listen for JSON\-RPC connections on (default: 8232 or testnet: -18232) -.HP -\fB\-rpcallowip=\fR -.IP -Allow JSON\-RPC connections from specified source. Valid for are a -single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) -or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified -multiple times -.HP -\fB\-rpcthreads=\fR -.IP -Set the number of threads to service RPC calls (default: 4) -.PP -Metrics Options (only if \fB\-daemon\fR and \fB\-printtoconsole\fR are not set): -.HP -\fB\-showmetrics\fR -.IP -Show metrics on stdout (default: 1 if running in a console, 0 otherwise) -.HP -\fB\-metricsui\fR -.IP -Set to 1 for a persistent metrics screen, 0 for sequential metrics -output (default: 1 if running in a console, 0 otherwise) -.HP -\fB\-metricsrefreshtime\fR -.IP -Number of seconds between metrics refreshes (default: 1 if running in a -console, 600 otherwise) -.SH COPYRIGHT - -In order to ensure you are adequately protecting your privacy when using Zcash, -please see . - -Copyright (C) 2009-2017 The Bitcoin Core Developers -Copyright (C) 2015-2017 The Zcash Developers - -This is experimental software. - -Distributed under the MIT software license, see the accompanying file COPYING -or . - -This product includes software developed by the OpenSSL Project for use in the -OpenSSL Toolkit and cryptographic software written -by Eric Young. diff --git a/patches b/patches deleted file mode 100644 index 4f79cc9f7..000000000 --- a/patches +++ /dev/null @@ -1,9072 +0,0 @@ -diff -crB ./configure.ac ../../komodo-jl777/configure.ac -*** ./configure.ac 2017-01-03 10:40:50.155326332 +0000 ---- ../../komodo-jl777/configure.ac 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 2,8 **** - AC_PREREQ([2.60]) - define(_CLIENT_VERSION_MAJOR, 1) - define(_CLIENT_VERSION_MINOR, 0) -! define(_CLIENT_VERSION_REVISION, 0) - define(_CLIENT_VERSION_BUILD, 50) - define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) - define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) ---- 2,8 ---- - AC_PREREQ([2.60]) - define(_CLIENT_VERSION_MAJOR, 1) - define(_CLIENT_VERSION_MINOR, 0) -! define(_CLIENT_VERSION_REVISION, 3) - define(_CLIENT_VERSION_BUILD, 50) - define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) - define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) -Only in ../../komodo-jl777/contrib: bitcoin-cli.bash-completion -diff -crB ./contrib/bitcoind.bash-completion ../../komodo-jl777/contrib/bitcoind.bash-completion -*** ./contrib/bitcoind.bash-completion 2017-01-03 10:40:50.159326534 +0000 ---- ../../komodo-jl777/contrib/bitcoind.bash-completion 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,102 **** -! # bash programmable completion for bitcoind(1) and bitcoin-cli(1) -! # Copyright (c) 2012,2014 Christian von Roques - # Distributed under the MIT software license, see the accompanying - # file COPYING or http://www.opensource.org/licenses/mit-license.php. - -! have bitcoind && { -! -! # call $bitcoind for RPC -! _bitcoin_rpc() { -! # determine already specified args necessary for RPC -! local rpcargs=() -! for i in ${COMP_LINE}; do -! case "$i" in -! -conf=*|-proxy*|-rpc*) -! rpcargs=( "${rpcargs[@]}" "$i" ) -! ;; -! esac -! done -! $bitcoind "${rpcargs[@]}" "$@" -! } -! -! # Add bitcoin accounts to COMPREPLY -! _bitcoin_accounts() { -! local accounts -! accounts=$(_bitcoin_rpc listaccounts | awk '/".*"/ { a=$1; gsub(/"/, "", a); print a}') -! COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) ) -! } -! -! _bitcoind() { - local cur prev words=() cword - local bitcoind - -! # save and use original argument to invoke bitcoind -! # bitcoind might not be in $PATH - bitcoind="$1" - - COMPREPLY=() - _get_comp_words_by_ref -n = cur prev words cword - -- if ((cword > 4)); then -- case ${words[cword-4]} in -- listtransactions) -- COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) -- return 0 -- ;; -- signrawtransaction) -- COMPREPLY=( $( compgen -W "ALL NONE SINGLE ALL|ANYONECANPAY NONE|ANYONECANPAY SINGLE|ANYONECANPAY" -- "$cur" ) ) -- return 0 -- ;; -- esac -- fi -- -- if ((cword > 3)); then -- case ${words[cword-3]} in -- addmultisigaddress) -- _bitcoin_accounts -- return 0 -- ;; -- getbalance|gettxout|importaddress|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock) -- COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) -- return 0 -- ;; -- esac -- fi -- -- if ((cword > 2)); then -- case ${words[cword-2]} in -- addnode) -- COMPREPLY=( $( compgen -W "add remove onetry" -- "$cur" ) ) -- return 0 -- ;; -- getblock|getrawtransaction|gettransaction|listaccounts|listreceivedbyaccount|listreceivedbyaddress|sendrawtransaction) -- COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) -- return 0 -- ;; -- move|setaccount) -- _bitcoin_accounts -- return 0 -- ;; -- esac -- fi -- -- case "$prev" in -- backupwallet|dumpwallet|importwallet) -- _filedir -- return 0 -- ;; -- getmempool|lockunspent|setgenerate) -- COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) -- return 0 -- ;; -- getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany) -- _bitcoin_accounts -- return 0 -- ;; -- esac -- - case "$cur" in -! -conf=*|-pid=*|-loadblock=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) - cur="${cur#*=}" - _filedir - return 0 ---- 1,21 ---- -! # bash programmable completion for bitcoind(1) and bitcoin-qt(1) -! # Copyright (c) 2012-2016 The Bitcoin Core developers - # Distributed under the MIT software license, see the accompanying - # file COPYING or http://www.opensource.org/licenses/mit-license.php. - -! _zcashd() { - local cur prev words=() cword - local bitcoind - -! # save and use original argument to invoke bitcoind for -help -! # it might not be in $PATH - bitcoind="$1" - - COMPREPLY=() - _get_comp_words_by_ref -n = cur prev words cword - - case "$cur" in -! -conf=*|-pid=*|-loadblock=*|-rootcertificates=*|-rpccookiefile=*|-wallet=*|-rpcsslcertificatechainfile=*|-rpcsslprivatekeyfile=*) - cur="${cur#*=}" - _filedir - return 0 -*************** -*** 110,129 **** - return 0 - ;; - *) -- local helpopts commands - -! # only parse --help if senseful - if [[ -z "$cur" || "$cur" =~ ^- ]]; then -! helpopts=$($bitcoind --help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) - fi - -- # only parse help if senseful -- if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then -- commands=$(_bitcoin_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }') -- fi -- -- COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) ) -- - # Prevent space if an argument is desired - if [[ $COMPREPLY == *= ]]; then - compopt -o nospace ---- 29,42 ---- - return 0 - ;; - *) - -! # only parse -help if senseful - if [[ -z "$cur" || "$cur" =~ ^- ]]; then -! local helpopts -! helpopts=$($bitcoind -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) -! COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) - fi - - # Prevent space if an argument is desired - if [[ $COMPREPLY == *= ]]; then - compopt -o nospace -*************** -*** 131,140 **** - return 0 - ;; - esac -! } -! -! complete -F _bitcoind bitcoind bitcoin-cli -! } - - # Local variables: - # mode: shell-script ---- 44,51 ---- - return 0 - ;; - esac -! } && -! complete -F _zcashd zcashd - - # Local variables: - # mode: shell-script -Only in ../../komodo-jl777/contrib: bitcoin-tx.bash-completion -diff -crB ./contrib/DEBIAN/changelog ../../komodo-jl777/contrib/DEBIAN/changelog -*** ./contrib/DEBIAN/changelog 2017-01-03 10:40:50.155326332 +0000 ---- ../../komodo-jl777/contrib/DEBIAN/changelog 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,3 **** ---- 1,21 ---- -+ zcash (1.0.3) jessie; urgency=medium -+ -+ * 1.0.3 release. -+ -+ -- Zcash Company Wed, 17 Nov 2016 15:56:00 -0700 -+ -+ zcash (1.0.2) jessie; urgency=medium -+ -+ * 1.0.2 release. -+ -+ -- Zcash Company Mon, 07 Nov 2016 19:01:35 -0600 -+ -+ zcash (1.0.1) jessie; urgency=medium -+ -+ * 1.0.1 release. -+ -+ -- Zcash Company Thu, 03 Nov 2016 23:21:09 -0500 -+ - zcash (1.0.0-sprout) jessie; urgency=medium - - * 1.0.0 release. -diff -crB ./contrib/DEBIAN/control ../../komodo-jl777/contrib/DEBIAN/control -*** ./contrib/DEBIAN/control 2017-01-03 10:40:50.155326332 +0000 ---- ../../komodo-jl777/contrib/DEBIAN/control 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 10,16 **** - Vcs-Git: https://github.com/zcash/zcash.git - Vcs-Browser: https://github.com/zcash/zcash - Package: zcash -! Version: 1.0.0-sprout - Architecture: amd64 - Depends: libgomp1 - Description: An implementation of the "Zerocash" protocol. ---- 10,16 ---- - Vcs-Git: https://github.com/zcash/zcash.git - Vcs-Browser: https://github.com/zcash/zcash - Package: zcash -! Version: 1.0.3 - Architecture: amd64 - Depends: libgomp1 - Description: An implementation of the "Zerocash" protocol. -diff -crB ./contrib/DEBIAN/manpages/zcash-cli.1 ../../komodo-jl777/contrib/DEBIAN/manpages/zcash-cli.1 -*** ./contrib/DEBIAN/manpages/zcash-cli.1 2017-01-03 10:40:50.155326332 +0000 ---- ../../komodo-jl777/contrib/DEBIAN/manpages/zcash-cli.1 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,9 **** - .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -! .TH ZCASH-CLI "1" "October 2016" "Zcash RPC client version v1.0.0-409dcb7" "User Commands" - .SH NAME - zcash-cli \- RPC client for the Zcash daemon - .SH DESCRIPTION -! Zcash RPC client version v1.0.0 - .SS "Usage:" - .TP - zcash\-cli [options] [params] ---- 1,9 ---- - .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -! .TH ZCASH-CLI "1" "November 2016" "Zcash RPC client version v1.0.3" "User Commands" - .SH NAME - zcash-cli \- RPC client for the Zcash daemon - .SH DESCRIPTION -! Zcash RPC client version v1.0.3 - .SS "Usage:" - .TP - zcash\-cli [options] [params] -diff -crB ./contrib/DEBIAN/manpages/zcashd.1 ../../komodo-jl777/contrib/DEBIAN/manpages/zcashd.1 -*** ./contrib/DEBIAN/manpages/zcashd.1 2017-01-03 10:40:50.155326332 +0000 ---- ../../komodo-jl777/contrib/DEBIAN/manpages/zcashd.1 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,9 **** - .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -! .TH ZCASHD "1" "October 2016" "Zcash Daemon version v1.0.0-409dcb7" "User Commands" - .SH NAME - zcashd \- Network daemon for interacting with the Zcash blockchain - .SH DESCRIPTION -! Zcash Daemon version v1.0.0 - .SS "Usage:" - .TP - zcashd [options] ---- 1,9 ---- - .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.3. -! .TH ZCASHD "1" "November 2016" "Zcash Daemon version v1.0.3" "User Commands" - .SH NAME - zcashd \- Network daemon for interacting with the Zcash blockchain - .SH DESCRIPTION -! Zcash Daemon version v1.0.3 - .SS "Usage:" - .TP - zcashd [options] -*************** -*** 62,68 **** - .HP - \fB\-par=\fR - .IP -! Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 = - leave that many cores free, default: 0) - .HP - \fB\-pid=\fR ---- 62,68 ---- - .HP - \fB\-par=\fR - .IP -! Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 = - leave that many cores free, default: 0) - .HP - \fB\-pid=\fR -diff -crB ./contrib/gitian-descriptors/gitian-linux.yml ../../komodo-jl777/contrib/gitian-descriptors/gitian-linux.yml -*** ./contrib/gitian-descriptors/gitian-linux.yml 2017-01-03 10:40:50.159326534 +0000 ---- ../../komodo-jl777/contrib/gitian-descriptors/gitian-linux.yml 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,5 **** - --- -! name: "zcash-1.0.0" - enable_cache: true - distro: "debian" - suites: ---- 1,5 ---- - --- -! name: "zcash-1.0.3" - enable_cache: true - distro: "debian" - suites: -diff -crB ./depends/packages/miniupnpc.mk ../../komodo-jl777/depends/packages/miniupnpc.mk -*** ./depends/packages/miniupnpc.mk 2017-01-03 10:40:50.179327547 +0000 ---- ../../komodo-jl777/depends/packages/miniupnpc.mk 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 3,8 **** ---- 3,9 ---- - $(package)_download_path=http://miniupnp.free.fr/files - $(package)_file_name=$(package)-$($(package)_version).tar.gz - $(package)_sha256_hash=d434ceb8986efbe199c5ca53f90ed53eab290b1e6d0530b717eb6fa49d61f93b -+ $(package)_patches=fix-solaris-compilation.patch strlen-before-memcmp.patch patch-strlen-patch.patch - - define $(package)_set_vars - $(package)_build_opts=CC="$($(package)_cc)" -*************** -*** 14,20 **** - define $(package)_preprocess_cmds - mkdir dll && \ - sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \ -! sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw - endef - - define $(package)_build_cmds ---- 15,24 ---- - define $(package)_preprocess_cmds - mkdir dll && \ - sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \ -! sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw && \ -! patch -p2 < $($(package)_patch_dir)/fix-solaris-compilation.patch && \ -! patch -p2 < $($(package)_patch_dir)/strlen-before-memcmp.patch && \ -! patch -p2 < $($(package)_patch_dir)/patch-strlen-patch.patch - endef - - define $(package)_build_cmds -Only in ../../komodo-jl777/depends/patches: miniupnpc -Only in ../../komodo-jl777/doc: authors.md -diff -crB ./doc/developer-notes.md ../../komodo-jl777/doc/developer-notes.md -*** ./doc/developer-notes.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/developer-notes.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 102,108 **** - If the code is behaving strangely, take a look in the debug.log file in the data directory; - error and debugging messages are written there. - -! The -debug=... command-line option controls debugging; running with just -debug will turn - on all categories (and give you a very large debug.log file). - - The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt ---- 102,108 ---- - If the code is behaving strangely, take a look in the debug.log file in the data directory; - error and debugging messages are written there. - -! The -debug=... command-line option controls debugging; running with just -debug or -debug=1 will turn - on all categories (and give you a very large debug.log file). - - The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt -diff -crB ./doc/payment-api.md ../../komodo-jl777/doc/payment-api.md -*** ./doc/payment-api.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/payment-api.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 29,35 **** - RPC calls by category: - - * Accounting: z_getbalance, z_gettotalbalance -! * Addresses : z_getnewaddress, z_listaddresses - * Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet - * Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids - * Payment : z_listreceivedbyaddress, z_sendmany ---- 29,35 ---- - RPC calls by category: - - * Accounting: z_getbalance, z_gettotalbalance -! * Addresses : z_getnewaddress, z_listaddresses, z_validateaddress - * Keys : z_exportkey, z_importkey, z_exportwallet, z_importwallet - * Operation: z_getoperationresult, z_getoperationstatus, z_listoperationids - * Payment : z_listreceivedbyaddress, z_sendmany -*************** -*** 55,60 **** ---- 55,61 ---- - --- | --- | --- - z_getnewaddress | | Return a new zaddr for sending and receiving payments. The spending key for this zaddr will be added to the node’s wallet.

Output:
zN68D8hSs3... - z_listaddresses | | Returns a list of all the zaddrs in this node’s wallet for which you have a spending key.

Output:
{ [“z123…â€, “z456...â€, “z789...â€] } -+ z_validateaddress | | Return information about a given zaddr.

Output:
{"isvalid" : true,
"address" : "zcWsmq...",
"payingkey" : "f5bb3c...",
"transmissionkey" : "7a58c7...",
"ismine" : true} - - ### Key Management - -*************** -*** 70,76 **** - Command | Parameters | Description - --- | --- | --- - z_listreceivedbyaddress
| zaddr [minconf=1] | Return a list of amounts received by a zaddr belonging to the node’s wallet.

Optionally set the minimum number of confirmations which a received amount must have in order to be included in the result. Use 0 to count unconfirmed transactions.

Output:
[{
“txidâ€: “4a0f…â€,
“amountâ€: 0.54,
“memoâ€:â€F0FF…â€,}, {...}, {...}
] -! z_sendmany
| fromaddress amounts [minconf=1] | _This is an Asynchronous RPC call_

Send funds from an address to multiple outputs. The address can be either a taddr or a zaddr.

Amounts is a list containing key/value pairs corresponding to the addresses and amount to pay. Each output address can be in taddr or zaddr format.

When sending to a zaddr, you also have the option of attaching a memo in hexadecimal format.

**NOTE:**When sending coinbase funds to a zaddr, the node's wallet does not allow any change. Put another way, spending a partial amount of a coinbase utxo is not allowed. This is not a consensus rule but a local wallet rule due to the current implementation of z_sendmany. In future, this rule may be removed.

Example of Outputs parameter:
[{“addressâ€:â€t123…â€, “amountâ€:0.005},
,{“addressâ€:â€z010…â€,â€amountâ€:0.03, “memoâ€:â€f508af…â€}]

Optionally set the minimum number of confirmations which a private or transparent transaction must have in order to be used as an input.

The transaction fee will be determined by the node’s wallet. Any transparent change will be sent to a new transparent address. Any private change will be sent back to the zaddr being used as the source of funds.

Returns an operationid. You use the operationid value with z_getoperationstatus and z_getoperationresult to obtain the result of sending funds, which if successful, will be a txid. - - ### Operations - ---- 71,77 ---- - Command | Parameters | Description - --- | --- | --- - z_listreceivedbyaddress
| zaddr [minconf=1] | Return a list of amounts received by a zaddr belonging to the node’s wallet.

Optionally set the minimum number of confirmations which a received amount must have in order to be included in the result. Use 0 to count unconfirmed transactions.

Output:
[{
“txidâ€: “4a0f…â€,
“amountâ€: 0.54,
“memoâ€:â€F0FF…â€,}, {...}, {...}
] -! z_sendmany
| fromaddress amounts [minconf=1] [fee=0.0001] | _This is an Asynchronous RPC call_

Send funds from an address to multiple outputs. The address can be either a taddr or a zaddr.

Amounts is a list containing key/value pairs corresponding to the addresses and amount to pay. Each output address can be in taddr or zaddr format.

When sending to a zaddr, you also have the option of attaching a memo in hexadecimal format.

**NOTE:**When sending coinbase funds to a zaddr, the node's wallet does not allow any change. Put another way, spending a partial amount of a coinbase utxo is not allowed. This is not a consensus rule but a local wallet rule due to the current implementation of z_sendmany. In future, this rule may be removed.

Example of Outputs parameter:
[{“addressâ€:â€t123…â€, “amountâ€:0.005},
,{“addressâ€:â€z010…â€,â€amountâ€:0.03, “memoâ€:â€f508af…â€}]

Optionally set the minimum number of confirmations which a private or transparent transaction must have in order to be used as an input.

Optionally set a transaction fee, which by default is 0.0001 ZEC.

Any transparent change will be sent to a new transparent address. Any private change will be sent back to the zaddr being used as the source of funds.

Returns an operationid. You use the operationid value with z_getoperationstatus and z_getoperationresult to obtain the result of sending funds, which if successful, will be a txid. - - ### Operations - -*************** -*** 97,99 **** ---- 98,168 ---- - z_getoperationresult
| [operationids] | Return OperationStatus JSON objects for all completed operations the node is currently aware of, and then remove the operation from memory.

Operationids is an optional array to filter which operations you want to receive status objects for.

Output is a list of operation status objects, where the status is either "failed", "cancelled" or "success".
[
{“operationidâ€: “opid-11ee…â€,
“statusâ€: “cancelledâ€},
{“operationidâ€: “opid-9876â€, “statusâ€: â€failedâ€},
{“operationidâ€: “opid-0e0eâ€,
“statusâ€:â€successâ€,
“execution_timeâ€:â€25â€,
“resultâ€: {“txidâ€:â€af3887654…â€,...}
},
] - z_getoperationstatus
| [operationids] | Return OperationStatus JSON objects for all operations the node is currently aware of.

Operationids is an optional array to filter which operations you want to receive status objects for.

Output is a list of operation status objects.
[
{“operationidâ€: “opid-12ee…â€,
“statusâ€: “queuedâ€},
{“operationidâ€: “opd-098a…â€, “statusâ€: â€executingâ€},
{“operationidâ€: “opid-9876â€, “statusâ€: â€failedâ€}
]

When the operation succeeds, the status object will also include the result.

{“operationidâ€: “opid-0e0eâ€,
“statusâ€:â€successâ€,
“execution_timeâ€:â€25â€,
“resultâ€: {“txidâ€:â€af3887654…â€,...}
} - z_listoperationids
| [state] | Return a list of operationids for all operations which the node is currently aware of.

State is an optional string parameter to filter the operations you want listed by their state. Acceptable parameter values are ‘queued’, ‘executing’, ‘success’, ‘failed’, ‘cancelled’.

[“opid-0e0e…â€, “opid-1af4…â€, … ] -+ -+ ## Asynchronous RPC call Error Codes -+ -+ Zcash error codes are defined in https://github.com/zcash/zcash/blob/master/src/rpcprotocol.h -+ -+ ### z_sendmany error codes -+ -+ RPC_INVALID_PARAMETER (-8) | _Invalid, missing or duplicate parameter_ -+ ---------------------------| ------------------------------------------------- -+ "Minconf cannot be negative" | Cannot accept negative minimum confirmation number. -+ "Minimum number of confirmations cannot be less than 0" | Cannot accept negative minimum confirmation number. -+ "From address parameter missing" | Missing an address to send funds from. -+ "No recipients" | Missing recipient addresses. -+ "Memo must be in hexadecimal format" | Encrypted memo field data must be in hexadecimal format. -+ "Memo size of __ is too big, maximum allowed is __ " | Encrypted memo field data exceeds maximum size of 512 bytes. -+ "From address does not belong to this node, zaddr spending key not found." | Sender address spending key not found. -+ "Invalid parameter, expected object" | Expected object. -+ "Invalid parameter, unknown key: __" | Unknown key. -+ "Invalid parameter, expected valid size" | Invalid size. -+ "Invalid parameter, expected hex txid" | Invalid txid. -+ "Invalid parameter, vout must be positive" | Invalid vout. -+ "Invalid parameter, duplicated address" | Address is duplicated. -+ "Invalid parameter, amounts array is empty" | Amounts array is empty. -+ "Invalid parameter, unknown key" | Key not found. -+ "Invalid parameter, unknown address format" | Unknown address format. -+ "Invalid parameter, size of memo" | Invalid memo field size. -+ "Invalid parameter, amount must be positive" | Invalid or negative amount. -+ "Invalid parameter, too many zaddr outputs" | z_address outputs exceed maximum allowed. -+ "Invalid parameter, expected memo data in hexadecimal format" | Encrypted memo field is not in hexadecimal format. -+ "Invalid parameter, size of memo is larger than maximum allowed __ " | Encrypted memo field data exceeds maximum size of 512 bytes. -+ -+ -+ RPC_INVALID_ADDRESS_OR_KEY (-5) | _Invalid address or key_ -+ --------------------------------| --------------------------- -+ "Invalid from address, no spending key found for zaddr" | z_address spending key not found. -+ "Invalid output address, not a valid taddr." | Transparent output address is invalid. -+ "Invalid from address, should be a taddr or zaddr." | Sender address is invalid. -+ "From address does not belong to this node, zaddr spending key not found." | Sender address spending key not found. -+ -+ -+ RPC_WALLET_INSUFFICIENT_FUNDS (-6) | _Not enough funds in wallet or account_ -+ -----------------------------------| ------------------------------------------ -+ "Insufficient funds, no UTXOs found for taddr from address." | Insufficient funds for sending address. -+ "Could not find any non-coinbase UTXOs to spend. Coinbase UTXOs can only be sent to a single zaddr recipient." | Must send Coinbase UTXO to a single z_address. -+ "Could not find any non-coinbase UTXOs to spend." | No available non-coinbase UTXOs. -+ "Insufficient funds, no unspent notes found for zaddr from address." | Insufficient funds for sending address. -+ "Insufficient transparent funds, have __, need __ plus fee __" | Insufficient funds from transparent address. -+ "Insufficient protected funds, have __, need __ plus fee __" | Insufficient funds from shielded address. -+ -+ RPC_WALLET_ERROR (-4) | _Unspecified problem with wallet_ -+ ----------------------| ------------------------------------- -+ "Could not find previous JoinSplit anchor" | Try restarting node with `-reindex`. -+ "Error decrypting output note of previous JoinSplit: __" | -+ "Could not find witness for note commitment" | Try restarting node with `-reindex`. -+ "Witness for note commitment is null" | Missing witness for note commitement. -+ "Witness for spendable note does not have same anchor as change input" | Invalid anchor for spendable note witness. -+ "Not enough funds to pay miners fee" | Retry with sufficient funds. -+ "Missing hex data for raw transaction" | Raw transaction data is null. -+ "Missing hex data for signed transaction" | Hex value for signed transaction is null. -+ "Send raw transaction did not return an error or a txid." | -+ -+ RPC_WALLET_ENCRYPTION_FAILED (-16) | _Failed to encrypt the wallet_ -+ -------------------------------------------------------------------------| ------------------------------------- -+ "Failed to sign transaction" | Transaction was not signed, sign transaction and retry. -+ -+ RPC_WALLET_KEYPOOL_RAN_OUT (-12) | _Keypool ran out, call keypoolrefill first_ -+ -------------------------------------------------------------------------| ----------------------------------------------- -+ "Could not generate a taddr to use as a change address" | Call keypoolrefill and retry. -diff -crB ./doc/release-notes/release-notes-0.11.2.z6.md ../../komodo-jl777/doc/release-notes/release-notes-0.11.2.z6.md -*** ./doc/release-notes/release-notes-0.11.2.z6.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/release-notes/release-notes-0.11.2.z6.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,19 **** -! Jack Grigg: - Equihash: Only compare the first n/(k+1) bits when sorting. - Randomise the nonce in the block header. - Clear mempool before using it for benchmark test, fix parameter name. - Fix memory leak in large tx benchmark. - -! Sean Bowe: - Increase block size to 2MB and update performance test. - Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit. - Remove the mainnet checkpoints. - Fix performance test for block verification. - Make `validatelargetx` test more accurate. - -! Taylor Hornby: - Add example mock test of CheckTransaction. - -! aniemerg: - Suppress Libsnark Debugging Info. -- ---- 1,18 ---- -! Jack Grigg (4): - Equihash: Only compare the first n/(k+1) bits when sorting. - Randomise the nonce in the block header. - Clear mempool before using it for benchmark test, fix parameter name. - Fix memory leak in large tx benchmark. - -! Sean Bowe (5): - Increase block size to 2MB and update performance test. - Make sigop limit `20000` just as in Bitcoin, ignoring our change to the blocksize limit. - Remove the mainnet checkpoints. - Fix performance test for block verification. - Make `validatelargetx` test more accurate. - -! Taylor Hornby (1): - Add example mock test of CheckTransaction. - -! aniemerg (1): - Suppress Libsnark Debugging Info. -diff -crB ./doc/release-notes/release-notes-0.11.2.z9.md ../../komodo-jl777/doc/release-notes/release-notes-0.11.2.z9.md -*** ./doc/release-notes/release-notes-0.11.2.z9.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/release-notes/release-notes-0.11.2.z9.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,5 **** -! -! Sean Bowe: - Change memo field size and relocate `ciphertexts` field of JoinSplit description. - Implement zkSNARK compression. - Perform curve parameter initialization at start of gtest suite. ---- 1,4 ---- -! Sean Bowe (6): - Change memo field size and relocate `ciphertexts` field of JoinSplit description. - Implement zkSNARK compression. - Perform curve parameter initialization at start of gtest suite. -*************** -*** 7,13 **** - Enable MONTGOMERY_OUTPUT everywhere. - Update proving/verifying keys. - -! Jack Grigg: - Add support for spending keys to the basic key store. - Merge AddSpendingKeyPaymentAddress into AddSpendingKey to simplify API. - Add methods for byte array expansion and compression. ---- 6,12 ---- - Enable MONTGOMERY_OUTPUT everywhere. - Update proving/verifying keys. - -! Jack Grigg (11): - Add support for spending keys to the basic key store. - Merge AddSpendingKeyPaymentAddress into AddSpendingKey to simplify API. - Add methods for byte array expansion and compression. -*************** -*** 20,26 **** - Add separate lock for SpendingKey key store operations. - Test conversion between solution indices and minimal representation. - -! Daira Hopwood: - Move bigint arithmetic implementations to libsnark. - Add mostly-static checks on consistency of Equihash parameters, MAX_HEADERS_RESULTS, and MAX_PROTOCOL_MESSAGE_LENGTH. - Change some asserts in equihash.cpp to be static. ---- 19,25 ---- - Add separate lock for SpendingKey key store operations. - Test conversion between solution indices and minimal representation. - -! Daira Hopwood (6): - Move bigint arithmetic implementations to libsnark. - Add mostly-static checks on consistency of Equihash parameters, MAX_HEADERS_RESULTS, and MAX_PROTOCOL_MESSAGE_LENGTH. - Change some asserts in equihash.cpp to be static. -*************** -*** 28,57 **** - Increment version numbers for z9 release. - Add these release notes for z9. - -! Taylor Hornby: - Disable hardening when building for coverage reports. - Upgrade libsodium for AVX2-detection bugfix. - Fix inconsistent optimization flags; single source of truth. - Add -fwrapv -fno-strict-aliasing; fix libzcash flags. - Use libsodium's s < L check, instead checking that libsodium checks that. - -! Simon Liu: - Fixes #1193 so that during verification benchmarking it does not unncessarily create thousands of CTransaction objects. - Closes #701 by adding documentation about the Payment RPC interface. - Add note about zkey and encrypted wallets. - -! Gaurav Rana: - Update zcash-cli stop message. - -! Tom Ritter: - Clarify comment about nonce space for Note Encryption. - -! Robert C. Seacord: - Memory safety and correctness fixes found in NCC audit. - -! Patrick Strateman (merged by Taylor Hornby): - Pull in some DoS mitigations from upstream. (#1258) - -! Wladimir J. van der Laan: - net: correctly initialize nMinPingUsecTime. -- ---- 27,55 ---- - Increment version numbers for z9 release. - Add these release notes for z9. - -! Taylor Hornby (5): - Disable hardening when building for coverage reports. - Upgrade libsodium for AVX2-detection bugfix. - Fix inconsistent optimization flags; single source of truth. - Add -fwrapv -fno-strict-aliasing; fix libzcash flags. - Use libsodium's s < L check, instead checking that libsodium checks that. - -! Simon Liu (3): - Fixes #1193 so that during verification benchmarking it does not unncessarily create thousands of CTransaction objects. - Closes #701 by adding documentation about the Payment RPC interface. - Add note about zkey and encrypted wallets. - -! Gaurav Rana (1): - Update zcash-cli stop message. - -! Tom Ritter (1): - Clarify comment about nonce space for Note Encryption. - -! Robert C. Seacord (1): - Memory safety and correctness fixes found in NCC audit. - -! Patrick Strateman (1): - Pull in some DoS mitigations from upstream. (#1258) - -! Wladimir J. van der Laan (1): - net: correctly initialize nMinPingUsecTime. -Only in ../../komodo-jl777/doc/release-notes: release-notes-1.0.1.md -Only in ../../komodo-jl777/doc/release-notes: release-notes-1.0.2.md -Only in ../../komodo-jl777/doc/release-notes: release-notes-1.0.3.md -diff -crB ./doc/release-process.md ../../komodo-jl777/doc/release-process.md -*** ./doc/release-process.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/release-process.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 38,43 **** ---- 38,45 ---- - contrib/DEBIAN/control - contrib/gitian-descriptors/gitian-linux.yml - -+ Build and commit to update versions, and then perform the following commands: -+ - help2man -n "RPC client for the Zcash daemon" src/zcash-cli > contrib/DEBIAN/manpages/zcash-cli.1 - help2man -n "Network daemon for interacting with the Zcash blockchain" src/zcashd > contrib/DEBIAN/manpages/zcashd.1 - -*************** -*** 57,66 **** - - ### B2. Write release notes - -! git shortlog helps a lot, for example: - -! $ git shortlog --no-merges v${ZCASH_RELEASE_PREV}..HEAD \ -! > ./doc/release-notes/release-notes-${ZCASH_RELEASE}.md - - Update the Debian package changelog: - ---- 59,67 ---- - - ### B2. Write release notes - -! Run the release-notes.py script to generate release notes and update authors.md file. For example: - -! $ python zcutil/release-notes.py --version $ZCASH_RELEASE - - Update the Debian package changelog: - -diff -crB ./doc/security-warnings.md ../../komodo-jl777/doc/security-warnings.md -*** ./doc/security-warnings.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/security-warnings.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 35,44 **** - from the earlier issue). - - - We were concerned about the resistance of the algorithm used to derive wallet -! encryption keys (inherited from Bitcoin) to dictionary attacks by a powerful -! attacker. If and when we re-enable wallet encryption, it is likely to be with -! a modern passphrase-based key derivation algorithm designed for greater -! resistance to dictionary attack, such as Argon2i. - - You should use full-disk encryption (or encryption of your home directory) to - protect your wallet at rest, and should assume (even unprivileged) users who are ---- 35,44 ---- - from the earlier issue). - - - We were concerned about the resistance of the algorithm used to derive wallet -! encryption keys (inherited from [Bitcoin](https://bitcoin.org/en/secure-your-wallet)) -! to dictionary attacks by a powerful attacker. If and when we re-enable wallet -! encryption, it is likely to be with a modern passphrase-based key derivation -! algorithm designed for greater resistance to dictionary attack, such as Argon2i. - - You should use full-disk encryption (or encryption of your home directory) to - protect your wallet at rest, and should assume (even unprivileged) users who are -diff -crB ./doc/tor.md ../../komodo-jl777/doc/tor.md -*** ./doc/tor.md 2017-01-03 10:40:50.191328153 +0000 ---- ../../komodo-jl777/doc/tor.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 18,24 **** - -proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy - server will be used to try to reach .onion addresses as well. - -! -onion=ip:port Set the proxy server to use for tor hidden services. You do not - need to set this if it's the same as -proxy. You can use -noonion - to explicitly disable access to hidden service. - ---- 18,24 ---- - -proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy - server will be used to try to reach .onion addresses as well. - -! -onion=ip:port Set the proxy server to use for Tor hidden services. You do not - need to set this if it's the same as -proxy. You can use -noonion - to explicitly disable access to hidden service. - -diff -crB ./Dockerfile ../../komodo-jl777/Dockerfile -*** ./Dockerfile 2017-01-03 10:40:50.151326129 +0000 ---- ../../komodo-jl777/Dockerfile 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,15 **** -! FROM ubuntu:16.04 -! MAINTAINER Mihail Fedorov -! -! # All the stuff -! # And clean out packages, keep space minimal -! RUN apt-get -y update && \ -! apt-get -y upgrade && \ -! apt-get -y install build-essential pkg-config libc6-dev m4 g++-multilib autoconf libtool ncurses-dev \ -! unzip python zlib1g-dev wget bsdmainutils automake libboost-all-dev libssl-dev libprotobuf-dev \ -! protobuf-compiler libqt4-dev libqrencode-dev libdb++-dev software-properties-common libcurl4-openssl-dev && \ -! apt-get clean && \ -! rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - - ADD ./ /komodo - ENV HOME /komodo ---- 1,5 ---- -! FROM kolobus/ubuntu:komodo -! MAINTAINER Mihail Fedorov - - ADD ./ /komodo - ENV HOME /komodo -*************** -*** 19,25 **** - RUN cd /komodo && \ - ./autogen.sh && \ - ./configure --with-incompatible-bdb --with-gui || true && \ -! ./zcutil/build.sh -j4 - - # Unknown stuff goes here - ---- 9,15 ---- - RUN cd /komodo && \ - ./autogen.sh && \ - ./configure --with-incompatible-bdb --with-gui || true && \ -! ./zcutil/build.sh -j$(nproc) - - # Unknown stuff goes here - -diff -crB ./.git/config ../../komodo-jl777/.git/config -*** ./.git/config 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/config 2017-01-03 09:49:08.884507813 +0000 -*************** -*** 4,11 **** - bare = false - logallrefupdates = true - [remote "origin"] -! url = https://github.com/j-cimb-barker/komodo.git - fetch = +refs/heads/*:refs/remotes/origin/* - [branch "master"] - remote = origin - merge = refs/heads/master ---- 4,14 ---- - bare = false - logallrefupdates = true - [remote "origin"] -! url = https://github.com/jl777/komodo.git - fetch = +refs/heads/*:refs/remotes/origin/* - [branch "master"] - remote = origin - merge = refs/heads/master -+ [branch "dev"] -+ remote = origin -+ merge = refs/heads/dev -diff -crB ./.git/HEAD ../../komodo-jl777/.git/HEAD -*** ./.git/HEAD 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/HEAD 2017-01-03 09:49:08.884507813 +0000 -*************** -*** 1 **** -! ref: refs/heads/master ---- 1 ---- -! ref: refs/heads/dev -Binary files ./.git/index and ../../komodo-jl777/.git/index differ -diff -crB ./.git/logs/HEAD ../../komodo-jl777/.git/logs/HEAD -*** ./.git/logs/HEAD 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/logs/HEAD 2017-01-03 09:49:08.884507813 +0000 -*************** -*** 1 **** -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483440050 +0000 clone: from https://github.com/j-cimb-barker/komodo.git ---- 1,2 ---- -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483436901 +0000 clone: from https://github.com/jl777/komodo.git -! d03fbd981fce86504b78d2a9582e4da988d59823 26ac06c4f5a6b4dc3163b36a1e5d24bfa7eccbd2 joel 1483436948 +0000 checkout: moving from master to dev -Only in ../../komodo-jl777/.git/logs/refs/heads: dev -diff -crB ./.git/logs/refs/heads/master ../../komodo-jl777/.git/logs/refs/heads/master -*** ./.git/logs/refs/heads/master 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/logs/refs/heads/master 2017-01-03 09:48:21.598032424 +0000 -*************** -*** 1 **** -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483440050 +0000 clone: from https://github.com/j-cimb-barker/komodo.git ---- 1 ---- -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483436901 +0000 clone: from https://github.com/jl777/komodo.git -diff -crB ./.git/logs/refs/remotes/origin/HEAD ../../komodo-jl777/.git/logs/refs/remotes/origin/HEAD -*** ./.git/logs/refs/remotes/origin/HEAD 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/logs/refs/remotes/origin/HEAD 2017-01-03 09:48:21.598032424 +0000 -*************** -*** 1 **** -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483440050 +0000 clone: from https://github.com/j-cimb-barker/komodo.git ---- 1 ---- -! 0000000000000000000000000000000000000000 d03fbd981fce86504b78d2a9582e4da988d59823 joel 1483436901 +0000 clone: from https://github.com/jl777/komodo.git -Only in ./.git/objects/pack: pack-12e7bdf654b29f95604673fb1b3ee01a9bd52369.idx -Only in ./.git/objects/pack: pack-12e7bdf654b29f95604673fb1b3ee01a9bd52369.pack -Only in ../../komodo-jl777/.git/objects/pack: pack-3d08e40e89111c75a81ccd6099e05e09fd0e0f08.idx -Only in ../../komodo-jl777/.git/objects/pack: pack-3d08e40e89111c75a81ccd6099e05e09fd0e0f08.pack -diff -crB ./.git/packed-refs ../../komodo-jl777/.git/packed-refs -*** ./.git/packed-refs 2017-01-03 10:40:50.131325117 +0000 ---- ../../komodo-jl777/.git/packed-refs 2017-01-03 09:48:21.598032424 +0000 -*************** -*** 2,10 **** - fcd361184f09fe17546698b0d13caddac5b63500 refs/remotes/origin/PoS - 730a5006cbbfb0607ed93067db1a74d57584eb1f refs/remotes/origin/acspeed - 80259d4b4f193c7c438f3c057ce70af3beb1a099 refs/remotes/origin/auto -! 060c9a92939c62bbedb5fe560bf8ef6856e2b8f1 refs/remotes/origin/beta - ba9104dd7e9b6ba2b68ad352253ac8f3298092f4 refs/remotes/origin/dPoW -! cb42e5518262235ed4e4dbff43179e0308114d6a refs/remotes/origin/dev - 76b6eacf41395ddd2badd5d5dc3352e603c59df2 refs/remotes/origin/kolo - bb40eb8b043a1e63c3dc3b1c2e4d0f6e67e771d4 refs/remotes/origin/kolo-dev - d03fbd981fce86504b78d2a9582e4da988d59823 refs/remotes/origin/master ---- 2,10 ---- - fcd361184f09fe17546698b0d13caddac5b63500 refs/remotes/origin/PoS - 730a5006cbbfb0607ed93067db1a74d57584eb1f refs/remotes/origin/acspeed - 80259d4b4f193c7c438f3c057ce70af3beb1a099 refs/remotes/origin/auto -! f6f296f1acf8c2b177451ed0c9f8660f3a80ec3d refs/remotes/origin/beta - ba9104dd7e9b6ba2b68ad352253ac8f3298092f4 refs/remotes/origin/dPoW -! 26ac06c4f5a6b4dc3163b36a1e5d24bfa7eccbd2 refs/remotes/origin/dev - 76b6eacf41395ddd2badd5d5dc3352e603c59df2 refs/remotes/origin/kolo - bb40eb8b043a1e63c3dc3b1c2e4d0f6e67e771d4 refs/remotes/origin/kolo-dev - d03fbd981fce86504b78d2a9582e4da988d59823 refs/remotes/origin/master -Only in ../../komodo-jl777/.git/refs/heads: dev -diff -crB ./.gitignore ../../komodo-jl777/.gitignore -*** ./.gitignore 2017-01-03 10:40:50.151326129 +0000 ---- ../../komodo-jl777/.gitignore 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 65,70 **** ---- 65,71 ---- - *.a - *.pb.cc - *.pb.h -+ .vscode - - *.log - *.trs -diff -crB ./Makefile.am ../../komodo-jl777/Makefile.am -*** ./Makefile.am 2017-01-03 10:40:50.151326129 +0000 ---- ../../komodo-jl777/Makefile.am 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 258,267 **** - @qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1 - endif - -! dist_noinst_SCRIPTS = autogen.sh - - EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests qa/zcash $(DIST_DOCS) $(BIN_CHECKS) - - CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER) - - .INTERMEDIATE: $(COVERAGE_INFO) ---- 258,271 ---- - @qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1 - endif - -! dist_bin_SCRIPTS = zcutil/fetch-params.sh -! dist_noinst_SCRIPTS = autogen.sh zcutil/build-debian-package.sh zcutil/build.sh - - EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests qa/zcash $(DIST_DOCS) $(BIN_CHECKS) - -+ install-exec-hook: -+ mv $(DESTDIR)$(bindir)/fetch-params.sh $(DESTDIR)$(bindir)/zcash-fetch-params -+ - CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER) - - .INTERMEDIATE: $(COVERAGE_INFO) -Only in .: patches -diff -crB ./qa/pull-tester/rpc-tests.sh ../../komodo-jl777/qa/pull-tester/rpc-tests.sh -*** ./qa/pull-tester/rpc-tests.sh 2017-01-03 10:40:50.195328356 +0000 ---- ../../komodo-jl777/qa/pull-tester/rpc-tests.sh 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 11,16 **** ---- 11,17 ---- - #Run the tests - - testScripts=( -+ 'wallet_treestate.py' - 'wallet_protectcoinbase.py' - 'wallet.py' - 'wallet_nullifiers.py' -diff -crB ./qa/rpc-tests/httpbasics.py ../../komodo-jl777/qa/rpc-tests/httpbasics.py -*** ./qa/rpc-tests/httpbasics.py 2017-01-03 10:40:50.195328356 +0000 ---- ../../komodo-jl777/qa/rpc-tests/httpbasics.py 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 38,50 **** - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open! -! -! #send 2nd request without closing connection -! conn.request('POST', '/', '{"method": "getchaintips"}', headers) -! out2 = conn.getresponse().read(); -! assert_equal('"error":null' in out1, True) #must also response with a correct json-rpc message -! assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open! - conn.close() - - #same should be if we add keep-alive because this should be the std. behaviour ---- 38,46 ---- - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! -! # TODO #1856: Re-enable support for persistent connections. -! assert_equal(conn.sock!=None, False) - conn.close() - - #same should be if we add keep-alive because this should be the std. behaviour -*************** -*** 55,67 **** - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open! -! -! #send 2nd request without closing connection -! conn.request('POST', '/', '{"method": "getchaintips"}', headers) -! out2 = conn.getresponse().read(); -! assert_equal('"error":null' in out1, True) #must also response with a correct json-rpc message -! assert_equal(conn.sock!=None, True) #according to http/1.1 connection must still be open! - conn.close() - - #now do the same with "Connection: close" ---- 51,59 ---- - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! -! # TODO #1856: Re-enable support for persistent connections. -! assert_equal(conn.sock!=None, False) - conn.close() - - #now do the same with "Connection: close" -*************** -*** 96,102 **** - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! assert_equal(conn.sock!=None, True) #connection must be closed because bitcoind should use keep-alive by default - - if __name__ == '__main__': - HTTPBasicsTest ().main () ---- 88,97 ---- - conn.request('POST', '/', '{"method": "getbestblockhash"}', headers) - out1 = conn.getresponse().read(); - assert_equal('"error":null' in out1, True) -! -! # TODO #1856: Re-enable support for persistent connections. -! assert_equal(conn.sock!=None, False) -! conn.close() - - if __name__ == '__main__': - HTTPBasicsTest ().main () -diff -crB ./qa/rpc-tests/wallet_protectcoinbase.py ../../komodo-jl777/qa/rpc-tests/wallet_protectcoinbase.py -*** ./qa/rpc-tests/wallet_protectcoinbase.py 2017-01-03 10:40:50.199328558 +0000 ---- ../../komodo-jl777/qa/rpc-tests/wallet_protectcoinbase.py 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 8,14 **** - from test_framework.util import * - from time import * - -! class Wallet2Test (BitcoinTestFramework): - - def setup_chain(self): - print("Initializing test directory "+self.options.tmpdir) ---- 8,14 ---- - from test_framework.util import * - from time import * - -! class WalletProtectCoinbaseTest (BitcoinTestFramework): - - def setup_chain(self): - print("Initializing test directory "+self.options.tmpdir) -*************** -*** 23,43 **** - self.is_network_split=False - self.sync_all() - -! def wait_for_operationd_success(self, myopid): - print('waiting for async operation {}'.format(myopid)) - opids = [] - opids.append(myopid) -! timeout = 120 - status = None - for x in xrange(1, timeout): - results = self.nodes[0].z_getoperationresult(opids) - if len(results)==0: - sleep(1) - else: - status = results[0]["status"] - break - print('...returned status: {}'.format(status)) -! assert_equal("success", status) - - def run_test (self): - print "Mining blocks..." ---- 23,55 ---- - self.is_network_split=False - self.sync_all() - -! # Returns txid if operation was a success or None -! def wait_and_assert_operationid_status(self, myopid, in_status='success', in_errormsg=None): - print('waiting for async operation {}'.format(myopid)) - opids = [] - opids.append(myopid) -! timeout = 300 - status = None -+ errormsg = None -+ txid = None - for x in xrange(1, timeout): - results = self.nodes[0].z_getoperationresult(opids) - if len(results)==0: - sleep(1) - else: - status = results[0]["status"] -+ if status == "failed": -+ errormsg = results[0]['error']['message'] -+ elif status == "success": -+ txid = results[0]['result']['txid'] - break - print('...returned status: {}'.format(status)) -! assert_equal(in_status, status) -! if errormsg is not None: -! assert(in_errormsg is not None) -! assert_equal(in_errormsg in errormsg, True) -! print('...returned error: {}'.format(errormsg)) -! return txid - - def run_test (self): - print "Mining blocks..." -*************** -*** 94,100 **** - recipients = [] - recipients.append({"address":myzaddr, "amount": Decimal('20.0') - Decimal('0.0001')}) - myopid = self.nodes[0].z_sendmany(mytaddr, recipients) -! self.wait_for_operationd_success(myopid) - self.sync_all() - self.nodes[1].generate(1) - self.sync_all() ---- 106,112 ---- - recipients = [] - recipients.append({"address":myzaddr, "amount": Decimal('20.0') - Decimal('0.0001')}) - myopid = self.nodes[0].z_sendmany(mytaddr, recipients) -! self.wait_and_assert_operationid_status(myopid) - self.sync_all() - self.nodes[1].generate(1) - self.sync_all() -*************** -*** 109,116 **** - recipients = [] - recipients.append({"address":mytaddr, "amount":Decimal('10.0')}) - myopid = self.nodes[0].z_sendmany(myzaddr, recipients) -! self.wait_for_operationd_success(myopid) - self.sync_all() - self.nodes[1].generate(1) - self.sync_all() - ---- 121,134 ---- - recipients = [] - recipients.append({"address":mytaddr, "amount":Decimal('10.0')}) - myopid = self.nodes[0].z_sendmany(myzaddr, recipients) -! mytxid = self.wait_and_assert_operationid_status(myopid) -! assert(mytxid is not None) - self.sync_all() -+ -+ # check that priority of the tx sending from a zaddr is not 0 -+ mempool = self.nodes[0].getrawmempool(True) -+ assert(Decimal(mempool[mytxid]['startingpriority']) >= Decimal('1000000000000')) -+ - self.nodes[1].generate(1) - self.sync_all() - -*************** -*** 120,125 **** ---- 138,152 ---- - assert_equal(Decimal(resp["private"]), Decimal('9.9998')) - assert_equal(Decimal(resp["total"]), Decimal('39.9998')) - -+ # z_sendmany will return an error if there is transparent change output considered dust. -+ # UTXO selection in z_sendmany sorts in ascending order, so smallest utxos are consumed first. -+ # At this point in time, unspent notes all have a value of 10.0 and standard z_sendmany fee is 0.0001. -+ recipients = [] -+ amount = Decimal('10.0') - Decimal('0.00010000') - Decimal('0.00000001') # this leaves change at 1 zatoshi less than dust threshold -+ recipients.append({"address":self.nodes[0].getnewaddress(), "amount":amount }) -+ myopid = self.nodes[0].z_sendmany(mytaddr, recipients) -+ self.wait_and_assert_operationid_status(myopid, "failed", "Insufficient transparent funds, have 10.00, need 0.00000545 more to avoid creating invalid change output 0.00000001 (dust threshold is 0.00000546)") -+ - # Send will fail because send amount is too big, even when including coinbase utxos - errorString = "" - try: -*************** -*** 128,133 **** ---- 155,168 ---- - errorString = e.error['message'] - assert_equal("Insufficient funds" in errorString, True) - -+ # z_sendmany will fail because of insufficient funds -+ recipients = [] -+ recipients.append({"address":self.nodes[1].getnewaddress(), "amount":Decimal('10000.0')}) -+ myopid = self.nodes[0].z_sendmany(mytaddr, recipients) -+ self.wait_and_assert_operationid_status(myopid, "failed", "Insufficient transparent funds, have 10.00, need 10000.0001") -+ myopid = self.nodes[0].z_sendmany(myzaddr, recipients) -+ self.wait_and_assert_operationid_status(myopid, "failed", "Insufficient protected funds, have 9.9998, need 10000.0001") -+ - # Send will fail because of insufficient funds unless sender uses coinbase utxos - try: - self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 21) -*************** -*** 135,140 **** ---- 170,227 ---- - errorString = e.error['message'] - assert_equal("Insufficient funds, coinbase funds can only be spent after they have been sent to a zaddr" in errorString, True) - -+ # Verify that mempools accept tx with joinsplits which have at least the default z_sendmany fee. -+ # If this test passes, it confirms that issue #1851 has been resolved, where sending from -+ # a zaddr to 1385 taddr recipients fails because the default fee was considered too low -+ # given the tx size, resulting in mempool rejection. -+ errorString = '' -+ recipients = [] -+ num_t_recipients = 2500 -+ amount_per_recipient = Decimal('0.00000546') # dust threshold -+ # Note that regtest chainparams does not require standard tx, so setting the amount to be -+ # less than the dust threshold, e.g. 0.00000001 will not result in mempool rejection. -+ for i in xrange(0,num_t_recipients): -+ newtaddr = self.nodes[2].getnewaddress() -+ recipients.append({"address":newtaddr, "amount":amount_per_recipient}) -+ myopid = self.nodes[0].z_sendmany(myzaddr, recipients) -+ try: -+ self.wait_and_assert_operationid_status(myopid) -+ except JSONRPCException as e: -+ print("JSONRPC error: "+e.error['message']) -+ assert(False) -+ except Exception as e: -+ print("Unexpected exception caught during testing: "+str(sys.exc_info()[0])) -+ assert(False) -+ -+ self.sync_all() -+ self.nodes[1].generate(1) -+ self.sync_all() -+ -+ # check balance -+ node2balance = amount_per_recipient * num_t_recipients -+ assert_equal(self.nodes[2].getbalance(), node2balance) -+ -+ # Send will fail because fee is negative -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients, 1, -1) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert_equal("Invalid amount" in errorString, True) -+ -+ # Send will fail because fee is larger than MAX_MONEY -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients, 1, Decimal('21000000.00000001')) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert_equal("Invalid amount" in errorString, True) -+ -+ # Send will fail because fee is larger than sum of outputs -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients, 1, (amount_per_recipient * num_t_recipients) + Decimal('0.00000001')) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert_equal("is greater than the sum of outputs" in errorString, True) -+ - # Send will succeed because the balance of non-coinbase utxos is 10.0 - try: - self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 9) -*************** -*** 146,152 **** - self.sync_all() - - # check balance -! assert_equal(self.nodes[2].getbalance(), 9) - - if __name__ == '__main__': -! Wallet2Test ().main () ---- 233,263 ---- - self.sync_all() - - # check balance -! node2balance = node2balance + 9 -! assert_equal(self.nodes[2].getbalance(), node2balance) -! -! # Check that chained joinsplits in a single tx are created successfully. -! recipients = [] -! num_recipients = 3 -! amount_per_recipient = Decimal('0.002') -! minconf = 1 -! send_amount = num_recipients * amount_per_recipient -! custom_fee = Decimal('0.00012345') -! zbalance = self.nodes[0].z_getbalance(myzaddr) -! for i in xrange(0,num_recipients): -! newzaddr = self.nodes[2].z_getnewaddress() -! recipients.append({"address":newzaddr, "amount":amount_per_recipient}) -! myopid = self.nodes[0].z_sendmany(myzaddr, recipients, minconf, custom_fee) -! self.wait_and_assert_operationid_status(myopid) -! self.sync_all() -! self.nodes[1].generate(1) -! self.sync_all() -! -! # check balances -! resp = self.nodes[2].z_gettotalbalance() -! assert_equal(Decimal(resp["private"]), send_amount) -! resp = self.nodes[0].z_getbalance(myzaddr) -! assert_equal(Decimal(resp), zbalance - custom_fee - send_amount) - - if __name__ == '__main__': -! WalletProtectCoinbaseTest().main() -diff -crB ./qa/rpc-tests/wallet.py ../../komodo-jl777/qa/rpc-tests/wallet.py -*** ./qa/rpc-tests/wallet.py 2017-01-03 10:40:50.199328558 +0000 ---- ../../komodo-jl777/qa/rpc-tests/wallet.py 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 244,249 **** ---- 244,295 ---- - myvjoinsplits = mytxdetails["vjoinsplit"] - assert_equal(0, len(myvjoinsplits)) - -+ # z_sendmany is expected to fail if tx size breaks limit -+ myzaddr = self.nodes[0].z_getnewaddress() -+ -+ recipients = [] -+ num_t_recipients = 3000 -+ amount_per_recipient = Decimal('0.00000001') -+ errorString = '' -+ for i in xrange(0,num_t_recipients): -+ newtaddr = self.nodes[2].getnewaddress() -+ recipients.append({"address":newtaddr, "amount":amount_per_recipient}) -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert("Too many outputs, size of raw transaction" in errorString) -+ -+ recipients = [] -+ num_t_recipients = 2000 -+ num_z_recipients = 50 -+ amount_per_recipient = Decimal('0.00000001') -+ errorString = '' -+ for i in xrange(0,num_t_recipients): -+ newtaddr = self.nodes[2].getnewaddress() -+ recipients.append({"address":newtaddr, "amount":amount_per_recipient}) -+ for i in xrange(0,num_z_recipients): -+ newzaddr = self.nodes[2].z_getnewaddress() -+ recipients.append({"address":newzaddr, "amount":amount_per_recipient}) -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert("size of raw transaction would be larger than limit" in errorString) -+ -+ recipients = [] -+ num_z_recipients = 100 -+ amount_per_recipient = Decimal('0.00000001') -+ errorString = '' -+ for i in xrange(0,num_z_recipients): -+ newzaddr = self.nodes[2].z_getnewaddress() -+ recipients.append({"address":newzaddr, "amount":amount_per_recipient}) -+ try: -+ self.nodes[0].z_sendmany(myzaddr, recipients) -+ except JSONRPCException,e: -+ errorString = e.error['message'] -+ assert("Invalid parameter, too many zaddr outputs" in errorString) -+ - # add zaddr to node 2 - myzaddr = self.nodes[2].z_getnewaddress() - -Only in ../../komodo-jl777/qa/rpc-tests: wallet_treestate.py -diff -crB ./qa/rpc-tests/zcjoinsplit.py ../../komodo-jl777/qa/rpc-tests/zcjoinsplit.py -*** ./qa/rpc-tests/zcjoinsplit.py 2017-01-03 10:40:50.203328760 +0000 ---- ../../komodo-jl777/qa/rpc-tests/zcjoinsplit.py 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 36,41 **** ---- 36,49 ---- - receive_result = self.nodes[0].zcrawreceive(zcsecretkey, joinsplit_result["encryptednote1"]) - assert_equal(receive_result["exists"], True) - -+ # The pure joinsplit we create should be mined in the next block -+ # despite other transactions being in the mempool. -+ addrtest = self.nodes[0].getnewaddress() -+ for xx in range(0,10): -+ self.nodes[0].generate(1) -+ for x in range(0,50): -+ self.nodes[0].sendtoaddress(addrtest, 0.01); -+ - joinsplit_tx = self.nodes[0].createrawtransaction([], {}) - joinsplit_result = self.nodes[0].zcrawjoinsplit(joinsplit_tx, {receive_result["note"] : zcsecretkey}, {zcaddress: 39.8}, 0, 0.1) - -diff -crB ./qa/zcash/performance-measurements.sh ../../komodo-jl777/qa/zcash/performance-measurements.sh -*** ./qa/zcash/performance-measurements.sh 2017-01-03 10:40:50.203328760 +0000 ---- ../../komodo-jl777/qa/zcash/performance-measurements.sh 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 88,93 **** ---- 88,99 ---- - validatelargetx) - zcash_rpc zcbenchmark validatelargetx 5 - ;; -+ trydecryptnotes) -+ zcash_rpc zcbenchmark trydecryptnotes 1000 "${@:3}" -+ ;; -+ incnotewitnesses) -+ zcash_rpc zcbenchmark incnotewitnesses 100 "${@:3}" -+ ;; - *) - zcashd_stop - echo "Bad arguments." -*************** -*** 116,121 **** ---- 122,133 ---- - verifyequihash) - zcash_rpc zcbenchmark verifyequihash 1 - ;; -+ trydecryptnotes) -+ zcash_rpc zcbenchmark trydecryptnotes 1 "${@:3}" -+ ;; -+ incnotewitnesses) -+ zcash_rpc zcbenchmark incnotewitnesses 1 "${@:3}" -+ ;; - *) - zcashd_massif_stop - echo "Bad arguments." -*************** -*** 145,150 **** ---- 157,168 ---- - verifyequihash) - zcash_rpc zcbenchmark verifyequihash 1 - ;; -+ trydecryptnotes) -+ zcash_rpc zcbenchmark trydecryptnotes 1 "${@:3}" -+ ;; -+ incnotewitnesses) -+ zcash_rpc zcbenchmark incnotewitnesses 1 "${@:3}" -+ ;; - *) - zcashd_valgrind_stop - echo "Bad arguments." -diff -crB ./README.md ../../komodo-jl777/README.md -*** ./README.md 2017-01-03 10:40:50.151326129 +0000 ---- ../../komodo-jl777/README.md 2017-01-03 09:49:08.848505929 +0000 -*************** -*** 1,43 **** -- <<<<<<< HEAD - -- Zcash -- ===== -- -- https://z.cash/ -- -- Where do I begin? -- ----------------- -- -- We have a guide for joining the public testnet: https://github.com/zcash/zcash/wiki/Beta-Guide -- -- What is Zcash? -- -------------- -- -- Zcash is an implementation of the "Zerocash" protocol. Based on Bitcoin's code, it intends to -- offer a far higher standard of privacy and anonymity through a sophisticiated zero-knowledge -- proving scheme which preserves confidentiality of transaction metadata. -- -- **Zcash is unfinished and highly experimental.** Use at your own risk. -- -- Participation in the Zcash project is subject to a [Code of Conduct](code_of_conduct.md). -- -- ======= -- Zcash 1.0.0 -- =========== - - What is Zcash? - -------------- - - [Zcash](https://z.cash/) is an implementation of the "Zerocash" protocol. - Based on Bitcoin's code, it intends to offer a far higher standard of privacy -! and anonymity through a sophisticated zero-knowledge proving scheme that -! preserves confidentiality of transaction metadata. Technical details are -! available in our [Protocol Specification](https://github.com/zcash/zips/raw/master/protocol/protocol.pdf). - - This software is the Zcash client. It downloads and stores the entire history - of Zcash transactions; depending on the speed of your computer and network - connection, the synchronization process could take a day or more once the -! block chain has reached a significant size. - - Security Warnings - ----------------- ---- 1,18 ---- - - - What is Zcash? - -------------- - - [Zcash](https://z.cash/) is an implementation of the "Zerocash" protocol. - Based on Bitcoin's code, it intends to offer a far higher standard of privacy -! through a sophisticated zero-knowledge proving scheme that preserves -! confidentiality of transaction metadata. Technical details are available -! in our [Protocol Specification](https://github.com/zcash/zips/raw/master/protocol/protocol.pdf). - - This software is the Zcash client. It downloads and stores the entire history - of Zcash transactions; depending on the speed of your computer and network - connection, the synchronization process could take a day or more once the -! blockchain has reached a significant size. - - Security Warnings - ----------------- -*************** -*** 165,173 **** - - Where do I begin? - ----------------- -! -! We have a guide for joining the public testnet: -! https://github.com/zcash/zcash/wiki/Beta-Guide - - ### Need Help? - ---- 140,147 ---- - - Where do I begin? - ----------------- -! We have a guide for joining the main Zcash network: -! https://github.com/zcash/zcash/wiki/1.0-User-Guide - - ### Need Help? - -*************** -*** 182,188 **** - -------- - - Build Zcash along with most dependencies from source by running -! ./zcutil/build.sh. Currently only Linux is supported. - - License - ------- ---- 156,162 ---- - -------- - - Build Zcash along with most dependencies from source by running -! ./zcutil/build.sh. Currently only Linux is officially supported. - - License - ------- -diff -crB ./src/assetchains ../../komodo-jl777/src/assetchains -*** ./src/assetchains 2017-01-03 10:40:50.211329166 +0000 ---- ../../komodo-jl777/src/assetchains 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 3,96 **** - source pubkey.txt - echo $pubkey - -! ./komodod -pubkey=$pubkey -ac_name=REVS -ac_supply=1300000 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=SUPERNET -ac_supply=816061 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=DEX -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=PANGEA -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=JUMBLR -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=BET -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=CRYPTO -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=HODL -ac_supply=9999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=SHARK -ac_supply=1401 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=BOTS -ac_supply=999999 -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=MGW -ac_supply=999999 -addnode=78.47.196.146 $1 & - -! ./komodod -pubkey=$pubkey -ac_name=USD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=EUR -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=JPY -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=GBP -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=AUD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=CAD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=CHF -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=NZD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=CNY -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=RUB -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=MXN -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=BRL -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=INR -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=HKD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=TRY -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=ZAR -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=PLN -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=NOK -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=SEK -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=DKK -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=CZK -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=HUF -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=ILS -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=KRW -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=MYR -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=PHP -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=RON -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=SGD -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=THB -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=BGN -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=IDR -addnode=78.47.196.146 $1 & -! ./komodod -pubkey=$pubkey -ac_name=HRK -addnode=78.47.196.146 $1 & -! -! curl --url "http://127.0.0.1:7776" --data "{\"timeout\":60000,\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"REVS\",\"pubkey\":\"$pubkey\"}" -! -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"SUPERNET\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"DEX\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"PANGEA\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"JUMBLR\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"BET\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"CRYPTO\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"HODL\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"SHARK\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"BOTS\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"MGW\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"USD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"EUR\",\"pubkey\":\"$pubkey\"}" -! -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"JPY\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"GBP\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"AUD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"CAD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"CHF\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"NZD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"CNY\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"RUB\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"MXN\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"BRL\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"INR\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"HKD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"TRY\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"ZAR\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"PLN\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"NOK\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"SEK\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"DKK\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"CZK\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"HUF\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"ILS\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"KRW\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"MYR\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"PHP\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"RON\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"SGD\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"THB\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"BGN\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"IDR\",\"pubkey\":\"$pubkey\"}" -! curl --url "http://127.0.0.1:7776" --data "{\"agent\":\"iguana\",\"method\":\"dpow\",\"symbol\":\"HRK\",\"pubkey\":\"$pubkey\"}" - ---- 3,50 ---- - source pubkey.txt - echo $pubkey - -! ./komodod -pubkey=$pubkey -ac_name=REVS -ac_supply=1300000 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=SUPERNET -ac_supply=816061 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=DEX -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=PANGEA -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=JUMBLR -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=BET -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=CRYPTO -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=HODL -ac_supply=9999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=SHARK -ac_supply=1401 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=BOTS -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=MGW -ac_supply=999999 -addnode=78.47.196.146 $1 -gen & - -! ./komodod -pubkey=$pubkey -ac_name=USD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=EUR -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=JPY -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=GBP -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=AUD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=CAD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=CHF -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=NZD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=CNY -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=RUB -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=MXN -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=BRL -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=INR -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=HKD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=TRY -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=ZAR -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=PLN -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=NOK -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=SEK -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=DKK -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=CZK -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=HUF -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=ILS -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=KRW -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=MYR -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=PHP -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=RON -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=SGD -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=THB -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=BGN -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=IDR -addnode=78.47.196.146 $1 -gen & -! ./komodod -pubkey=$pubkey -ac_name=HRK -addnode=78.47.196.146 $1 -gen & - -diff -crB ./src/bitcoind.cpp ../../komodo-jl777/src/bitcoind.cpp -*** ./src/bitcoind.cpp 2017-01-03 10:40:50.215329368 +0000 ---- ../../komodo-jl777/src/bitcoind.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 41,47 **** - // Tell the main threads to shutdown. - while (!fShutdown) - { -! MilliSleep(10000); - komodo_passport_iteration(); - fShutdown = ShutdownRequested(); - } ---- 41,47 ---- - // Tell the main threads to shutdown. - while (!fShutdown) - { -! MilliSleep(16000); - komodo_passport_iteration(); - fShutdown = ShutdownRequested(); - } -diff -crB ./src/chainparams.cpp ../../komodo-jl777/src/chainparams.cpp -*** ./src/chainparams.cpp 2017-01-03 10:40:50.215329368 +0000 ---- ../../komodo-jl777/src/chainparams.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 43,48 **** ---- 43,49 ---- - CMainParams() - { - strNetworkID = "main"; -+ strCurrencyUnits = "KMD"; - consensus.fCoinbaseMustBeProtected = false;//true; - consensus.nSubsidySlowStartInterval = 20000; - consensus.nSubsidyHalvingInterval = 840000; -*************** -*** 119,129 **** - checkpointData = (Checkpoints::CCheckpointData) - { - boost::assign::map_list_of -! ( 0, consensus.hashGenesisBlock), -! genesis.nTime, // * UNIX timestamp of last checkpoint block -! 0, // * total number of transactions between genesis and last checkpoint -! // (the tx=... number in the SetBestChain debug.log lines) -! 0 // * estimated number of transactions per day after checkpoint - }; - if ( pthread_create((pthread_t *)malloc(sizeof(pthread_t)),NULL,chainparams_commandline,(void *)&consensus) != 0 ) - { ---- 120,134 ---- - checkpointData = (Checkpoints::CCheckpointData) - { - boost::assign::map_list_of -! (0, consensus.hashGenesisBlock), -! //(2500, uint256S("0x0e6a3d5a46eba97c4e7618d66a39f115729e1176433c98481124c2bf733aa54e")) -! //(15000, uint256S("0x00f0bd236790e903321a2d22f85bd6bf8a505f6ef4eddb20458a65d37e14d142")), -! //(100000, uint256S("0x0f02eb1f3a4b89df9909fec81a4bd7d023e32e24e1f5262d9fc2cc36a715be6f")), -! 1481120910, // * UNIX timestamp of last checkpoint block -! 110415, // * total number of transactions between genesis and last checkpoint -! // (the tx=... number in the SetBestChain debug.log lines) -! 4240 // * estimated number of transactions per day after checkpoint -! // total number of tx / (checkpoint block height / (24 * 24)) - }; - if ( pthread_create((pthread_t *)malloc(sizeof(pthread_t)),NULL,chainparams_commandline,(void *)&consensus) != 0 ) - { -*************** -*** 160,165 **** ---- 165,171 ---- - public: - CTestNetParams() { - strNetworkID = "test"; -+ strCurrencyUnits = "TAZ"; - consensus.nMajorityEnforceBlockUpgrade = 51; - consensus.nMajorityRejectBlockOutdated = 75; - consensus.nMajorityWindow = 400; -*************** -*** 222,227 **** ---- 228,234 ---- - public: - CRegTestParams() { - strNetworkID = "regtest"; -+ strCurrencyUnits = "REG"; - consensus.fCoinbaseMustBeProtected = false; - consensus.nSubsidySlowStartInterval = 0; - consensus.nSubsidyHalvingInterval = 150; -diff -crB ./src/chainparams.h ../../komodo-jl777/src/chainparams.h -*** ./src/chainparams.h 2017-01-03 10:40:50.215329368 +0000 ---- ../../komodo-jl777/src/chainparams.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 69,74 **** ---- 69,75 ---- - int64_t PruneAfterHeight() const { return nPruneAfterHeight; } - unsigned int EquihashN() const { return nEquihashN; } - unsigned int EquihashK() const { return nEquihashK; } -+ std::string CurrencyUnits() const { return strCurrencyUnits; } - /** Make miner stop after a block is found. In RPC, don't return until nGenProcLimit blocks are generated */ - bool MineBlocksOnDemand() const { return fMineBlocksOnDemand; } - /** In the future use NetworkIDString() for RPC fields */ -*************** -*** 107,112 **** ---- 108,114 ---- - std::vector vSeeds; - std::vector base58Prefixes[MAX_BASE58_TYPES]; - std::string strNetworkID; -+ std::string strCurrencyUnits; - CBlock genesis; - std::vector vFixedSeeds; - bool fRequireRPCPassword = false; -diff -crB ./src/clientversion.h ../../komodo-jl777/src/clientversion.h -*** ./src/clientversion.h 2017-01-03 10:40:50.215329368 +0000 ---- ../../komodo-jl777/src/clientversion.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 16,22 **** - //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it - #define CLIENT_VERSION_MAJOR 1 - #define CLIENT_VERSION_MINOR 0 -! #define CLIENT_VERSION_REVISION 0 - #define CLIENT_VERSION_BUILD 50 - - //! Set to true for release, false for prerelease or test build ---- 16,22 ---- - //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it - #define CLIENT_VERSION_MAJOR 1 - #define CLIENT_VERSION_MINOR 0 -! #define CLIENT_VERSION_REVISION 3 - #define CLIENT_VERSION_BUILD 50 - - //! Set to true for release, false for prerelease or test build -diff -crB ./src/coins.cpp ../../komodo-jl777/src/coins.cpp -*** ./src/coins.cpp 2017-01-03 10:40:50.215329368 +0000 ---- ../../komodo-jl777/src/coins.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 6,11 **** ---- 6,12 ---- - - #include "memusage.h" - #include "random.h" -+ #include "version.h" - - #include - -*************** -*** 176,186 **** - // case restoring the "old" anchor during a reorg must - // have no effect. - if (currentRoot != newrt) { -! CAnchorsMap::iterator ret = cacheAnchors.insert(std::make_pair(currentRoot, CAnchorsCacheEntry())).first; - -! ret->second.entered = false; -! ret->second.flags = CAnchorsCacheEntry::DIRTY; - - hashAnchor = newrt; - } - } ---- 177,196 ---- - // case restoring the "old" anchor during a reorg must - // have no effect. - if (currentRoot != newrt) { -! // Bring the current best anchor into our local cache -! // so that its tree exists in memory. -! { -! ZCIncrementalMerkleTree tree; -! assert(GetAnchorAt(currentRoot, tree)); -! } - -! // Mark the anchor as unentered, removing it from view -! cacheAnchors[currentRoot].entered = false; - -+ // Mark the cache entry as dirty so it's propagated -+ cacheAnchors[currentRoot].flags = CAnchorsCacheEntry::DIRTY; -+ -+ // Mark the new root as the best anchor - hashAnchor = newrt; - } - } -*************** -*** 303,318 **** - CAnchorsMap::iterator parent_it = cacheAnchors.find(child_it->first); - - if (parent_it == cacheAnchors.end()) { -! if (child_it->second.entered) { -! // Parent doesn't have an entry, but child has a new commitment root. -! -! CAnchorsCacheEntry& entry = cacheAnchors[child_it->first]; -! entry.entered = true; -! entry.tree = child_it->second.tree; -! entry.flags = CAnchorsCacheEntry::DIRTY; - -! cachedCoinsUsage += memusage::DynamicUsage(entry.tree); -! } - } else { - if (parent_it->second.entered != child_it->second.entered) { - // The parent may have removed the entry. ---- 313,324 ---- - CAnchorsMap::iterator parent_it = cacheAnchors.find(child_it->first); - - if (parent_it == cacheAnchors.end()) { -! CAnchorsCacheEntry& entry = cacheAnchors[child_it->first]; -! entry.entered = child_it->second.entered; -! entry.tree = child_it->second.tree; -! entry.flags = CAnchorsCacheEntry::DIRTY; - -! cachedCoinsUsage += memusage::DynamicUsage(entry.tree); - } else { - if (parent_it->second.entered != child_it->second.entered) { - // The parent may have removed the entry. -*************** -*** 332,345 **** - CNullifiersMap::iterator parent_it = cacheNullifiers.find(child_it->first); - - if (parent_it == cacheNullifiers.end()) { -! if (child_it->second.entered) { -! // Parent doesn't have an entry, but child has a SPENT nullifier. -! // Move the spent nullifier up. -! -! CNullifiersCacheEntry& entry = cacheNullifiers[child_it->first]; -! entry.entered = true; -! entry.flags = CNullifiersCacheEntry::DIRTY; -! } - } else { - if (parent_it->second.entered != child_it->second.entered) { - parent_it->second.entered = child_it->second.entered; ---- 338,346 ---- - CNullifiersMap::iterator parent_it = cacheNullifiers.find(child_it->first); - - if (parent_it == cacheNullifiers.end()) { -! CNullifiersCacheEntry& entry = cacheNullifiers[child_it->first]; -! entry.entered = child_it->second.entered; -! entry.flags = CNullifiersCacheEntry::DIRTY; - } else { - if (parent_it->second.entered != child_it->second.entered) { - parent_it->second.entered = child_it->second.entered; -*************** -*** 469,474 **** ---- 470,476 ---- - { - if (tx.IsCoinBase()) - return 0.0; -+ CAmount nTotalIn = 0; - double dResult = 0.0; - BOOST_FOREACH(const CTxIn& txin, tx.vin) - { -*************** -*** 477,484 **** ---- 479,512 ---- - if (!coins->IsAvailable(txin.prevout.n)) continue; - if (coins->nHeight < nHeight) { - dResult += coins->vout[txin.prevout.n].nValue * (nHeight-coins->nHeight); -+ nTotalIn += coins->vout[txin.prevout.n].nValue; - } - } -+ -+ // If a transaction contains a joinsplit, we boost the priority of the transaction. -+ // Joinsplits do not reveal any information about the value or age of a note, so we -+ // cannot apply the priority algorithm used for transparent utxos. Instead, we pick a -+ // very large number and multiply it by the transaction's fee per 1000 bytes of data. -+ // One trillion, 1000000000000, is equivalent to 1 ZEC utxo * 10000 blocks (~17 days). -+ if (tx.vjoinsplit.size() > 0) { -+ unsigned int nTxSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION); -+ nTotalIn += tx.GetJoinSplitValueIn(); -+ CAmount fee = nTotalIn - tx.GetValueOut(); -+ CFeeRate feeRate(fee, nTxSize); -+ CAmount feePerK = feeRate.GetFeePerK(); -+ -+ if (feePerK == 0) { -+ feePerK = 1; -+ } -+ -+ dResult += 1000000000000 * double(feePerK); -+ // We cast feePerK from int64_t to double because if feePerK is a large number, say -+ // close to MAX_MONEY, the multiplication operation will result in an integer overflow. -+ // The variable dResult should never overflow since a 64-bit double in C++ is typically -+ // a double-precision floating-point number as specified by IEE 754, with a maximum -+ // value DBL_MAX of 1.79769e+308. -+ } -+ - return tx.ComputePriority(dResult); - } - -Only in ../../komodo-jl777/src: dpowassets -Only in ../../komodo-jl777/src: fundnotaries -diff -crB ./src/gtest/test_checkblock.cpp ../../komodo-jl777/src/gtest/test_checkblock.cpp -*** ./src/gtest/test_checkblock.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/gtest/test_checkblock.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 29,31 **** ---- 29,74 ---- - EXPECT_CALL(state, DoS(100, false, REJECT_INVALID, "version-too-low", false)).Times(1); - EXPECT_FALSE(CheckBlock(0,0,block, state, false, false)); - } -+ -+ TEST(ContextualCheckBlock, BadCoinbaseHeight) { -+ SelectParams(CBaseChainParams::MAIN); -+ -+ // Create a block with no height in scriptSig -+ CMutableTransaction mtx; -+ mtx.vin.resize(1); -+ mtx.vin[0].prevout.SetNull(); -+ mtx.vin[0].scriptSig = CScript() << OP_0; -+ mtx.vout.resize(1); -+ mtx.vout[0].scriptPubKey = CScript() << OP_TRUE; -+ mtx.vout[0].nValue = 0; -+ CTransaction tx {mtx}; -+ CBlock block; -+ block.vtx.push_back(tx); -+ -+ // Treating block as genesis should pass -+ MockCValidationState state; -+ EXPECT_TRUE(ContextualCheckBlock(block, state, NULL)); -+ -+ // Treating block as non-genesis should fail -+ mtx.vout.push_back(CTxOut(GetBlockSubsidy(1, Params().GetConsensus())/5, Params().GetFoundersRewardScriptAtHeight(1))); -+ CTransaction tx2 {mtx}; -+ block.vtx[0] = tx2; -+ CBlock prev; -+ CBlockIndex indexPrev {prev}; -+ indexPrev.nHeight = 0; -+ EXPECT_CALL(state, DoS(100, false, REJECT_INVALID, "bad-cb-height", false)).Times(1); -+ EXPECT_FALSE(ContextualCheckBlock(block, state, &indexPrev)); -+ -+ // Setting to an incorrect height should fail -+ mtx.vin[0].scriptSig = CScript() << 2 << OP_0; -+ CTransaction tx3 {mtx}; -+ block.vtx[0] = tx3; -+ EXPECT_CALL(state, DoS(100, false, REJECT_INVALID, "bad-cb-height", false)).Times(1); -+ EXPECT_FALSE(ContextualCheckBlock(block, state, &indexPrev)); -+ -+ // After correcting the scriptSig, should pass -+ mtx.vin[0].scriptSig = CScript() << 1 << OP_0; -+ CTransaction tx4 {mtx}; -+ block.vtx[0] = tx4; -+ EXPECT_TRUE(ContextualCheckBlock(block, state, &indexPrev)); -+ } -diff -crB ./src/gtest/test_joinsplit.cpp ../../komodo-jl777/src/gtest/test_joinsplit.cpp -*** ./src/gtest/test_joinsplit.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/gtest/test_joinsplit.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 15,20 **** ---- 15,23 ---- - - void test_full_api(ZCJoinSplit* js) - { -+ // Create verification context. -+ auto verifier = libzcash::ProofVerifier::Strict(); -+ - // The recipient's information. - SpendingKey recipient_key = SpendingKey::random(); - PaymentAddress recipient_addr = recipient_key.address(); -*************** -*** 69,74 **** ---- 72,78 ---- - // Verify the transaction: - ASSERT_TRUE(js->verify( - proof, -+ verifier, - pubKeyHash, - randomSeed, - macs, -*************** -*** 143,148 **** ---- 147,153 ---- - // Verify the transaction: - ASSERT_TRUE(js->verify( - proof, -+ verifier, - pubKeyHash, - randomSeed, - macs, -*************** -*** 154,159 **** ---- 159,222 ---- - )); - } - -+ // Invokes the API (but does not compute a proof) -+ // to test exceptions -+ void invokeAPI( -+ ZCJoinSplit* js, -+ const boost::array& inputs, -+ const boost::array& outputs, -+ uint64_t vpub_old, -+ uint64_t vpub_new, -+ const uint256& rt -+ ) { -+ uint256 ephemeralKey; -+ uint256 randomSeed; -+ uint256 pubKeyHash = random_uint256(); -+ boost::array macs; -+ boost::array nullifiers; -+ boost::array commitments; -+ boost::array ciphertexts; -+ -+ boost::array output_notes; -+ -+ ZCProof proof = js->prove( -+ inputs, -+ outputs, -+ output_notes, -+ ciphertexts, -+ ephemeralKey, -+ pubKeyHash, -+ randomSeed, -+ macs, -+ nullifiers, -+ commitments, -+ vpub_old, -+ vpub_new, -+ rt, -+ false -+ ); -+ } -+ -+ void invokeAPIFailure( -+ ZCJoinSplit* js, -+ const boost::array& inputs, -+ const boost::array& outputs, -+ uint64_t vpub_old, -+ uint64_t vpub_new, -+ const uint256& rt, -+ std::string reason -+ ) -+ { -+ try { -+ invokeAPI(js, inputs, outputs, vpub_old, vpub_new, rt); -+ FAIL() << "It worked, when it shouldn't have!"; -+ } catch(std::invalid_argument const & err) { -+ EXPECT_EQ(err.what(), reason); -+ } catch(...) { -+ FAIL() << "Expected invalid_argument exception."; -+ } -+ } -+ - TEST(joinsplit, h_sig) - { - auto js = ZCJoinSplit::Unopened(); -*************** -*** 233,242 **** ---- 296,515 ---- - delete js; - } - -+ void increment_note_witnesses( -+ const uint256& element, -+ std::vector& witnesses, -+ ZCIncrementalMerkleTree& tree -+ ) -+ { -+ tree.append(element); -+ for (ZCIncrementalWitness& w : witnesses) { -+ w.append(element); -+ } -+ witnesses.push_back(tree.witness()); -+ } -+ - TEST(joinsplit, full_api_test) - { - auto js = ZCJoinSplit::Generate(); - -+ { -+ std::vector witnesses; -+ ZCIncrementalMerkleTree tree; -+ increment_note_witnesses(uint256(), witnesses, tree); -+ SpendingKey sk = SpendingKey::random(); -+ PaymentAddress addr = sk.address(); -+ Note note1(addr.a_pk, 100, random_uint256(), random_uint256()); -+ increment_note_witnesses(note1.cm(), witnesses, tree); -+ Note note2(addr.a_pk, 100, random_uint256(), random_uint256()); -+ increment_note_witnesses(note2.cm(), witnesses, tree); -+ Note note3(addr.a_pk, 2100000000000001, random_uint256(), random_uint256()); -+ increment_note_witnesses(note3.cm(), witnesses, tree); -+ Note note4(addr.a_pk, 1900000000000000, random_uint256(), random_uint256()); -+ increment_note_witnesses(note4.cm(), witnesses, tree); -+ Note note5(addr.a_pk, 1900000000000000, random_uint256(), random_uint256()); -+ increment_note_witnesses(note5.cm(), witnesses, tree); -+ -+ // Should work -+ invokeAPI(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root()); -+ -+ // lhs > MAX_MONEY -+ invokeAPIFailure(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 2100000000000001, -+ 0, -+ tree.root(), -+ "nonsensical vpub_old value"); -+ -+ // rhs > MAX_MONEY -+ invokeAPIFailure(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 2100000000000001, -+ tree.root(), -+ "nonsensical vpub_new value"); -+ -+ // input witness for the wrong element -+ invokeAPIFailure(js, -+ { -+ JSInput(witnesses[0], note1, sk), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 100, -+ tree.root(), -+ "witness of wrong element for joinsplit input"); -+ -+ // input witness doesn't match up with -+ // real root -+ invokeAPIFailure(js, -+ { -+ JSInput(witnesses[1], note1, sk), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 100, -+ uint256(), -+ "joinsplit not anchored to the correct root"); -+ -+ // input is in the tree now! this should work -+ invokeAPI(js, -+ { -+ JSInput(witnesses[1], note1, sk), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 100, -+ tree.root()); -+ -+ // Wrong secret key -+ invokeAPIFailure(js, -+ { -+ JSInput(witnesses[1], note1, SpendingKey::random()), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "input note not authorized to spend with given key"); -+ -+ // Absurd input value -+ invokeAPIFailure(js, -+ { -+ JSInput(witnesses[3], note3, sk), -+ JSInput() -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "nonsensical input note value"); -+ -+ // Absurd total input value -+ invokeAPIFailure(js, -+ { -+ JSInput(witnesses[4], note4, sk), -+ JSInput(witnesses[5], note5, sk) -+ }, -+ { -+ JSOutput(), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "nonsensical left hand size of joinsplit balance"); -+ -+ // Absurd output value -+ invokeAPIFailure(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(addr, 2100000000000001), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "nonsensical output value"); -+ -+ // Absurd total output value -+ invokeAPIFailure(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(addr, 1900000000000000), -+ JSOutput(addr, 1900000000000000) -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "nonsensical right hand side of joinsplit balance"); -+ -+ // Absurd total output value -+ invokeAPIFailure(js, -+ { -+ JSInput(), -+ JSInput() -+ }, -+ { -+ JSOutput(addr, 1900000000000000), -+ JSOutput() -+ }, -+ 0, -+ 0, -+ tree.root(), -+ "invalid joinsplit balance"); -+ } -+ - test_full_api(js); - - js->saveProvingKey("./zcashTest.pk"); -diff -crB ./src/gtest/test_merkletree.cpp ../../komodo-jl777/src/gtest/test_merkletree.cpp -*** ./src/gtest/test_merkletree.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/gtest/test_merkletree.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 5,10 **** ---- 5,11 ---- - #include "test/data/merkle_serialization.json.h" - #include "test/data/merkle_witness_serialization.json.h" - #include "test/data/merkle_path.json.h" -+ #include "test/data/merkle_commitments.json.h" - - #include - -*************** -*** 55,86 **** - } - - template -! void test_tree(Array root_tests, Array ser_tests, Array witness_ser_tests, Array path_tests) { - Array::iterator root_iterator = root_tests.begin(); - Array::iterator ser_iterator = ser_tests.begin(); - Array::iterator witness_ser_iterator = witness_ser_tests.begin(); - Array::iterator path_iterator = path_tests.begin(); - -- uint256 test_commitment = uint256S("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); -- - Tree tree; - - // The root of the tree at this point is expected to be the root of the - // empty tree. - ASSERT_TRUE(tree.root() == Tree::empty_root()); - - // We need to witness at every single point in the tree, so - // that the consistency of the tree and the merkle paths can - // be checked. - vector witnesses; - - for (size_t i = 0; i < 16; i++) { - // Witness here - witnesses.push_back(tree.witness()); - - // Now append a commitment to the tree - tree.append(test_commitment); - - // Check tree root consistency - expect_test_vector(root_iterator, tree.root()); - ---- 56,101 ---- - } - - template -! void test_tree( -! Array commitment_tests, -! Array root_tests, -! Array ser_tests, -! Array witness_ser_tests, -! Array path_tests -! ) -! { -! Array::iterator commitment_iterator = commitment_tests.begin(); - Array::iterator root_iterator = root_tests.begin(); - Array::iterator ser_iterator = ser_tests.begin(); - Array::iterator witness_ser_iterator = witness_ser_tests.begin(); - Array::iterator path_iterator = path_tests.begin(); - - Tree tree; - - // The root of the tree at this point is expected to be the root of the - // empty tree. - ASSERT_TRUE(tree.root() == Tree::empty_root()); - -+ // The tree doesn't have a 'last' element added since it's blank. -+ ASSERT_THROW(tree.last(), std::runtime_error); -+ - // We need to witness at every single point in the tree, so - // that the consistency of the tree and the merkle paths can - // be checked. - vector witnesses; - - for (size_t i = 0; i < 16; i++) { -+ uint256 test_commitment = uint256S((commitment_iterator++)->get_str()); -+ - // Witness here - witnesses.push_back(tree.witness()); - - // Now append a commitment to the tree - tree.append(test_commitment); - -+ // Last element added to the tree was `test_commitment` -+ ASSERT_TRUE(tree.last() == test_commitment); -+ - // Check tree root consistency - expect_test_vector(root_iterator, tree.root()); - -*************** -*** 95,100 **** ---- 110,116 ---- - - if (first) { - ASSERT_THROW(wit.path(), std::runtime_error); -+ ASSERT_THROW(wit.element(), std::runtime_error); - } else { - auto path = wit.path(); - -*************** -*** 119,125 **** - - std::vector commitment_bv; - { -! std::vector commitment_v(test_commitment.begin(), test_commitment.end()); - commitment_bv = convertBytesVectorToVector(commitment_v); - } - ---- 135,142 ---- - - std::vector commitment_bv; - { -! uint256 witnessed_commitment = wit.element(); -! std::vector commitment_v(witnessed_commitment.begin(), witnessed_commitment.end()); - commitment_bv = convertBytesVectorToVector(commitment_v); - } - -*************** -*** 174,181 **** - Array ser_tests = read_json(std::string(json_tests::merkle_serialization, json_tests::merkle_serialization + sizeof(json_tests::merkle_serialization))); - Array witness_ser_tests = read_json(std::string(json_tests::merkle_witness_serialization, json_tests::merkle_witness_serialization + sizeof(json_tests::merkle_witness_serialization))); - Array path_tests = read_json(std::string(json_tests::merkle_path, json_tests::merkle_path + sizeof(json_tests::merkle_path))); - -! test_tree(root_tests, ser_tests, witness_ser_tests, path_tests); - } - - TEST(merkletree, emptyroots) { ---- 191,199 ---- - Array ser_tests = read_json(std::string(json_tests::merkle_serialization, json_tests::merkle_serialization + sizeof(json_tests::merkle_serialization))); - Array witness_ser_tests = read_json(std::string(json_tests::merkle_witness_serialization, json_tests::merkle_witness_serialization + sizeof(json_tests::merkle_witness_serialization))); - Array path_tests = read_json(std::string(json_tests::merkle_path, json_tests::merkle_path + sizeof(json_tests::merkle_path))); -+ Array commitment_tests = read_json(std::string(json_tests::merkle_commitments, json_tests::merkle_commitments + sizeof(json_tests::merkle_commitments))); - -! test_tree(commitment_tests, root_tests, ser_tests, witness_ser_tests, path_tests); - } - - TEST(merkletree, emptyroots) { -Only in ../../komodo-jl777/src/gtest: test_metrics.cpp -diff -crB ./src/gtest/test_proofs.cpp ../../komodo-jl777/src/gtest/test_proofs.cpp -*** ./src/gtest/test_proofs.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/gtest/test_proofs.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 336,341 **** ---- 336,364 ---- - auto example = libsnark::generate_r1cs_example_with_field_input(250, 4); - example.constraint_system.swap_AB_if_beneficial(); - auto kp = libsnark::r1cs_ppzksnark_generator(example.constraint_system); -+ auto vkprecomp = libsnark::r1cs_ppzksnark_verifier_process_vk(kp.vk); -+ -+ for (size_t i = 0; i < 20; i++) { -+ auto badproof = ZCProof::random_invalid(); -+ auto proof = badproof.to_libsnark_proof>(); -+ -+ auto verifierEnabled = ProofVerifier::Strict(); -+ auto verifierDisabled = ProofVerifier::Disabled(); -+ // This verifier should catch the bad proof -+ ASSERT_FALSE(verifierEnabled.check( -+ kp.vk, -+ vkprecomp, -+ example.primary_input, -+ proof -+ )); -+ // This verifier won't! -+ ASSERT_TRUE(verifierDisabled.check( -+ kp.vk, -+ vkprecomp, -+ example.primary_input, -+ proof -+ )); -+ } - - for (size_t i = 0; i < 20; i++) { - auto proof = libsnark::r1cs_ppzksnark_prover( -*************** -*** 345,350 **** ---- 368,390 ---- - example.constraint_system - ); - -+ { -+ auto verifierEnabled = ProofVerifier::Strict(); -+ auto verifierDisabled = ProofVerifier::Disabled(); -+ ASSERT_TRUE(verifierEnabled.check( -+ kp.vk, -+ vkprecomp, -+ example.primary_input, -+ proof -+ )); -+ ASSERT_TRUE(verifierDisabled.check( -+ kp.vk, -+ vkprecomp, -+ example.primary_input, -+ proof -+ )); -+ } -+ - ASSERT_TRUE(libsnark::r1cs_ppzksnark_verifier_strong_IC( - kp.vk, - example.primary_input, -diff -crB ./src/gtest/test_random.cpp ../../komodo-jl777/src/gtest/test_random.cpp -*** ./src/gtest/test_random.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/gtest/test_random.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 24,27 **** ---- 24,35 ---- - std::vector em2 {0, 1, 2, 3, 4}; - EXPECT_EQ(ea2, a2); - EXPECT_EQ(em2, m2); -+ -+ auto a3 = a; -+ auto m3 = m; -+ MappedShuffle(a3.begin(), m3.begin(), a3.size(), GenIdentity); -+ std::vector ea3 {8, 4, 6, 3, 5}; -+ std::vector em3 {0, 1, 2, 3, 4}; -+ EXPECT_EQ(ea3, a3); -+ EXPECT_EQ(em3, m3); - } -diff -crB ./src/init.cpp ../../komodo-jl777/src/init.cpp -*** ./src/init.cpp 2017-01-03 10:40:50.227329975 +0000 ---- ../../komodo-jl777/src/init.cpp 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 62,68 **** - bool fFeeEstimatesInitialized = false; - - #ifdef WIN32 -! // Win32 LevelDB doesn't use filedescriptors, and the ones used for - // accessing block files don't count towards the fd_set size limit - // anyway. - #define MIN_CORE_FILEDESCRIPTORS 0 ---- 62,68 ---- - bool fFeeEstimatesInitialized = false; - - #ifdef WIN32 -! // Win32 LevelDB doesn't use file descriptors, and the ones used for - // accessing block files don't count towards the fd_set size limit - // anyway. - #define MIN_CORE_FILEDESCRIPTORS 0 -*************** -*** 348,354 **** - strUsage += HelpMessageOpt("-mintxfee=", strprintf("Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)", - FormatMoney(CWallet::minTxFee.GetFeePerK()))); - strUsage += HelpMessageOpt("-paytxfee=", strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"), FormatMoney(payTxFee.GetFeePerK()))); -! strUsage += HelpMessageOpt("-rescan", _("Rescan the block chain for missing wallet transactions") + " " + _("on startup")); - strUsage += HelpMessageOpt("-salvagewallet", _("Attempt to recover private keys from a corrupt wallet.dat") + " " + _("on startup")); - strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), 0)); - strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), 1)); ---- 348,354 ---- - strUsage += HelpMessageOpt("-mintxfee=", strprintf("Fees (in BTC/Kb) smaller than this are considered zero fee for transaction creation (default: %s)", - FormatMoney(CWallet::minTxFee.GetFeePerK()))); - strUsage += HelpMessageOpt("-paytxfee=", strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"), FormatMoney(payTxFee.GetFeePerK()))); -! strUsage += HelpMessageOpt("-rescan", _("Rescan the blockchain for missing wallet transactions") + " " + _("on startup")); - strUsage += HelpMessageOpt("-salvagewallet", _("Attempt to recover private keys from a corrupt wallet.dat") + " " + _("on startup")); - strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), 0)); - strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), 1)); -*************** -*** 380,386 **** - if (mode == HMM_BITCOIN_QT) - debugCategories += ", qt"; - strUsage += HelpMessageOpt("-debug=", strprintf(_("Output debugging information (default: %u, supplying is optional)"), 0) + ". " + -! _("If is not supplied, output all debugging information.") + _(" can be:") + " " + debugCategories + "."); - #ifdef ENABLE_WALLET - strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), 0)); - strUsage += HelpMessageOpt("-genproclimit=", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), 1)); ---- 380,386 ---- - if (mode == HMM_BITCOIN_QT) - debugCategories += ", qt"; - strUsage += HelpMessageOpt("-debug=", strprintf(_("Output debugging information (default: %u, supplying is optional)"), 0) + ". " + -! _("If is not supplied or if = 1, output all debugging information.") + _(" can be:") + " " + debugCategories + "."); - #ifdef ENABLE_WALLET - strUsage += HelpMessageOpt("-gen", strprintf(_("Generate coins (default: %u)"), 0)); - strUsage += HelpMessageOpt("-genproclimit=", strprintf(_("Set the number of threads for coin generation if enabled (-1 = all cores, default: %d)"), 1)); -*************** -*** 425,431 **** - strUsage += HelpMessageOpt("-rpcport=", strprintf(_("Listen for JSON-RPC connections on (default: %u or testnet: %u)"), 8232, 18232)); - strUsage += HelpMessageOpt("-rpcallowip=", _("Allow JSON-RPC connections from specified source. Valid for are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times")); - strUsage += HelpMessageOpt("-rpcthreads=", strprintf(_("Set the number of threads to service RPC calls (default: %d)"), 4)); -! strUsage += HelpMessageOpt("-rpckeepalive", strprintf(_("RPC support for HTTP persistent connections (default: %d)"), 1)); - - // Disabled until we can lock notes and also tune performance of libsnark which by default uses multiple threads - //strUsage += HelpMessageOpt("-rpcasyncthreads=", strprintf(_("Set the number of threads to service Async RPC calls (default: %d)"), 1)); ---- 425,434 ---- - strUsage += HelpMessageOpt("-rpcport=", strprintf(_("Listen for JSON-RPC connections on (default: %u or testnet: %u)"), 8232, 18232)); - strUsage += HelpMessageOpt("-rpcallowip=", _("Allow JSON-RPC connections from specified source. Valid for are a single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified multiple times")); - strUsage += HelpMessageOpt("-rpcthreads=", strprintf(_("Set the number of threads to service RPC calls (default: %d)"), 4)); -! -! // TODO #1856: Re-enable support for persistent connections. -! // Disabled to avoid rpc deadlock #1680, until we backport upstream changes which replace boost::asio with libevent, or another solution is implemented. -! //strUsage += HelpMessageOpt("-rpckeepalive", strprintf(_("RPC support for HTTP persistent connections (default: %d)"), 1)); - - // Disabled until we can lock notes and also tune performance of libsnark which by default uses multiple threads - //strUsage += HelpMessageOpt("-rpcasyncthreads=", strprintf(_("Set the number of threads to service Async RPC calls (default: %d)"), 1)); -*************** -*** 447,452 **** ---- 450,460 ---- - strUsage += HelpMessageOpt("-min", _("Start minimized")); - strUsage += HelpMessageOpt("-rootcertificates=", _("Set SSL root certificates for payment request (default: -system-)")); - strUsage += HelpMessageOpt("-splash", _("Show splash screen on startup (default: 1)")); -+ } else if (mode == HMM_BITCOIND) { -+ strUsage += HelpMessageGroup(_("Metrics Options (only if -daemon and -printtoconsole are not set):")); -+ strUsage += HelpMessageOpt("-showmetrics", _("Show metrics on stdout (default: 1 if running in a console, 0 otherwise)")); -+ strUsage += HelpMessageOpt("-metricsui", _("Set to 1 for a persistent metrics screen, 0 for sequential metrics output (default: 1 if running in a console, 0 otherwise)")); -+ strUsage += HelpMessageOpt("-metricsrefreshtime", strprintf(_("Number of seconds between metrics refreshes (default: %u if running in a console, %u otherwise)"), 1, 600)); - } - - return strUsage; -*************** -*** 538,548 **** - RenameThread("zcash-loadblk"); - // -reindex - if (fReindex) { -- #ifdef ENABLE_WALLET -- if (pwalletMain) { -- pwalletMain->ClearNoteWitnessCache(); -- } -- #endif - CImportingNow imp; - int nFile = 0; - while (true) { ---- 546,551 ---- -*************** -*** 980,1000 **** - CScheduler::Function serviceLoop = boost::bind(&CScheduler::serviceQueue, &scheduler); - threadGroup.create_thread(boost::bind(&TraceThread, "scheduler", serviceLoop)); - - if ((chainparams.NetworkIDString() != "regtest") && -! GetBoolArg("-showmetrics", false) && - !fPrintToConsole && !GetBoolArg("-daemon", false)) { - // Start the persistent metrics interface - ConnectMetricsScreen(); - threadGroup.create_thread(&ThreadShowMetricsScreen); - } - -- // Initialize Zcash circuit parameters -- ZC_LoadParams(); - // These must be disabled for now, they are buggy and we probably don't - // want any of libsnark's profiling in production anyway. - libsnark::inhibit_profiling_info = true; - libsnark::inhibit_profiling_counters = true; - - /* Start the RPC server already. It will be started in "warmup" mode - * and not really process calls already (but it will signify connections - * that the server is there and will be ready later). Warmup mode will ---- 983,1007 ---- - CScheduler::Function serviceLoop = boost::bind(&CScheduler::serviceQueue, &scheduler); - threadGroup.create_thread(boost::bind(&TraceThread, "scheduler", serviceLoop)); - -+ // Count uptime -+ MarkStartTime(); -+ - if ((chainparams.NetworkIDString() != "regtest") && -! GetBoolArg("-showmetrics", 0) && - !fPrintToConsole && !GetBoolArg("-daemon", false)) { - // Start the persistent metrics interface - ConnectMetricsScreen(); - threadGroup.create_thread(&ThreadShowMetricsScreen); - } - - // These must be disabled for now, they are buggy and we probably don't - // want any of libsnark's profiling in production anyway. - libsnark::inhibit_profiling_info = true; - libsnark::inhibit_profiling_counters = true; - -+ // Initialize Zcash circuit parameters -+ ZC_LoadParams(); -+ - /* Start the RPC server already. It will be started in "warmup" mode - * and not really process calls already (but it will signify connections - * that the server is there and will be ready later). Warmup mode will -*************** -*** 1379,1385 **** ---- 1386,1395 ---- - - CBlockIndex *pindexRescan = chainActive.Tip(); - if (GetBoolArg("-rescan", false)) -+ { -+ pwalletMain->ClearNoteWitnessCache(); - pindexRescan = chainActive.Genesis(); -+ } - else - { - CWalletDB walletdb(strWalletFile); -diff -crB ./src/komodo_gateway.h ../../komodo-jl777/src/komodo_gateway.h -*** ./src/komodo_gateway.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo_gateway.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 87,95 **** ---- 87,105 ---- - return(pax); - } - -+ void komodo_paxdelete(struct pax_transaction *pax) -+ { -+ return; // breaks when out of order -+ pthread_mutex_lock(&komodo_mutex); -+ HASH_DELETE(hh,PAX,pax); -+ pthread_mutex_unlock(&komodo_mutex); -+ } -+ - void komodo_gateway_deposit(char *coinaddr,uint64_t value,char *symbol,uint64_t fiatoshis,uint8_t *rmd160,uint256 txid,uint16_t vout,uint8_t type,int32_t height,int32_t otherheight,char *source,int32_t approved) // assetchain context - { - struct pax_transaction *pax; uint8_t buf[35]; int32_t addflag = 0; struct komodo_state *sp; char str[16],dest[16],*s; -+ if ( KOMODO_PAX == 0 ) -+ return; - sp = komodo_stateptr(str,dest); - pthread_mutex_lock(&komodo_mutex); - pax_keyset(buf,txid,vout,type); -*************** -*** 178,190 **** - int32_t komodo_issued_opreturn(char *base,uint256 *txids,uint16_t *vouts,int64_t *values,int64_t *srcvalues,int32_t *kmdheights,int32_t *otherheights,int8_t *baseids,uint8_t *rmd160s,uint8_t *opretbuf,int32_t opretlen,int32_t iskomodo) - { - struct pax_transaction p,*pax; int32_t i,n=0,j,len=0,incr,height,otherheight; uint8_t type,rmd160[20]; uint64_t fiatoshis; char symbol[16]; -! incr = 34 + (iskomodo * (2*sizeof(fiatoshis) + 2*sizeof(height) + 20 + 4)); -! for (i=0; i<4; i++) -! base[i] = opretbuf[opretlen-4+i]; - //for (i=0; itype == 'A' || pax->type == 'D' || pax->type == 'X' ) - str = pax->symbol; - else str = pax->source; - basesp = komodo_stateptrget(str); -! if ( basesp != 0 && pax->didstats == 0 && pax->type == 'I' ) - { -! if ( (pax2= komodo_paxfind(pax->txid,pax->vout,'D')) != 0 ) - { - if ( pax2->fiatoshis != 0 ) - { ---- 251,300 ---- - return(n); - } - -+ int32_t komodo_paxcmp(char *symbol,int32_t kmdheight,uint64_t value,uint64_t checkvalue,uint64_t seed) -+ { -+ int32_t ratio; -+ if ( seed == 0 && checkvalue != 0 ) -+ { -+ ratio = ((value << 6) / checkvalue); -+ if ( ratio >= 63 && ratio <= 65 ) -+ return(0); -+ else -+ { -+ if ( kmdheight >= 86150 ) -+ printf("ht.%d ignore mismatched %s value %lld vs checkvalue %lld -> ratio.%d\n",kmdheight,symbol,(long long)value,(long long)checkvalue,ratio); -+ return(-1); -+ } -+ } -+ else if ( checkvalue != 0 ) -+ { -+ ratio = ((value << 10) / checkvalue); -+ if ( ratio >= 1023 && ratio <= 1025 ) -+ return(0); -+ } -+ return(value != checkvalue); -+ } -+ - uint64_t komodo_paxtotal() - { - struct pax_transaction *pax,*pax2,*tmp,*tmp2; char symbol[16],dest[16],*str; int32_t i,ht; int64_t checktoshis; uint64_t seed,total = 0; struct komodo_state *basesp; -+ if ( KOMODO_PAX == 0 ) -+ return(0); - if ( komodo_isrealtime(&ht) == 0 ) - return(0); - else - { - HASH_ITER(hh,PAX,pax,tmp) - { -+ if ( pax->marked != 0 ) -+ continue; - if ( pax->type == 'A' || pax->type == 'D' || pax->type == 'X' ) - str = pax->symbol; - else str = pax->source; - basesp = komodo_stateptrget(str); -! if ( basesp != 0 && pax->didstats == 0 ) - { -! if ( pax->type == 'I' && (pax2= komodo_paxfind(pax->txid,pax->vout,'D')) != 0 ) - { - if ( pax2->fiatoshis != 0 ) - { -*************** -*** 267,305 **** - pax->marked = pax->height; - } - } - } - } - } - komodo_stateptr(symbol,dest); - HASH_ITER(hh,PAX,pax,tmp) - { -! //printf("pax.%s marked.%d %.8f -> %.8f\n",pax->symbol,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis)); -! if ( strcmp(symbol,pax->symbol) == 0 ) - { - if ( pax->marked == 0 ) - { - if ( komodo_is_issuer() != 0 ) -! total += pax->fiatoshis; -! else if ( pax->approved != 0 ) - { - if ( pax->validated != 0 ) - total += pax->komodoshis; - else - { - seed = 0; - checktoshis = komodo_paxprice(&seed,pax->height,pax->source,(char *)"KMD",(uint64_t)pax->fiatoshis); - //printf("PAX_fiatdest ht.%d price %s %.8f -> KMD %.8f vs %.8f\n",pax->height,pax->symbol,(double)pax->fiatoshis/COIN,(double)pax->komodoshis/COIN,(double)checktoshis/COIN); - //printf(" v%d %.8f k.%d ht.%d\n",pax->vout,dstr(pax->komodoshis),pax->height,pax->otherheight); -! if ( seed != 0 ) - { -! if ( checktoshis >= pax->komodoshis ) - { - total += pax->komodoshis; - pax->validated = pax->komodoshis; - } else pax->marked = pax->height; - } - } - } - } - } - } ---- 308,382 ---- - pax->marked = pax->height; - } - } -+ else if ( pax->type == 'W' ) -+ { -+ //bitcoin_address(coinaddr,addrtype,rmd160,20); -+ if ( (checktoshis= komodo_paxprice(&seed,pax->height,pax->source,(char *)"KMD",(uint64_t)pax->fiatoshis)) != 0 ) -+ { -+ if ( komodo_paxcmp(pax->source,pax->height,pax->komodoshis,checktoshis,seed) != 0 ) -+ { -+ pax->marked = pax->height; -+ //printf("WITHDRAW.%s mark <- %d %.8f != %.8f\n",pax->source,pax->height,dstr(checktoshis),dstr(pax->komodoshis)); -+ } -+ else if ( pax->validated == 0 ) -+ { -+ pax->validated = pax->komodoshis = checktoshis; -+ //int32_t j; for (j=0; j<32; j++) -+ // printf("%02x",((uint8_t *)&pax->txid)[j]); -+ //if ( strcmp(str,ASSETCHAINS_SYMBOL) == 0 ) -+ // printf(" v%d %p got WITHDRAW.%s kmd.%d ht.%d %.8f -> %.8f/%.8f\n",pax->vout,pax,pax->source,pax->height,pax->otherheight,dstr(pax->fiatoshis),dstr(pax->komodoshis),dstr(checktoshis)); -+ } -+ } -+ } - } - } - } - komodo_stateptr(symbol,dest); - HASH_ITER(hh,PAX,pax,tmp) - { -! pax->ready = 0; -! if ( 0 && pax->type == 'A' ) -! printf("%p pax.%s <- %s marked.%d %.8f -> %.8f validated.%d approved.%d\n",pax,pax->symbol,pax->source,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis),pax->validated != 0,pax->approved != 0); -! if ( pax->marked != 0 ) -! continue; -! if ( strcmp(symbol,pax->symbol) == 0 || pax->type == 'A' ) - { - if ( pax->marked == 0 ) - { - if ( komodo_is_issuer() != 0 ) -! { -! if ( pax->validated != 0 && pax->type == 'D' ) -! { -! total += pax->fiatoshis; -! pax->ready = 1; -! } -! } -! else if ( pax->approved != 0 && pax->type == 'A' ) - { - if ( pax->validated != 0 ) -+ { - total += pax->komodoshis; -+ pax->ready = 1; -+ } - else - { - seed = 0; - checktoshis = komodo_paxprice(&seed,pax->height,pax->source,(char *)"KMD",(uint64_t)pax->fiatoshis); - //printf("PAX_fiatdest ht.%d price %s %.8f -> KMD %.8f vs %.8f\n",pax->height,pax->symbol,(double)pax->fiatoshis/COIN,(double)pax->komodoshis/COIN,(double)checktoshis/COIN); - //printf(" v%d %.8f k.%d ht.%d\n",pax->vout,dstr(pax->komodoshis),pax->height,pax->otherheight); -! if ( seed != 0 && checktoshis != 0 ) - { -! if ( checktoshis == pax->komodoshis ) - { - total += pax->komodoshis; - pax->validated = pax->komodoshis; -+ pax->ready = 1; - } else pax->marked = pax->height; - } - } - } -+ if ( 0 && pax->ready != 0 ) -+ printf("%p (%c) pax.%s marked.%d %.8f -> %.8f validated.%d approved.%d\n",pax,pax->type,pax->symbol,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis),pax->validated != 0,pax->approved != 0); - } - } - } -*************** -*** 307,373 **** - return(total); - } - -! int32_t komodo_pending_withdraws(char *opretstr) - { -! struct pax_transaction *pax,*tmp; uint8_t opretbuf[16384]; int32_t ht,len=0; uint64_t total = 0; - if ( komodo_isrealtime(&ht) == 0 || ASSETCHAINS_SYMBOL[0] != 0 ) - return(0); - HASH_ITER(hh,PAX,pax,tmp) - { -! //printf("pax %s marked.%u approved.%u\n",pax->symbol,pax->marked,pax->approved); -! if ( pax->marked == 0 && strcmp((char *)"KMD",pax->symbol) == 0 && pax->approved == 0 ) - { -! // add 'A' opreturn entry -! if ( len == 0 ) -! opretbuf[len++] = 'A'; -! len += komodo_rwapproval(1,&opretbuf[len],pax); -! //printf("%s.(marked.%u approved.%d) %p\n",pax->source,pax->marked,pax->approved,pax); - } - } -! if ( len > 0 ) -! init_hexbytes_noT(opretstr,opretbuf,len); -! else opretstr[0] = 0; -! fprintf(stderr,"komodo_pending_withdraws len.%d PAXTOTAL %.8f\n",len,dstr(komodo_paxtotal())); - return(len); - } - - int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *base,int32_t tokomodo) - { - struct pax_transaction *pax,*tmp; char symbol[16],dest[16]; uint8_t *script,opcode,opret[16384],data[16384]; int32_t i,baseid,ht,len=0,opretlen=0,numvouts=1; struct komodo_state *sp; uint64_t available,deposited,issued,withdrawn,approved,redeemed,mask; - sp = komodo_stateptr(symbol,dest); - strcpy(symbol,base); - PENDING_KOMODO_TX = 0; - if ( tokomodo == 0 ) - { - opcode = 'I'; - if ( komodo_isrealtime(&ht) == 0 ) - return(0); -! } else opcode = 'X'; - HASH_ITER(hh,PAX,pax,tmp) - { -- //printf("pax.%s marked.%d %.8f -> %.8f\n",pax->symbol,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis)); -- if ( strcmp(symbol,"KMD") == 0 && pax->approved == 0 ) -- continue; -- //else if ( strcmp(symbol,"KMD") != 0 ) - { - #ifdef KOMODO_ASSETCHAINS_WAITNOTARIZE -! struct komodo_state *kmdsp = komodo_stateptrget((char *)"KMD"); -! if ( kmdsp != 0 && kmdsp->NOTARIZED_HEIGHT >= pax->height ) // assumes same chain as notarize - pax->validated = pax->komodoshis; //kmdsp->NOTARIZED_HEIGHT; - #endif - } -! if ( pax_fiatstatus(&available,&deposited,&issued,&withdrawn,&approved,&redeemed,symbol) != 0 || available < pax->fiatoshis ) - { -! printf("miner: skip %s %.8f when avail %.8f\n",symbol,dstr(pax->fiatoshis),dstr(available)); - continue; - } -! if ( pax->marked != 0 ) - continue; -! if ( strcmp(pax->symbol,symbol) != 0 || pax->validated == 0 ) - { - //printf("pax->symbol.%s != %s or null pax->validated %.8f\n",pax->symbol,symbol,dstr(pax->validated)); - continue; - } - if ( 0 && ASSETCHAINS_SYMBOL[0] != 0 ) - printf("pax.%s marked.%d %.8f -> %.8f\n",ASSETCHAINS_SYMBOL,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis)); - txNew->vout.resize(numvouts+1); ---- 384,518 ---- - return(total); - } - -! static int _paxorder(const void *a,const void *b) - { -! #define pax_a (*(struct pax_transaction **)a) -! #define pax_b (*(struct pax_transaction **)b) -! uint64_t aval,bval; -! aval = pax_a->fiatoshis + pax_a->komodoshis + pax_a->height; -! bval = pax_b->fiatoshis + pax_b->komodoshis + pax_b->height; -! if ( bval > aval ) -! return(-1); -! else if ( bval < aval ) -! return(1); -! return(0); -! #undef pax_a -! #undef pax_b -! } -! -! int32_t komodo_pending_withdraws(char *opretstr) // todo: enforce deterministic order -! { -! struct pax_transaction *pax,*pax2,*tmp,*paxes[64]; uint8_t opretbuf[16384]; int32_t i,n,ht,len=0; uint64_t total = 0; -! if ( KOMODO_PAX == 0 ) -! return(0); - if ( komodo_isrealtime(&ht) == 0 || ASSETCHAINS_SYMBOL[0] != 0 ) - return(0); -+ n = 0; - HASH_ITER(hh,PAX,pax,tmp) - { -! if ( pax->type == 'W' ) - { -! if ( (pax2= komodo_paxfind(pax->txid,pax->vout,'A')) != 0 ) -! { -! if ( pax2->approved != 0 ) -! pax->approved = pax2->approved; -! } -! else if ( (pax2= komodo_paxfind(pax->txid,pax->vout,'X')) != 0 ) -! pax->approved = pax->height; -! //printf("pax %s marked.%u approved.%u validated.%llu\n",pax->symbol,pax->marked,pax->approved,(long long)pax->validated); -! if ( pax->marked == 0 && strcmp((char *)"KMD",pax->symbol) == 0 && pax->approved == 0 && pax->validated != 0 ) -! { -! if ( n < sizeof(paxes)/sizeof(*paxes) ) -! { -! paxes[n++] = pax; -! //int32_t j; for (j=0; j<32; j++) -! // printf("%02x",((uint8_t *)&pax->txid)[j]); -! //printf(" %s.(kmdht.%d ht.%d marked.%u approved.%d validated %.8f) %.8f\n",pax->source,pax->height,pax->otherheight,pax->marked,pax->approved,dstr(pax->validated),dstr(pax->komodoshis)); -! } -! } - } - } -! opretstr[0] = 0; -! if ( n > 0 ) -! { -! opretbuf[len++] = 'A'; -! qsort(paxes,n,sizeof(*paxes),_paxorder); -! for (i=0; i>3)*7 ) -! len += komodo_rwapproval(1,&opretbuf[len],paxes[i]); -! } -! if ( len > 0 ) -! init_hexbytes_noT(opretstr,opretbuf,len); -! } -! //fprintf(stderr,"komodo_pending_withdraws len.%d PAXTOTAL %.8f\n",len,dstr(komodo_paxtotal())); - return(len); - } - - int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *base,int32_t tokomodo) - { - struct pax_transaction *pax,*tmp; char symbol[16],dest[16]; uint8_t *script,opcode,opret[16384],data[16384]; int32_t i,baseid,ht,len=0,opretlen=0,numvouts=1; struct komodo_state *sp; uint64_t available,deposited,issued,withdrawn,approved,redeemed,mask; -+ if ( KOMODO_PAX == 0 ) -+ return(0); -+ struct komodo_state *kmdsp = komodo_stateptrget((char *)"KMD"); - sp = komodo_stateptr(symbol,dest); - strcpy(symbol,base); -+ if ( ASSETCHAINS_SYMBOL[0] != 0 && komodo_baseid(ASSETCHAINS_SYMBOL) < 0 ) -+ return(0); - PENDING_KOMODO_TX = 0; - if ( tokomodo == 0 ) - { - opcode = 'I'; - if ( komodo_isrealtime(&ht) == 0 ) - return(0); -! } -! else -! { -! opcode = 'X'; -! if ( komodo_paxtotal() == 0 ) -! return(0); -! } - HASH_ITER(hh,PAX,pax,tmp) - { - { - #ifdef KOMODO_ASSETCHAINS_WAITNOTARIZE -! if ( kmdsp != 0 && (kmdsp->NOTARIZED_HEIGHT >= pax->height || kmdsp->CURRENT_HEIGHT > pax->height+30) ) // assumes same chain as notarize - pax->validated = pax->komodoshis; //kmdsp->NOTARIZED_HEIGHT; -+ else pax->validated = pax->ready = 0; - #endif - } -! if ( ASSETCHAINS_SYMBOL[0] != 0 && (pax_fiatstatus(&available,&deposited,&issued,&withdrawn,&approved,&redeemed,symbol) != 0 || available < pax->fiatoshis) ) - { -! if ( strcmp(ASSETCHAINS_SYMBOL,symbol) == 0 ) -! printf("miner.[%s]: skip %s %.8f when avail %.8f\n",ASSETCHAINS_SYMBOL,symbol,dstr(pax->fiatoshis),dstr(available)); - continue; - } -! /*printf("pax.%s marked.%d %.8f -> %.8f ready.%d validated.%d\n",pax->symbol,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis),pax->ready!=0,pax->validated!=0); -! if ( pax->marked != 0 || (pax->type != 'D' && pax->type != 'A') || pax->ready == 0 ) -! { -! printf("reject 2\n"); - continue; -! }*/ -! if ( ASSETCHAINS_SYMBOL[0] != 0 && (strcmp(pax->symbol,symbol) != 0 || pax->validated == 0) ) - { - //printf("pax->symbol.%s != %s or null pax->validated %.8f\n",pax->symbol,symbol,dstr(pax->validated)); - continue; - } -+ if ( pax->ready == 0 ) -+ continue; -+ if ( pax->type == 'A' && ASSETCHAINS_SYMBOL[0] == 0 ) -+ { -+ if ( kmdsp != 0 ) -+ { -+ if ( (baseid= komodo_baseid(pax->symbol)) < 0 || ((1LL << baseid) & sp->RTmask) == 0 ) -+ { -+ printf("not RT for (%s) %llx baseid.%d %llx\n",pax->symbol,(long long)sp->RTmask,baseid,(long long)(1LL< %.8f ready.%d validated.%d approved.%d\n",tokomodo,pax->type,pax,pax->symbol,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis),pax->ready!=0,pax->validated!=0,pax->approved!=0); - if ( 0 && ASSETCHAINS_SYMBOL[0] != 0 ) - printf("pax.%s marked.%d %.8f -> %.8f\n",ASSETCHAINS_SYMBOL,pax->marked,dstr(pax->komodoshis),dstr(pax->fiatoshis)); - txNew->vout.resize(numvouts+1); -*************** -*** 392,398 **** - { - len += komodo_rwapproval(1,&data[len],pax); - PENDING_KOMODO_TX += pax->komodoshis; -! //printf(" vout.%u DEPOSIT %.8f <- pax.%s pending %.8f | ",pax->vout,(double)txNew->vout[numvouts].nValue/COIN,symbol,dstr(PENDING_KOMODO_TX)); - } - if ( numvouts++ >= 64 ) - break; ---- 537,543 ---- - { - len += komodo_rwapproval(1,&data[len],pax); - PENDING_KOMODO_TX += pax->komodoshis; -! printf(" vout.%u DEPOSIT %.8f <- pax.%s pending %.8f | ",pax->vout,(double)txNew->vout[numvouts].nValue/COIN,symbol,dstr(PENDING_KOMODO_TX)); - } - if ( numvouts++ >= 64 ) - break; -*************** -*** 419,424 **** ---- 564,571 ---- - int32_t komodo_check_deposit(int32_t height,const CBlock& block) // verify above block is valid pax pricing - { - int32_t i,j,n,num,opretlen,offset=1,errs=0,matched=0,kmdheights[64],otherheights[64]; uint256 hash,txids[64]; char symbol[16],base[16]; uint16_t vouts[64]; int8_t baseids[64]; uint8_t *script,opcode,rmd160s[64*20]; uint64_t available,deposited,issued,withdrawn,approved,redeemed; int64_t values[64],srcvalues[64]; struct pax_transaction *pax; -+ if ( KOMODO_PAX == 0 ) -+ return(0); - memset(baseids,0xff,sizeof(baseids)); - memset(values,0,sizeof(values)); - memset(srcvalues,0,sizeof(srcvalues)); -*************** -*** 442,447 **** ---- 589,603 ---- - { - strcpy(symbol,ASSETCHAINS_SYMBOL); - opcode = 'I'; -+ if ( komodo_baseid(symbol) < 0 ) -+ { -+ if ( block.vtx[0].vout.size() != 1 ) -+ { -+ printf("%s has more than one coinbase?\n",symbol); -+ return(-1); -+ } -+ return(0); -+ } - } - if ( script[offset] == opcode && opretlen < block.vtx[0].vout[n-1].scriptPubKey.size() ) - { -*************** -*** 449,455 **** - { - for (i=1; itype = opcode; - if ( opcode == 'I' && pax_fiatstatus(&available,&deposited,&issued,&withdrawn,&approved,&redeemed,symbol) != 0 || available < pax->fiatoshis ) ---- 605,611 ---- - { - for (i=1; itype = opcode; - if ( opcode == 'I' && pax_fiatstatus(&available,&deposited,&issued,&withdrawn,&approved,&redeemed,symbol) != 0 || available < pax->fiatoshis ) -*************** -*** 461,476 **** - { - if ( pax->marked != 0 && height >= 80820 ) - { -! printf("%c errs.%d i.%d match %.8f vs %.8f pax.%p\n",opcode,errs,i,dstr(opcode == 'I' ? pax->fiatoshis : pax->komodoshis),dstr(block.vtx[0].vout[i].nValue),pax); - errs++; -! } else matched++; - } - else - { - for (j=0; j<32; j++) - printf("%02x",((uint8_t *)&txids[i-1])[j]); - printf(" cant paxfind %c txid\n",opcode); -! printf("%c errs.%d i.%d match %.8f vs %.8f pax.%p\n",opcode,errs,i,dstr(opcode == 'I' ? pax->fiatoshis : pax->komodoshis),dstr(block.vtx[0].vout[i].nValue),pax); - } - } - else ---- 617,638 ---- - { - if ( pax->marked != 0 && height >= 80820 ) - { -! printf(">>>>>>>>>>> %c errs.%d i.%d match %.8f vs %.8f pax.%p\n",opcode,errs,i,dstr(opcode == 'I' ? pax->fiatoshis : pax->komodoshis),dstr(block.vtx[0].vout[i].nValue),pax); - errs++; -! } -! else -! { -! if ( opcode == 'X' ) -! printf("check deposit validates %s %.8f -> %.8f\n",CURRENCIES[baseids[i]],dstr(srcvalues[i]),dstr(values[i])); -! matched++; -! } - } - else - { - for (j=0; j<32; j++) - printf("%02x",((uint8_t *)&txids[i-1])[j]); - printf(" cant paxfind %c txid\n",opcode); -! printf(">>>>>>>>>>> %c errs.%d i.%d match %.8f vs %.8f pax.%p\n",opcode,errs,i,dstr(opcode == 'I' ? pax->fiatoshis : pax->komodoshis),dstr(block.vtx[0].vout[i].nValue),pax); - } - } - else -*************** -*** 478,491 **** - hash = block.GetHash(); - for (j=0; j<32; j++) - printf("%02x",((uint8_t *)&hash)[j]); -! printf(" ht.%d blockhash X couldnt find vout.[%d]\n",height,i); - } - } -! if ( matched != num ) - { - printf("WOULD REJECT %s: ht.%d (%c) matched.%d vs num.%d\n",symbol,height,opcode,matched,num); - // can easily happen depending on order of loading -! if ( height > 100000 ) //&& opcode == 'X' ) - { - printf("REJECT: ht.%d (%c) matched.%d vs num.%d\n",height,opcode,matched,num); - return(-1); ---- 640,653 ---- - hash = block.GetHash(); - for (j=0; j<32; j++) - printf("%02x",((uint8_t *)&hash)[j]); -! printf(" kht.%d ht.%d %.8f %.8f blockhash couldnt find vout.[%d]\n",kmdheights[i-1],otherheights[i-1],dstr(values[i-1]),dstr(srcvalues[i]),i); - } - } -! if ( height <= chainActive.Tip()->nHeight && matched != num ) - { - printf("WOULD REJECT %s: ht.%d (%c) matched.%d vs num.%d\n",symbol,height,opcode,matched,num); - // can easily happen depending on order of loading -! if ( height > 200000 ) - { - printf("REJECT: ht.%d (%c) matched.%d vs num.%d\n",height,opcode,matched,num); - return(-1); -*************** -*** 497,530 **** - return(0); - } - -- int32_t komodo_paxcmp(char *symbol,int32_t kmdheight,uint64_t value,uint64_t checkvalue,uint64_t seed) -- { -- int32_t ratio; -- if ( seed == 0 && checkvalue != 0 ) -- { -- ratio = ((value << 6) / checkvalue); -- if ( ratio >= 63 && ratio <= 65 ) -- return(0); -- else -- { -- if ( kmdheight >= 86150 ) -- printf("ht.%d ignore mismatched %s value %lld vs checkvalue %lld -> ratio.%d\n",kmdheight,symbol,(long long)value,(long long)checkvalue,ratio); -- return(-1); -- } -- } -- else if ( checkvalue != 0 ) -- { -- ratio = ((value << 10) / checkvalue); -- if ( ratio >= 1023 && ratio <= 1025 ) -- return(0); -- } -- return(value != checkvalue); -- } -- - const char *komodo_opreturn(int32_t height,uint64_t value,uint8_t *opretbuf,int32_t opretlen,uint256 txid,uint16_t vout,char *source) - { - uint8_t rmd160[20],rmd160s[64*20],addrtype,shortflag,pubkey33[33]; int32_t didstats,i,j,n,len,tokomodo,kmdheight,otherheights[64],kmdheights[64]; int8_t baseids[64]; char base[4],coinaddr[64],destaddr[64]; uint256 txids[64]; uint16_t vouts[64]; uint64_t convtoshis,seed; int64_t fiatoshis,komodoshis,checktoshis,values[64],srcvalues[64]; struct pax_transaction *pax,*pax2; struct komodo_state *basesp; double diff; - const char *typestr = "unknown"; - memset(baseids,0xff,sizeof(baseids)); - memset(values,0,sizeof(values)); - memset(srcvalues,0,sizeof(srcvalues)); ---- 659,675 ---- - return(0); - } - - const char *komodo_opreturn(int32_t height,uint64_t value,uint8_t *opretbuf,int32_t opretlen,uint256 txid,uint16_t vout,char *source) - { - uint8_t rmd160[20],rmd160s[64*20],addrtype,shortflag,pubkey33[33]; int32_t didstats,i,j,n,len,tokomodo,kmdheight,otherheights[64],kmdheights[64]; int8_t baseids[64]; char base[4],coinaddr[64],destaddr[64]; uint256 txids[64]; uint16_t vouts[64]; uint64_t convtoshis,seed; int64_t fiatoshis,komodoshis,checktoshis,values[64],srcvalues[64]; struct pax_transaction *pax,*pax2; struct komodo_state *basesp; double diff; - const char *typestr = "unknown"; -+ if ( KOMODO_PAX == 0 ) -+ return("nopax"); -+ if ( ASSETCHAINS_SYMBOL[0] != 0 && komodo_baseid(ASSETCHAINS_SYMBOL) < 0 ) -+ { -+ //printf("komodo_opreturn skip %s\n",ASSETCHAINS_SYMBOL); -+ return("assetchain"); -+ } - memset(baseids,0xff,sizeof(baseids)); - memset(values,0,sizeof(values)); - memset(srcvalues,0,sizeof(srcvalues)); -*************** -*** 546,552 **** - if ( kmdheight <= height ) - { - didstats = 0; -! if ( strcmp(base,ASSETCHAINS_SYMBOL) == 0 ) - { - printf("(%s) (%s) kmdheight.%d vs height.%d check %.8f vs %.8f tokomodo.%d %d seed.%llx\n",ASSETCHAINS_SYMBOL,base,kmdheight,height,dstr(checktoshis),dstr(value),komodo_is_issuer(),strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0,(long long)seed); - for (i=0; i<32; i++) ---- 691,697 ---- - if ( kmdheight <= height ) - { - didstats = 0; -! if ( 0 && strcmp(base,ASSETCHAINS_SYMBOL) == 0 ) - { - printf("(%s) (%s) kmdheight.%d vs height.%d check %.8f vs %.8f tokomodo.%d %d seed.%llx\n",ASSETCHAINS_SYMBOL,base,kmdheight,height,dstr(checktoshis),dstr(value),komodo_is_issuer(),strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0,(long long)seed); - for (i=0; i<32; i++) -*************** -*** 592,598 **** - pax2->fiatoshis = pax->fiatoshis; - pax2->komodoshis = pax->komodoshis; - pax->marked = pax2->marked = pax->height; -! pax->otherheight = height; - if ( pax2->didstats == 0 ) - { - if ( (basesp= komodo_stateptrget(base)) != 0 ) ---- 737,743 ---- - pax2->fiatoshis = pax->fiatoshis; - pax2->komodoshis = pax->komodoshis; - pax->marked = pax2->marked = pax->height; -! pax2->height = pax->height = height; - if ( pax2->didstats == 0 ) - { - if ( (basesp= komodo_stateptrget(base)) != 0 ) -*************** -*** 632,638 **** - { - pax->type = opretbuf[0]; - strcpy(pax->source,(char *)&opretbuf[opretlen-4]); -! if ( (pax2= komodo_paxfind(txids[i],vouts[i],'D')) != 0 ) - { - // realtime path? - pax->fiatoshis = pax2->fiatoshis; ---- 777,783 ---- - { - pax->type = opretbuf[0]; - strcpy(pax->source,(char *)&opretbuf[opretlen-4]); -! if ( (pax2= komodo_paxfind(txids[i],vouts[i],'D')) != 0 && pax2->fiatoshis != 0 && pax2->komodoshis != 0 ) - { - // realtime path? - pax->fiatoshis = pax2->fiatoshis; -*************** -*** 651,665 **** - } - } - } -- komodo_paxmark(pax->height,txids[i],vouts[i],'D',height); - } - } - } else printf("opreturn none issued?\n"); - } -- if ( strcmp(source,ASSETCHAINS_SYMBOL) == 0 ) -- printf("source.%s opreturn[I] matches %s\n",source,(char *)&opretbuf[opretlen-4]); - } -! else if ( opretbuf[0] == 'W' && opretlen >= 38 ) - { - tokomodo = 1; - iguana_rwnum(0,&opretbuf[34],sizeof(kmdheight),&kmdheight); ---- 796,811 ---- - } - } - } - } -+ if ( (pax= komodo_paxmark(height,txids[i],vouts[i],'I',height)) != 0 ) -+ komodo_paxdelete(pax); -+ if ( (pax= komodo_paxmark(height,txids[i],vouts[i],'D',height)) != 0 ) -+ komodo_paxdelete(pax); - } - } else printf("opreturn none issued?\n"); - } - } -! else if ( opretbuf[0] == 'W' )//&& opretlen >= 38 ) - { - tokomodo = 1; - iguana_rwnum(0,&opretbuf[34],sizeof(kmdheight),&kmdheight); -*************** -*** 668,676 **** - bitcoin_address(coinaddr,addrtype,rmd160,20); - checktoshis = PAX_fiatdest(&seed,tokomodo,destaddr,pubkey33,coinaddr,kmdheight,base,value); - typestr = "withdraw"; -! //printf("%s.height.%d vs height.%d check %.8f/%.8f vs %.8f tokomodo.%d %d seed.%llx -> (%s)\n",ASSETCHAINS_SYMBOL,kmdheight,height,dstr(checktoshis),dstr(komodoshis),dstr(value),komodo_is_issuer(),strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0,(long long)seed,coinaddr); - didstats = 0; -! if ( komodo_paxcmp(base,kmdheight,komodoshis,checktoshis,seed) == 0 ) - { - if ( value != 0 && ((pax= komodo_paxfind(txid,vout,'W')) == 0 || pax->didstats == 0) ) - { ---- 814,823 ---- - bitcoin_address(coinaddr,addrtype,rmd160,20); - checktoshis = PAX_fiatdest(&seed,tokomodo,destaddr,pubkey33,coinaddr,kmdheight,base,value); - typestr = "withdraw"; -! if ( 0 && strcmp(base,"RUB") == 0 ) -! printf("RUB WITHDRAW %s.height.%d vs height.%d check %.8f/%.8f vs %.8f tokomodo.%d %d seed.%llx -> (%s) len.%d\n",ASSETCHAINS_SYMBOL,kmdheight,height,dstr(checktoshis),dstr(komodoshis),dstr(value),komodo_is_issuer(),strncmp(ASSETCHAINS_SYMBOL,base,strlen(base)) == 0,(long long)seed,coinaddr,opretlen); - didstats = 0; -! //if ( komodo_paxcmp(base,kmdheight,komodoshis,checktoshis,seed) == 0 ) - { - if ( value != 0 && ((pax= komodo_paxfind(txid,vout,'W')) == 0 || pax->didstats == 0) ) - { -*************** -*** 679,697 **** - basesp->withdrawn += value; - didstats = 1; - if ( strcmp(base,ASSETCHAINS_SYMBOL) == 0 ) -! printf("########### %p withdrawn %s += %.8f\n",basesp,base,dstr(value)); - } -! //printf("notarize %s %.8f -> %.8f kmd.%d other.%d\n",ASSETCHAINS_SYMBOL,dstr(value),dstr(komodoshis),kmdheight,height); - } -! komodo_gateway_deposit(coinaddr,komodoshis,(char *)"KMD",value,rmd160,txid,vout,'W',kmdheight,height,source,0); - if ( (pax= komodo_paxfind(txid,vout,'W')) != 0 ) - { -- if ( didstats != 0 ) -- pax->didstats = 1; - pax->type = opretbuf[0]; -! pax->validated = komodoshis; - } -! } - } - else if ( tokomodo != 0 && opretbuf[0] == 'A' ) - { ---- 826,848 ---- - basesp->withdrawn += value; - didstats = 1; - if ( strcmp(base,ASSETCHAINS_SYMBOL) == 0 ) -! printf("########### %p withdrawn %s += %.8f check %.8f\n",basesp,base,dstr(value),dstr(checktoshis)); - } -! if ( 0 && strcmp(base,"RUB") == 0 && (pax == 0 || pax->approved == 0) ) -! printf("notarize %s %.8f -> %.8f kmd.%d other.%d\n",ASSETCHAINS_SYMBOL,dstr(value),dstr(komodoshis),kmdheight,height); - } -! komodo_gateway_deposit(coinaddr,0,(char *)"KMD",value,rmd160,txid,vout,'W',kmdheight,height,source,0); - if ( (pax= komodo_paxfind(txid,vout,'W')) != 0 ) - { - pax->type = opretbuf[0]; -! strcpy(pax->source,base); -! strcpy(pax->symbol,"KMD"); -! pax->height = kmdheight; -! pax->otherheight = height; -! pax->komodoshis = komodoshis; - } -! } // else printf("withdraw %s paxcmp ht.%d %d error value %.8f -> %.8f vs %.8f\n",base,kmdheight,height,dstr(value),dstr(komodoshis),dstr(checktoshis)); -! // need to allocate pax - } - else if ( tokomodo != 0 && opretbuf[0] == 'A' ) - { -*************** -*** 700,756 **** - { - for (i=0; i 0 ) - { - for (i=0; i KMD %.8f vs %.8f\n",kmdheights[i],CURRENCIES[baseids[i]],(double)srcvalues[i]/COIN,(double)values[i]/COIN,(double)checktoshis/COIN); -- for (j=0; j<32; j++) -- printf("%02x",((uint8_t *)&txids[i])[j]); -- printf(" v%d %.8f k.%d ht.%d base.%d\n",vouts[i],dstr(values[i]),kmdheights[i],otherheights[i],baseids[i]);*/ -- if ( (pax= komodo_paxfind(txids[i],vouts[i],'A')) == 0 ) - { -! bitcoin_address(coinaddr,60,&rmd160s[i*20],20); -! komodo_gateway_deposit(coinaddr,values[i],CURRENCIES[baseids[i]],srcvalues[i],&rmd160s[i*20],txids[i],vouts[i],'A',kmdheights[i],otherheights[i],CURRENCIES[baseids[i]],kmdheights[i]); -! komodo_paxmark(height,txids[i],vouts[i],'W',height); -! komodo_paxmark(height,txids[i],vouts[i],'A',height); -! if ( srcvalues[i] != 0 && (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) - { -! basesp->approved += srcvalues[i]; -! didstats = 1; -! if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("########### %p approved %s += %.8f\n",basesp,CURRENCIES[baseids[i]],dstr(srcvalues[i])); - } -! //printf(" i.%d (%s) <- %.8f ADDFLAG APPROVED\n",i,coinaddr,dstr(values[i])); - } -! else if ( pax->didstats == 0 && srcvalues[i] != 0 ) -! { -! if ( (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) - { -! basesp->approved += srcvalues[i]; -! didstats = 1; -! if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("########### %p approved %s += %.8f\n",basesp,CURRENCIES[baseids[i]],dstr(srcvalues[i])); - } -- } //else printf(" i.%d of n.%d pax.%p baseids[] %d\n",i,n,pax,baseids[i]); -- if ( (pax= komodo_paxfind(txids[i],vouts[i],'A')) != 0 ) -- { -- pax->type = opretbuf[0]; -- pax->approved = kmdheights[i]; -- if ( didstats != 0 ) -- pax->didstats = 1; -- if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -- printf(" i.%d approved.%d <<<<<<<<<<<<< APPROVED %p\n",i,kmdheights[i],pax); - } - } -! } - //printf("extra.[%d] after %.8f\n",n,dstr(komodo_paxtotal())); - } - else if ( opretbuf[0] == 'X' ) ---- 851,928 ---- - { - for (i=0; i 0 ) - { - for (i=0; isymbol); -! printf("override neg1 with (%s)\n",pax->symbol); - } -! if ( baseids[i] < 0 ) -! continue; - } -! didstats = 0; -! seed = 0; -! checktoshis = komodo_paxprice(&seed,kmdheights[i],CURRENCIES[baseids[i]],(char *)"KMD",(uint64_t)values[i]); -! //printf("PAX_fiatdest ht.%d price %s %.8f -> KMD %.8f vs %.8f\n",kmdheights[i],CURRENCIES[baseids[i]],(double)values[i]/COIN,(double)srcvalues[i]/COIN,(double)checktoshis/COIN); -! if ( srcvalues[i] == checktoshis ) -! { -! if ( (pax= komodo_paxfind(txids[i],vouts[i],'A')) == 0 ) -! { -! bitcoin_address(coinaddr,60,&rmd160s[i*20],20); -! komodo_gateway_deposit(coinaddr,srcvalues[i],CURRENCIES[baseids[i]],values[i],&rmd160s[i*20],txids[i],vouts[i],'A',kmdheights[i],otherheights[i],CURRENCIES[baseids[i]],kmdheights[i]); -! if ( (pax= komodo_paxfind(txids[i],vouts[i],'A')) == 0 ) -! printf("unexpected null pax for approve\n"); -! else pax->validated = checktoshis; -! if ( (pax2= komodo_paxfind(txids[i],vouts[i],'W')) != 0 ) -! pax2->approved = kmdheights[i]; -! komodo_paxmark(height,txids[i],vouts[i],'W',height); -! //komodo_paxmark(height,txids[i],vouts[i],'A',height); -! if ( values[i] != 0 && (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) -! { -! basesp->approved += values[i]; -! didstats = 1; -! if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("pax.%p ########### %p approved %s += %.8f -> %.8f/%.8f kht.%d %d\n",pax,basesp,CURRENCIES[baseids[i]],dstr(values[i]),dstr(srcvalues[i]),dstr(checktoshis),kmdheights[i],otherheights[i]); -! } -! //printf(" i.%d (%s) <- %.8f ADDFLAG APPROVED\n",i,coinaddr,dstr(values[i])); -! } -! else if ( pax->didstats == 0 && srcvalues[i] != 0 ) - { -! if ( (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) -! { -! basesp->approved += values[i]; -! didstats = 1; -! if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("pax.%p ########### %p approved %s += %.8f -> %.8f/%.8f\n",pax,basesp,CURRENCIES[baseids[i]],dstr(values[i]),dstr(srcvalues[i]),dstr(checktoshis)); -! } -! } //else printf(" i.%d of n.%d pax.%p baseids[] %d\n",i,n,pax,baseids[i]); -! if ( (pax= komodo_paxfind(txids[i],vouts[i],'A')) != 0 ) -! { -! pax->type = opretbuf[0]; -! pax->approved = kmdheights[i]; -! pax->validated = checktoshis; -! if ( didstats != 0 ) -! pax->didstats = 1; -! //if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! //printf(" i.%d approved.%d <<<<<<<<<<<<< APPROVED %p\n",i,kmdheights[i],pax); - } - } - } -! } else printf("n.%d from opreturns\n",n); - //printf("extra.[%d] after %.8f\n",n,dstr(komodo_paxtotal())); - } - else if ( opretbuf[0] == 'X' ) -*************** -*** 770,783 **** - if ( (pax= komodo_paxfind(txids[i],vouts[i],'X')) != 0 ) - { - pax->type = opretbuf[0]; -! if ( baseids[i] >= 0 && srcvalues[i] != 0 && (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) - { -! basesp->redeemed += srcvalues[i]; - pax->didstats = 1; -! if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("########### %p redeemed %s += %.8f\n",basesp,CURRENCIES[baseids[i]],dstr(srcvalues[i])); - } - } - } - } //else printf("komodo_issued_opreturn returned %d\n",n); - } ---- 942,964 ---- - if ( (pax= komodo_paxfind(txids[i],vouts[i],'X')) != 0 ) - { - pax->type = opretbuf[0]; -! if ( height < 121842 ) // fields got switched around due to legacy issues and approves -! value = srcvalues[i]; -! else value = values[i]; -! if ( baseids[i] >= 0 && value != 0 && (basesp= komodo_stateptrget(CURRENCIES[baseids[i]])) != 0 ) - { -! basesp->redeemed += value; - pax->didstats = 1; -! //if ( strcmp(CURRENCIES[baseids[i]],ASSETCHAINS_SYMBOL) == 0 ) -! printf("ht.%d %.8f ########### %p redeemed %s += %.8f %.8f kht.%d ht.%d\n",height,dstr(value),basesp,CURRENCIES[baseids[i]],dstr(value),dstr(srcvalues[i]),kmdheights[i],otherheights[i]); - } - } -+ if ( (pax= komodo_paxmark(height,txids[i],vouts[i],'W',height)) != 0 ) -+ komodo_paxdelete(pax); -+ if ( (pax= komodo_paxmark(height,txids[i],vouts[i],'A',height)) != 0 ) -+ komodo_paxdelete(pax); -+ if ( (pax= komodo_paxmark(height,txids[i],vouts[i],'X',height)) != 0 ) -+ komodo_paxdelete(pax); - } - } //else printf("komodo_issued_opreturn returned %d\n",n); - } -*************** -*** 788,802 **** - { - static long lastpos[34]; static char userpass[33][1024]; - FILE *fp; int32_t baseid,isrealtime,refid,blocks,longest; struct komodo_state *sp,*refsp; char *retstr,fname[512],*base,symbol[16],dest[16]; uint32_t buf[3]; cJSON *infoobj,*result; uint64_t RTmask = 0; - while ( KOMODO_INITDONE == 0 ) - { -! fprintf(stderr,"PASSPORT iteration waiting for KOMODO_INITDONE\n"); - sleep(3); - } - refsp = komodo_stateptr(symbol,dest); - if ( ASSETCHAINS_SYMBOL[0] == 0 ) - refid = 33; -! else refid = komodo_baseid(ASSETCHAINS_SYMBOL)+1; // illegal base -> baseid.-1 -> 0 - //printf("PASSPORT %s refid.%d\n",ASSETCHAINS_SYMBOL,refid); - for (baseid=32; baseid>=0; baseid--) - { ---- 969,997 ---- - { - static long lastpos[34]; static char userpass[33][1024]; - FILE *fp; int32_t baseid,isrealtime,refid,blocks,longest; struct komodo_state *sp,*refsp; char *retstr,fname[512],*base,symbol[16],dest[16]; uint32_t buf[3]; cJSON *infoobj,*result; uint64_t RTmask = 0; -+ //printf("PASSPORT.(%s)\n",ASSETCHAINS_SYMBOL); - while ( KOMODO_INITDONE == 0 ) - { -! fprintf(stderr,"[%s] PASSPORT iteration waiting for KOMODO_INITDONE\n",ASSETCHAINS_SYMBOL); - sleep(3); - } - refsp = komodo_stateptr(symbol,dest); - if ( ASSETCHAINS_SYMBOL[0] == 0 ) - refid = 33; -! else -! { -! refid = komodo_baseid(ASSETCHAINS_SYMBOL)+1; // illegal base -> baseid.-1 -> 0 -! if ( refid == 0 ) -! { -! KOMODO_PASSPORT_INITDONE = 1; -! return; -! } -! } -! if ( KOMODO_PAX == 0 ) -! { -! KOMODO_PASSPORT_INITDONE = 1; -! return; -! } - //printf("PASSPORT %s refid.%d\n",ASSETCHAINS_SYMBOL,refid); - for (baseid=32; baseid>=0; baseid--) - { -*************** -*** 807,813 **** - { - komodo_statefname(fname,baseid<32?base:(char *)"",(char *)"komodostate"); - komodo_nameset(symbol,dest,base); -! if ( (fp= fopen(fname,"rb")) != 0 && (sp= komodo_stateptrget(symbol)) != 0 ) - { - fseek(fp,0,SEEK_END); - if ( ftell(fp) > lastpos[baseid] ) ---- 1002,1009 ---- - { - komodo_statefname(fname,baseid<32?base:(char *)"",(char *)"komodostate"); - komodo_nameset(symbol,dest,base); -! sp = komodo_stateptrget(symbol); -! if ( (fp= fopen(fname,"rb")) != 0 && sp != 0 ) - { - fseek(fp,0,SEEK_END); - if ( ftell(fp) > lastpos[baseid] ) -*************** -*** 822,840 **** - printf("from.(%s) lastpos[%s] %ld\n",ASSETCHAINS_SYMBOL,CURRENCIES[baseid],lastpos[baseid]); - } //else fprintf(stderr,"%s.%ld ",CURRENCIES[baseid],ftell(fp)); - fclose(fp); -! } - komodo_statefname(fname,baseid<32?base:(char *)"",(char *)"realtime"); - if ( (fp= fopen(fname,"rb")) != 0 ) - { - if ( fread(buf,1,sizeof(buf),fp) == sizeof(buf) ) - { - sp->CURRENT_HEIGHT = buf[0]; -! if ( buf[0] != 0 && buf[0] == buf[1] && buf[2] > time(NULL)-60 ) - { - isrealtime = 1; - RTmask |= (1LL << baseid); - memcpy(refsp->RTbufs[baseid+1],buf,sizeof(refsp->RTbufs[baseid+1])); -! } //else fprintf(stderr,"%s not RT\n",base); - } //else fprintf(stderr,"%s size error RT\n",base); - fclose(fp); - } //else fprintf(stderr,"%s open error RT\n",base); ---- 1018,1036 ---- - printf("from.(%s) lastpos[%s] %ld\n",ASSETCHAINS_SYMBOL,CURRENCIES[baseid],lastpos[baseid]); - } //else fprintf(stderr,"%s.%ld ",CURRENCIES[baseid],ftell(fp)); - fclose(fp); -! } else printf("error.(%s) %p\n",fname,sp); - komodo_statefname(fname,baseid<32?base:(char *)"",(char *)"realtime"); - if ( (fp= fopen(fname,"rb")) != 0 ) - { - if ( fread(buf,1,sizeof(buf),fp) == sizeof(buf) ) - { - sp->CURRENT_HEIGHT = buf[0]; -! if ( buf[0] != 0 && buf[0] >= buf[1] && buf[2] > time(NULL)-300 ) - { - isrealtime = 1; - RTmask |= (1LL << baseid); - memcpy(refsp->RTbufs[baseid+1],buf,sizeof(refsp->RTbufs[baseid+1])); -! } else fprintf(stderr,"[%s]: %s not RT %u %u %d\n",ASSETCHAINS_SYMBOL,base,buf[0],buf[1],(int32_t)(time(NULL)-buf[2])); - } //else fprintf(stderr,"%s size error RT\n",base); - fclose(fp); - } //else fprintf(stderr,"%s open error RT\n",base); -*************** -*** 849,855 **** - if ( buf[0] != 0 && buf[0] == buf[1] ) - { - buf[2] = (uint32_t)time(NULL); -! RTmask |= (1LL << baseid) | 1; - memcpy(refsp->RTbufs[baseid+1],buf,sizeof(refsp->RTbufs[baseid+1])); - if ( refid != 0 ) - memcpy(refsp->RTbufs[0],buf,sizeof(refsp->RTbufs[0])); ---- 1045,1051 ---- - if ( buf[0] != 0 && buf[0] == buf[1] ) - { - buf[2] = (uint32_t)time(NULL); -! RTmask |= (1LL << baseid); - memcpy(refsp->RTbufs[baseid+1],buf,sizeof(refsp->RTbufs[baseid+1])); - if ( refid != 0 ) - memcpy(refsp->RTbufs[0],buf,sizeof(refsp->RTbufs[0])); -*************** -*** 865,869 **** ---- 1061,1066 ---- - komodo_paxtotal(); - refsp->RTmask = RTmask; - KOMODO_PASSPORT_INITDONE = 1; -+ //printf("done PASSPORT %s refid.%d\n",ASSETCHAINS_SYMBOL,refid); - } - -diff -crB ./src/komodo_globals.h ../../komodo-jl777/src/komodo_globals.h -*** ./src/komodo_globals.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo_globals.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 36,42 **** - - int COINBASE_MATURITY = 100; - -! int32_t IS_KOMODO_NOTARY,KOMODO_REWIND,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE; - std::string NOTARY_PUBKEY,ASSETCHAINS_NOTARIES; - uint8_t NOTARY_PUBKEY33[33]; - ---- 36,42 ---- - - int COINBASE_MATURITY = 100; - -! int32_t IS_KOMODO_NOTARY,KOMODO_REWIND,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX; - std::string NOTARY_PUBKEY,ASSETCHAINS_NOTARIES; - uint8_t NOTARY_PUBKEY33[33]; - -diff -crB ./src/komodo.h ../../komodo-jl777/src/komodo.h -*** ./src/komodo.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 23,29 **** - // a. automate notarization fee payouts - // b. automated distribution of test REVS snapshot - -! //#define KOMODO_ASSETCHAINS_WAITNOTARIZE - #define KOMODO_PAXMAX (10000 * COIN) - - #include ---- 23,29 ---- - // a. automate notarization fee payouts - // b. automated distribution of test REVS snapshot - -! #define KOMODO_ASSETCHAINS_WAITNOTARIZE - #define KOMODO_PAXMAX (10000 * COIN) - - #include -*************** -*** 194,200 **** ---- 194,203 ---- - static FILE *fp; static int32_t errs; - struct komodo_state *sp; char fname[512],symbol[16],dest[16]; int32_t ht,func; uint8_t num,pubkeys[64][33]; - if ( (sp= komodo_stateptr(symbol,dest)) == 0 ) -+ { -+ KOMODO_INITDONE = (uint32_t)time(NULL); - return; -+ } - if ( fp == 0 ) - { - komodo_statefname(fname,ASSETCHAINS_SYMBOL,(char *)"komodostate"); -*************** -*** 281,287 **** - errs++; - //komodo_eventadd_utxo(sp,symbol,height,notaryid,txhash,voutmask,numvouts); - } -- //#ifdef KOMODO_PAX - else if ( pvals != 0 && numpvals > 0 ) - { - int32_t i,nonz = 0; ---- 284,289 ---- -*************** -*** 301,307 **** - } - //printf("save pvals height.%d numpvals.%d\n",height,numpvals); - } -- //#endif - else if ( height != 0 ) - { - //printf("ht.%d func N ht.%d errs.%d\n",height,NOTARIZED_HEIGHT,errs); ---- 303,308 ---- -diff -crB ./src/komodo_interest.h ../../komodo-jl777/src/komodo_interest.h -*** ./src/komodo_interest.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo_interest.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 21,29 **** - uint64_t total; int32_t ind,incr = 100000; - if ( height >= maxheight ) - { -! interests = (uint64_t *)realloc(interests,(maxheight + incr) * sizeof(*interests) * 2); -! memset(&interests[maxheight << 1],0,incr * sizeof(*interests) * 2); -! maxheight += incr; - } - ind = (height << 1); - if ( paidinterest < 0 ) // request ---- 21,37 ---- - uint64_t total; int32_t ind,incr = 100000; - if ( height >= maxheight ) - { -! if ( interests == 0 ) -! { -! maxheight = height + incr; -! interests = (uint64_t *)calloc(maxheight,sizeof(*interests) * 2); -! } -! else -! { -! interests = (uint64_t *)realloc(interests,(maxheight + incr) * sizeof(*interests) * 2); -! memset(&interests[maxheight << 1],0,incr * sizeof(*interests) * 2); -! maxheight += incr; -! } - } - ind = (height << 1); - if ( paidinterest < 0 ) // request -diff -crB ./src/komodo_pax.h ../../komodo-jl777/src/komodo_pax.h -*** ./src/komodo_pax.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo_pax.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 429,434 **** ---- 429,435 ---- - height -= 10; - if ( (baseid= komodo_baseid(base)) >= 0 && (relid= komodo_baseid(rel)) >= 0 ) - { -+ portable_mutex_lock(&komodo_mutex); - for (i=NUM_PRICES-1; i>=0; i--) - { - ptr = &PVALS[36 * i]; -*************** -*** 439,450 **** - *kmdbtcp = ptr[MAX_CURRENCIES + 1] / 539; - *btcusdp = ptr[MAX_CURRENCIES + 2] / 539; - } - if ( kmdbtc != 0 && btcusd != 0 ) - return(komodo_paxcalc(&ptr[1],baseid,relid,basevolume,kmdbtc,btcusd)); - else return(0); - } - } -! } else printf("paxprice invalid base.%s %d, rel.%s %d\n",base,baseid,rel,relid); - return(0); - } - ---- 440,453 ---- - *kmdbtcp = ptr[MAX_CURRENCIES + 1] / 539; - *btcusdp = ptr[MAX_CURRENCIES + 2] / 539; - } -+ portable_mutex_unlock(&komodo_mutex); - if ( kmdbtc != 0 && btcusd != 0 ) - return(komodo_paxcalc(&ptr[1],baseid,relid,basevolume,kmdbtc,btcusd)); - else return(0); - } - } -! portable_mutex_unlock(&komodo_mutex); -! } //else printf("paxprice invalid base.%s %d, rel.%s %d\n",base,baseid,rel,relid); - return(0); - } - -*************** -*** 473,479 **** - } - kmdbtc = komodo_paxcorrelation(kmdbtcs,numvotes,*seedp) * 539; - btcusd = komodo_paxcorrelation(btcusds,numvotes,*seedp) * 539; -- //printf("kmdbtc %llu btcusd %llu\n",(long long)kmdbtc,(long long)btcusd); - for (i=nonz=0; i> 1) ) -+ { -+ //printf("kmdbtc %llu btcusd %llu\n",(long long)kmdbtc,(long long)btcusd); -+ //printf("komodo_paxprice nonz.%d of numvotes.%d\n",nonz,numvotes); - return(0); -+ } - return(komodo_paxcorrelation(votes,numvotes,*seedp) * basevolume / 100000); - } - -*************** -*** 527,533 **** - if ( fiatoshis < 0 ) - shortflag = 1, fiatoshis = -fiatoshis; - komodoshis = komodo_paxprice(seedp,height,base,(char *)"KMD",(uint64_t)fiatoshis); -! //printf("PAX_fiatdest ht.%d price %s %.8f -> KMD %.8f seed.%llx\n",height,base,(double)fiatoshis/COIN,(double)komodoshis/COIN,(long long)*seedp); - if ( bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr) == 20 ) - { - PAX_pubkey(1,pubkey33,&addrtype,rmd160,base,&shortflag,tokomodo != 0 ? &komodoshis : &fiatoshis); ---- 533,540 ---- - if ( fiatoshis < 0 ) - shortflag = 1, fiatoshis = -fiatoshis; - komodoshis = komodo_paxprice(seedp,height,base,(char *)"KMD",(uint64_t)fiatoshis); -! if ( 0 && strcmp(base,"RUB") == 0 ) -! printf("PAX_fiatdest ht.%d price %s %.8f -> KMD %.8f seed.%llx\n",height,base,(double)fiatoshis/COIN,(double)komodoshis/COIN,(long long)*seedp); - if ( bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr) == 20 ) - { - PAX_pubkey(1,pubkey33,&addrtype,rmd160,base,&shortflag,tokomodo != 0 ? &komodoshis : &fiatoshis); -diff -crB ./src/komodo_structs.h ../../komodo-jl777/src/komodo_structs.h -*** ./src/komodo_structs.h 2017-01-03 10:40:50.231330177 +0000 ---- ../../komodo-jl777/src/komodo_structs.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 57,63 **** - UT_hash_handle hh; - uint256 txid; - uint64_t komodoshis,fiatoshis,validated; -! int32_t marked,height,otherheight,approved,didstats; - uint16_t vout; - char symbol[16],source[16],coinaddr[64]; uint8_t rmd160[20],type,buf[35]; - }; ---- 57,63 ---- - UT_hash_handle hh; - uint256 txid; - uint64_t komodoshis,fiatoshis,validated; -! int32_t marked,height,otherheight,approved,didstats,ready; - uint16_t vout; - char symbol[16],source[16],coinaddr[64]; uint8_t rmd160[20],type,buf[35]; - }; -diff -crB ./src/komodo_utils.h ../../komodo-jl777/src/komodo_utils.h -*** ./src/komodo_utils.h 2017-01-03 10:40:50.235330381 +0000 ---- ../../komodo-jl777/src/komodo_utils.h 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 1448,1454 **** ---- 1448,1457 ---- - IS_KOMODO_NOTARY = GetBoolArg("-notary", false); - NOTARY_PUBKEY = GetArg("-pubkey", ""); - if ( strlen(NOTARY_PUBKEY.c_str()) == 66 ) -+ { - USE_EXTERNAL_PUBKEY = 1; -+ KOMODO_PAX = 1; -+ } else KOMODO_PAX = GetArg("-pax",0); - name = GetArg("-ac_name",""); - if ( (KOMODO_REWIND= GetArg("-rewind",0)) != 0 ) - ; -diff -crB ./src/main.cpp ../../komodo-jl777/src/main.cpp -*** ./src/main.cpp 2017-01-03 10:40:50.255331392 +0000 ---- ../../komodo-jl777/src/main.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 26,31 **** ---- 26,32 ---- - #include "util.h" - #include "utilmoneystr.h" - #include "validationinterface.h" -+ #include "wallet/asyncrpcoperation_sendmany.h" - - #include - -*************** -*** 70,76 **** - bool fAlerts = DEFAULT_ALERTS; - - /** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */ -! CFeeRate minRelayTxFee = CFeeRate(5000); - - CTxMemPool mempool(::minRelayTxFee); - ---- 71,77 ---- - bool fAlerts = DEFAULT_ALERTS; - - /** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */ -! CFeeRate minRelayTxFee = CFeeRate(DEFAULT_MIN_RELAY_TX_FEE); - - CTxMemPool mempool(::minRelayTxFee); - -*************** -*** 550,556 **** - - // Komodo globals - -- #define KOMODO_PAX - #define KOMODO_ZCASH - #include "komodo.h" - ---- 551,556 ---- -*************** -*** 871,878 **** - return false; - } else { - // Ensure that zk-SNARKs verify - BOOST_FOREACH(const JSDescription &joinsplit, tx.vjoinsplit) { -! if (!joinsplit.Verify(*pzcashParams, tx.joinSplitPubKey)) { - return state.DoS(100, error("CheckTransaction(): joinsplit does not verify"), - REJECT_INVALID, "bad-txns-joinsplit-verification-failed"); - } ---- 871,879 ---- - return false; - } else { - // Ensure that zk-SNARKs verify -+ auto verifier = libzcash::ProofVerifier::Strict(); - BOOST_FOREACH(const JSDescription &joinsplit, tx.vjoinsplit) { -! if (!joinsplit.Verify(*pzcashParams, verifier, tx.joinSplitPubKey)) { - return state.DoS(100, error("CheckTransaction(): joinsplit does not verify"), - REJECT_INVALID, "bad-txns-joinsplit-verification-failed"); - } -*************** -*** 1211,1222 **** - CTxMemPoolEntry entry(tx, nFees, GetTime(), dPriority, chainActive.Height(), mempool.HasNoInputsOf(tx)); - unsigned int nSize = entry.GetTxSize(); - -! // Don't accept it if it can't get into a block -! CAmount txMinFee = GetMinRelayFee(tx, nSize, true); -! if (fLimitFree && nFees < txMinFee) -! return state.DoS(0, error("AcceptToMemoryPool: not enough fees %s, %d < %d", -! hash.ToString(), nFees, txMinFee), -! REJECT_INSUFFICIENTFEE, "insufficient fee"); - - // Require that free transactions have sufficient priority to be mined in the next block. - if (GetBoolArg("-relaypriority", false) && nFees < ::minRelayTxFee.GetFee(nSize) && !AllowFree(view.GetPriority(tx, chainActive.Height() + 1))) { ---- 1212,1228 ---- - CTxMemPoolEntry entry(tx, nFees, GetTime(), dPriority, chainActive.Height(), mempool.HasNoInputsOf(tx)); - unsigned int nSize = entry.GetTxSize(); - -! // Accept a tx if it contains joinsplits and has at least the default fee specified by z_sendmany. -! if (tx.vjoinsplit.size() > 0 && nFees >= ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE) { -! // In future we will we have more accurate and dynamic computation of fees for tx with joinsplits. -! } else { -! // Don't accept it if it can't get into a block -! CAmount txMinFee = GetMinRelayFee(tx, nSize, true); -! if (fLimitFree && nFees < txMinFee) -! return state.DoS(0, error("AcceptToMemoryPool: not enough fees %s, %d < %d", -! hash.ToString(), nFees, txMinFee), -! REJECT_INSUFFICIENTFEE, "insufficient fee"); -! } - - // Require that free transactions have sufficient priority to be mined in the next block. - if (GetBoolArg("-relaypriority", false) && nFees < ::minRelayTxFee.GetFee(nSize) && !AllowFree(view.GetPriority(tx, chainActive.Height() + 1))) { -*************** -*** 1566,1572 **** - } - - // We define a condition where we should warn the user about as a fork of at least 7 blocks -! // with a tip within 72 blocks (+/- 12 hours if no one mines it) of ours - // We use 7 blocks rather arbitrarily as it represents just under 10% of sustained network - // hash rate operating on the fork. - // or a chain that is entirely longer than ours and invalid (note that this should be detected by both) ---- 1572,1578 ---- - } - - // We define a condition where we should warn the user about as a fork of at least 7 blocks -! // with a tip within 72 blocks (+/- 3 hours if no one mines it) of ours - // We use 7 blocks rather arbitrarily as it represents just under 10% of sustained network - // hash rate operating on the fork. - // or a chain that is entirely longer than ours and invalid (note that this should be detected by both) -*************** -*** 3213,3219 **** - - // Enforce block.nVersion=2 rule that the coinbase starts with serialized block height - // if 750 of the last 1,000 blocks are version 2 or greater (51/100 if testnet): -! if (block.nVersion >= 2) - { - CScript expect = CScript() << nHeight; - if (block.vtx[0].vin[0].scriptSig.size() < expect.size() || ---- 3219,3228 ---- - - // Enforce block.nVersion=2 rule that the coinbase starts with serialized block height - // if 750 of the last 1,000 blocks are version 2 or greater (51/100 if testnet): -! // Since MIN_BLOCK_VERSION = 4 all blocks with nHeight > 0 should satisfy this. -! // This rule is not applied to the genesis block, which didn't include the height -! // in the coinbase. -! if (nHeight > 0) - { - CScript expect = CScript() << nHeight; - if (block.vtx[0].vin[0].scriptSig.size() < expect.size() || -diff -crB ./src/main.h ../../komodo-jl777/src/main.h -*** ./src/main.h 2017-01-03 10:40:50.255331392 +0000 ---- ../../komodo-jl777/src/main.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 48,57 **** - struct CNodeStateStats; - - /** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/ -! static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000; - static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0; - /** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/ -! static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000; - /** Default for accepting alerts from the P2P network. */ - static const bool DEFAULT_ALERTS = true; - /** Minimum alert priority for enabling safe mode. */ ---- 48,57 ---- - struct CNodeStateStats; - - /** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/ -! static const unsigned int DEFAULT_BLOCK_MAX_SIZE = MAX_BLOCK_SIZE; - static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0; - /** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/ -! static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = DEFAULT_BLOCK_MAX_SIZE / 2; - /** Default for accepting alerts from the P2P network. */ - static const bool DEFAULT_ALERTS = true; - /** Minimum alert priority for enabling safe mode. */ -*************** -*** 60,65 **** ---- 60,67 ---- - static const unsigned int MAX_P2SH_SIGOPS = 15; - /** The maximum number of sigops we're willing to relay/mine in a single tx */ - static const unsigned int MAX_STANDARD_TX_SIGOPS = MAX_BLOCK_SIGOPS/5; -+ /** Default for -minrelaytxfee, minimum relay fee for transactions */ -+ static const unsigned int DEFAULT_MIN_RELAY_TX_FEE = 1000; - /** Default for -maxorphantx, maximum number of orphan transactions kept in memory */ - static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100; - /** The maximum size of a blk?????.dat file (since 0.8) */ -*************** -*** 91,96 **** ---- 93,102 ---- - /** Maximum length of reject messages. */ - static const unsigned int MAX_REJECT_MESSAGE_LENGTH = 111; - -+ // Sanity check the magic numbers when we change them -+ BOOST_STATIC_ASSERT(DEFAULT_BLOCK_MAX_SIZE <= MAX_BLOCK_SIZE); -+ BOOST_STATIC_ASSERT(DEFAULT_BLOCK_PRIORITY_SIZE <= DEFAULT_BLOCK_MAX_SIZE); -+ - #define equihash_parameters_acceptable(N, K) \ - ((CBlockHeader::HEADER_SIZE + equihash_solution_size(N, K))*MAX_HEADERS_RESULTS < \ - MAX_PROTOCOL_MESSAGE_LENGTH-1000) -diff -crB ./src/Makefile.am ../../komodo-jl777/src/Makefile.am -*** ./src/Makefile.am 2017-01-03 10:40:50.211329166 +0000 ---- ../../komodo-jl777/src/Makefile.am 2017-01-03 09:49:08.856506348 +0000 -*************** -*** 232,237 **** ---- 232,239 ---- - # when wallet enabled - libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES) - libbitcoin_wallet_a_SOURCES = \ -+ utiltest.cpp \ -+ utiltest.h \ - zcbenchmarks.cpp \ - zcbenchmarks.h \ - wallet/asyncrpcoperation_sendmany.cpp \ -*************** -*** 516,525 **** - @test -f $(PROTOC) - $(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(abspath $( - #include -*************** -*** 15,29 **** ---- 17,65 ---- - #include - #include - -+ CCriticalSection cs_metrics; -+ -+ boost::synchronized_value nNodeStartTime; - AtomicCounter transactionsValidated; - AtomicCounter ehSolverRuns; - AtomicCounter solutionTargetChecks; - AtomicCounter minedBlocks; - -+ boost::synchronized_value> trackedBlocks; -+ - boost::synchronized_value> messageBox; - boost::synchronized_value initMessage; - bool loaded = false; - -+ extern int64_t GetNetworkHashPS(int lookup, int height); -+ -+ void TrackMinedBlock(uint256 hash) -+ { -+ LOCK(cs_metrics); -+ minedBlocks.increment(); -+ trackedBlocks->push_back(hash); -+ } -+ -+ void MarkStartTime() -+ { -+ *nNodeStartTime = GetTime(); -+ } -+ -+ int64_t GetUptime() -+ { -+ return GetTime() - *nNodeStartTime; -+ } -+ -+ double GetLocalSolPS_INTERNAL(int64_t uptime) -+ { -+ return uptime > 0 ? (double)solutionTargetChecks.get() / uptime : 0; -+ } -+ -+ double GetLocalSolPS() -+ { -+ return GetLocalSolPS_INTERNAL(GetUptime()); -+ } -+ - static bool metrics_ThreadSafeMessageBox(const std::string& message, - const std::string& caption, - unsigned int style) -*************** -*** 64,71 **** - uiInterface.InitMessage.connect(metrics_InitMessage); - } - -! void printMiningStatus(bool mining) - { - if (mining) { - int nThreads = GetArg("-genproclimit", 1); - if (nThreads < 0) { ---- 100,122 ---- - uiInterface.InitMessage.connect(metrics_InitMessage); - } - -! int printNetworkStats() -! { -! LOCK2(cs_main, cs_vNodes); -! -! std::cout << " " << _("Block height") << " | " << chainActive.Height() << std::endl; -! std::cout << " " << _("Network solution rate") << " | " << GetNetworkHashPS(120, -1) << " Sol/s" << std::endl; -! std::cout << " " << _("Connections") << " | " << vNodes.size() << std::endl; -! std::cout << std::endl; -! -! return 4; -! } -! -! int printMiningStatus(bool mining) - { -+ // Number of lines that are always displayed -+ int lines = 1; -+ - if (mining) { - int nThreads = GetArg("-genproclimit", 1); - if (nThreads < 0) { -*************** -*** 75,95 **** - else - nThreads = boost::thread::hardware_concurrency(); - } -! std::cout << strprintf(_("You are running %d mining threads."), nThreads) << std::endl; - } else { - std::cout << _("You are currently not mining.") << std::endl; - std::cout << _("To enable mining, add 'gen=1' to your zcash.conf and restart.") << std::endl; - } - std::cout << std::endl; - } - -! int printMetrics(size_t cols, int64_t nStart, bool mining) - { - // Number of lines that are always displayed - int lines = 3; - - // Calculate uptime -! int64_t uptime = GetTime() - nStart; - int days = uptime / (24 * 60 * 60); - int hours = (uptime - (days * 24 * 60 * 60)) / (60 * 60); - int minutes = (uptime - (((days * 24) + hours) * 60 * 60)) / 60; ---- 126,151 ---- - else - nThreads = boost::thread::hardware_concurrency(); - } -! std::cout << strprintf(_("You are mining with the %s solver on %d threads."), -! GetArg("-equihashsolver", "default"), nThreads) << std::endl; -! lines++; - } else { - std::cout << _("You are currently not mining.") << std::endl; - std::cout << _("To enable mining, add 'gen=1' to your zcash.conf and restart.") << std::endl; -+ lines += 2; - } - std::cout << std::endl; -+ -+ return lines; - } - -! int printMetrics(size_t cols, bool mining) - { - // Number of lines that are always displayed - int lines = 3; - - // Calculate uptime -! int64_t uptime = GetUptime(); - int days = uptime / (24 * 60 * 60); - int hours = (uptime - (days * 24 * 60 * 60)) / (60 * 60); - int minutes = (uptime - (((days * 24) + hours) * 60 * 60)) / 60; -*************** -*** 110,128 **** - std::cout << strDuration << std::endl; - lines += (strDuration.size() / cols); - -! std::cout << "- " << strprintf(_("You have validated %d transactions!"), transactionsValidated.get()) << std::endl; - -! if (mining) { -! double solps = uptime > 0 ? (double)solutionTargetChecks.get() / uptime : 0; - std::string strSolps = strprintf("%.4f Sol/s", solps); - std::cout << "- " << strprintf(_("You have contributed %s on average to the network solution rate."), strSolps) << std::endl; - std::cout << "- " << strprintf(_("You have completed %d Equihash solver runs."), ehSolverRuns.get()) << std::endl; - lines += 2; - -! int mined = minedBlocks.get(); - if (mined > 0) { - std::cout << "- " << strprintf(_("You have mined %d blocks!"), mined) << std::endl; -! lines++; - } - } - std::cout << std::endl; ---- 166,233 ---- - std::cout << strDuration << std::endl; - lines += (strDuration.size() / cols); - -! int validatedCount = transactionsValidated.get(); -! if (validatedCount > 1) { -! std::cout << "- " << strprintf(_("You have validated %d transactions!"), validatedCount) << std::endl; -! } else if (validatedCount == 1) { -! std::cout << "- " << _("You have validated a transaction!") << std::endl; -! } else { -! std::cout << "- " << _("You have validated no transactions.") << std::endl; -! } - -! if (mining && loaded) { -! double solps = GetLocalSolPS_INTERNAL(uptime); - std::string strSolps = strprintf("%.4f Sol/s", solps); - std::cout << "- " << strprintf(_("You have contributed %s on average to the network solution rate."), strSolps) << std::endl; - std::cout << "- " << strprintf(_("You have completed %d Equihash solver runs."), ehSolverRuns.get()) << std::endl; - lines += 2; - -! int mined = 0; -! int orphaned = 0; -! CAmount immature {0}; -! CAmount mature {0}; -! { -! LOCK2(cs_main, cs_metrics); -! boost::strict_lock_ptr> u = trackedBlocks.synchronize(); -! auto consensusParams = Params().GetConsensus(); -! auto tipHeight = chainActive.Height(); -! -! // Update orphans and calculate subsidies -! std::list::iterator it = u->begin(); -! while (it != u->end()) { -! auto hash = *it; -! if (mapBlockIndex.count(hash) > 0 && -! chainActive.Contains(mapBlockIndex[hash])) { -! int height = mapBlockIndex[hash]->nHeight; -! CAmount subsidy = GetBlockSubsidy(height, consensusParams); -! if ((height > 0) && (height <= consensusParams.GetLastFoundersRewardBlockHeight())) { -! subsidy -= subsidy/5; -! } -! if (std::max(0, COINBASE_MATURITY - (tipHeight - height)) > 0) { -! immature += subsidy; -! } else { -! mature += subsidy; -! } -! it++; -! } else { -! it = u->erase(it); -! } -! } -! -! mined = minedBlocks.get(); -! orphaned = mined - u->size(); -! } -! - if (mined > 0) { -+ std::string units = Params().CurrencyUnits(); - std::cout << "- " << strprintf(_("You have mined %d blocks!"), mined) << std::endl; -! std::cout << " " -! << strprintf(_("Orphaned: %d blocks, Immature: %u %s, Mature: %u %s"), -! orphaned, -! FormatMoney(immature), units, -! FormatMoney(mature), units) -! << std::endl; -! lines += 2; - } - } - std::cout << std::endl; -*************** -*** 171,194 **** - // Make this thread recognisable as the metrics screen thread - RenameThread("zcash-metrics-screen"); - -! // Clear screen -! std::cout << "\e[2J"; -! -! // Print art -! std::cout << METRICS_ART << std::endl; -! std::cout << std::endl; -! -! // Thank you text -! std::cout << _("Thank you for running a Zcash node!") << std::endl; -! std::cout << _("You're helping to strengthen the network and contributing to a social good :)") << std::endl; -! std::cout << std::endl; -! -! // Miner status -! bool mining = GetBoolArg("-gen", false); -! printMiningStatus(mining); -! -! // Count uptime -! int64_t nStart = GetTime(); - - while (true) { - // Number of lines that are always displayed ---- 276,299 ---- - // Make this thread recognisable as the metrics screen thread - RenameThread("zcash-metrics-screen"); - -! // Determine whether we should render a persistent UI or rolling metrics -! bool isTTY = isatty(STDOUT_FILENO); -! bool isScreen = GetBoolArg("-metricsui", isTTY); -! int64_t nRefresh = GetArg("-metricsrefreshtime", isTTY ? 1 : 600); -! -! if (isScreen) { -! // Clear screen -! std::cout << "\e[2J"; -! -! // Print art -! std::cout << METRICS_ART << std::endl; -! std::cout << std::endl; -! -! // Thank you text -! std::cout << _("Thank you for running a Zcash node!") << std::endl; -! std::cout << _("You're helping to strengthen the network and contributing to a social good :)") << std::endl; -! std::cout << std::endl; -! } - - while (true) { - // Number of lines that are always displayed -*************** -*** 196,202 **** - int cols = 80; - - // Get current window size -! if (isatty(STDOUT_FILENO)) { - struct winsize w; - w.ws_col = 0; - if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) != -1 && w.ws_col != 0) { ---- 301,307 ---- - int cols = 80; - - // Get current window size -! if (isTTY) { - struct winsize w; - w.ws_col = 0; - if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) != -1 && w.ws_col != 0) { -*************** -*** 204,223 **** - } - } - -! // Erase below current position -! std::cout << "\e[J"; - -! lines += printMetrics(cols, nStart, mining); - lines += printMessageBox(cols); - lines += printInitMessage(); - -! // Explain how to exit -! std::cout << "[" << _("Press Ctrl+C to exit") << "] [" << _("Set 'showmetrics=0' to hide") << "]" << std::endl;; - -! boost::this_thread::interruption_point(); -! MilliSleep(1000); - -! // Return to the top of the updating section -! std::cout << "\e[" << lines << "A"; - } - } ---- 309,347 ---- - } - } - -! if (isScreen) { -! // Erase below current position -! std::cout << "\e[J"; -! } -! -! // Miner status -! bool mining = GetBoolArg("-gen", false); - -! if (loaded) { -! lines += printNetworkStats(); -! } -! lines += printMiningStatus(mining); -! lines += printMetrics(cols, mining); - lines += printMessageBox(cols); - lines += printInitMessage(); - -! if (isScreen) { -! // Explain how to exit -! std::cout << "[" << _("Press Ctrl+C to exit") << "] [" << _("Set 'showmetrics=0' to hide") << "]" << std::endl; -! } else { -! // Print delineator -! std::cout << "----------------------------------------" << std::endl; -! } - -! int64_t nWaitEnd = GetTime() + nRefresh; -! while (GetTime() < nWaitEnd) { -! boost::this_thread::interruption_point(); -! MilliSleep(200); -! } - -! if (isScreen) { -! // Return to the top of the updating section -! std::cout << "\e[" << lines << "A"; -! } - } - } -diff -crB ./src/metrics.h ../../komodo-jl777/src/metrics.h -*** ./src/metrics.h 2017-01-03 10:40:50.255331392 +0000 ---- ../../komodo-jl777/src/metrics.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 2,12 **** - // Distributed under the MIT software license, see the accompanying - // file COPYING or http://www.opensource.org/licenses/mit-license.php. - - #include - #include - - struct AtomicCounter { -! std::atomic value; - - AtomicCounter() : value {0} { } - ---- 2,14 ---- - // Distributed under the MIT software license, see the accompanying - // file COPYING or http://www.opensource.org/licenses/mit-license.php. - -+ #include "uint256.h" -+ - #include - #include - - struct AtomicCounter { -! std::atomic value; - - AtomicCounter() : value {0} { } - -*************** -*** 26,32 **** - extern AtomicCounter transactionsValidated; - extern AtomicCounter ehSolverRuns; - extern AtomicCounter solutionTargetChecks; -! extern AtomicCounter minedBlocks; - - void ConnectMetricsScreen(); - void ThreadShowMetricsScreen(); ---- 28,38 ---- - extern AtomicCounter transactionsValidated; - extern AtomicCounter ehSolverRuns; - extern AtomicCounter solutionTargetChecks; -! -! void TrackMinedBlock(uint256 hash); -! -! void MarkStartTime(); -! double GetLocalSolPS(); - - void ConnectMetricsScreen(); - void ThreadShowMetricsScreen(); -diff -crB ./src/miner.cpp ../../komodo-jl777/src/miner.cpp -*** ./src/miner.cpp 2017-01-03 10:40:50.255331392 +0000 ---- ../../komodo-jl777/src/miner.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 99,105 **** - } - - #define ASSETCHAINS_MINHEIGHT 100 -! #define ROUNDROBIN_DELAY 58 - extern int32_t ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAIN_INIT,KOMODO_INITDONE,KOMODO_ON_DEMAND,KOMODO_INITDONE; - extern char ASSETCHAINS_SYMBOL[16]; - extern std::string NOTARY_PUBKEY; ---- 99,106 ---- - } - - #define ASSETCHAINS_MINHEIGHT 100 -! #define KOMODO_ELECTION_GAP 2000 -! #define ROUNDROBIN_DELAY 55 - extern int32_t ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAIN_INIT,KOMODO_INITDONE,KOMODO_ON_DEMAND,KOMODO_INITDONE; - extern char ASSETCHAINS_SYMBOL[16]; - extern std::string NOTARY_PUBKEY; -*************** -*** 109,114 **** ---- 110,116 ---- - int32_t komodo_is_special(int32_t height,uint8_t pubkey33[33]); - int32_t komodo_pax_opreturn(uint8_t *opret,int32_t maxsize); - uint64_t komodo_paxtotal(); -+ int32_t komodo_baseid(char *origbase); - int32_t komodo_is_issuer(); - int32_t komodo_gateway_deposits(CMutableTransaction *txNew,char *symbol,int32_t tokomodo); - int32_t komodo_isrealtime(int32_t *kmdheightp); -*************** -*** 121,137 **** - if(!pblocktemplate.get()) - return NULL; - CBlock *pblock = &pblocktemplate->block; // pointer for convenience -! if ( ASSETCHAINS_SYMBOL[0] != 0 && chainActive.Tip()->nHeight > ASSETCHAINS_MINHEIGHT ) - { - isrealtime = komodo_isrealtime(&kmdheight); -! while ( KOMODO_ON_DEMAND == 0 ) - { - deposits = komodo_paxtotal(); -! if ( KOMODO_INITDONE == 0 || (isrealtime= komodo_isrealtime(&kmdheight)) == 0 ) - { - //fprintf(stderr,"INITDONE.%d RT.%d deposits %.8f ht.%d\n",KOMODO_INITDONE,isrealtime,(double)deposits/COIN,kmdheight); - } -! else if ( deposits != 0 ) - { - fprintf(stderr,"start CreateNewBlock %s initdone.%d deposit %.8f mempool.%d RT.%u KOMODO_ON_DEMAND.%d\n",ASSETCHAINS_SYMBOL,KOMODO_INITDONE,(double)komodo_paxtotal()/COIN,(int32_t)mempool.GetTotalTxSize(),isrealtime,KOMODO_ON_DEMAND); - break; ---- 123,140 ---- - if(!pblocktemplate.get()) - return NULL; - CBlock *pblock = &pblocktemplate->block; // pointer for convenience -! if ( ASSETCHAINS_SYMBOL[0] != 0 && chainActive.Tip()->nHeight >= ASSETCHAINS_MINHEIGHT ) - { - isrealtime = komodo_isrealtime(&kmdheight); -! deposits = komodo_paxtotal(); -! while ( KOMODO_ON_DEMAND == 0 && deposits == 0 && (int32_t)mempool.GetTotalTxSize() == 0 ) - { - deposits = komodo_paxtotal(); -! if ( KOMODO_INITDONE == 0 || (komodo_baseid(ASSETCHAINS_SYMBOL) >= 0 && (isrealtime= komodo_isrealtime(&kmdheight)) == 0) ) - { - //fprintf(stderr,"INITDONE.%d RT.%d deposits %.8f ht.%d\n",KOMODO_INITDONE,isrealtime,(double)deposits/COIN,kmdheight); - } -! else if ( deposits != 0 || (int32_t)mempool.GetTotalTxSize() > 0 ) - { - fprintf(stderr,"start CreateNewBlock %s initdone.%d deposit %.8f mempool.%d RT.%u KOMODO_ON_DEMAND.%d\n",ASSETCHAINS_SYMBOL,KOMODO_INITDONE,(double)komodo_paxtotal()/COIN,(int32_t)mempool.GetTotalTxSize(),isrealtime,KOMODO_ON_DEMAND); - break; -*************** -*** 242,247 **** ---- 245,252 ---- - - dPriority += (double)nValueIn * nConf; - } -+ nTotalIn += tx.GetJoinSplitValueIn(); -+ - if (fMissingInputs) continue; - - // Priority is sum(valuein * age) / modified_txsize -*************** -*** 419,425 **** - if ( !TestBlockValidity(state, *pblock, pindexPrev, false, false)) - { - fprintf(stderr,"testblockvalidity failed\n"); -! //throw std::runtime_error("CreateNewBlock(): TestBlockValidity failed"); - } - } - ---- 424,430 ---- - if ( !TestBlockValidity(state, *pblock, pindexPrev, false, false)) - { - fprintf(stderr,"testblockvalidity failed\n"); -! throw std::runtime_error("CreateNewBlock(): TestBlockValidity failed"); - } - } - -*************** -*** 473,479 **** - script[34] = OP_CHECKSIG; - //scriptPubKey = CScript() << ToByteVector(pubkey) << OP_CHECKSIG; - } -! if ( 0 && ASSETCHAINS_SYMBOL[0] == 0 ) - { - for (i=0; i<65; i++) - fprintf(stderr,"%d ",komodo_minerid(chainActive.Tip()->nHeight-i)); ---- 478,484 ---- - script[34] = OP_CHECKSIG; - //scriptPubKey = CScript() << ToByteVector(pubkey) << OP_CHECKSIG; - } -! if ( 0 && ASSETCHAINS_SYMBOL[0] != 0 ) - { - for (i=0; i<65; i++) - fprintf(stderr,"%d ",komodo_minerid(chainActive.Tip()->nHeight-i)); -*************** -*** 509,515 **** - if (!ProcessNewBlock(chainActive.Tip()->nHeight+1,state, NULL, pblock, true, NULL)) - return error("KomodoMiner: ProcessNewBlock, block not accepted"); - -! minedBlocks.increment(); - - return true; - } ---- 514,520 ---- - if (!ProcessNewBlock(chainActive.Tip()->nHeight+1,state, NULL, pblock, true, NULL)) - return error("KomodoMiner: ProcessNewBlock, block not accepted"); - -! TrackMinedBlock(pblock->GetHash()); - - return true; - } -*************** -*** 614,627 **** - arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits); - if ( ASSETCHAINS_SYMBOL[0] == 0 && komodo_is_special(pindexPrev->nHeight+1,NOTARY_PUBKEY33) > 0 ) - { -! hashTarget = arith_uint256().SetCompact(KOMODO_MINDIFF_NBITS); -! fprintf(stderr,"I am the chosen one for %s ht.%d\n",ASSETCHAINS_SYMBOL,pindexPrev->nHeight+1); - } else Mining_start = 0; - while (true) - { -! if ( ASSETCHAINS_SYMBOL[0] != 0 && pblock->vtx[0].vout.size() == 1 && Mining_height > ASSETCHAINS_MINHEIGHT ) - { -! //fprintf(stderr,"skip generating %s on-demand block, no tx avail\n",ASSETCHAINS_SYMBOL); - sleep(10); - break; - } ---- 619,635 ---- - arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits); - if ( ASSETCHAINS_SYMBOL[0] == 0 && komodo_is_special(pindexPrev->nHeight+1,NOTARY_PUBKEY33) > 0 ) - { -! if ( (Mining_height % KOMODO_ELECTION_GAP) > 64 || (Mining_height % KOMODO_ELECTION_GAP) == 0 ) -! { -! hashTarget = arith_uint256().SetCompact(KOMODO_MINDIFF_NBITS); -! fprintf(stderr,"I am the chosen one for %s ht.%d\n",ASSETCHAINS_SYMBOL,pindexPrev->nHeight+1); -! } else Mining_start = 0; - } else Mining_start = 0; - while (true) - { -! if ( 0 && ASSETCHAINS_SYMBOL[0] != 0 && pblock->vtx[0].vout.size() == 1 && Mining_height > ASSETCHAINS_MINHEIGHT ) - { -! fprintf(stderr,"skip generating %s on-demand block, no tx avail\n",ASSETCHAINS_SYMBOL); - sleep(10); - break; - } -*************** -*** 784,794 **** ---- 792,804 ---- - } - catch (const boost::thread_interrupted&) - { -+ c.disconnect(); - LogPrintf("KomodoMiner terminated\n"); - throw; - } - catch (const std::runtime_error &e) - { -+ c.disconnect(); - LogPrintf("KomodoMiner runtime error: %s\n", e.what()); - return; - } -diff -crB ./src/pow.cpp ../../komodo-jl777/src/pow.cpp -*** ./src/pow.cpp 2017-01-03 10:40:50.259331594 +0000 ---- ../../komodo-jl777/src/pow.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 113,119 **** - bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned int nBits, const Consensus::Params& params) - { - extern int32_t KOMODO_REWIND; -! bool fNegative,fOverflow; int32_t i,nonz=0,special,special2,notaryid=-1,flag = 0; - arith_uint256 bnTarget; - - bnTarget.SetCompact(nBits, &fNegative, &fOverflow); ---- 113,119 ---- - bool CheckProofOfWork(int32_t height,uint8_t *pubkey33,uint256 hash, unsigned int nBits, const Consensus::Params& params) - { - extern int32_t KOMODO_REWIND; -! bool fNegative,fOverflow; int32_t i,nonz=0,special=0,special2=0,notaryid=-1,flag = 0; - arith_uint256 bnTarget; - - bnTarget.SetCompact(nBits, &fNegative, &fOverflow); -*************** -*** 130,144 **** - if ( nonz == 0 ) - return(true); // will come back via different path with pubkey set - special2 = komodo_is_special(height,pubkey33); -! if ( notaryid >= 0 && ((height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) > 64) ) - { -- //if ( special2 == -2 ) -- // printf("height.%d special2.%d special.%d\n",height,special2,special); - if ( (height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) == 0 || (height < 80000 && (special != 0 || special2 > 0)) || (height >= 80000 && special2 > 0) ) - { - bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - flag = 1; - } - } - } - if (fNegative || bnTarget == 0 || fOverflow || bnTarget > UintToArith256(params.powLimit)) ---- 130,153 ---- - if ( nonz == 0 ) - return(true); // will come back via different path with pubkey set - special2 = komodo_is_special(height,pubkey33); -! /*if ( notaryid >= 0 && ((height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) > 64) ) - { - if ( (height >= 64000 && height <= 90065) || (height % KOMODO_ELECTION_GAP) == 0 || (height < 80000 && (special != 0 || special2 > 0)) || (height >= 80000 && special2 > 0) ) - { - bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - flag = 1; - } -+ }*/ -+ if ( notaryid >= 0 ) -+ { -+ if ( height > 10000 && height < 80000 && (special != 0 || special2 > 0) ) -+ flag = 1; -+ else if ( height >= 80000 && height < 108000 && special2 > 0 ) -+ flag = 1; -+ else if ( height >= 108000 && special2 > 0 ) -+ flag = ((height % KOMODO_ELECTION_GAP) > 64 || (height % KOMODO_ELECTION_GAP) == 0); -+ if ( flag != 0 ) -+ bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - } - } - if (fNegative || bnTarget == 0 || fOverflow || bnTarget > UintToArith256(params.powLimit)) -*************** -*** 146,160 **** - // Check proof of work matches claimed amount - if ( UintToArith256(hash) > bnTarget ) - { -! int32_t i; -! for (i=31; i>=0; i--) -! printf("%02x",((uint8_t *)&hash)[i]); -! printf(" hash vs "); -! for (i=31; i>=0; i--) -! printf("%02x",((uint8_t *)&bnTarget)[i]); -! printf(" ht.%d REWIND.%d special.%d notaryid.%d ht.%d mod.%d error\n",height,KOMODO_REWIND,special,notaryid,height,(height % 35)); -! if ( height <= KOMODO_REWIND ) -! return error("CheckProofOfWork(): hash doesn't match nBits"); - } - return true; - } ---- 155,171 ---- - // Check proof of work matches claimed amount - if ( UintToArith256(hash) > bnTarget ) - { -! { -! int32_t i; -! for (i=31; i>=0; i--) -! printf("%02x",((uint8_t *)&hash)[i]); -! printf(" hash vs "); -! for (i=31; i>=0; i--) -! printf("%02x",((uint8_t *)&bnTarget)[i]); -! printf(" ht.%d REWIND.%d special.%d notaryid.%d ht.%d mod.%d error\n",height,KOMODO_REWIND,special,notaryid,height,(height % 35)); -! if ( height < 90000 || (height > 110000 && KOMODO_REWIND == 0) ) -! return error("CheckProofOfWork(): hash doesn't match nBits"); -! } - } - return true; - } -diff -crB ./src/primitives/block.h ../../komodo-jl777/src/primitives/block.h -*** ./src/primitives/block.h 2017-01-03 10:40:50.259331594 +0000 ---- ../../komodo-jl777/src/primitives/block.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 200,205 **** ---- 200,209 ---- - { - return vHave.empty(); - } -+ -+ friend bool operator==(const CBlockLocator& a, const CBlockLocator& b) { -+ return (a.vHave == b.vHave); -+ } - }; - - #endif // BITCOIN_PRIMITIVES_BLOCK_H -diff -crB ./src/primitives/transaction.cpp ../../komodo-jl777/src/primitives/transaction.cpp -*** ./src/primitives/transaction.cpp 2017-01-03 10:40:50.259331594 +0000 ---- ../../komodo-jl777/src/primitives/transaction.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 62,67 **** ---- 62,70 ---- - // Randomize the order of the inputs and outputs - inputMap = {0, 1}; - outputMap = {0, 1}; -+ -+ assert(gen); -+ - MappedShuffle(inputs.begin(), inputMap.begin(), ZC_NUM_JS_INPUTS, gen); - MappedShuffle(outputs.begin(), outputMap.begin(), ZC_NUM_JS_OUTPUTS, gen); - -*************** -*** 72,81 **** ---- 75,86 ---- - - bool JSDescription::Verify( - ZCJoinSplit& params, -+ libzcash::ProofVerifier& verifier, - const uint256& pubKeyHash - ) const { - return params.verify( - proof, -+ verifier, - pubKeyHash, - randomSeed, - macs, -diff -crB ./src/primitives/transaction.h ../../komodo-jl777/src/primitives/transaction.h -*** ./src/primitives/transaction.h 2017-01-03 10:40:50.259331594 +0000 ---- ../../komodo-jl777/src/primitives/transaction.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 101,107 **** - ); - - // Verifies that the JoinSplit proof is correct. -! bool Verify(ZCJoinSplit& params, const uint256& pubKeyHash) const; - - // Returns the calculated h_sig - uint256 h_sig(ZCJoinSplit& params, const uint256& pubKeyHash) const; ---- 101,111 ---- - ); - - // Verifies that the JoinSplit proof is correct. -! bool Verify( -! ZCJoinSplit& params, -! libzcash::ProofVerifier& verifier, -! const uint256& pubKeyHash -! ) const; - - // Returns the calculated h_sig - uint256 h_sig(ZCJoinSplit& params, const uint256& pubKeyHash) const; -diff -crB ./src/random.cpp ../../komodo-jl777/src/random.cpp -*** ./src/random.cpp 2017-01-03 10:40:50.339335643 +0000 ---- ../../komodo-jl777/src/random.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 137,139 **** ---- 137,144 ---- - insecure_rand_Rw = tmp; - } - } -+ -+ int GenIdentity(int n) -+ { -+ return n-1; -+ } -diff -crB ./src/random.h ../../komodo-jl777/src/random.h -*** ./src/random.h 2017-01-03 10:40:50.339335643 +0000 ---- ../../komodo-jl777/src/random.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 26,31 **** ---- 26,36 ---- - uint256 GetRandHash(); - - /** -+ * Identity function for MappedShuffle, so that elements retain their original order. -+ */ -+ int GenIdentity(int n); -+ -+ /** - * Rearranges the elements in the range [first,first+len) randomly, assuming - * that gen is a uniform random number generator. Follows the same algorithm as - * std::shuffle in C++11 (a Durstenfeld shuffle). -diff -crB ./src/rpcclient.cpp ../../komodo-jl777/src/rpcclient.cpp -*** ./src/rpcclient.cpp 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcclient.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 103,108 **** ---- 103,109 ---- - { "z_gettotalbalance", 0}, - { "z_sendmany", 1}, - { "z_sendmany", 2}, -+ { "z_sendmany", 3}, - { "z_getoperationstatus", 0}, - { "z_getoperationresult", 0}, - { "z_importkey", 1 }, -diff -crB ./src/rpcmining.cpp ../../komodo-jl777/src/rpcmining.cpp -*** ./src/rpcmining.cpp 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcmining.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 37,43 **** - * or over the difficulty averaging window if 'lookup' is nonpositive. - * If 'height' is nonnegative, compute the estimate at the time when a given block was found. - */ -! Value GetNetworkHashPS(int lookup, int height) { - CBlockIndex *pb = chainActive.Tip(); - - if (height >= 0 && height < chainActive.Height()) ---- 37,43 ---- - * or over the difficulty averaging window if 'lookup' is nonpositive. - * If 'height' is nonnegative, compute the estimate at the time when a given block was found. - */ -! int64_t GetNetworkHashPS(int lookup, int height) { - CBlockIndex *pb = chainActive.Tip(); - - if (height >= 0 && height < chainActive.Height()) -*************** -*** 74,92 **** - return (int64_t)(workDiff.getdouble() / timeDiff); - } - - Value getnetworkhashps(const Array& params, bool fHelp) - { - if (fHelp || params.size() > 2) - throw runtime_error( - "getnetworkhashps ( blocks height )\n" -! "\nReturns the estimated network hashes per second based on the last n blocks.\n" - "Pass in [blocks] to override # of blocks, -1 specifies over difficulty averaging window.\n" - "Pass in [height] to estimate the network speed at the time when a certain block was found.\n" - "\nArguments:\n" - "1. blocks (numeric, optional, default=120) The number of blocks, or -1 for blocks over difficulty averaging window.\n" - "2. height (numeric, optional, default=-1) To estimate at the time of the given height.\n" - "\nResult:\n" -! "x (numeric) Hashes per second estimated\n" - "\nExamples:\n" - + HelpExampleCli("getnetworkhashps", "") - + HelpExampleRpc("getnetworkhashps", "") ---- 74,133 ---- - return (int64_t)(workDiff.getdouble() / timeDiff); - } - -+ Value getlocalsolps(const Array& params, bool fHelp) -+ { -+ if (fHelp) -+ throw runtime_error( -+ "getlocalsolps\n" -+ "\nReturns the average local solutions per second since this node was started.\n" -+ "This is the same information shown on the metrics screen (if enabled).\n" -+ "\nResult:\n" -+ "xxx.xxxxx (numeric) Solutions per second average\n" -+ "\nExamples:\n" -+ + HelpExampleCli("getlocalsolps", "") -+ + HelpExampleRpc("getlocalsolps", "") -+ ); -+ -+ LOCK(cs_main); -+ return GetLocalSolPS(); -+ } -+ -+ Value getnetworksolps(const Array& params, bool fHelp) -+ { -+ if (fHelp || params.size() > 2) -+ throw runtime_error( -+ "getnetworksolps ( blocks height )\n" -+ "\nReturns the estimated network solutions per second based on the last n blocks.\n" -+ "Pass in [blocks] to override # of blocks, -1 specifies over difficulty averaging window.\n" -+ "Pass in [height] to estimate the network speed at the time when a certain block was found.\n" -+ "\nArguments:\n" -+ "1. blocks (numeric, optional, default=120) The number of blocks, or -1 for blocks over difficulty averaging window.\n" -+ "2. height (numeric, optional, default=-1) To estimate at the time of the given height.\n" -+ "\nResult:\n" -+ "x (numeric) Solutions per second estimated\n" -+ "\nExamples:\n" -+ + HelpExampleCli("getnetworksolps", "") -+ + HelpExampleRpc("getnetworksolps", "") -+ ); -+ -+ LOCK(cs_main); -+ return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120, params.size() > 1 ? params[1].get_int() : -1); -+ } -+ - Value getnetworkhashps(const Array& params, bool fHelp) - { - if (fHelp || params.size() > 2) - throw runtime_error( - "getnetworkhashps ( blocks height )\n" -! "\nDEPRECATED - left for backwards-compatibility. Use getnetworksolps instead.\n" -! "\nReturns the estimated network solutions per second based on the last n blocks.\n" - "Pass in [blocks] to override # of blocks, -1 specifies over difficulty averaging window.\n" - "Pass in [height] to estimate the network speed at the time when a certain block was found.\n" - "\nArguments:\n" - "1. blocks (numeric, optional, default=120) The number of blocks, or -1 for blocks over difficulty averaging window.\n" - "2. height (numeric, optional, default=-1) To estimate at the time of the given height.\n" - "\nResult:\n" -! "x (numeric) Solutions per second estimated\n" - "\nExamples:\n" - + HelpExampleCli("getnetworkhashps", "") - + HelpExampleRpc("getnetworkhashps", "") -*************** -*** 209,215 **** - CValidationState state; - if (!ProcessNewBlock(chainActive.Tip()->nHeight+1,state, NULL, pblock, true, NULL)) - throw JSONRPCError(RPC_INTERNAL_ERROR, "ProcessNewBlock, block not accepted"); -- minedBlocks.increment(); - ++nHeight; - blockHashes.push_back(pblock->GetHash().GetHex()); - } ---- 250,255 ---- -*************** -*** 280,285 **** ---- 320,327 ---- - " \"errors\": \"...\" (string) Current errors\n" - " \"generate\": true|false (boolean) If the generation is on or off (see getgenerate or setgenerate calls)\n" - " \"genproclimit\": n (numeric) The processor limit for generation. -1 if no generation. (see getgenerate or setgenerate calls)\n" -+ " \"localsolps\": xxx.xxxxx (numeric) The average local solution rate in Sol/s since this node was started\n" -+ " \"networksolps\": x (numeric) The estimated network solution rate in Sol/s\n" - " \"pooledtx\": n (numeric) The size of the mem pool\n" - " \"testnet\": true|false (boolean) If using testnet or not\n" - " \"chain\": \"xxxx\", (string) current network name as defined in BIP70 (main, test, regtest)\n" -*************** -*** 299,305 **** - obj.push_back(Pair("difficulty", (double)GetNetworkDifficulty())); - obj.push_back(Pair("errors", GetWarnings("statusbar"))); - obj.push_back(Pair("genproclimit", (int)GetArg("-genproclimit", -1))); -! obj.push_back(Pair("networkhashps", getnetworkhashps(params, false))); - obj.push_back(Pair("pooledtx", (uint64_t)mempool.size())); - obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC())); - obj.push_back(Pair("chain", Params().NetworkIDString())); ---- 341,349 ---- - obj.push_back(Pair("difficulty", (double)GetNetworkDifficulty())); - obj.push_back(Pair("errors", GetWarnings("statusbar"))); - obj.push_back(Pair("genproclimit", (int)GetArg("-genproclimit", -1))); -! obj.push_back(Pair("localsolps" , getlocalsolps(params, false))); -! obj.push_back(Pair("networksolps", getnetworksolps(params, false))); -! obj.push_back(Pair("networkhashps", getnetworksolps(params, false))); - obj.push_back(Pair("pooledtx", (uint64_t)mempool.size())); - obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC())); - obj.push_back(Pair("chain", Params().NetworkIDString())); -*************** -*** 483,492 **** - throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid mode"); - - if (vNodes.empty()) -! throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Bitcoin is not connected!"); - - if (IsInitialBlockDownload()) -! throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "Bitcoin is downloading blocks..."); - - static unsigned int nTransactionsUpdatedLast; - ---- 527,536 ---- - throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid mode"); - - if (vNodes.empty()) -! throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, "Zcash is not connected!"); - - if (IsInitialBlockDownload()) -! throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, "Zcash is downloading blocks..."); - - static unsigned int nTransactionsUpdatedLast; - -diff -crB ./src/rpcmisc.cpp ../../komodo-jl777/src/rpcmisc.cpp -*** ./src/rpcmisc.cpp 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcmisc.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 23,28 **** ---- 23,30 ---- - #include "json/json_spirit_utils.h" - #include "json/json_spirit_value.h" - -+ #include "zcash/Address.hpp" -+ - using namespace json_spirit; - using namespace std; - -*************** -*** 236,241 **** ---- 238,306 ---- - return ret; - } - -+ -+ Value z_validateaddress(const Array& params, bool fHelp) -+ { -+ if (fHelp || params.size() != 1) -+ throw runtime_error( -+ "z_validateaddress \"zaddr\"\n" -+ "\nReturn information about the given z address.\n" -+ "\nArguments:\n" -+ "1. \"zaddr\" (string, required) The z address to validate\n" -+ "\nResult:\n" -+ "{\n" -+ " \"isvalid\" : true|false, (boolean) If the address is valid or not. If not, this is the only property returned.\n" -+ " \"address\" : \"zaddr\", (string) The z address validated\n" -+ " \"ismine\" : true|false, (boolean) If the address is yours or not\n" -+ " \"payingkey\" : \"hex\", (string) The hex value of the paying key, a_pk\n" -+ " \"transmissionkey\" : \"hex\", (string) The hex value of the transmission key, pk_enc\n" -+ -+ "}\n" -+ "\nExamples:\n" -+ + HelpExampleCli("validateaddress", "\"zcWsmqT4X2V4jgxbgiCzyrAfRT1vi1F4sn7M5Pkh66izzw8Uk7LBGAH3DtcSMJeUb2pi3W4SQF8LMKkU2cUuVP68yAGcomL\"") -+ ); -+ -+ -+ #ifdef ENABLE_WALLET -+ LOCK2(cs_main, pwalletMain->cs_wallet); -+ #else -+ LOCK(cs_main); -+ #endif -+ -+ bool isValid = false; -+ bool isMine = false; -+ std::string payingKey, transmissionKey; -+ -+ string strAddress = params[0].get_str(); -+ try { -+ CZCPaymentAddress address(strAddress); -+ libzcash::PaymentAddress addr = address.Get(); -+ -+ #ifdef ENABLE_WALLET -+ isMine = pwalletMain->HaveSpendingKey(addr); -+ #endif -+ payingKey = addr.a_pk.GetHex(); -+ transmissionKey = addr.pk_enc.GetHex(); -+ isValid = true; -+ } catch (std::runtime_error e) { -+ // address is invalid, nop here as isValid is false. -+ } -+ -+ Object ret; -+ ret.push_back(Pair("isvalid", isValid)); -+ if (isValid) -+ { -+ ret.push_back(Pair("address", strAddress)); -+ ret.push_back(Pair("payingkey", payingKey)); -+ ret.push_back(Pair("transmissionkey", transmissionKey)); -+ #ifdef ENABLE_WALLET -+ ret.push_back(Pair("ismine", isMine)); -+ #endif -+ } -+ return ret; -+ } -+ -+ - /** - * Used by addmultisigaddress / createmultisig: - */ -diff -crB ./src/rpcprotocol.cpp ../../komodo-jl777/src/rpcprotocol.cpp -*** ./src/rpcprotocol.cpp 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcprotocol.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 33,39 **** - - /** - * HTTP protocol -! * - * This ain't Apache. We're just using HTTP header for the length field - * and to be compatible with other JSON-RPC implementations. - */ ---- 33,39 ---- - - /** - * HTTP protocol -! * - * This ain't Apache. We're just using HTTP header for the length field - * and to be compatible with other JSON-RPC implementations. - */ -*************** -*** 42,48 **** - { - ostringstream s; - s << "POST / HTTP/1.1\r\n" -! << "User-Agent: bitcoin-json-rpc/" << FormatFullVersion() << "\r\n" - << "Host: 127.0.0.1\r\n" - << "Content-Type: application/json\r\n" - << "Content-Length: " << strMsg.size() << "\r\n" ---- 42,48 ---- - { - ostringstream s; - s << "POST / HTTP/1.1\r\n" -! << "User-Agent: zcash-json-rpc/" << FormatFullVersion() << "\r\n" - << "Host: 127.0.0.1\r\n" - << "Content-Type: application/json\r\n" - << "Content-Length: " << strMsg.size() << "\r\n" -*************** -*** 77,83 **** - if (nStatus == HTTP_UNAUTHORIZED) - return strprintf("HTTP/1.0 401 Authorization Required\r\n" - "Date: %s\r\n" -! "Server: bitcoin-json-rpc/%s\r\n" - "WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n" - "Content-Type: text/html\r\n" - "Content-Length: 296\r\n" ---- 77,83 ---- - if (nStatus == HTTP_UNAUTHORIZED) - return strprintf("HTTP/1.0 401 Authorization Required\r\n" - "Date: %s\r\n" -! "Server: zcash-json-rpc/%s\r\n" - "WWW-Authenticate: Basic realm=\"jsonrpc\"\r\n" - "Content-Type: text/html\r\n" - "Content-Length: 296\r\n" -*************** -*** 104,110 **** - "Connection: %s\r\n" - "Content-Length: %u\r\n" - "Content-Type: %s\r\n" -! "Server: bitcoin-json-rpc/%s\r\n" - "\r\n", - nStatus, - httpStatusDescription(nStatus), ---- 104,110 ---- - "Connection: %s\r\n" - "Content-Length: %u\r\n" - "Content-Type: %s\r\n" -! "Server: zcash-json-rpc/%s\r\n" - "\r\n", - nStatus, - httpStatusDescription(nStatus), -*************** -*** 248,254 **** - * JSON-RPC protocol. Bitcoin speaks version 1.0 for maximum compatibility, - * but uses JSON-RPC 1.1/2.0 standards for parts of the 1.0 standard that were - * unspecified (HTTP errors and contents of 'error'). -! * - * 1.0 spec: http://json-rpc.org/wiki/specification - * 1.2 spec: http://jsonrpc.org/historical/json-rpc-over-http.html - * http://www.codeproject.com/KB/recipes/JSON_Spirit.aspx ---- 248,254 ---- - * JSON-RPC protocol. Bitcoin speaks version 1.0 for maximum compatibility, - * but uses JSON-RPC 1.1/2.0 standards for parts of the 1.0 standard that were - * unspecified (HTTP errors and contents of 'error'). -! * - * 1.0 spec: http://json-rpc.org/wiki/specification - * 1.2 spec: http://jsonrpc.org/historical/json-rpc-over-http.html - * http://www.codeproject.com/KB/recipes/JSON_Spirit.aspx -diff -crB ./src/rpcserver.cpp ../../komodo-jl777/src/rpcserver.cpp -*** ./src/rpcserver.cpp 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcserver.cpp 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 309,314 **** ---- 309,316 ---- - /* Mining */ - { "mining", "getblocktemplate", &getblocktemplate, true }, - { "mining", "getmininginfo", &getmininginfo, true }, -+ { "mining", "getlocalsolps", &getlocalsolps, true }, -+ { "mining", "getnetworksolps", &getnetworksolps, true }, - { "mining", "getnetworkhashps", &getnetworkhashps, true }, - { "mining", "prioritisetransaction", &prioritisetransaction, true }, - { "mining", "submitblock", &submitblock, true }, -*************** -*** 335,340 **** ---- 337,343 ---- - { "util", "verifymessage", &verifymessage, true }, - { "util", "estimatefee", &estimatefee, true }, - { "util", "estimatepriority", &estimatepriority, true }, -+ { "util", "z_validateaddress", &z_validateaddress, true }, /* uses wallet if enabled */ - - /* Not shown in help */ - { "hidden", "invalidateblock", &invalidateblock, true }, -*************** -*** 1034,1042 **** ---- 1037,1051 ---- - // Read HTTP message headers and body - ReadHTTPMessage(conn->stream(), mapHeaders, strRequest, nProto, MAX_SIZE); - -+ // TODO #1856: Re-enable support for persistent connections. -+ // We have disabled support for HTTP Keep-Alive until resolution of #1680, upstream rpc deadlock. -+ // Close connection immediately. -+ fRun = false; -+ /* - // HTTP Keep-Alive is false; close connection immediately - if ((mapHeaders["connection"] == "close") || (!GetBoolArg("-rpckeepalive", true))) - fRun = false; -+ */ - - // Process via JSON-RPC API - if (strURI == "/") { -diff -crB ./src/rpcserver.h ../../komodo-jl777/src/rpcserver.h -*** ./src/rpcserver.h 2017-01-03 10:40:50.343335845 +0000 ---- ../../komodo-jl777/src/rpcserver.h 2017-01-03 09:49:08.864506767 +0000 -*************** -*** 169,174 **** ---- 169,176 ---- - extern json_spirit::Value getgenerate(const json_spirit::Array& params, bool fHelp); // in rpcmining.cpp - extern json_spirit::Value setgenerate(const json_spirit::Array& params, bool fHelp); - extern json_spirit::Value generate(const json_spirit::Array& params, bool fHelp); -+ extern json_spirit::Value getlocalsolps(const json_spirit::Array& params, bool fHelp); -+ extern json_spirit::Value getnetworksolps(const json_spirit::Array& params, bool fHelp); - extern json_spirit::Value getnetworkhashps(const json_spirit::Array& params, bool fHelp); - extern json_spirit::Value getmininginfo(const json_spirit::Array& params, bool fHelp); - extern json_spirit::Value prioritisetransaction(const json_spirit::Array& params, bool fHelp); -*************** -*** 270,275 **** ---- 272,278 ---- - extern json_spirit::Value z_getoperationstatus(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp - extern json_spirit::Value z_getoperationresult(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp - extern json_spirit::Value z_listoperationids(const json_spirit::Array& params, bool fHelp); // in rpcwallet.cpp -+ extern json_spirit::Value z_validateaddress(const json_spirit::Array& params, bool fHelp); // in rpcmisc.cpp - - - // in rest.cpp -diff -crB ./src/test/coins_tests.cpp ../../komodo-jl777/src/test/coins_tests.cpp -*** ./src/test/coins_tests.cpp 2017-01-03 10:40:50.375337465 +0000 ---- ../../komodo-jl777/src/test/coins_tests.cpp 2017-01-03 09:49:08.868506976 +0000 -*************** -*** 166,171 **** ---- 166,414 ---- - - BOOST_FIXTURE_TEST_SUITE(coins_tests, BasicTestingSetup) - -+ BOOST_AUTO_TEST_CASE(nullifier_regression_test) -+ { -+ // Correct behavior: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert a nullifier into the base. -+ uint256 nf = GetRandHash(); -+ cache1.SetNullifier(nf, true); -+ cache1.Flush(); // Flush to base. -+ -+ // Remove the nullifier from cache -+ cache1.SetNullifier(nf, false); -+ -+ // The nullifier now should be `false`. -+ BOOST_CHECK(!cache1.GetNullifier(nf)); -+ } -+ -+ // Also correct behavior: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert a nullifier into the base. -+ uint256 nf = GetRandHash(); -+ cache1.SetNullifier(nf, true); -+ cache1.Flush(); // Flush to base. -+ -+ // Remove the nullifier from cache -+ cache1.SetNullifier(nf, false); -+ cache1.Flush(); // Flush to base. -+ -+ // The nullifier now should be `false`. -+ BOOST_CHECK(!cache1.GetNullifier(nf)); -+ } -+ -+ // Works because we bring it from the parent cache: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert a nullifier into the base. -+ uint256 nf = GetRandHash(); -+ cache1.SetNullifier(nf, true); -+ cache1.Flush(); // Empties cache. -+ -+ // Create cache on top. -+ { -+ // Remove the nullifier. -+ CCoinsViewCacheTest cache2(&cache1); -+ BOOST_CHECK(cache2.GetNullifier(nf)); -+ cache2.SetNullifier(nf, false); -+ cache2.Flush(); // Empties cache, flushes to cache1. -+ } -+ -+ // The nullifier now should be `false`. -+ BOOST_CHECK(!cache1.GetNullifier(nf)); -+ } -+ -+ // Was broken: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert a nullifier into the base. -+ uint256 nf = GetRandHash(); -+ cache1.SetNullifier(nf, true); -+ cache1.Flush(); // Empties cache. -+ -+ // Create cache on top. -+ { -+ // Remove the nullifier. -+ CCoinsViewCacheTest cache2(&cache1); -+ cache2.SetNullifier(nf, false); -+ cache2.Flush(); // Empties cache, flushes to cache1. -+ } -+ -+ // The nullifier now should be `false`. -+ BOOST_CHECK(!cache1.GetNullifier(nf)); -+ } -+ } -+ -+ BOOST_AUTO_TEST_CASE(anchor_pop_regression_test) -+ { -+ // Correct behavior: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Create dummy anchor/commitment -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ -+ // Add the anchor -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ // Remove the anchor -+ cache1.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ cache1.Flush(); -+ -+ // Add the anchor back -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ // The base contains the anchor, of course! -+ { -+ ZCIncrementalMerkleTree checktree; -+ BOOST_CHECK(cache1.GetAnchorAt(tree.root(), checktree)); -+ BOOST_CHECK(checktree.root() == tree.root()); -+ } -+ } -+ -+ // Previously incorrect behavior -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Create dummy anchor/commitment -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ -+ // Add the anchor and flush to disk -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ // Remove the anchor, but don't flush yet! -+ cache1.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ -+ { -+ CCoinsViewCacheTest cache2(&cache1); // Build cache on top -+ cache2.PushAnchor(tree); // Put the same anchor back! -+ cache2.Flush(); // Flush to cache1 -+ } -+ -+ // cache2's flush kinda worked, i.e. cache1 thinks the -+ // tree is there, but it didn't bring down the correct -+ // treestate... -+ { -+ ZCIncrementalMerkleTree checktree; -+ BOOST_CHECK(cache1.GetAnchorAt(tree.root(), checktree)); -+ BOOST_CHECK(checktree.root() == tree.root()); // Oh, shucks. -+ } -+ -+ // Flushing cache won't help either, just makes the inconsistency -+ // permanent. -+ cache1.Flush(); -+ { -+ ZCIncrementalMerkleTree checktree; -+ BOOST_CHECK(cache1.GetAnchorAt(tree.root(), checktree)); -+ BOOST_CHECK(checktree.root() == tree.root()); // Oh, shucks. -+ } -+ } -+ } -+ -+ BOOST_AUTO_TEST_CASE(anchor_regression_test) -+ { -+ // Correct behavior: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert anchor into base. -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ cache1.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ BOOST_CHECK(cache1.GetBestAnchor() == ZCIncrementalMerkleTree::empty_root()); -+ BOOST_CHECK(!cache1.GetAnchorAt(tree.root(), tree)); -+ } -+ -+ // Also correct behavior: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert anchor into base. -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ cache1.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ cache1.Flush(); -+ BOOST_CHECK(cache1.GetBestAnchor() == ZCIncrementalMerkleTree::empty_root()); -+ BOOST_CHECK(!cache1.GetAnchorAt(tree.root(), tree)); -+ } -+ -+ // Works because we bring the anchor in from parent cache. -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert anchor into base. -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ { -+ // Pop anchor. -+ CCoinsViewCacheTest cache2(&cache1); -+ BOOST_CHECK(cache2.GetAnchorAt(tree.root(), tree)); -+ cache2.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ cache2.Flush(); -+ } -+ -+ BOOST_CHECK(cache1.GetBestAnchor() == ZCIncrementalMerkleTree::empty_root()); -+ BOOST_CHECK(!cache1.GetAnchorAt(tree.root(), tree)); -+ } -+ -+ // Was broken: -+ { -+ CCoinsViewTest base; -+ CCoinsViewCacheTest cache1(&base); -+ -+ // Insert anchor into base. -+ ZCIncrementalMerkleTree tree; -+ uint256 cm = GetRandHash(); -+ tree.append(cm); -+ cache1.PushAnchor(tree); -+ cache1.Flush(); -+ -+ { -+ // Pop anchor. -+ CCoinsViewCacheTest cache2(&cache1); -+ cache2.PopAnchor(ZCIncrementalMerkleTree::empty_root()); -+ cache2.Flush(); -+ } -+ -+ BOOST_CHECK(cache1.GetBestAnchor() == ZCIncrementalMerkleTree::empty_root()); -+ BOOST_CHECK(!cache1.GetAnchorAt(tree.root(), tree)); -+ } -+ } -+ - BOOST_AUTO_TEST_CASE(nullifiers_test) - { - CCoinsViewTest base; -Only in ../../komodo-jl777/src/test/data: merkle_commitments.json -diff -crB ./src/test/data/merkle_path.json ../../komodo-jl777/src/test/data/merkle_path.json -*** ./src/test/data/merkle_path.json 2017-01-03 10:40:50.395338477 +0000 ---- ../../komodo-jl777/src/test/data/merkle_path.json 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 1,123 **** - [ -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000101010001000100000000010100010000000100000000000100010000010001010000010001010101000000010001010000010101010100010100010101000100000100010101000101000101010100000000010101000101010000010001000000000101010000010001010000000000010001000100000001000100010101010100000001010101010101010100000001000000000000000001000000000000000001000101000001000001010000010000000101000101000000010100000100000001010101000001010101000001000000010101000001000100000100010100010101000000010001000000000100000100000000010100000100000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000101000101010001010100010100010001010101010100000101010000010101000001010001000100000000010101000101000101010001010001000101010001010001010000000100000101010000000000000101000001010001010101000001010000000000000101010101010001010101010000000000010000010000000000000001000101000001010100010100000001010001000000010000000000010101000101010000000001000000000100000000010101000101000001000000000100000000010100000001010101000100010101000001010001010101010001000000000000010001000000010101000100010000010000000001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000100010100000101010000000000010101000000010001010100000001000100010000010101000101010000000101010001010101000000010000010000000100000101010101000100010001010001010001010101010001000000000001010000010000000001010000000000010001010001010000000100010101000101000001010001010101010100010100000101010000010101010000000000010001000000010100000101010101000100010100000001000101000001000101000101010000000100010100000100000101010000000100010000000100010001000101010001000000000001010001010100000000000100010100000000000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000101010100010100000001010000010101010101000100010101010100010101010101000001010001000101010001010000000100000101000101000101000100010001000100000001010100000101010001000000000000010000010101000000010000000001010001000000010100010000000000010100000000000000010000000000000001010100010100010100010101010100010001010000000001000101010000000001010001000000010000000001010000010101010001000100010001010101000000010100000101010100010000000001000101010001010001000000010000010101000000000000000101010000010101010100000001fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000100", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000100010000010100000001010100010101010000010000010001010100000000010100010001000100010001010001000000000000010000000001000000000100000101000000000001010101000100000000010101000101000001000001000000010101010100000100010000010101010101010001000100000101010001010001000000010001000000010000010000010100010001010001000101010101010000000100010100000100000101010000010001010100000100000100000101000001000101010100000000000000000000010000000101010000010001010000000101000001010001010001010000010000010101000101000000000100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100000001000101000101010100000000000001000000000001000100000000010000010001000100010000000100010101010000000000010001010001000001010001010100000001000001010101010100000001010000000000000000000101000000010100000000000001010100010001010100010101000000010000010001010000000001000100000101000100010100000001000001000001000100010000000001000001010000010101000100010000000001010100010101010000010001000000010000000100010100010100010100010100000101010001010101010000010000000100000001000101010000010001000001010000000001fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000101", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000100010000000001010001010001000000000100000001010100010001000000010101010000010000000000010101010000010101000101010101000101010001000100000001000000000001010101000100000100000101000000010101000100010000000101010101000000000100000000010000000101010000010100000001000000010001000000000000010000010100010101010101000001000100000000010100000101010100010000000000010101010100000001000001000100010001000000010001000000010001010100000101010101010000000001000100000001000100000000000000010100010001000101000001000001010100fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010000010000010100010101000100010000000001010100000001000100010000010100000000010100000000010000010100000001000100010000000000010001000100000101000101000101010101000001000100000101000000000101000101000101000101000001010101010001010000000101000001000101010000010001010001000000000001000001000100000000010001010100000101000000010001010000000100010000000001000001010001000001000100010001010000010101010001010101010000000100010100010001000000000001000000010101000001010001000001000001010100000101010000010101fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010000", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000101000000000101000100000101010000010000000101010000010100010101010000000101010001010101000101000100000001010000000001010000010001010001000100010000010001000001010000010000010100010101000101010001010101000000010100010000000100000001000000010101000101010101000101000000000001000000000001010100010000010100000101010101000101000100010001000000000000000001000001010101010100000001000100000101000001010101010001010100000001000000010100000101000101010101000001000001000101010100010001010100010000010100010001010001000000fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000100010101010001010000010001000000010100000001010100000000010001000000000101010101000001000100010100010000010001010001010101010000010101000101010100010001000000010100000001010100010001000000000100000101010001000000000100010100000001010000010001000000000000010101000000010101010001000101010101010100010100000000010100010101000101000100010101000000010101000000010101000001000001000101010000000101010000000000000001010101010001010001010100010000000001010100000101000000000101010001010100000101000101010000010000000100fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000100000000000100010001000001010101000000000000000101010001010000000001000000010101010001010001010101010001010001000001000000010000010001000000010101000001000100010100010101010100000001000100000001010001010001000000000100010101000000000100000100010001010101010001000100000001010001010001000100010101010100010000010101010000010001010100000101010100010100000001010101010101000101000001010001000000000100000001010001010101000101000100000001010100010100010101000100010001010001010101010000000001000001000000010000000001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400000101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010400010101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000100", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401000101", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010000", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010001", -! "04fd000100010001000100010001010000010000010100010100000100010101000101010000010000000001000100000001000101010001000001000101010000010001000001010100010100000000000001000101000101010100000001000101000101000000010101000000010000000100010001010000000100000000010001000100000000000100000000000001010000000001000100000101010000000000010100010100000001000000010101000100010101010001010100010001000001000000010100010101000101010000000101010000000101010101000000000100010101000001010001010100010001000001000100000001000000000101fd000101010001010100000000010100000101010100000100010001000001000000000101010001000000000101000000000001000100010001010001010000010101000101010000000001010001010000000000010001000101010001000100000101000000010101010000010000000000010101000100010001010100000101000101000100010001010101000000010001010000010001000100000101000100000101000000010101010101000101000000010101010101000101000100000101000101000100000000000001010100000001010101000001010101000101010000010001010100000000010000010000000001010100010001010001010000fd000101000000000101000100000100010001010000000001010100000101010100010001010000000101010101000101000000000000010001010101000001010100010101000100010001010001010001010001000101000101010101010001000001010000010100000101000000010100000101010000010000000101010001000101000001000000000000000000010101010000000000010100000000000100000101000101010101010000000101010101000001010101010001010000010100010000010101010101000000010101000101000000000101000000000000000000010100000000000100010100010001010100000001000001010101010001fd0001000100010001000101000101010000000001000100000100000101010100000000000001010001010100000101000001010000010001000101000100000100000001000001010000010000010000010101000001010001010001010000010000010101000001000000010000000000010100010001010100000001000001010100000100000100000100010101000001000101000101010101000001010000010101000001000000010101010001000001010101010001010100000101000100000000010001000000000001010100000101010101010000010000010100000000010000000001000101000000010000010001010000000001010100000001010401010100" -! - ] ---- 1,122 ---- - [ -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000100010000010101010000010001000001000001000100000001010101010001000001000100000001000001000100010100010101000100000001000000010001000100000001000001010000010001000001010101010101010100000100000101010000000101000100010100000100000101010001000100010101000000010001000001010000010001000101010101000001010101000001010101000001000100000101000101010000000000010001010000010101010000010000000100010000010101000000000001000001000001010001010101010001010001000101010001000000000101000000000100010100000000010000000000fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100000100010000010101010000010001000001000001000100000001010101010001000001000100000001000001000100010100010101000100000001000000010001000100000001000001010000010001000001010101010101010100000100000101010000000101000100010100000100000101010001000100010101000000010001000001010000010001000101010101000001010101000001010101000001000100000101000101010000000000010001010000010101010000010000000100010000010101000000000001000001000001010001010101010001010001000101010001000000000101000000000100010100000000010000000000fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010000000000010100000001000100000100010100010000010001010000000101010101010101010100000000000000010101010100010001000101000001000001010001000101010100000000010000010001010001010101010100010001000100010001010001000100010101000000000000010001000100000100000000000001000100000101000100000101010101010000010100000001010100000001000000010100010100010000010100010100000001010001000100010000000101010000010101010000010101000100010000010001010101000001010101000100000001010000010101000001010101000100000001000100010000fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010000000000010100000001000100000100010100010000010001010000000101010101010101010100000000000000010101010100010001000101000001000001010001000101010100000000010000010001010001010101010100010001000100010001010001000100010101000000000000010001000100000100000000000001000100000101000100000101010101010000010100000001010100000001000000010100010100010000010100010100000001010001000100010000000101010000010101010000010101000100010000010001010101000001010101000100000001010000010101000001010101000100000001000100010000fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010000000000010100000001000100000100010100010000010001010000000101010101010101010100000000000000010101010100010001000101000001000001010001000101010100000000010000010001010001010101010100010001000100010001010001000100010101000000000000010001000100000100000000000001000100000101000100000101010101010000010100000001010100000001000000010100010100010000010100010100000001010001000100010000000101010000010101010000010101000100010000010001010101000001010101000100000001010000010101000001010101000100000001000100010000fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101010000000000010100000001000100000100010100010000010001010000000101010101010101010100000000000000010101010100010001000101000001000001010001000101010100000000010000010001010001010101010100010001000100010001010001000100010101000000000000010001000100000100000000000001000100000101000100000101010101010000010100000001010100000001000000010100010100010000010100010100000001010001000100010000000101010000010101010000010101000100010000010001010101000001010101000100000001010000010101000001010101000100000001000100010000fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101000001000100010101010100000001000101000001000001010100000001010100010001000001000101000001010100010001010000010000010100010101010001000000000001010101000101010001010000010001010101010101000001000001010101000101010100010001000000010001010100010000010001010101010001000000000000000101000101000101000101010001010000010101000101010100010100000001010001000000000101010000010000010101000000010100010101000101000001000001000001000000000100000000000001000001000100000100000000010100000100010000010101010000010001010101fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101000001000100010101010100000001000101000001000001010100000001010100010001000001000101000001010100010001010000010000010100010101010001000000000001010101000101010001010000010001010101010101000001000001010101000101010100010001000000010001010100010000010001010101010001000000000000000101000101000101000101010001010000010101000101010100010100000001010001000000000101010000010000010101000000010100010101000101000001000001000001000000000100000000000001000001000100000100000000010100000100010000010101010000010001010101fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101000001000100010101010100000001000101000001000001010100000001010100010001000001000101000001010100010001010000010000010100010101010001000000000001010101000101010001010000010001010101010101000001000001010101000101010100010001000000010001010100010000010001010101010001000000000000000101000101000101000101010001010000010101000101010100010100000001010001000000000101010000010000010101000000010100010101000101000001000001000001000000000100000000000001000001000100000100000000010100000100010000010101010000010001010101fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000101000001000100010101010100000001000101000001000001010100000001010100010001000001000101000001010100010001010000010000010100010101010001000000000001010101000101010001010000010001010101010101000001000001010101000101010100010001000000010001010100010000010001010101010001000000000000000101000101000101000101010001010000010101000101010100010100000001010001000000000101010000010000010101000000010100010101000101000001000001000001000000000100000000000001000001000100000100000000010100000100010000010101010000010001010101fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000100010100010000010001000001010100000000010100010000000001000000010100010101010101000000010001010000000100000001000001010101000101000101000001010000010101000000010001000100000101000100000100010100010101010101010001010000010001010100010100000101000001010001000101000000000100010000000000000000000001010000000000010000000001010000000000010000000001010101010100010101010001000101010000010000000000010000010100000100010100010001010100000101000001000001000101000101010001000000000100010000000100000000010001010100fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000100010100010000010001000001010100000000010100010000000001000000010100010101010101000000010001010000000100000001000001010101000101000101000001010000010101000000010001000100000101000100000100010100010101010101010001010000010001010100010100000101000001010001000101000000000100010000000000000000000001010000000000010000000001010000000000010000000001010101010100010101010001000101010000010000000000010000010100000100010100010001010100000101000001000001000101000101010001000000000100010000000100000000010001010100fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000100010100010000010001000001010100000000010100010000000001000000010100010101010101000000010001010000000100000001000001010101000101000101000001010000010101000000010001000100000101000100000100010100010101010101010001010000010001010100010100000101000001010001000101000000000100010000000000000000000001010000000000010000000001010000000000010000000001010101010100010101010001000101010000010000000000010000010100000100010100010001010100000101000001000001000101000101010001000000000100010000000100000000010001010100fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000100010100010000010001000001010100000000010100010000000001000000010100010101010101000000010001010000000100000001000001010101000101000101000001010000010101000000010001000100000101000100000100010100010101010101010001010000010001010100010100000101000001010001000101000000000100010000000000000000000001010000000000010000000001010000000000010000000001010101010100010101010001000101010000010000000000010000010100000100010100010001010100000101000001000001000101000101010001000000000100010000000100000000010001010100fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101010001010001000101000100000101000000010101000100010101010001000101000000000000010100000000010001010100000000010001010101010100010101010101010101010001000001000000010100000101010100010001010000010000010001010001010101000101000101010000010000010100000100000001010101000100010000000101010000000100000000000000000101010101010100000100010100000101000001000101000101000101010000010100010101010000010101010101010000010100000101000001010001000101010101000101010001010101000101010001000000010100000100010001010000010001fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101010001010001000101000100000101000000010101000100010101010001000101000000000000010100000000010001010100000000010001010101010100010101010101010101010001000001000000010100000101010100010001010000010000010001010001010101000101000101010000010000010100000100000001010101000100010000000101010000000100000000000000000101010101010100000100010100000101000001000101000101000101010000010100010101010000010101010101010000010100000101000001010001000101010101000101010001010101000101010001000000010100000100010001010000010001fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100000101010101010000000001000100000100000000000000010100000000010100000000000001000000010000000000010001010000010001010001000000010101010101000101000100010101000101010000000101000000000001010000010101010000010101010000000101000001000001010100000101010100000001010000010100010001010001010100000100010001010101010101000001010001000001010101010101000100010101000101010100010001010100010101010101000001010100010100010001010001000000000001000100000001000001010001010100000001010001000101000001010101010100000100000100fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000101000001000101000001000001010101010100010101000001000000010000010101010001000000010000000001010101000001010101010000000100000001010101000100010000000000010000000001010101000000010101010000000101000001010001000001000000010001010000010101010101010000000100010000010101000000010101000000010001010001010101010101000000000101010100000000010100000000000000010000000101010100010000010001000101010101000000010000010001010100000001010101010001000100010000010100010100010100000001000101000001010100000101010101000000010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000100010001000100000101010000010101010001000001000101010001010101000000000000010100010101000001010001010000000001000001010000000101000001000101000100000000000001010001010001000100000001010101000100010101000000000100000101000001010100000101010101010101010101000101010101010000010001010000010001010100000001000101010001010001000001010001010001000101010100010100010100000001010000000000010100010101010000000100010101010100000001000001000101010001000101010000000000010001010000000101000100000100010100000100000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000101000100010100010000010001010100010101010000000001010000000100000001010001010000000000000101000101000000000000000101010001000101010101000100010000010101000100010001010101000000000000000101000100010001010001000101010100000000000101010001010100000101010100010100010101000000000001010000010100000000010001010101000001010000000100000101010101000101010000000100000100000101010100010000010000010101010001000001010000010100010001000101010001000000010000000000000000010101010101010100010100000101010000000000000001010000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100010101000100000100000000010100010100010000010001010101010100010100010100000000010100000001010101010101000001000001010001010101010000010000000001010101010001000101000000000001010000000001010000010001000100010101000101000100000100010101010000000100000100000100010100000100000001000001000001000101000100000101000101000101000101010000000000000100000100000100000101010000010000000001000001000001000001010101000000010100000101000101010001000101010100000100000001000100010100000101000001010000000100000101010000000001fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000100010101000100000100000000010100010100010000010001010101010100010100010100000000010100000001010101010101000001000001010001010101010000010000000001010101010001000101000000000001010000000001010000010001000100010101000101000100000100010101010000000100000100000100010100000100000001000001000001000101000100000101000101000101000101010000000000000100000100000100000101010000010000000001000001000001000001010101000000010100000101000101010001000101010100000100000001000100010100000101000001010000000100000101010000000001fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000100010000010101000101000001000001000000000101010101000100000001000001000100010000000100010100000100000100000000010101000000010100010000010101000100000001000100010100000101000100010101010101000001010001000100010100010000000101000101000100000101010001010101010101010000010100010000000000010100010101000000000001000100000000000001010000000000010000000101010001000100000101010100010001000100010100000100000101000101010000000101010000000100010001000101000101010100010000000001010100010000000101000101010101010100000101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010001010100000001010100010100000101000101010101000100010001010001000001000001000001000101000001010000010101010000010101010001000000010101010000010000010000010101000100010000010101010000010100010101000100000100010100010001000001000000010100010001010101010100010000010001000101000001000100000000000101000100010001000100010100000000010000000100000001000001000001010001000001010100000101010101010000010001000000000101010101010101000001010001000100000100000100000100000000000000010001000001000101010001000001010000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001000000000001000001010100010000010001010000000101010001000100010100010101000001010000000101010100000100000100010001000100010001000100010001000100010101010100000100000101000000010101000000000101010100000000000000000101010000010101010001000100010000000101000001000001010100010001010101000001000000000001000000000001000101000000010101000001000001010001010001010100000000010100000101000100010000000100000100000100010000010001000000000101000100000101000101000100010000010100010001010001010101000100010101000100000001010401000100", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000101000100010101010000010001010100000001010000010101000101000001000100000001010100010000000101010101000001010101010101010101000101010100010000000000000001000001000101010000000100010001010100000100010101000000000001010001010101000100010100000001010000000100010001000101010100010000000001010000010100010000010000000100010001000001010100010101000000000100000101000001000101000101000101000100010000000101010000000001000101010000010101010001000101010000010100010001010101000001000100000100010001000101010101000100010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000100010000000001000101000100010001010100010001000101010000010100010101010101010001000101010100000100000000010101010000010101010100010000000000010100000100010101010000010100010100000101010001000000000001010000010000000001010100000000000000010100000000010100000100000000010001010000010101010101010001000100010001010100000101010000000101000101010100000101010100010101000100000001000000010100000101000001000100010000000001010101000001010100010001000000010100000001000001010001000100010000010101010101000101000000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000100010000000001000101000100010001010100010001000101010000010100010101010101010001000101010100000100000000010101010000010101010100010000000000010100000100010101010000010100010100000101010001000000000001010000010000000001010100000000000000010100000000010100000100000000010001010000010101010101010001000100010001010100000101010000000101000101010100000101010100010101000100000001000000010100000101000001000100010000000001010101000001010100010001000000010100000001000001010001000100010000010101010101000101000000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000100010000000001000101000100010001010100010001000101010000010100010101010101010001000101010100000100000000010101010000010101010100010000000000010100000100010101010000010100010100000101010001000000000001010000010000000001010100000000000000010100000000010100000100000000010001010000010101010101010001000100010001010100000101010000000101000101010100000101010100010101000100000001000000010100000101000001000100010000000001010101000001010100010001000000010100000001000001010001000100010000010101010101000101000000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001000000000001000001010100010000010001010000000101010001000100010100010101000001010000000101010100000100000100010001000100010001000100010001000100010101010100000100000101000000010101000000000101010100000000000000000101010000010101010001000100010000000101000001000001010100010001010101000001000000000001000000000001000101000000010101000001000001010001010001010100000000010100000101000100010000000100000100000100010000010001000000000101000100000101000101000100010000010100010001010001010101000100010101000100000001010401000100", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000100010000000001000101000100010001010100010001000101010000010100010101010101010001000101010100000100000000010101010000010101010100010000000000010100000100010101010000010100010100000101010001000000000001010000010000000001010100000000000000010100000000010100000100000000010001010000010101010101010001000100010001010100000101010000000101000101010100000101010100010101000100000001000000010100000101000001000100010000000001010101000001010100010001000000010100000001000001010001000100010000010101010101000101000000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001010000000100010101000001000001000100010000010000010101000101000000010100010000010001000000000100000101010000000101010101010101000000000101000101000000010001010001010000010100000000000001010100010001000100000001000100000100000000010100000101010001010101010100000001010000010101010000010101010000000101010001000101000100010101000001000100000101010000010100000101010100000101000000000001000001010001010101010101000001010100000001010100000100010101010001010000010001010000000000010001000101010100000001000001010001010401000101", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000100000101010001000000010100000101010000000101000101000000010001010000000000010000000001010101000001010000010101000000000000000001010001000101010101010000000001000100000001010001000000010001000001000101000000000101000101000101000101010000000100000000010100010000000101010000010001010001010000010001010101010100000000010001010000010100000100010001010100010001000000000101010101000001000101010000010101000101000101000101000001000101000001010000010101000100000000000100000001010101010100010001000100000000000001010001fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101000100000101010000000101000101000101010001010000000001010101010001010101000001010000000101010000000000000001010100000001010101000000010101010101010001010000000001010100010000010101010001000000010100010000010000000101000101010000000101000100000000000000010000010100010000010101010001000101010100010101010100000101000000000000010001010001010100010101010101010000010101010001010101010000000000010001010100000100010101000101010100010001000000010001000001010000010001010001000000000101000100010100010100010100010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101000100000101010000000101000101000101010001010000000001010101010001010101000001010000000101010000000000000001010100000001010101000000010101010101010001010000000001010100010000010101010001000000010100010000010000000101000101010000000101000100000000000000010000010100010000010101010001000101010100010101010100000101000000000000010001010001010100010101010101010000010101010001010101010000000000010001010100000100010101000101010100010001000000010001000001010000010001010001000000000101000100010100010100010100010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101000100000101010000000101000101000101010001010000000001010101010001010101000001010000000101010000000000000001010100000001010101000000010101010101010001010000000001010100010000010101010001000000010100010000010000000101000101010000000101000100000000000000010000010100010000010101010001000101010100010101010100000101000000000000010001010001010100010101010101010000010101010001010101010000000000010001010100000100010101000101010100010001000000010001000001010000010001010001000000000101000100010100010100010100010000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001000000000001000001010100010000010001010000000101010001000100010100010101000001010000000101010100000100000100010001000100010001000100010001000100010101010100000100000101000000010101000000000101010100000000000000000101010000010101010001000100010000000101000001000001010100010001010101000001000000000001000000000001000101000000010101000001000001010001010001010100000000010100000101000100010000000100000100000100010000010001000000000101000100000101000101000100010000010100010001010001010101000100010101000100000001010401000100", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101000100000101010000000101000101000101010001010000000001010101010001010101000001010000000101010000000000000001010100000001010101000000010101010101010001010000000001010100010000010101010001000000010100010000010000000101000101010000000101000100000000000000010000010100010000010101010001000101010100010101010100000101000000000000010001010001010100010101010101010000010101010001010101010000000000010001010100000100010101000101010100010001000000010001000001010000010001010001000000000101000100010100010100010100010000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001010000000100010101000001000001000100010000010000010101000101000000010100010000010001000000000100000101010000000101010101010101000000000101000101000000010001010001010000010100000000000001010100010001000100000001000100000100000000010100000101010001010101010100000001010000010101010000010101010000000101010001000101000100010101000001000100000101010000010100000101010100000101000000000001000001010001010101010101000001010100000001010100000100010101010001010000010001010000000000010001000101010100000001000001010001010401000101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000101010001010001000001000100010100010000010100000001000101010101000000000100010101010001010100000101000101000100000001010001000001000101000000010000000101000001010001000100010101010000010100000100010101000101010100000101010101010001010101010001010000010001000100000001010000010101000001000101010001000100000100000100000001010100000000000001010001000001000001010000000100000100000000010101000101010001000101010101010100010101010100000101010100010001000000000101000000000001010001010101000100010000010101000101000000fd0001000000010100000001000000000000000100000100010100000101010101010101010000010000000000010000000100000101000000010101000000000000000100010001000000000100000100000101010000000101000000010100010001000001010000010001000101010001010100010000010100000101010100000101000001000000000101010100010101010100010000000001000100000000010000000001010100010000010101000001000001000000000100010101000000000100000100000001010101000100010100000001010001000101000000010100010000010000010001000100010101010100000001010001010100010000010401010000", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000100000101010000010001000101000101000101010100010101010000010000000001000100000100000101010101010100000000000100010101000001010100000101000000000101000000000100010101010000000100010001000001000001010100010100010101000001000001010001010001010000000001010101010001010100000100010101010100010001000000000101000001000000000001000001000101010001010001010100010101010001000101010100010001000000000000000001010001010101000001000100000001010001000101000100000101010100010001000100010101000000010001000101000000000101000000fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100010101000101000100000001000100000100010100000100010000000001000100010000000000010100000101000100010001000101010100010101000000010000000001010100010001010000010001000101000001010101010001000000000000000000000000000100000101010100000100000101000000000001000001010100000001000001000000000101010100010100010000010100010001010100000000000000010101000101000001000101000001000101000000000001000100010101000001010101010100000101010000010101010000010000000101010001010100010101000001010001010001000100000001000100010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100010101000101000100000001000100000100010100000100010000000001000100010000000000010100000101000100010001000101010100010101000000010000000001010100010001010000010001000101000001010101010001000000000000000000000000000100000101010100000100000101000000000001000001010100000001000001000000000101010100010100010000010100010001010100000000000000010101000101000001000101000001000101000000000001000100010101000001010101010100000101010000010101010000010000000101010001010100010101000001010001010001000100000001000100010000fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100010101000101000100000001000100000100010100000100010000000001000100010000000000010100000101000100010001000101010100010101000000010000000001010100010001010000010001000101000001010101010001000000000000000000000000000100000101010100000100000101000000000001000001010100000001000001000000000101010100010100010000010100010001010100000000000000010101000101000001000101000001000101000000000001000100010101000001010101010100000101010000010101010000010000000101010001010100010101000001010001010001000100000001000100010000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001000000000001000001010100010000010001010000000101010001000100010100010101000001010000000101010100000100000100010001000100010001000100010001000100010101010100000100000101000000010101000000000101010100000000000000000101010000010101010001000100010000000101000001000001010100010001010101000001000000000001000000000001000101000000010101000001000001010001010001010100000000010100000101000100010000000100000100000100010000010001000000000101000100000101000101000100010000010100010001010001010101000100010101000100000001010401000100", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100010101000101000100000001000100000100010100000100010000000001000100010000000000010100000101000100010001000101010100010101000000010000000001010100010001010000010001000101000001010101010001000000000000000000000000000100000101010100000100000101000000000001000001010100000001000001000000000101010100010100010000010100010001010100000000000000010101000101000001000101000001000101000000000001000100010101000001010101010100000101010000010101010000010000000101010001010100010101000001010001010001000100000001000100010000fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001010000000100010101000001000001000100010000010000010101000101000000010100010000010001000000000100000101010000000101010101010101000000000101000101000000010001010001010000010100000000000001010100010001000100000001000100000100000000010100000101010001010101010100000001010000010101010000010101010000000101010001000101000100010101000001000100000101010000010100000101010100000101000000000001000001010001010101010101000001010100000001010100000100010101010001010000010001010000000000010001000101010100000001000001010001010401000101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000100000001010000000000000001010000000001010101000100000001010100000100010000000000000001010100010100010001000100010000000101000001010001000001010000010001000100010000000101010100010101000101000001000000010001010101010100000001000101000000010100000100000000000000000000000100010101010001010100010000010000000000010100000000000001010000000100000101000001000101010100000101000000000000000000000101000101000100010001000000000100000001000000000000000001000100000001010001000100000101010100000101010101000100000100010100fd0001000000010100000001000000000000000100000100010100000101010101010101010000010000000000010000000100000101000000010101000000000000000100010001000000000100000100000101010000000101000000010100010001000001010000010001000101010001010100010000010100000101010100000101000001000000000101010100010101010100010000000001000100000000010000000001010100010000010101000001000001000000000100010101000000000100000100000001010101000100010100000001010001000101000000010100010000010000010001000100010101010100000001010001010100010000010401010000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000100000001010000000000000001010000000001010101000100000001010100000100010000000000000001010100010100010001000100010000000101000001010001000001010000010001000100010000000101010100010101000101000001000000010001010101010100000001000101000000010100000100000000000000000000000100010101010001010100010000010000000000010100000000000001010000000100000101000001000101010100000101000000000000000000000101000101000100010001000000000100000001000000000000000001000100000001010001000100000101010100000101010101000100000100010100fd0001010001010101010000000101010101010001010001010000000000010100000000000001010101010000000100010100000001000100000000000100000100000000000101000001000000010101010001010000010101010000000101010101000101010100000001010000010001000101010000000101010101010101010101000101000000000101000101010001010101010101000101000100000101000001010100000001010001010100010101000001000001010000010000010101000101010101000001010100000101000101010001000101010100000100000100000100000000000000000101000100000000000100000100000001000001000401010001", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000100000001010100010001010000010100010001010001010101000000010001010101000000000101010001010100010100010101000000000000000100010000010101000101000000000100010101000000010100000001010100000101000000010101000100000000010101010001010000010101010001000001010001000100000100000100010101000101010100010001010100000001000000010001010000010100000000000101000001010101010100010000010101000001010000010001000101010000000001000100010001000000010001000101000101000001000100010000010000010100000100000100010000000001010400000000", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000100000101000001010000000101000101010101000000000101000001010000000001000000010001010001010101000101010000000101010000010100010101000100010001000101010100000000010101010000010000010101000000000101010001010101000100010100000101010000010001000101000100010001010001000000010100010001010100000101010100000100000001010001010101000001000001010000010101010000000100010000010100000100010000000100010001000000000000000000000100000101010101010101000001000000000001010000010000000001010001010000000101010100010001010100fd0001000101000000010001010101010100010100010001010001010000010100010101010101010001010101010100000001000101010101000000000101010000000101010001000100000101000000010000010100010001000100000101010000010000010100010101000000010001000101010101000000010001000001010100010000010000000101010000010100010001010001000000000101000101000001010101010000010000000001000001000001000100000101000001000100010101010000000001010000010001000001000101000001000001000100000101000001010000010101010001000000010001010001010001000101010001000400000001", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000010000010000010000010000010100000001000100010000000000010001000001000100010101010001000100000001010001010001010001000100010100000100000101010101000100010001010100010101000001010101010000010001010100000001000101000100010001000101000101010101000000010101000100000001010101010000000101000101010100010101000000000000010100000000010001010100010000010101000000000000000001010100010100010000010000010100000001010000000001000000000000000100010001000001010000010100010001000100010101000100000100010001010100000100000400000100", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100000001000000010000010001010100000101010100000101000100010101010001010000000000000000010100010001000100010001000000010101010000000000000100010000010000010000000101010000010100010100000000010100010101010000010000010100000000010100000101000001000100010100010001000001000101000100010100010000000101000001010001000000000000010001000000010100010101000001010100010000000001000100000101000100010101010001010001010101000001000101000100000100010101010101000001000101010100010101000001010100000101000000000101000101010001fd000101000001010101010001000101000101000001000100010100000001010101000001000001000101010101010001010101010100000101010000010100000001010000000101000100000000010001000000000101010101000100000000000100010101010100000100010000010100010001010101000001000100000001010001010000000000000101010001010100000000000001000001000101000101000001010101000100000001000000010101010000000000000101010001000001000101010000010001000001010000010100010001000100010001010100000101010001000001010101010000010101000000000101000000000101000000fd0001010000000000010100010100000000000001000000010001000100000100000000010000000000000001010100010101010100000101010100010100000001010100000100000000000000010100000000010000010101000100010000010101010100000101000100010000010000000100010100010000000101000000000001010100000001000101000100000000010101010000010000000100010001010000010000000100010000010000010101000101000101000100000100010100000001010000010101000101010001010000000100010001000001000000010100000001000100000100010000010100010000010000010001010101010001010400000101", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001000101000100000001010000000100000101000100000000010101010001010001000001010100010000000101010101000000010100000001000101000101010001000100010100010100000000010001010100010101000100000000010101000100010101000000000001000100000101010100000001010100000001010001010000010100010000010101000000000101000100000000000100010101000001010100000001000100010101000101010100010100010000000100010000010001010101010100010101010101000000010101010000000000010101000000010001000101000000000100000000010101000100000101010101010100000400010000", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000100000000000100010000000001000100000101010001000100000101010001010100010100010000000000010100000100010101000001000000010101000100010001010100010100010101010101010000010000000100000100000100000000010100010100000000010001000100000101010000000101000000000001000101010000000101010000010000000001010101000100000001010101000001000001000001010100010000000001010001000101000101010100000000010001010000000001000101010100010101010101010101000101000100010000010000010101000100010100010000000100000000000100000001010100010000fd0001010101010101010100010101010100000000010100010100000000000000010100010101000100000100010000010100000100010000000001000000010001000101010000000000010000010000000000010000010100000001010101000000000001000000000100000100000101010101010101010101000100010101000101010000010101000100000100000000010000010000000101000000010101010000010101010100010101000100000000000001010100000101010101000001000001000101010001010101000000010100010100010100010000010100010001010101010001010100000001000101010101010001000000010000000001010400010001", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001000100010000000001010000000000000100010100010000000001010000000000010100000000010101000000000101010000010000000101000001000000010101000000000101010101000101000000010001000001000100000100010101000001010001000000000101000001000100000001000101000101010101010101000001010100000100010001010101010101000100010100010100010101010101000100000001000101000000010001010000010100000001000001000001010001000001000000010000010000010001000100010000000100000000010001010001010000010001000001000001010000010100010000000100010100010400010100", -! "04fd000100010000000100010100000001010000010001000100010100010000000100000100000100000100010100000101010001000000010000010101000000010100010001010001000100000000000000010001010000000001010101000000000000010001010000000000010101010000000001000000000100000001000100010101010000010101010000010000000000000000010100010100010101000001000101000001000001000100000100010000010101000101000100000100000101010100000000010001000100000100010000000000010001000000010100010001010001000100000001010100000101000001000000010100010001010101fd000100010000000101000101000000000100010101010101010000010001000000000101010001000000010100000001010000010100010001000100000001000101000100000000000000000100010001010101000101010101000000000001010100000001010101010001000100000100010100000001010101010101000100010000000001000001010101010001010101000100000000000001000000010001010000010001010101010101000001010000000101000000010000000001010001000101000001000100000000000100000001010101010000000100010000000100000001000100010000010000010100010100010100010100000101010101fd000101000100010101000101000100010001000000010100010001010100000001010000000101010101000100010100000100010101010101010100000100010101000101000100010101000100010100000000000001010101000101000000010001010000010100010001000101010100000100010001010000000101000001000000000000000101010101000100010001010001000100000100010100010001000001000000000000000100010100010001010000010000000100010100000101010000000100010101000100010000000100010001000000010100000101000101000101010001000101010000010100010101010001000101010100000100fd0001010000000100010100000001000101000101000001010001000001010101010001010000000100000001000001000000000101010001000101010100000100000100000000010001000101000101010000000101000000000000010100010000000100000101000000000000010001010001000001000100000101000100000001000100000101000101010101000001000001000100000101000100000101000100000001000101010101000001000100000001000000010001010101000101000001000000010000010001010001010100000000000000010000010000010000010100000001010000000000000001010101000001010101000101000000010400010101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000101000000000001000100000100000000000001000101010001010001010100010101010100010100000100010001000101000101010100010100000000000000010101010001010000000001000001000100000101010000000001000000010100000101010101000000000100010101010101010000010000000000010101010100010101010000000001000000010001010101000100010100010000000100010001000001000000000101010100010101010000010101010000010001010101000101010101000100010101010001010101000100010001000001000000010000000000000101010101010100010100000100000001000000000001fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001010100010100000000000001010101000101010100010100000100000100010000000000000000000001010000000101000100010001010100000101010100010100000000000000010100000101000100000101000001000000010000000100000001000101000101000000010100010000000000010000010100010101010001000101010001010101010001000000000000000001010100000101000100000001000101000100010100010001010101000100010101010000010001010100010000010101010001010001010101010000000001010101000100000001000001000101010100010101010101000100010101010100000000000001000101010401000000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000101000000000001000100000100000000000001000101010001010001010100010101010100010100000100010001000101000101010100010100000000000000010101010001010000000001000001000100000101010000000001000000010100000101010101000000000100010101010101010000010000000000010101010100010101010000000001000000010001010101000100010100010000000100010001000001000000000101010100010101010000010101010000010001010101000101010101000100010101010001010101000100010001000001000000010000000000000101010101010100010100000100000001000000000001fd000101000100000000010101010000000001000001000101000001010001000101010100010101000101010000000101000100010001000001010000000000000001000101000101000001000101010101010000000000010101000001000100000101010000010101010101000000000001010001010101010001000100010100010100000000010101000100010100000101000100010000010101010001000001000101010100010000010101010101000100010100010001000000000100010000010000000000010001010001000100000001000001010101010000010101000101000100000000000101010101010000010101000100010001000100000000fd0001000101010000000001010101010101010101000101010001000100010101010101000100000000000101010100000101010001000101010001000100000000010100000001000101010100010001000000010101000000000000000001010101000000010100010001010000000001000101010000000100010101000000000000000101010100000101010100010001010100010001000001000101000101010100010101000000000100010001010101010100010000000101000101010001010000010000010101000101010000000001010000000100010001000100000000000101000000010100000101000101010000010001010000010001000001010401000001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000101000000000001000100000100000000000001000101010001010001010100010101010100010100000100010001000101000101010100010100000000000000010101010001010000000001000001000100000101010000000001000000010100000101010101000000000100010101010101010000010000000000010101010100010101010000000001000000010001010101000100010100010000000100010001000001000000000101010100010101010000010101010000010001010101000101010101000100010101010001010101000100010001000001000000010000000000000101010101010100010100000100000001000000000001fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001000000000001000001010100010000010001010000000101010001000100010100010101000001010000000101010100000100000100010001000100010001000100010001000100010101010100000100000101000000010101000000000101010100000000000000000101010000010101010001000100010000000101000001000001010100010001010101000001000000000001000000000001000101000000010101000001000001010001010001010100000000010100000101000100010000000100000100000100010000010001000000000101000100000101000101000100010000010100010001010001010101000100010101000100000001010401000100", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000100000101000000000001000100000100000000000001000101010001010001010100010101010100010100000100010001000101000101010100010100000000000000010101010001010000000001000001000100000101010000000001000000010100000101010101000000000100010101010101010000010000000000010101010100010101010000000001000000010001010101000100010100010000000100010001000001000000000101010100010101010000010101010000010001010101000101010101000100010101010001010101000100010001000001000000010000000000000101010101010100010100000100000001000000000001fd000101010101010101000000000101000001000000000101000100010001010101000000010101000101010101000100010001010101000000010000000001000000000100000101000000000001010001010000000101010000010001010001010000010100000001000000000101010001000001000001010000000100010100000000000001010000010100010100000001010000010100010000000100010100000100000001000100010000010101000101010100000000000000010100000001000000000100000001000000000001010001000100010101010101000000000001000101010001000001010001000100010100010001000001000000000001fd0001010000000100010101000001000001000100010000010000010101000101000000010100010000010001000000000100000101010000000101010101010101000000000101000101000000010001010001010000010100000000000001010100010001000100000001000100000100000000010100000101010001010101010100000001010000010101010000010101010000000101010001000101000100010101000001000100000101010000010100000101010100000101000000000001000001010001010101010101000001010100000001010100000100010101010001010000010001010000000000010001000101010100000001000001010001010401000101", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000100000100010101010001010101000100010000010001010001010100010100000101000000010101000001000001000100010100010000010001000000010001000001010000010101000100010000010100000101000001010100010100010100010100000101010100000000010100010101010001010000000000000000010001010001000101010100000101010101010001010100000100010000010001010100000100000100000101000100010000010100000001000100010000000101000000000001010001010101010101010001000101010100010000000001010101000101000001000001010101000000010001000000000101010001010101fd0001000000010100000001000000000000000100000100010100000101010101010101010000010000000000010000000100000101000000010101000000000000000100010001000000000100000100000101010000000101000000010100010001000001010000010001000101010001010100010000010100000101010100000101000001000000000101010100010101010100010000000001000100000000010000000001010100010000010101000001000001000000000100010101000000000100000100000001010101000100010100000001010001000101000000010100010000010000010001000100010101010100000001010001010100010000010401010000", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000100000100010101010001010101000100010000010001010001010100010100000101000000010101000001000001000100010100010000010001000000010001000001010000010101000100010000010100000101000001010100010100010100010100000101010100000000010100010101010001010000000000000000010001010001000101010100000101010101010001010100000100010000010001010100000100000100000101000100010000010100000001000100010000000101000000000001010001010101010101010001000101010100010000000001010101000101000001000001010101000000010001000000000101010001010101fd0001010001010101010000000101010101010001010001010000000000010100000000000001010101010000000100010100000001000100000000000100000100000000000101000001000000010101010001010000010101010000000101010101000101010100000001010000010001000101010000000101010101010101010101000101000000000101000101010001010101010101000101000100000101000001010100000001010001010100010101000001000001010000010000010101000101010101000001010100000101000101010001000101010100000100000100000100000000000000000101000100000000000100000100000001000001000401010001", -! "04fd000100010100010100000100010101000101010101010101000000000001010000000000010101000100000000010000000000000001000101010100000000010001010000010101000000010100010001000000000001000000010000000100000000000101010000000100010001010100000100000100000000010101010001010101010001000000000100000000010100000100000000010000010000010101000100000100010000000000000001010100000100010101000101010000010101000100000001010001000101000101000100000000010100010000010001010001010100010100000000010000000001000100010000000000000000010100fd000101010100010100000001000001000101000000010001000000010001010000000100010000000101010100000101010101000000000000000001000100000001010000010100000101000000000000000000010101000100000000010000010000000101000000010101010001000001000000000001010001000101010001000000000001000001000100010101010101000001000101000100000101000100000100010001010100010101000100010101000001000100000100000100010001010000000101010000010100000101000100000100000000010000000101010000010101010100000101010000000001010101000101000000010000010001fd000101010100010000010001010101010101000000010001010001000100010100010000000100010000000001010000010100010001010000010100000101000001010000010101000001000001000000000100010000010101010100010000010001000100000001010101010000010101010100010100010001000100010000010001000001000100010100010100000101000000000000000100000000010000000001000000010000000100000101000101000101000001000001010000010000000101010100010000010101010101000100000101010100000000010001000100010100010100000001000001000000010100000000000100010000010101fd0001010000000001000001010000010000000000010100010000010101000001010101010000010001010000010101000000010100010001010001010101000000000100000001010001010000000000010001010101000100010101000001010101000100000100000000000101010000010100010101000000010000010000010000000000000000010100000000010001000000010001010100010000010001010000000100000001010100000001010101000100010101010001010100010101000000010101010101010001000001010100000001010001010100010000000000000100010001010000010000000000000101000100010000000100000000000401010100" - ] -diff -crB ./src/test/data/merkle_roots.json ../../komodo-jl777/src/test/data/merkle_roots.json -*** ./src/test/data/merkle_roots.json 2017-01-03 10:40:50.395338477 +0000 ---- ../../komodo-jl777/src/test/data/merkle_roots.json 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 1,18 **** - [ -! "26ee6e3f8c28892382264d72789c9c65a8577549fe35d3d6df86e0f07cc80057", -! "0e54a14ab674813f2a558b18df630ae095f2cb775d0bc37677073acb1f8f3443", -! "d06e16c2e6ee0b28d8f07c76a17976fea549ce2dd1debae260dc3215d265fddb", -! "52dc4b76365472537ff15cb18a71be54c91d207f5d62fb89bd74af9010ac0e01", -! "8dd27a2340e34015cd9b00a2ddc011dcdab03d38a49497490d631f71ce9c495e", -! "0cb8ae3ff2483ea7124237b62d0ac4388477b41e83d3811c6e0dd6fec0b365e6", -! "a67c1f145456880502a3d020d538fecf0515bd285edd6e3fcae26eb53c1f56d3", -! "7fb0adeb50e1084359414071486d89ead9c9a3700c64c9892f510f87af6ec27f", -! "45cd6f71215eabb2c25206471e9293bed2bc924ce5bbc16a8f728ec1e310886f", -! "01d1f338c2abee217962120611dafe0a0e9de76c18de77cbb1e3a6d3261e887c", -! "2700b09aa19ce460d509fc3bccfbc80f8381d156a4a52a7f3d4e8b852b5c10ea", -! "ac96cc858674f67d6c6119f933080cd69c10950409722468d2ac7b81e2cc2bba", -! "f4930affd93232b6051fe3a5f744a357201bff4363312d1115762a595261f030", -! "50b48f5226a69a62206f365ac5347c723b43faf9691c04b872225d5c08876eed", -! "a867397884b157b1db4dd03dc2fd6c40c4650e70b61441d4325e0b18d5280fb6", -! "52c8456d3538eed3b73778c596c1993ac6d6c337ae5e338391ce6cae58296dec" - ] ---- 1,18 ---- - [ -! "95bf71d8e803b8601c14b5949d0f92690181154ef9d82eb3e24852266823317a", -! "73f18d3f9cd11010aa01d4f444039e566f14ef282109df9649b2eb75e7a53ed1", -! "dcde8a273c9672bee1a894d7f7f4abb81078f52b498e095f2a87d0aec5addf25", -! "4677d481ec6d1e97969afbc530958d1cbb4f1c047af6fdad4687cd10830e02bd", -! "74cd9d82de30c4222a06d420b75522ae1273729c1d8419446adf1184df61dc69", -! "2ff57f5468c6afdad30ec0fb6c2cb67289f12584e2c20c4e0065f66748697d77", -! "27e4ce010670801911c5765a003b15f75cde31d7378bd36540f593c8a44b3011", -! "62231ef2ec8c4da461072871ab7bc9de10253fcb40e164ddbad05b47e0b7fb69", -! "733a4ce688fdf07efb9e9f5a4b2dafff87cfe198fbe1dff71e028ef4cdee1f1b", -! "df39ed31924facdd69a93db07311d45fceac7a4987c091648044f37e6ecbb0d2", -! "87795c069bdb55281c666b9cb872d13174334ce135c12823541e9536489a9107", -! "438c80f532903b283230446514e400c329b29483db4fe9e279fdfc79e8f4347d", -! "08afb2813eda17e94aba1ab28ec191d4af99283cd4f1c5a04c0c2bc221bc3119", -! "a8b3ab3284f3288f7caa21bd2b69789a159ab4188b0908825b34723305c1228c", -! "db9b289e620de7dca2ae8fdac96808752e32e7a2c6d97ce0755dcebaa03123ab", -! "0bf622cb9f901b7532433ea2e7c1b7632f5935899b62dcf897a71551997dc8cc" - ] -diff -crB ./src/test/data/merkle_serialization.json ../../komodo-jl777/src/test/data/merkle_serialization.json -*** ./src/test/data/merkle_serialization.json 2017-01-03 10:40:50.399338679 +0000 ---- ../../komodo-jl777/src/test/data/merkle_serialization.json 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 1,18 **** - [ -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443" -! ] -\ No newline at end of file ---- 1,18 ---- - [ -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c94300", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f38618", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f38618", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "01c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000301e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806", -! "01c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e0184c834e7cb38d6f08d82f5cf4839b8920185174b11c7af771fd38dd02b206a200301e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806" -! ] -diff -crB ./src/test/data/merkle_witness_serialization.json ../../komodo-jl777/src/test/data/merkle_witness_serialization.json -*** ./src/test/data/merkle_witness_serialization.json 2017-01-03 10:40:50.399338679 +0000 ---- ../../komodo-jl777/src/test/data/merkle_witness_serialization.json 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 1,138 **** - [ -! "0000000155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300", -! "0000000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300010155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30000", -! "0000000555b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300000455b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300038695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30001018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d0355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e301018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d02dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3020001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d5564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30002018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c0255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e35564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e302018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944300", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430355b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030000015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443028695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27ddc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e303018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba944301dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430255b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e38695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e3030001dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba9443018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d00", -! "0155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e30003018695873d63ec0bceeadb5bf4ccc6723ac803c1826fc7cfb34fc76180305ae27d01dc33ca90e860ab6770d82ba98f20eae6d5e2ca9a63f63f69b40e3cf72e121d6c015564d9772145d2e53b02de2d8e22b10a820614e0d88ebdd48ddc71f0b9ba94430155b852781b9995a44c939b64e441ae2724b96f99c8f4fb9a141cfc9842c4b0e300" -! ] -\ No newline at end of file ---- 1,138 ---- - [ -! "0000000162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00", -! "0000000262fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c94300", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c94300", -! "0000000262fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430101836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430101836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c94300000101836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0000", -! "0000000362fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000268eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430001a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae400", -! "0000000362fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000268eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430001a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430000", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae40101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430000", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f38618000101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430000", -! "0000000362fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000268eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430001a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae0101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae40101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f38618000101ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc00", -! "0000000362fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae01018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000101aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af2", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000268eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae01018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000101aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af2", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430001a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae01018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000101aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af2", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000101aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af2", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180001018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000101aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af2", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc01018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10000", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0001018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10000", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd00", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047400", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047400", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d00", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f00010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b96530000", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f00010170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81700", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047401018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047401018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0001018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf81701018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0000", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060001018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0000", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047401018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad1047401018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d01018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0001018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a41", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80602d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e755000", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e755000", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba300", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f000101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80602d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a09120000", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a09120000", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a09120000", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806000101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a09120000", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f000101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9020001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80602d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806000101be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e900", -! "0000000462fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000368eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430002a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180292498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861801112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0268c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad104740101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f000101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000201e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80602d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000101e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a7", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e75500101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000101e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a7", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000101e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a7", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806000101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000101e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a7", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e90101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e0000", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806000101c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e0000", -! "0000000562fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba68eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba00000468eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c943a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "0162fdad9bfbf17c38ea626a9c9b8af8a748e6b4367c8494caf0ca592999e8b6ba0168eb35bc5e1ddb80a761718e63a1ecf4d4977ae22cc19fa732b85515b2a4c9430003a6637c3308b7b8e6eabc3c9c3bd672b568d73c8de4cf14ca2a004ff20c86c7ae112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0001019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f386180392498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae4112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "01836045484077cf6390184ea7cd48b460e2d0f22b2293b69633bb152314a692fb0192498a8295ea36d593eaee7cb8b55be3a3e37b8185d3807693184054cd574ae401019f5b2b1e4bf7e7318d0a1f417ca6bca36077025b3d11e074b94cd55ce9f3861802112e79af601aaa3c0a48e6c37930ccad4b5a3340a373a14d7b79697e5ee730dd458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430002000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0368c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "01ff7c360374a6508ae0904c782127ff5dce90918f3ee81cf92ef1b69afb8bf4430168c4d0f69d1f18b756c2ee875c14f1c6cd38682e715ded14bf7e3c1c5610e9fc02000146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f02050a753bb419723abb7f22486c2a7182e390f47927435bc2c2f7fda93ad10474458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b1000201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f0250c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "018b16cd3ec44875e4856e30344c0b4a68a6f929a68be5117b225b80926301e7b10150c0b43061c39191c3ec529734328b7f9cafeb6fd162cc49a4495442d9499a2d0201aed51ae31f597f976bac0f62cd5e563203ead4b5202d6459c5d45466dd737af20146c2fe50e8c66a8b402bdf071f52c7f509f7a04597f31886b2823e288a936d9f01458cab4492ce89c6b50161e0583c2115e7900db964a53b49e152828d6a3991af00", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965300030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80603d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e7550305205dbbecab7b01ec2538467c2fe41f7845eb45487bcf2f7d7bd52207f644100", -! "0170ffdd5fa0f3aea18bd4700f1ac2e2e03cf5d4b7b857e8dd93b862a8319b965301d81ef64a0063573d80cd32222d8d04debbe807345ad7af2e9edf0f44bdfaf817030000016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80602a1e12cd7bb8d53016cbf0729cfc1bead8759a9e97a7eb50a416a27ced07e7550305205dbbecab7b01ec2538467c2fe41f7845eb45487bcf2f7d7bd52207f644100", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b000301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060204e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba3305205dbbecab7b01ec2538467c2fe41f7845eb45487bcf2f7d7bd52207f644100", -! "018b92a4ec694271fe1b16cc0ea8a433bf19e78eb5ca733cc137f38e5ecb05789b0104e963ab731e4aaaaaf931c3c039ea8c9d7904163936e19a8929434da9adeba30301fe190d5e3beaf1084c1b1cb6621d262c0cd8cd16454ef0188441abf05d356a4100016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a80601305205dbbecab7b01ec2538467c2fe41f7845eb45487bcf2f7d7bd52207f644100", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a091200030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806021880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e92f7a96ecc725694533a999db6786f6016bcfdca5c9353151837faf43d93c50ef00", -! "01be3f6c181f162824191ecf1f78cae3ffb0ddfda671bb93277ce6ebc9201a0912011880967fc8226380a849c63532bba67990f7d0a10e9c90b848f58d634957c6e9030001ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a806012f7a96ecc725694533a999db6786f6016bcfdca5c9353151837faf43d93c50ef00", -! "01c465bb2893cba233351094f259396301c23d73a6cf6f92bc63428a43f0dd8f8e000301e97f16ad143359999c90a7d2a3e7daa94ad980842226d9323d3f4f0ab62460a701ec4b1458a3cf805199803a1231e906ba095f969a5775ca4ac73348473e70f625016cbbfc183a1017859c6a088838ae487be84321274a039773a35b434b7610a8060184c834e7cb38d6f08d82f5cf4839b8920185174b11c7af771fd38dd02b206a2000" -! ] -diff -crB ./src/test/rpc_wallet_tests.cpp ../../komodo-jl777/src/test/rpc_wallet_tests.cpp -*** ./src/test/rpc_wallet_tests.cpp 2017-01-03 10:40:50.419339691 +0000 ---- ../../komodo-jl777/src/test/rpc_wallet_tests.cpp 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 295,307 **** - BOOST_CHECK_THROW(CallRPC("z_listreceivedbyaddress tnRZ8bPq2pff3xBWhTJhNkVUkm2uhzksDeW5PvEa7aFKGT9Qi3YgTALZfjaY4jU3HLVKBtHdSXxoPoLA3naMPcHBcY88FcF 1"), runtime_error); - } - - /* - * This test covers RPC command z_exportwallet - */ - BOOST_AUTO_TEST_CASE(rpc_wallet_z_exportwallet) - { - LOCK2(cs_main, pwalletMain->cs_wallet); -! - // wallet should be empty - std::set addrs; - pwalletMain->GetPaymentAddresses(addrs); ---- 295,353 ---- - BOOST_CHECK_THROW(CallRPC("z_listreceivedbyaddress tnRZ8bPq2pff3xBWhTJhNkVUkm2uhzksDeW5PvEa7aFKGT9Qi3YgTALZfjaY4jU3HLVKBtHdSXxoPoLA3naMPcHBcY88FcF 1"), runtime_error); - } - -+ /** -+ * This test covers RPC command z_validateaddress -+ */ -+ BOOST_AUTO_TEST_CASE(rpc_wallet_z_validateaddress) -+ { -+ SelectParams(CBaseChainParams::MAIN); -+ -+ LOCK2(cs_main, pwalletMain->cs_wallet); -+ -+ Value retValue; -+ -+ // Check number of args -+ BOOST_CHECK_THROW(CallRPC("z_validateaddress"), runtime_error); -+ BOOST_CHECK_THROW(CallRPC("z_validateaddress toomany args"), runtime_error); -+ -+ // Wallet should be empty -+ std::set addrs; -+ pwalletMain->GetPaymentAddresses(addrs); -+ BOOST_CHECK(addrs.size()==0); -+ -+ // This address is not valid, it belongs to another network -+ BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress ztaaga95QAPyp1kSQ1hD2kguCpzyMHjxWZqaYDEkzbvo7uYQYAw2S8X4Kx98AvhhofMtQL8PAXKHuZsmhRcanavKRKmdCzk")); -+ Object resultObj = retValue.get_obj(); -+ bool b = find_value(resultObj, "isvalid").get_bool(); -+ BOOST_CHECK_EQUAL(b, false); -+ -+ // This address is valid, but the spending key is not in this wallet -+ BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress zcfA19SDAKRYHLoRDoShcoz4nPohqWxuHcqg8WAxsiB2jFrrs6k7oSvst3UZvMYqpMNSRBkxBsnyjjngX5L55FxMzLKach8")); -+ resultObj = retValue.get_obj(); -+ b = find_value(resultObj, "isvalid").get_bool(); -+ BOOST_CHECK_EQUAL(b, true); -+ b = find_value(resultObj, "ismine").get_bool(); -+ BOOST_CHECK_EQUAL(b, false); -+ -+ // Let's import a spending key to the wallet and validate its payment address -+ BOOST_CHECK_NO_THROW(CallRPC("z_importkey SKxoWv77WGwFnUJitQKNEcD636bL4X5Gd6wWmgaA4Q9x8jZBPJXT")); -+ BOOST_CHECK_NO_THROW(retValue = CallRPC("z_validateaddress zcWsmqT4X2V4jgxbgiCzyrAfRT1vi1F4sn7M5Pkh66izzw8Uk7LBGAH3DtcSMJeUb2pi3W4SQF8LMKkU2cUuVP68yAGcomL")); -+ resultObj = retValue.get_obj(); -+ b = find_value(resultObj, "isvalid").get_bool(); -+ BOOST_CHECK_EQUAL(b, true); -+ b = find_value(resultObj, "ismine").get_bool(); -+ BOOST_CHECK_EQUAL(b, true); -+ BOOST_CHECK_EQUAL(find_value(resultObj, "payingkey").get_str(), "f5bb3c888ccc9831e3f6ba06e7528e26a312eec3acc1823be8918b6a3a5e20ad"); -+ BOOST_CHECK_EQUAL(find_value(resultObj, "transmissionkey").get_str(), "7a58c7132446564e6b810cf895c20537b3528357dc00150a8e201f491efa9c1a"); -+ } -+ - /* - * This test covers RPC command z_exportwallet - */ - BOOST_AUTO_TEST_CASE(rpc_wallet_z_exportwallet) - { - LOCK2(cs_main, pwalletMain->cs_wallet); -! - // wallet should be empty - std::set addrs; - pwalletMain->GetPaymentAddresses(addrs); -*************** -*** 774,780 **** - - BOOST_CHECK_THROW(CallRPC("z_sendmany"), runtime_error); - BOOST_CHECK_THROW(CallRPC("z_sendmany toofewargs"), runtime_error); -! BOOST_CHECK_THROW(CallRPC("z_sendmany too many args here"), runtime_error); - - // bad from address - BOOST_CHECK_THROW(CallRPC("z_sendmany " ---- 820,826 ---- - - BOOST_CHECK_THROW(CallRPC("z_sendmany"), runtime_error); - BOOST_CHECK_THROW(CallRPC("z_sendmany toofewargs"), runtime_error); -! BOOST_CHECK_THROW(CallRPC("z_sendmany just too many args here"), runtime_error); - - // bad from address - BOOST_CHECK_THROW(CallRPC("z_sendmany " -*************** -*** 795,800 **** ---- 841,867 ---- - " {\"address\":\"tmQP9L3s31cLsghVYf2Jb5MhKj1jRBPoeQn\", \"amount\":12.0} ]" - ), runtime_error); - -+ // invalid fee amount, cannot be negative -+ BOOST_CHECK_THROW(CallRPC("z_sendmany " -+ "tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ " -+ "[{\"address\":\"tmQP9L3s31cLsghVYf2Jb5MhKj1jRBPoeQn\", \"amount\":50.0}] " -+ "1 -0.0001" -+ ), runtime_error); -+ -+ // invalid fee amount, bigger than MAX_MONEY -+ BOOST_CHECK_THROW(CallRPC("z_sendmany " -+ "tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ " -+ "[{\"address\":\"tmQP9L3s31cLsghVYf2Jb5MhKj1jRBPoeQn\", \"amount\":50.0}] " -+ "1 21000001" -+ ), runtime_error); -+ -+ // fee amount is bigger than sum of outputs -+ BOOST_CHECK_THROW(CallRPC("z_sendmany " -+ "tmRr6yJonqGK23UVhrKuyvTpF8qxQQjKigJ " -+ "[{\"address\":\"tmQP9L3s31cLsghVYf2Jb5MhKj1jRBPoeQn\", \"amount\":50.0}] " -+ "1 50.00000001" -+ ), runtime_error); -+ - // memo bigger than allowed length of ZC_MEMO_SIZE - std::vector v (2 * (ZC_MEMO_SIZE+1)); // x2 for hexadecimal string format - std::fill(v.begin(),v.end(), 'A'); -diff -crB ./src/test/transaction_tests.cpp ../../komodo-jl777/src/test/transaction_tests.cpp -*** ./src/test/transaction_tests.cpp 2017-01-03 10:40:50.423339894 +0000 ---- ../../komodo-jl777/src/test/transaction_tests.cpp 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 341,349 **** - libzcash::JSOutput(addr, 50) - }; - - { - JSDescription jsdesc(*p, pubKeyHash, rt, inputs, outputs, 0, 0); -! BOOST_CHECK(jsdesc.Verify(*p, pubKeyHash)); - - CDataStream ss(SER_DISK, CLIENT_VERSION); - ss << jsdesc; ---- 341,351 ---- - libzcash::JSOutput(addr, 50) - }; - -+ auto verifier = libzcash::ProofVerifier::Strict(); -+ - { - JSDescription jsdesc(*p, pubKeyHash, rt, inputs, outputs, 0, 0); -! BOOST_CHECK(jsdesc.Verify(*p, verifier, pubKeyHash)); - - CDataStream ss(SER_DISK, CLIENT_VERSION); - ss << jsdesc; -*************** -*** 352,358 **** - ss >> jsdesc_deserialized; - - BOOST_CHECK(jsdesc_deserialized == jsdesc); -! BOOST_CHECK(jsdesc_deserialized.Verify(*p, pubKeyHash)); - } - - { ---- 354,360 ---- - ss >> jsdesc_deserialized; - - BOOST_CHECK(jsdesc_deserialized == jsdesc); -! BOOST_CHECK(jsdesc_deserialized.Verify(*p, verifier, pubKeyHash)); - } - - { -*************** -*** 365,371 **** - // Ensure that it won't verify if the root is changed. - auto test = JSDescription(*p, pubKeyHash, rt, inputs, outputs, 0, 0); - test.anchor = GetRandHash(); -! BOOST_CHECK(!test.Verify(*p, pubKeyHash)); - } - } - ---- 367,373 ---- - // Ensure that it won't verify if the root is changed. - auto test = JSDescription(*p, pubKeyHash, rt, inputs, outputs, 0, 0); - test.anchor = GetRandHash(); -! BOOST_CHECK(!test.Verify(*p, verifier, pubKeyHash)); - } - } - -diff -crB ./src/util.cpp ../../komodo-jl777/src/util.cpp -*** ./src/util.cpp 2017-01-03 10:40:50.427340097 +0000 ---- ../../komodo-jl777/src/util.cpp 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 217,222 **** ---- 217,223 ---- - - // if not debugging everything and not debugging specific category, LogPrint does nothing. - if (setCategories.count(string("")) == 0 && -+ setCategories.count(string("1")) == 0 && - setCategories.count(string(category)) == 0) - return false; - } -*************** -*** 526,532 **** - path /= BaseParams().DataDir(); - - fs::create_directories(path); -! - return path; - } - ---- 527,534 ---- - path /= BaseParams().DataDir(); - - fs::create_directories(path); -! //std::string assetpath = path + "/assets"; -! //boost::filesystem::create_directory(assetpath); - return path; - } - -Only in ../../komodo-jl777/src: utiltest.cpp -Only in ../../komodo-jl777/src: utiltest.h -diff -crB ./src/wallet/asyncrpcoperation_sendmany.cpp ../../komodo-jl777/src/wallet/asyncrpcoperation_sendmany.cpp -*** ./src/wallet/asyncrpcoperation_sendmany.cpp 2017-01-03 10:40:50.427340097 +0000 ---- ../../komodo-jl777/src/wallet/asyncrpcoperation_sendmany.cpp 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 52,60 **** - std::string fromAddress, - std::vector tOutputs, - std::vector zOutputs, -! int minDepth) : -! fromaddress_(fromAddress), t_outputs_(tOutputs), z_outputs_(zOutputs), mindepth_(minDepth) - { - if (minDepth < 0) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "Minconf cannot be negative"); - } ---- 52,63 ---- - std::string fromAddress, - std::vector tOutputs, - std::vector zOutputs, -! int minDepth, -! CAmount fee) : -! fromaddress_(fromAddress), t_outputs_(tOutputs), z_outputs_(zOutputs), mindepth_(minDepth), fee_(fee) - { -+ assert(fee_ > 0); -+ - if (minDepth < 0) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "Minconf cannot be negative"); - } -*************** -*** 149,156 **** - bool isSingleZaddrOutput = (t_outputs_.size()==0 && z_outputs_.size()==1); - bool isMultipleZaddrOutput = (t_outputs_.size()==0 && z_outputs_.size()>=1); - bool isPureTaddrOnlyTx = (isfromtaddr_ && z_outputs_.size() == 0); -! CAmount minersFee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE; -! - // When spending coinbase utxos, you can only specify a single zaddr as the change must go somewhere - // and if there are multiple zaddrs, we don't know where to send it. - if (isfromtaddr_) { ---- 152,159 ---- - bool isSingleZaddrOutput = (t_outputs_.size()==0 && z_outputs_.size()==1); - bool isMultipleZaddrOutput = (t_outputs_.size()==0 && z_outputs_.size()>=1); - bool isPureTaddrOnlyTx = (isfromtaddr_ && z_outputs_.size() == 0); -! CAmount minersFee = fee_; -! - // When spending coinbase utxos, you can only specify a single zaddr as the change must go somewhere - // and if there are multiple zaddrs, we don't know where to send it. - if (isfromtaddr_) { -*************** -*** 202,218 **** - assert(!isfromzaddr_ || t_inputs_total == 0); - - if (isfromtaddr_ && (t_inputs_total < targetAmount)) { -! throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, strprintf("Insufficient transparent funds, have %ld, need %ld", t_inputs_total, targetAmount)); - } - - if (isfromzaddr_ && (z_inputs_total < targetAmount)) { -! throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, strprintf("Insufficient protected funds, have %ld, need %ld", z_inputs_total, targetAmount)); - } - - // If from address is a taddr, select UTXOs to spend - CAmount selectedUTXOAmount = 0; - bool selectedUTXOCoinbase = false; - if (isfromtaddr_) { - std::vector selectedTInputs; - for (SendManyInputUTXO & t : t_inputs_) { - bool b = std::get<3>(t); ---- 205,233 ---- - assert(!isfromzaddr_ || t_inputs_total == 0); - - if (isfromtaddr_ && (t_inputs_total < targetAmount)) { -! throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, -! strprintf("Insufficient transparent funds, have %s, need %s", -! FormatMoney(t_inputs_total), FormatMoney(targetAmount))); - } - - if (isfromzaddr_ && (z_inputs_total < targetAmount)) { -! throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, -! strprintf("Insufficient protected funds, have %s, need %s", -! FormatMoney(z_inputs_total), FormatMoney(targetAmount))); - } - - // If from address is a taddr, select UTXOs to spend - CAmount selectedUTXOAmount = 0; - bool selectedUTXOCoinbase = false; - if (isfromtaddr_) { -+ // Get dust threshold -+ CKey secret; -+ secret.MakeNewKey(true); -+ CScript scriptPubKey = GetScriptForDestination(secret.GetPubKey().GetID()); -+ CTxOut out(CAmount(1), scriptPubKey); -+ CAmount dustThreshold = out.GetDustThreshold(minRelayTxFee); -+ CAmount dustChange = -1; -+ - std::vector selectedTInputs; - for (SendManyInputUTXO & t : t_inputs_) { - bool b = std::get<3>(t); -*************** -*** 222,230 **** - selectedUTXOAmount += std::get<2>(t); - selectedTInputs.push_back(t); - if (selectedUTXOAmount >= targetAmount) { -! break; - } - } - t_inputs_ = selectedTInputs; - t_inputs_total = selectedUTXOAmount; - ---- 237,257 ---- - selectedUTXOAmount += std::get<2>(t); - selectedTInputs.push_back(t); - if (selectedUTXOAmount >= targetAmount) { -! // Select another utxo if there is change less than the dust threshold. -! dustChange = selectedUTXOAmount - targetAmount; -! if (dustChange == 0 || dustChange >= dustThreshold) { -! break; -! } - } - } -+ -+ // If there is transparent change, is it valid or is it dust? -+ if (dustChange < dustThreshold && dustChange != 0) { -+ throw JSONRPCError(RPC_WALLET_INSUFFICIENT_FUNDS, -+ strprintf("Insufficient transparent funds, have %s, need %s more to avoid creating invalid change output %s (dust threshold is %s)", -+ FormatMoney(t_inputs_total), FormatMoney(dustThreshold - dustChange), FormatMoney(dustChange), FormatMoney(dustThreshold))); -+ } -+ - t_inputs_ = selectedTInputs; - t_inputs_total = selectedUTXOAmount; - -*************** -*** 298,304 **** - zOutputsDeque.push_back(o); - } - -! - /** - * SCENARIO #2 - * ---- 325,346 ---- - zOutputsDeque.push_back(o); - } - -! // When spending notes, take a snapshot of note witnesses and anchors as the treestate will -! // change upon arrival of new blocks which contain joinsplit transactions. This is likely -! // to happen as creating a chained joinsplit transaction can take longer than the block interval. -! if (z_inputs_.size() > 0) { -! LOCK2(cs_main, pwalletMain->cs_wallet); -! for (auto t : z_inputs_) { -! JSOutPoint jso = std::get<0>(t); -! std::vector vOutPoints = { jso }; -! uint256 inputAnchor; -! std::vector> vInputWitnesses; -! pwalletMain->GetNoteWitnesses(vOutPoints, vInputWitnesses, inputAnchor); -! jsopWitnessAnchorMap[ jso.ToString() ] = WitnessAnchorData{ vInputWitnesses[0], inputAnchor }; -! } -! } -! -! - /** - * SCENARIO #2 - * -*************** -*** 321,327 **** - if (selectedUTXOCoinbase) { - assert(isSingleZaddrOutput); - throw JSONRPCError(RPC_WALLET_ERROR, strprintf( -! "Change %ld not allowed. When protecting coinbase funds, the wallet does not allow any change as there is currently no way to specify a change address in z_sendmany.", change)); - } else { - add_taddr_change_output_to_tx(change); - LogPrint("zrpc", "%s: transparent change in transaction output (amount=%s)\n", ---- 363,371 ---- - if (selectedUTXOCoinbase) { - assert(isSingleZaddrOutput); - throw JSONRPCError(RPC_WALLET_ERROR, strprintf( -! "Change %s not allowed. When protecting coinbase funds, the wallet does not " -! "allow any change as there is currently no way to specify a change address " -! "in z_sendmany.", FormatMoney(change))); - } else { - add_taddr_change_output_to_tx(change); - LogPrint("zrpc", "%s: transparent change in transaction output (amount=%s)\n", -*************** -*** 496,510 **** - throw JSONRPCError(RPC_WALLET_ERROR, "Could not find previous JoinSplit anchor"); - } - - for (const uint256& commitment : prevJoinSplit.commitments) { - tree.append(commitment); -! previousCommitments.push_back(commitment); - } -! ZCIncrementalWitness changeWitness = tree.witness(); -! jsAnchor = changeWitness.root(); -! uint256 changeCommitment = prevJoinSplit.commitments[changeOutputIndex]; -! intermediates.insert(std::make_pair(tree.root(), tree)); -! witnesses.push_back(changeWitness); - - // Decrypt the change note's ciphertext to retrieve some data we need - ZCNoteDecryption decryptor(spendingkey_.viewing_key()); ---- 540,562 ---- - throw JSONRPCError(RPC_WALLET_ERROR, "Could not find previous JoinSplit anchor"); - } - -+ assert(changeOutputIndex != -1); -+ boost::optional changeWitness; -+ int n = 0; - for (const uint256& commitment : prevJoinSplit.commitments) { - tree.append(commitment); -! previousCommitments.push_back(commitment); -! if (!changeWitness && changeOutputIndex == n++) { -! changeWitness = tree.witness(); -! } else if (changeWitness) { -! changeWitness.get().append(commitment); -! } - } -! if (changeWitness) { -! witnesses.push_back(changeWitness); -! } -! jsAnchor = tree.root(); -! intermediates.insert(std::make_pair(tree.root(), tree)); // chained js are interstitial (found in between block boundaries) - - // Decrypt the change note's ciphertext to retrieve some data we need - ZCNoteDecryption decryptor(spendingkey_.viewing_key()); -*************** -*** 538,543 **** ---- 590,596 ---- - // - std::vector vInputNotes; - std::vector vOutPoints; -+ std::vector> vInputWitnesses; - uint256 inputAnchor; - int numInputsNeeded = (jsChange>0) ? 1 : 0; - while (numInputsNeeded++ < ZC_NUM_JS_INPUTS && zInputsDeque.size() > 0) { -*************** -*** 547,552 **** ---- 600,613 ---- - CAmount noteFunds = std::get<2>(t); - zInputsDeque.pop_front(); - -+ WitnessAnchorData wad = jsopWitnessAnchorMap[ jso.ToString() ]; -+ vInputWitnesses.push_back(wad.witness); -+ if (inputAnchor.IsNull()) { -+ inputAnchor = wad.anchor; -+ } else if (inputAnchor != wad.anchor) { -+ throw JSONRPCError(RPC_WALLET_ERROR, "Selected input notes do not share the same anchor"); -+ } -+ - vOutPoints.push_back(jso); - vInputNotes.push_back(note); - -*************** -*** 563,574 **** - - // Add history of previous commitments to witness - if (vInputNotes.size() > 0) { -! std::vector> vInputWitnesses; -! { -! LOCK(cs_main); -! pwalletMain->GetNoteWitnesses(vOutPoints, vInputWitnesses, inputAnchor); -! } -! - if (vInputWitnesses.size()==0) { - throw JSONRPCError(RPC_WALLET_ERROR, "Could not find witness for note commitment"); - } ---- 624,630 ---- - - // Add history of previous commitments to witness - if (vInputNotes.size() > 0) { -! - if (vInputWitnesses.size()==0) { - throw JSONRPCError(RPC_WALLET_ERROR, "Could not find witness for note commitment"); - } -*************** -*** 760,765 **** ---- 816,826 ---- - t_inputs_.push_back(utxo); - } - -+ // sort in ascending order, so smaller utxos appear first -+ std::sort(t_inputs_.begin(), t_inputs_.end(), [](SendManyInputUTXO i, SendManyInputUTXO j) -> bool { -+ return ( std::get<2>(i) < std::get<2>(j)); -+ }); -+ - return t_inputs_.size() > 0; - } - -*************** -*** 894,901 **** - info.vpub_new, - !this->testmode); - -! if (!(jsdesc.Verify(*pzcashParams, joinSplitPubKey_))) { -! throw std::runtime_error("error verifying joinsplit"); - } - - mtx.vjoinsplit.push_back(jsdesc); ---- 955,965 ---- - info.vpub_new, - !this->testmode); - -! { -! auto verifier = libzcash::ProofVerifier::Strict(); -! if (!(jsdesc.Verify(*pzcashParams, verifier, joinSplitPubKey_))) { -! throw std::runtime_error("error verifying joinsplit"); -! } - } - - mtx.vjoinsplit.push_back(jsdesc); -diff -crB ./src/wallet/asyncrpcoperation_sendmany.h ../../komodo-jl777/src/wallet/asyncrpcoperation_sendmany.h -*** ./src/wallet/asyncrpcoperation_sendmany.h 2017-01-03 10:40:50.427340097 +0000 ---- ../../komodo-jl777/src/wallet/asyncrpcoperation_sendmany.h 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 14,22 **** - #include "json/json_spirit_value.h" - #include "wallet.h" - - #include - -! // TODO: Compute fee based on a heuristic, e.g. (num tx output * dust threshold) + joinsplit bytes * ? - #define ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE 10000 - - using namespace libzcash; ---- 14,23 ---- - #include "json/json_spirit_value.h" - #include "wallet.h" - -+ #include - #include - -! // Default transaction fee if caller does not specify one. - #define ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE 10000 - - using namespace libzcash; -*************** -*** 41,49 **** - CAmount vpub_new = 0; - }; - - class AsyncRPCOperation_sendmany : public AsyncRPCOperation { - public: -! AsyncRPCOperation_sendmany(std::string fromAddress, std::vector tOutputs, std::vector zOutputs, int minDepth); - virtual ~AsyncRPCOperation_sendmany(); - - // We don't want to be copied or moved around ---- 42,56 ---- - CAmount vpub_new = 0; - }; - -+ // A struct to help us track the witness and anchor for a given JSOutPoint -+ struct WitnessAnchorData { -+ boost::optional witness; -+ uint256 anchor; -+ }; -+ - class AsyncRPCOperation_sendmany : public AsyncRPCOperation { - public: -! AsyncRPCOperation_sendmany(std::string fromAddress, std::vector tOutputs, std::vector zOutputs, int minDepth, CAmount fee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE); - virtual ~AsyncRPCOperation_sendmany(); - - // We don't want to be copied or moved around -*************** -*** 59,64 **** ---- 66,72 ---- - private: - friend class TEST_FRIEND_AsyncRPCOperation_sendmany; // class for unit testing - -+ CAmount fee_; - int mindepth_; - std::string fromaddress_; - bool isfromtaddr_; -*************** -*** 70,76 **** - uint256 joinSplitPubKey_; - unsigned char joinSplitPrivKey_[crypto_sign_SECRETKEYBYTES]; - -! - std::vector t_outputs_; - std::vector z_outputs_; - std::vector t_inputs_; ---- 78,86 ---- - uint256 joinSplitPubKey_; - unsigned char joinSplitPrivKey_[crypto_sign_SECRETKEYBYTES]; - -! // The key is the result string from calling JSOutPoint::ToString() -! std::unordered_map jsopWitnessAnchorMap; -! - std::vector t_outputs_; - std::vector z_outputs_; - std::vector t_inputs_; -diff -crB ./src/wallet/gtest/test_wallet.cpp ../../komodo-jl777/src/wallet/gtest/test_wallet.cpp -*** ./src/wallet/gtest/test_wallet.cpp 2017-01-03 10:40:50.431340299 +0000 ---- ../../komodo-jl777/src/wallet/gtest/test_wallet.cpp 2017-01-03 09:49:08.872507185 +0000 -*************** -*** 5,11 **** ---- 5,13 ---- - #include "base58.h" - #include "chainparams.h" - #include "main.h" -+ #include "primitives/block.h" - #include "random.h" -+ #include "utiltest.h" - #include "wallet/wallet.h" - #include "zcash/JoinSplit.hpp" - #include "zcash/Note.hpp" -*************** -*** 29,37 **** - - MOCK_METHOD2(WriteTx, bool(uint256 hash, const CWalletTx& wtx)); - MOCK_METHOD1(WriteWitnessCacheSize, bool(int64_t nWitnessCacheSize)); - }; - -! template void CWallet::WriteWitnessCache(MockWalletDB& walletdb); - - class TestWallet : public CWallet { - public: ---- 31,41 ---- - - MOCK_METHOD2(WriteTx, bool(uint256 hash, const CWalletTx& wtx)); - MOCK_METHOD1(WriteWitnessCacheSize, bool(int64_t nWitnessCacheSize)); -+ MOCK_METHOD1(WriteBestBlock, bool(const CBlockLocator& loc)); - }; - -! template void CWallet::SetBestChainINTERNAL( -! MockWalletDB& walletdb, const CBlockLocator& loc); - - class TestWallet : public CWallet { - public: -*************** -*** 50,60 **** - ZCIncrementalMerkleTree tree) { - CWallet::IncrementNoteWitnesses(pindex, pblock, tree); - } -! void DecrementNoteWitnesses() { -! CWallet::DecrementNoteWitnesses(); - } -! void WriteWitnessCache(MockWalletDB& walletdb) { -! CWallet::WriteWitnessCache(walletdb); - } - bool UpdatedNoteData(const CWalletTx& wtxIn, CWalletTx& wtx) { - return CWallet::UpdatedNoteData(wtxIn, wtx); ---- 54,64 ---- - ZCIncrementalMerkleTree tree) { - CWallet::IncrementNoteWitnesses(pindex, pblock, tree); - } -! void DecrementNoteWitnesses(const CBlockIndex* pindex) { -! CWallet::DecrementNoteWitnesses(pindex); - } -! void SetBestChain(MockWalletDB& walletdb, const CBlockLocator& loc) { -! CWallet::SetBestChainINTERNAL(walletdb, loc); - } - bool UpdatedNoteData(const CWalletTx& wtxIn, CWalletTx& wtx) { - return CWallet::UpdatedNoteData(wtxIn, wtx); -*************** -*** 65,183 **** - }; - - CWalletTx GetValidReceive(const libzcash::SpendingKey& sk, CAmount value, bool randomInputs) { -! CMutableTransaction mtx; -! mtx.nVersion = 2; // Enable JoinSplits -! mtx.vin.resize(2); -! if (randomInputs) { -! mtx.vin[0].prevout.hash = GetRandHash(); -! mtx.vin[1].prevout.hash = GetRandHash(); -! } else { -! mtx.vin[0].prevout.hash = uint256S("0000000000000000000000000000000000000000000000000000000000000001"); -! mtx.vin[1].prevout.hash = uint256S("0000000000000000000000000000000000000000000000000000000000000002"); -! } -! mtx.vin[0].prevout.n = 0; -! mtx.vin[1].prevout.n = 0; -! -! // Generate an ephemeral keypair. -! uint256 joinSplitPubKey; -! unsigned char joinSplitPrivKey[crypto_sign_SECRETKEYBYTES]; -! crypto_sign_keypair(joinSplitPubKey.begin(), joinSplitPrivKey); -! mtx.joinSplitPubKey = joinSplitPubKey; -! -! boost::array inputs = { -! libzcash::JSInput(), // dummy input -! libzcash::JSInput() // dummy input -! }; -! -! boost::array outputs = { -! libzcash::JSOutput(sk.address(), value), -! libzcash::JSOutput(sk.address(), value) -! }; -! -! boost::array output_notes; -! -! // Prepare JoinSplits -! uint256 rt; -! JSDescription jsdesc {*params, mtx.joinSplitPubKey, rt, -! inputs, outputs, value, 0, false}; -! mtx.vjoinsplit.push_back(jsdesc); -! -! // Empty output script. -! CScript scriptCode; -! CTransaction signTx(mtx); -! uint256 dataToBeSigned = SignatureHash(scriptCode, signTx, NOT_AN_INPUT, SIGHASH_ALL); -! -! // Add the signature -! assert(crypto_sign_detached(&mtx.joinSplitSig[0], NULL, -! dataToBeSigned.begin(), 32, -! joinSplitPrivKey -! ) == 0); -! -! CTransaction tx {mtx}; -! CWalletTx wtx {NULL, tx}; -! return wtx; - } - - libzcash::Note GetNote(const libzcash::SpendingKey& sk, - const CTransaction& tx, size_t js, size_t n) { -! ZCNoteDecryption decryptor {sk.viewing_key()}; -! auto hSig = tx.vjoinsplit[js].h_sig(*params, tx.joinSplitPubKey); -! auto note_pt = libzcash::NotePlaintext::decrypt( -! decryptor, -! tx.vjoinsplit[js].ciphertexts[n], -! tx.vjoinsplit[js].ephemeralKey, -! hSig, -! (unsigned char) n); -! return note_pt.note(sk.address()); - } - - CWalletTx GetValidSpend(const libzcash::SpendingKey& sk, - const libzcash::Note& note, CAmount value) { -! CMutableTransaction mtx; -! mtx.vout.resize(2); -! mtx.vout[0].nValue = value; -! mtx.vout[1].nValue = 0; -! -! // Generate an ephemeral keypair. -! uint256 joinSplitPubKey; -! unsigned char joinSplitPrivKey[crypto_sign_SECRETKEYBYTES]; -! crypto_sign_keypair(joinSplitPubKey.begin(), joinSplitPrivKey); -! mtx.joinSplitPubKey = joinSplitPubKey; -! -! // Fake tree for the unused witness -! ZCIncrementalMerkleTree tree; -! -! boost::array inputs = { -! libzcash::JSInput(tree.witness(), note, sk), -! libzcash::JSInput() // dummy input -! }; -! -! boost::array outputs = { -! libzcash::JSOutput(), // dummy output -! libzcash::JSOutput() // dummy output -! }; -! -! boost::array output_notes; -! -! // Prepare JoinSplits -! uint256 rt; -! JSDescription jsdesc {*params, mtx.joinSplitPubKey, rt, -! inputs, outputs, 0, value, false}; -! mtx.vjoinsplit.push_back(jsdesc); -! -! // Empty output script. -! CScript scriptCode; -! CTransaction signTx(mtx); -! uint256 dataToBeSigned = SignatureHash(scriptCode, signTx, NOT_AN_INPUT, SIGHASH_ALL); -! -! // Add the signature -! assert(crypto_sign_detached(&mtx.joinSplitSig[0], NULL, -! dataToBeSigned.begin(), 32, -! joinSplitPrivKey -! ) == 0); -! CTransaction tx {mtx}; -! CWalletTx wtx {NULL, tx}; -! return wtx; - } - - TEST(wallet_tests, setup_datadir_location_run_as_first_test) { ---- 69,85 ---- - }; - - CWalletTx GetValidReceive(const libzcash::SpendingKey& sk, CAmount value, bool randomInputs) { -! return GetValidReceive(*params, sk, value, randomInputs); - } - - libzcash::Note GetNote(const libzcash::SpendingKey& sk, - const CTransaction& tx, size_t js, size_t n) { -! return GetNote(*params, sk, tx, js, n); - } - - CWalletTx GetValidSpend(const libzcash::SpendingKey& sk, - const libzcash::Note& note, CAmount value) { -! return GetValidSpend(*params, sk, note, value); - } - - TEST(wallet_tests, setup_datadir_location_run_as_first_test) { -*************** -*** 656,662 **** - EXPECT_TRUE((bool) witnesses[1]); - - // Until #1302 is implemented, this should triggger an assertion -! EXPECT_DEATH(wallet.DecrementNoteWitnesses(), - "Assertion `nWitnessCacheSize > 0' failed."); - } - ---- 558,564 ---- - EXPECT_TRUE((bool) witnesses[1]); - - // Until #1302 is implemented, this should triggger an assertion -! EXPECT_DEATH(wallet.DecrementNoteWitnesses(&index), - "Assertion `nWitnessCacheSize > 0' failed."); - } - -*************** -*** 729,735 **** - - // Decrementing should give us the previous anchor - uint256 anchor3; -! wallet.DecrementNoteWitnesses(); - witnesses.clear(); - wallet.GetNoteWitnesses(notes, witnesses, anchor3); - EXPECT_FALSE((bool) witnesses[0]); ---- 631,637 ---- - - // Decrementing should give us the previous anchor - uint256 anchor3; -! wallet.DecrementNoteWitnesses(&index2); - witnesses.clear(); - wallet.GetNoteWitnesses(notes, witnesses, anchor3); - EXPECT_FALSE((bool) witnesses[0]); -*************** -*** 754,759 **** ---- 656,871 ---- - } - } - -+ TEST(wallet_tests, CachedWitnessesDecrementFirst) { -+ TestWallet wallet; -+ uint256 anchor2; -+ CBlock block2; -+ CBlockIndex index2(block2); -+ ZCIncrementalMerkleTree tree; -+ -+ auto sk = libzcash::SpendingKey::random(); -+ wallet.AddSpendingKey(sk); -+ -+ { -+ // First transaction (case tested in _empty_chain) -+ auto wtx = GetValidReceive(sk, 10, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ // First block (case tested in _empty_chain) -+ CBlock block1; -+ block1.vtx.push_back(wtx); -+ CBlockIndex index1(block1); -+ index1.nHeight = 1; -+ wallet.IncrementNoteWitnesses(&index1, &block1, tree); -+ } -+ -+ { -+ // Second transaction (case tested in _chain_tip) -+ auto wtx = GetValidReceive(sk, 50, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ std::vector notes {jsoutpt}; -+ std::vector> witnesses; -+ -+ // Second block (case tested in _chain_tip) -+ block2.vtx.push_back(wtx); -+ index2.nHeight = 2; -+ wallet.IncrementNoteWitnesses(&index2, &block2, tree); -+ // Called to fetch anchor -+ wallet.GetNoteWitnesses(notes, witnesses, anchor2); -+ } -+ -+ { -+ // Third transaction - never mined -+ auto wtx = GetValidReceive(sk, 20, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ std::vector notes {jsoutpt}; -+ std::vector> witnesses; -+ uint256 anchor3; -+ -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3); -+ EXPECT_FALSE((bool) witnesses[0]); -+ -+ // Decrementing (before the transaction has ever seen an increment) -+ // should give us the previous anchor -+ uint256 anchor4; -+ wallet.DecrementNoteWitnesses(&index2); -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor4); -+ EXPECT_FALSE((bool) witnesses[0]); -+ // Should not equal second anchor because none of these notes had witnesses -+ EXPECT_NE(anchor2, anchor4); -+ -+ // Re-incrementing with the same block should give the same result -+ uint256 anchor5; -+ wallet.IncrementNoteWitnesses(&index2, &block2, tree); -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor5); -+ EXPECT_FALSE((bool) witnesses[0]); -+ EXPECT_EQ(anchor3, anchor5); -+ } -+ } -+ -+ TEST(wallet_tests, CachedWitnessesCleanIndex) { -+ TestWallet wallet; -+ CBlock block1; -+ CBlock block2; -+ CBlock block3; -+ CBlockIndex index1(block1); -+ CBlockIndex index2(block2); -+ CBlockIndex index3(block3); -+ ZCIncrementalMerkleTree tree; -+ -+ auto sk = libzcash::SpendingKey::random(); -+ wallet.AddSpendingKey(sk); -+ -+ { -+ // First transaction (case tested in _empty_chain) -+ auto wtx = GetValidReceive(sk, 10, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ // First block (case tested in _empty_chain) -+ block1.vtx.push_back(wtx); -+ index1.nHeight = 1; -+ wallet.IncrementNoteWitnesses(&index1, &block1, tree); -+ } -+ -+ { -+ // Second transaction (case tested in _chain_tip) -+ auto wtx = GetValidReceive(sk, 50, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ // Second block (case tested in _chain_tip) -+ block2.vtx.push_back(wtx); -+ index2.nHeight = 2; -+ wallet.IncrementNoteWitnesses(&index2, &block2, tree); -+ } -+ -+ { -+ // Third transaction -+ auto wtx = GetValidReceive(sk, 20, true); -+ auto note = GetNote(sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ -+ std::vector notes {jsoutpt}; -+ std::vector> witnesses; -+ uint256 anchor3; -+ -+ // Third block -+ block3.vtx.push_back(wtx); -+ index3.nHeight = 3; -+ wallet.IncrementNoteWitnesses(&index3, &block3, tree); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3); -+ -+ // Now pretend we are reindexing: the chain is cleared, and each block is -+ // used to increment witnesses again. -+ wallet.IncrementNoteWitnesses(&index1, &block1, tree); -+ uint256 anchor3a; -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3a); -+ EXPECT_TRUE((bool) witnesses[0]); -+ // Should equal third anchor because witness cache unaffected -+ EXPECT_EQ(anchor3, anchor3a); -+ -+ wallet.IncrementNoteWitnesses(&index2, &block2, tree); -+ uint256 anchor3b; -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3b); -+ EXPECT_TRUE((bool) witnesses[0]); -+ EXPECT_EQ(anchor3, anchor3b); -+ -+ // Pretend a reorg happened that was recorded in the block files -+ wallet.DecrementNoteWitnesses(&index2); -+ uint256 anchor3c; -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3c); -+ EXPECT_TRUE((bool) witnesses[0]); -+ EXPECT_EQ(anchor3, anchor3c); -+ -+ wallet.IncrementNoteWitnesses(&index2, &block2, tree); -+ uint256 anchor3d; -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3d); -+ EXPECT_TRUE((bool) witnesses[0]); -+ EXPECT_EQ(anchor3, anchor3d); -+ -+ wallet.IncrementNoteWitnesses(&index3, &block3, tree); -+ uint256 anchor3e; -+ witnesses.clear(); -+ wallet.GetNoteWitnesses(notes, witnesses, anchor3e); -+ EXPECT_TRUE((bool) witnesses[0]); -+ EXPECT_EQ(anchor3, anchor3e); -+ } -+ } -+ - TEST(wallet_tests, ClearNoteWitnessCache) { - TestWallet wallet; - -*************** -*** 761,766 **** ---- 873,879 ---- - wallet.AddSpendingKey(sk); - - auto wtx = GetValidReceive(sk, 10, true); -+ auto hash = wtx.GetHash(); - auto note = GetNote(sk, wtx, 0, 0); - auto nullifier = note.nullifier(sk); - -*************** -*** 774,779 **** ---- 887,894 ---- - // Pretend we mined the tx by adding a fake witness - ZCIncrementalMerkleTree tree; - wtx.mapNoteData[jsoutpt].witnesses.push_front(tree.witness()); -+ wtx.mapNoteData[jsoutpt].witnessHeight = 1; -+ wallet.nWitnessCacheSize = 1; - - wallet.AddToWallet(wtx, true, NULL); - -*************** -*** 785,790 **** ---- 900,907 ---- - wallet.GetNoteWitnesses(notes, witnesses, anchor2); - EXPECT_TRUE((bool) witnesses[0]); - EXPECT_FALSE((bool) witnesses[1]); -+ EXPECT_EQ(1, wallet.mapWallet[hash].mapNoteData[jsoutpt].witnessHeight); -+ EXPECT_EQ(1, wallet.nWitnessCacheSize); - - // After clearing, we should not have a witness for either note - wallet.ClearNoteWitnessCache(); -*************** -*** 792,802 **** ---- 909,922 ---- - wallet.GetNoteWitnesses(notes, witnesses, anchor2); - EXPECT_FALSE((bool) witnesses[0]); - EXPECT_FALSE((bool) witnesses[1]); -+ EXPECT_EQ(-1, wallet.mapWallet[hash].mapNoteData[jsoutpt].witnessHeight); -+ EXPECT_EQ(0, wallet.nWitnessCacheSize); - } - - TEST(wallet_tests, WriteWitnessCache) { - TestWallet wallet; - MockWalletDB walletdb; -+ CBlockLocator loc; - - auto sk = libzcash::SpendingKey::random(); - wallet.AddSpendingKey(sk); -*************** -*** 807,813 **** - // TxnBegin fails - EXPECT_CALL(walletdb, TxnBegin()) - .WillOnce(Return(false)); -! wallet.WriteWitnessCache(walletdb); - EXPECT_CALL(walletdb, TxnBegin()) - .WillRepeatedly(Return(true)); - ---- 927,933 ---- - // TxnBegin fails - EXPECT_CALL(walletdb, TxnBegin()) - .WillOnce(Return(false)); -! wallet.SetBestChain(walletdb, loc); - EXPECT_CALL(walletdb, TxnBegin()) - .WillRepeatedly(Return(true)); - -*************** -*** 816,829 **** - .WillOnce(Return(false)); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.WriteWitnessCache(walletdb); - - // WriteTx throws - EXPECT_CALL(walletdb, WriteTx(wtx.GetHash(), wtx)) - .WillOnce(ThrowLogicError()); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.WriteWitnessCache(walletdb); - EXPECT_CALL(walletdb, WriteTx(wtx.GetHash(), wtx)) - .WillRepeatedly(Return(true)); - ---- 936,949 ---- - .WillOnce(Return(false)); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.SetBestChain(walletdb, loc); - - // WriteTx throws - EXPECT_CALL(walletdb, WriteTx(wtx.GetHash(), wtx)) - .WillOnce(ThrowLogicError()); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.SetBestChain(walletdb, loc); - EXPECT_CALL(walletdb, WriteTx(wtx.GetHash(), wtx)) - .WillRepeatedly(Return(true)); - -*************** -*** 832,857 **** - .WillOnce(Return(false)); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.WriteWitnessCache(walletdb); - - // WriteWitnessCacheSize throws - EXPECT_CALL(walletdb, WriteWitnessCacheSize(0)) - .WillOnce(ThrowLogicError()); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.WriteWitnessCache(walletdb); - EXPECT_CALL(walletdb, WriteWitnessCacheSize(0)) - .WillRepeatedly(Return(true)); - - // TxCommit fails - EXPECT_CALL(walletdb, TxnCommit()) - .WillOnce(Return(false)); -! wallet.WriteWitnessCache(walletdb); - EXPECT_CALL(walletdb, TxnCommit()) - .WillRepeatedly(Return(true)); - - // Everything succeeds -! wallet.WriteWitnessCache(walletdb); - } - - TEST(wallet_tests, UpdateNullifierNoteMap) { ---- 952,993 ---- - .WillOnce(Return(false)); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.SetBestChain(walletdb, loc); - - // WriteWitnessCacheSize throws - EXPECT_CALL(walletdb, WriteWitnessCacheSize(0)) - .WillOnce(ThrowLogicError()); - EXPECT_CALL(walletdb, TxnAbort()) - .Times(1); -! wallet.SetBestChain(walletdb, loc); - EXPECT_CALL(walletdb, WriteWitnessCacheSize(0)) - .WillRepeatedly(Return(true)); - -+ // WriteBestBlock fails -+ EXPECT_CALL(walletdb, WriteBestBlock(loc)) -+ .WillOnce(Return(false)); -+ EXPECT_CALL(walletdb, TxnAbort()) -+ .Times(1); -+ wallet.SetBestChain(walletdb, loc); -+ -+ // WriteBestBlock throws -+ EXPECT_CALL(walletdb, WriteBestBlock(loc)) -+ .WillOnce(ThrowLogicError()); -+ EXPECT_CALL(walletdb, TxnAbort()) -+ .Times(1); -+ wallet.SetBestChain(walletdb, loc); -+ EXPECT_CALL(walletdb, WriteBestBlock(loc)) -+ .WillRepeatedly(Return(true)); -+ - // TxCommit fails - EXPECT_CALL(walletdb, TxnCommit()) - .WillOnce(Return(false)); -! wallet.SetBestChain(walletdb, loc); - EXPECT_CALL(walletdb, TxnCommit()) - .WillRepeatedly(Return(true)); - - // Everything succeeds -! wallet.SetBestChain(walletdb, loc); - } - - TEST(wallet_tests, UpdateNullifierNoteMap) { -*************** -*** 913,918 **** ---- 1049,1055 ---- - // Pretend we mined the tx by adding a fake witness - ZCIncrementalMerkleTree tree; - wtx.mapNoteData[jsoutpt].witnesses.push_front(tree.witness()); -+ wtx.mapNoteData[jsoutpt].witnessHeight = 100; - - // Now pretend we added the key for the second note, and - // the tx was "added" to the wallet again to update it. -*************** -*** 925,935 **** ---- 1062,1074 ---- - // The txs should initially be different - EXPECT_NE(wtx.mapNoteData, wtx2.mapNoteData); - EXPECT_EQ(1, wtx.mapNoteData[jsoutpt].witnesses.size()); -+ EXPECT_EQ(100, wtx.mapNoteData[jsoutpt].witnessHeight); - - // After updating, they should be the same - EXPECT_TRUE(wallet.UpdatedNoteData(wtx2, wtx)); - EXPECT_EQ(wtx.mapNoteData, wtx2.mapNoteData); - EXPECT_EQ(1, wtx.mapNoteData[jsoutpt].witnesses.size()); -+ EXPECT_EQ(100, wtx.mapNoteData[jsoutpt].witnessHeight); - // TODO: The new note should get witnessed (but maybe not here) (#1350) - } - -diff -crB ./src/wallet/rpcwallet.cpp ../../komodo-jl777/src/wallet/rpcwallet.cpp -*** ./src/wallet/rpcwallet.cpp 2017-01-03 10:40:50.431340299 +0000 ---- ../../komodo-jl777/src/wallet/rpcwallet.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 2622,2627 **** ---- 2622,2633 ---- - sample_times.push_back(benchmark_verify_equihash()); - } else if (benchmarktype == "validatelargetx") { - sample_times.push_back(benchmark_large_tx()); -+ } else if (benchmarktype == "trydecryptnotes") { -+ int nAddrs = params[2].get_int(); -+ sample_times.push_back(benchmark_try_decrypt_notes(nAddrs)); -+ } else if (benchmarktype == "incnotewitnesses") { -+ int nTxs = params[2].get_int(); -+ sample_times.push_back(benchmark_increment_note_witnesses(nTxs)); - } else { - throw JSONRPCError(RPC_TYPE_ERROR, "Invalid benchmarktype"); - } -*************** -*** 2849,2855 **** - vpub_old, - vpub_new); - -! assert(jsdesc.Verify(*pzcashParams, joinSplitPubKey)); - - mtx.vjoinsplit.push_back(jsdesc); - ---- 2855,2864 ---- - vpub_old, - vpub_new); - -! { -! auto verifier = libzcash::ProofVerifier::Strict(); -! assert(jsdesc.Verify(*pzcashParams, verifier, joinSplitPubKey)); -! } - - mtx.vjoinsplit.push_back(jsdesc); - -*************** -*** 3310,3326 **** - return ret; - } - - Value z_sendmany(const Array& params, bool fHelp) - { - if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; - -! if (fHelp || params.size() < 2 || params.size() > 3) - throw runtime_error( -! "z_sendmany \"fromaddress\" [{\"address\":... ,\"amount\":...},...] ( minconf )\n" - "\nSend multiple times. Amounts are double-precision floating point numbers." - "\nChange from a taddr flows to a new taddr address, while change from zaddr returns to itself." -! "\nWhen sending coinbase UTXOs to a zaddr, change is not alllowed. The entire value of the UTXO(s) must be consumed." - + HelpRequiringPassphrase() + "\n" - "\nArguments:\n" - "1. \"fromaddress\" (string, required) The taddr or zaddr to send the funds from.\n" ---- 3319,3347 ---- - return ret; - } - -+ -+ // Here we define the maximum number of zaddr outputs that can be included in a transaction. -+ // If input notes are small, we might actually require more than one joinsplit per zaddr output. -+ // For now though, we assume we use one joinsplit per zaddr output (and the second output note is change). -+ // We reduce the result by 1 to ensure there is room for non-joinsplit CTransaction data. -+ #define Z_SENDMANY_MAX_ZADDR_OUTPUTS ((MAX_TX_SIZE / JSDescription().GetSerializeSize(SER_NETWORK, PROTOCOL_VERSION)) - 1) -+ -+ // transaction.h comment: spending taddr output requires CTxIn >= 148 bytes and typical taddr txout is 34 bytes -+ #define CTXIN_SPEND_DUST_SIZE 148 -+ #define CTXOUT_REGULAR_SIZE 34 -+ - Value z_sendmany(const Array& params, bool fHelp) - { - if (!EnsureWalletIsAvailable(fHelp)) - return Value::null; - -! if (fHelp || params.size() < 2 || params.size() > 4) - throw runtime_error( -! "z_sendmany \"fromaddress\" [{\"address\":... ,\"amount\":...},...] ( minconf ) ( fee )\n" - "\nSend multiple times. Amounts are double-precision floating point numbers." - "\nChange from a taddr flows to a new taddr address, while change from zaddr returns to itself." -! "\nWhen sending coinbase UTXOs to a zaddr, change is not allowed. The entire value of the UTXO(s) must be consumed." -! + strprintf("\nCurrently, the maximum number of zaddr outputs is %d due to transaction size limits.\n", Z_SENDMANY_MAX_ZADDR_OUTPUTS) - + HelpRequiringPassphrase() + "\n" - "\nArguments:\n" - "1. \"fromaddress\" (string, required) The taddr or zaddr to send the funds from.\n" -*************** -*** 3331,3336 **** ---- 3352,3359 ---- - " \"memo\":memo (string, optional) If the address is a zaddr, raw data represented in hexadecimal string format\n" - " }, ... ]\n" - "3. minconf (numeric, optional, default=1) Only use funds confirmed at least this many times.\n" -+ "4. fee (numeric, optional, default=" -+ + strprintf("%s", FormatMoney(ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE)) + ") The fee amount to attach to this transaction.\n" - "\nResult:\n" - "\"operationid\" (string) An operationid to pass to z_getoperationstatus to get the result of the operation.\n" - ); -*************** -*** 3371,3376 **** ---- 3394,3400 ---- - // Recipients - std::vector taddrRecipients; - std::vector zaddrRecipients; -+ CAmount nTotalOut = 0; - - BOOST_FOREACH(Value& output, outputs) - { -*************** -*** 3426,3431 **** ---- 3450,3481 ---- - } else { - taddrRecipients.push_back( SendManyRecipient(address, nAmount, memo) ); - } -+ -+ nTotalOut += nAmount; -+ } -+ -+ // Check the number of zaddr outputs does not exceed the limit. -+ if (zaddrRecipients.size() > Z_SENDMANY_MAX_ZADDR_OUTPUTS) { -+ throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, too many zaddr outputs"); -+ } -+ -+ // As a sanity check, estimate and verify that the size of the transaction will be valid. -+ // Depending on the input notes, the actual tx size may turn out to be larger and perhaps invalid. -+ size_t txsize = 0; -+ CMutableTransaction mtx; -+ mtx.nVersion = 2; -+ for (int i = 0; i < zaddrRecipients.size(); i++) { -+ mtx.vjoinsplit.push_back(JSDescription()); -+ } -+ CTransaction tx(mtx); -+ txsize += tx.GetSerializeSize(SER_NETWORK, tx.nVersion); -+ if (fromTaddr) { -+ txsize += CTXIN_SPEND_DUST_SIZE; -+ txsize += CTXOUT_REGULAR_SIZE; // There will probably be taddr change -+ } -+ txsize += CTXOUT_REGULAR_SIZE * taddrRecipients.size(); -+ if (txsize > MAX_TX_SIZE) { -+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Too many outputs, size of raw transaction would be larger than limit of %d bytes", MAX_TX_SIZE )); - } - - // Minimum confirmations -*************** -*** 3437,3445 **** - throw JSONRPCError(RPC_INVALID_PARAMETER, "Minimum number of confirmations cannot be less than 0"); - } - - // Create operation and add to global queue - std::shared_ptr q = getAsyncRPCQueue(); -! std::shared_ptr operation( new AsyncRPCOperation_sendmany(fromaddress, taddrRecipients, zaddrRecipients, nMinDepth) ); - q->addOperation(operation); - AsyncRPCOperationId operationId = operation->getId(); - return operationId; ---- 3487,3505 ---- - throw JSONRPCError(RPC_INVALID_PARAMETER, "Minimum number of confirmations cannot be less than 0"); - } - -+ // Fee in Zatoshis, not currency format) -+ CAmount nFee = ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE; -+ if (params.size() > 3) { -+ nFee = AmountFromValue( params[3] ); -+ // Check that the user specified fee is sane. -+ if (nFee > nTotalOut) { -+ throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Fee %s is greater than the sum of outputs %s", FormatMoney(nFee), FormatMoney(nTotalOut))); -+ } -+ } -+ - // Create operation and add to global queue - std::shared_ptr q = getAsyncRPCQueue(); -! std::shared_ptr operation( new AsyncRPCOperation_sendmany(fromaddress, taddrRecipients, zaddrRecipients, nMinDepth, nFee) ); - q->addOperation(operation); - AsyncRPCOperationId operationId = operation->getId(); - return operationId; -diff -crB ./src/wallet/wallet.cpp ../../komodo-jl777/src/wallet/wallet.cpp -*** ./src/wallet/wallet.cpp 2017-01-03 10:40:50.431340299 +0000 ---- ../../komodo-jl777/src/wallet/wallet.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 373,386 **** - if (added) { - IncrementNoteWitnesses(pindex, pblock, tree); - } else { -! DecrementNoteWitnesses(); - } - } - - void CWallet::SetBestChain(const CBlockLocator& loc) - { - CWalletDB walletdb(strWalletFile); -! walletdb.WriteBestBlock(loc); - } - - bool CWallet::SetMinVersion(enum WalletFeature nVersion, CWalletDB* pwalletdbIn, bool fExplicit) ---- 373,386 ---- - if (added) { - IncrementNoteWitnesses(pindex, pblock, tree); - } else { -! DecrementNoteWitnesses(pindex); - } - } - - void CWallet::SetBestChain(const CBlockLocator& loc) - { - CWalletDB walletdb(strWalletFile); -! SetBestChainINTERNAL(walletdb, loc); - } - - bool CWallet::SetMinVersion(enum WalletFeature nVersion, CWalletDB* pwalletdbIn, bool fExplicit) -*************** -*** 630,637 **** ---- 630,639 ---- - for (std::pair& wtxItem : mapWallet) { - for (mapNoteData_t::value_type& item : wtxItem.second.mapNoteData) { - item.second.witnesses.clear(); -+ item.second.witnessHeight = -1; - } - } -+ nWitnessCacheSize = 0; - } - - void CWallet::IncrementNoteWitnesses(const CBlockIndex* pindex, -*************** -*** 648,654 **** - // Only increment witnesses that are behind the current height - if (nd->witnessHeight < pindex->nHeight) { - // Witnesses being incremented should always be either -1 -! // (never incremented) or one below pindex - assert((nd->witnessHeight == -1) || - (nd->witnessHeight == pindex->nHeight - 1)); - // Copy the witness for the previous block if we have one ---- 650,656 ---- - // Only increment witnesses that are behind the current height - if (nd->witnessHeight < pindex->nHeight) { - // Witnesses being incremented should always be either -1 -! // (never incremented or decremented) or one below pindex - assert((nd->witnessHeight == -1) || - (nd->witnessHeight == pindex->nHeight - 1)); - // Copy the witness for the previous block if we have one -*************** -*** 739,752 **** - } - } - -! if (fFileBacked) { -! CWalletDB walletdb(strWalletFile); -! WriteWitnessCache(walletdb); -! } - } - } - -! void CWallet::DecrementNoteWitnesses() - { - extern int32_t KOMODO_REWIND; - { ---- 741,753 ---- - } - } - -! // For performance reasons, we write out the witness cache in -! // CWallet::SetBestChain() (which also ensures that overall consistency -! // of the wallet.dat is maintained). - } - } - -! void CWallet::DecrementNoteWitnesses(const CBlockIndex* pindex) - { - extern int32_t KOMODO_REWIND; - { -*************** -*** 756,765 **** - CNoteData* nd = &(item.second); - // Check the validity of the cache - assert(nWitnessCacheSize >= nd->witnesses.size()); -! if (nd->witnesses.size() > 0) { -! nd->witnesses.pop_front(); - } -- nd->witnessHeight -= 1; - } - } - nWitnessCacheSize -= 1; ---- 757,775 ---- - CNoteData* nd = &(item.second); - // Check the validity of the cache - assert(nWitnessCacheSize >= nd->witnesses.size()); -! // Only increment witnesses that are not above the current height -! if (nd->witnessHeight <= pindex->nHeight) { -! // Witnesses being decremented should always be either -1 -! // (never incremented or decremented) or equal to pindex -! assert((nd->witnessHeight == -1) || -! (nd->witnessHeight == pindex->nHeight)); -! if (nd->witnesses.size() > 0) { -! nd->witnesses.pop_front(); -! } -! // pindex is the block being removed, so the new witness cache -! // height is one below it. -! nd->witnessHeight = pindex->nHeight - 1; - } - } - } - nWitnessCacheSize -= 1; -*************** -*** 770,776 **** - assert(nWitnessCacheSize >= nd->witnesses.size()); - } - } -- // TODO: If nWitnessCache is zero, we need to regenerate the caches (#1302) - if ( nWitnessCacheSize <= 0 ) - { - extern char ASSETCHAINS_SYMBOL[16]; ---- 780,785 ---- -*************** -*** 778,787 **** - } - if ( KOMODO_REWIND == 0 ) - assert(nWitnessCacheSize > 0); -! if (fFileBacked) { -! CWalletDB walletdb(strWalletFile); -! WriteWitnessCache(walletdb); -! } - } - } - ---- 787,799 ---- - } - if ( KOMODO_REWIND == 0 ) - assert(nWitnessCacheSize > 0); -! //if (fFileBacked) { -! // CWalletDB walletdb(strWalletFile); -! // WriteWitnessCache(walletdb); -! //} -! // For performance reasons, we write out the witness cache in -! // CWallet::SetBestChain() (which also ensures that overall consistency -! // of the wallet.dat is maintained). - } - } - -*************** -*** 1109,1114 **** ---- 1121,1127 ---- - tmp.at(nd.first).witnesses.assign( - nd.second.witnesses.cbegin(), nd.second.witnesses.cend()); - } -+ tmp.at(nd.first).witnessHeight = nd.second.witnessHeight; - } - // Now copy over the updated note data - wtx.mapNoteData = tmp; -diff -crB ./src/wallet/wallet.h ../../komodo-jl777/src/wallet/wallet.h -*** ./src/wallet/wallet.h 2017-01-03 10:40:50.431340299 +0000 ---- ../../komodo-jl777/src/wallet/wallet.h 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 225,231 **** - */ - std::list witnesses; - -! /** Block height corresponding to the most current witness. */ - int witnessHeight; - - CNoteData() : address(), nullifier(), witnessHeight {-1} { } ---- 225,239 ---- - */ - std::list witnesses; - -! /** -! * Block height corresponding to the most current witness. -! * -! * When we first create a CNoteData in CWallet::FindMyNotes, this is set to -! * -1 as a placeholder. The next time CWallet::ChainTip is called, we can -! * determine what height the witness cache for this note is valid for (even -! * if no witnesses were cached), and so can set the correct value in -! * CWallet::IncrementNoteWitnesses and CWallet::DecrementNoteWitnesses. -! */ - int witnessHeight; - - CNoteData() : address(), nullifier(), witnessHeight {-1} { } -*************** -*** 620,660 **** - void ClearNoteWitnessCache(); - - protected: - void IncrementNoteWitnesses(const CBlockIndex* pindex, - const CBlock* pblock, - ZCIncrementalMerkleTree& tree); -! void DecrementNoteWitnesses(); - - template -! void WriteWitnessCache(WalletDB& walletdb) { - if (!walletdb.TxnBegin()) { - // This needs to be done atomically, so don't do it at all -! LogPrintf("WriteWitnessCache(): Couldn't start atomic write\n"); - return; - } - try { - for (std::pair& wtxItem : mapWallet) { - if (!walletdb.WriteTx(wtxItem.first, wtxItem.second)) { -! LogPrintf("WriteWitnessCache(): Failed to write CWalletTx, aborting atomic write\n"); - walletdb.TxnAbort(); - return; - } - } - if (!walletdb.WriteWitnessCacheSize(nWitnessCacheSize)) { -! LogPrintf("WriteWitnessCache(): Failed to write nWitnessCacheSize, aborting atomic write\n"); - walletdb.TxnAbort(); - return; - } - } catch (const std::exception &exc) { - // Unexpected failure -! LogPrintf("WriteWitnessCache(): Unexpected error during atomic write:\n"); - LogPrintf("%s\n", exc.what()); - walletdb.TxnAbort(); - return; - } - if (!walletdb.TxnCommit()) { - // Couldn't commit all to db, but in-memory state is fine -! LogPrintf("WriteWitnessCache(): Couldn't commit atomic write\n"); - return; - } - } ---- 628,679 ---- - void ClearNoteWitnessCache(); - - protected: -+ /** -+ * pindex is the new tip being connected. -+ */ - void IncrementNoteWitnesses(const CBlockIndex* pindex, - const CBlock* pblock, - ZCIncrementalMerkleTree& tree); -! /** -! * pindex is the old tip being disconnected. -! */ -! void DecrementNoteWitnesses(const CBlockIndex* pindex); - - template -! void SetBestChainINTERNAL(WalletDB& walletdb, const CBlockLocator& loc) { - if (!walletdb.TxnBegin()) { - // This needs to be done atomically, so don't do it at all -! LogPrintf("SetBestChain(): Couldn't start atomic write\n"); - return; - } - try { - for (std::pair& wtxItem : mapWallet) { - if (!walletdb.WriteTx(wtxItem.first, wtxItem.second)) { -! LogPrintf("SetBestChain(): Failed to write CWalletTx, aborting atomic write\n"); - walletdb.TxnAbort(); - return; - } - } - if (!walletdb.WriteWitnessCacheSize(nWitnessCacheSize)) { -! LogPrintf("SetBestChain(): Failed to write nWitnessCacheSize, aborting atomic write\n"); -! walletdb.TxnAbort(); -! return; -! } -! if (!walletdb.WriteBestBlock(loc)) { -! LogPrintf("SetBestChain(): Failed to write best block, aborting atomic write\n"); - walletdb.TxnAbort(); - return; - } - } catch (const std::exception &exc) { - // Unexpected failure -! LogPrintf("SetBestChain(): Unexpected error during atomic write:\n"); - LogPrintf("%s\n", exc.what()); - walletdb.TxnAbort(); - return; - } - if (!walletdb.TxnCommit()) { - // Couldn't commit all to db, but in-memory state is fine -! LogPrintf("SetBestChain(): Couldn't commit atomic write\n"); - return; - } - } -*************** -*** 944,949 **** ---- 963,969 ---- - CAmount GetCredit(const CTransaction& tx, const isminefilter& filter) const; - CAmount GetChange(const CTransaction& tx) const; - void ChainTip(const CBlockIndex *pindex, const CBlock *pblock, ZCIncrementalMerkleTree tree, bool added); -+ /** Saves witness caches and best block locator to disk. */ - void SetBestChain(const CBlockLocator& loc); - - DBErrors LoadWallet(bool& fFirstRunRet); -diff -crB ./src/zcash/GenerateParams.cpp ../../komodo-jl777/src/zcash/GenerateParams.cpp -*** ./src/zcash/GenerateParams.cpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/GenerateParams.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 9,26 **** - return 1; - } - -! if(argc != 3) { -! std::cerr << "Usage: " << argv[0] << " provingKeyFileName verificationKeyFileName" << std::endl; - return 1; - } - - std::string pkFile = argv[1]; - std::string vkFile = argv[2]; - - auto p = ZCJoinSplit::Generate(); - - p->saveProvingKey(pkFile); - p->saveVerifyingKey(vkFile); - - delete p; - ---- 9,28 ---- - return 1; - } - -! if(argc != 4) { -! std::cerr << "Usage: " << argv[0] << " provingKeyFileName verificationKeyFileName r1csFileName" << std::endl; - return 1; - } - - std::string pkFile = argv[1]; - std::string vkFile = argv[2]; -+ std::string r1csFile = argv[3]; - - auto p = ZCJoinSplit::Generate(); - - p->saveProvingKey(pkFile); - p->saveVerifyingKey(vkFile); -+ p->saveR1CS(r1csFile); - - delete p; - -diff -crB ./src/zcash/IncrementalMerkleTree.cpp ../../komodo-jl777/src/zcash/IncrementalMerkleTree.cpp -*** ./src/zcash/IncrementalMerkleTree.cpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/IncrementalMerkleTree.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 71,76 **** ---- 71,87 ---- - } - - template -+ Hash IncrementalMerkleTree::last() const { -+ if (right) { -+ return *right; -+ } else if (left) { -+ return *left; -+ } else { -+ throw std::runtime_error("tree has no cursor"); -+ } -+ } -+ -+ template - void IncrementalMerkleTree::append(Hash obj) { - if (is_complete(Depth)) { - throw std::runtime_error("tree is full"); -diff -crB ./src/zcash/IncrementalMerkleTree.hpp ../../komodo-jl777/src/zcash/IncrementalMerkleTree.hpp -*** ./src/zcash/IncrementalMerkleTree.hpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/IncrementalMerkleTree.hpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 79,84 **** ---- 79,85 ---- - Hash root() const { - return root(Depth, std::deque()); - } -+ Hash last() const; - - IncrementalWitness witness() const { - return IncrementalWitness(*this); -*************** -*** 138,143 **** ---- 139,150 ---- - return tree.path(partial_path()); - } - -+ // Return the element being witnessed (should be a note -+ // commitment!) -+ Hash element() const { -+ return tree.last(); -+ } -+ - Hash root() const { - return tree.root(Depth, partial_path()); - } -diff -crB ./src/zcash/JoinSplit.cpp ../../komodo-jl777/src/zcash/JoinSplit.cpp -*** ./src/zcash/JoinSplit.cpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/JoinSplit.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 16,21 **** ---- 16,22 ---- - #include "libsnark/gadgetlib1/gadgets/merkle_tree/merkle_tree_check_read_gadget.hpp" - - #include "sync.h" -+ #include "amount.h" - - using namespace libsnark; - -*************** -*** 24,30 **** - #include "zcash/circuit/gadget.tcc" - - CCriticalSection cs_ParamsIO; -! CCriticalSection cs_InitializeParams; - - template - void saveToFile(std::string path, T& obj) { ---- 25,31 ---- - #include "zcash/circuit/gadget.tcc" - - CCriticalSection cs_ParamsIO; -! CCriticalSection cs_LoadKeys; - - template - void saveToFile(std::string path, T& obj) { -*************** -*** 70,91 **** - - boost::optional> pk; - boost::optional> vk; - boost::optional pkPath; - - JoinSplitCircuit() {} - ~JoinSplitCircuit() {} - -- static void initialize() { -- LOCK(cs_InitializeParams); -- -- ppzksnark_ppT::init_public_params(); -- } -- - void setProvingKeyPath(std::string path) { - pkPath = path; - } - - void loadProvingKey() { - if (!pk) { - if (!pkPath) { - throw std::runtime_error("proving key path unknown"); ---- 71,89 ---- - - boost::optional> pk; - boost::optional> vk; -+ boost::optional> vk_precomp; - boost::optional pkPath; - - JoinSplitCircuit() {} - ~JoinSplitCircuit() {} - - void setProvingKeyPath(std::string path) { - pkPath = path; - } - - void loadProvingKey() { -+ LOCK(cs_LoadKeys); -+ - if (!pk) { - if (!pkPath) { - throw std::runtime_error("proving key path unknown"); -*************** -*** 102,108 **** ---- 100,113 ---- - } - } - void loadVerifyingKey(std::string path) { -+ LOCK(cs_LoadKeys); -+ - loadFromFile(path, vk); -+ -+ processVerifyingKey(); -+ } -+ void processVerifyingKey() { -+ vk_precomp = r1cs_ppzksnark_verifier_process_vk(*vk); - } - void saveVerifyingKey(std::string path) { - if (vk) { -*************** -*** 111,132 **** - throw std::runtime_error("cannot save verifying key; key doesn't exist"); - } - } - -! void generate() { - protoboard pb; - - joinsplit_gadget g(pb); - g.generate_r1cs_constraints(); - -! const r1cs_constraint_system constraint_system = pb.get_constraint_system(); - r1cs_ppzksnark_keypair keypair = r1cs_ppzksnark_generator(constraint_system); - - pk = keypair.pk; - vk = keypair.vk; - } - - bool verify( - const ZCProof& proof, - const uint256& pubKeyHash, - const uint256& randomSeed, - const boost::array& macs, ---- 116,150 ---- - throw std::runtime_error("cannot save verifying key; key doesn't exist"); - } - } -+ void saveR1CS(std::string path) { -+ auto r1cs = generate_r1cs(); - -! saveToFile(path, r1cs); -! } -! -! r1cs_constraint_system generate_r1cs() { - protoboard pb; - - joinsplit_gadget g(pb); - g.generate_r1cs_constraints(); - -! return pb.get_constraint_system(); -! } -! -! void generate() { -! LOCK(cs_LoadKeys); -! -! const r1cs_constraint_system constraint_system = generate_r1cs(); - r1cs_ppzksnark_keypair keypair = r1cs_ppzksnark_generator(constraint_system); - - pk = keypair.pk; - vk = keypair.vk; -+ processVerifyingKey(); - } - - bool verify( - const ZCProof& proof, -+ ProofVerifier& verifier, - const uint256& pubKeyHash, - const uint256& randomSeed, - const boost::array& macs, -*************** -*** 136,142 **** - uint64_t vpub_new, - const uint256& rt - ) { -! if (!vk) { - throw std::runtime_error("JoinSplit verifying key not loaded"); - } - ---- 154,160 ---- - uint64_t vpub_new, - const uint256& rt - ) { -! if (!vk || !vk_precomp) { - throw std::runtime_error("JoinSplit verifying key not loaded"); - } - -*************** -*** 155,161 **** - vpub_new - ); - -! return r1cs_ppzksnark_verifier_strong_IC(*vk, witness, r1cs_proof); - } catch (...) { - return false; - } ---- 173,184 ---- - vpub_new - ); - -! return verifier.check( -! *vk, -! *vk_precomp, -! witness, -! r1cs_proof -! ); - } catch (...) { - return false; - } -*************** -*** 181,188 **** - throw std::runtime_error("JoinSplit proving key not loaded"); - } - -! // Compute nullifiers of inputs - for (size_t i = 0; i < NumInputs; i++) { - out_nullifiers[i] = inputs[i].nullifier(); - } - ---- 204,254 ---- - throw std::runtime_error("JoinSplit proving key not loaded"); - } - -! if (vpub_old > MAX_MONEY) { -! throw std::invalid_argument("nonsensical vpub_old value"); -! } -! -! if (vpub_new > MAX_MONEY) { -! throw std::invalid_argument("nonsensical vpub_new value"); -! } -! -! uint64_t lhs_value = vpub_old; -! uint64_t rhs_value = vpub_new; -! - for (size_t i = 0; i < NumInputs; i++) { -+ // Sanity checks of input -+ { -+ // If note has nonzero value -+ if (inputs[i].note.value != 0) { -+ // The witness root must equal the input root. -+ if (inputs[i].witness.root() != rt) { -+ throw std::invalid_argument("joinsplit not anchored to the correct root"); -+ } -+ -+ // The tree must witness the correct element -+ if (inputs[i].note.cm() != inputs[i].witness.element()) { -+ throw std::invalid_argument("witness of wrong element for joinsplit input"); -+ } -+ } -+ -+ // Ensure we have the key to this note. -+ if (inputs[i].note.a_pk != inputs[i].key.address().a_pk) { -+ throw std::invalid_argument("input note not authorized to spend with given key"); -+ } -+ -+ // Balance must be sensical -+ if (inputs[i].note.value > MAX_MONEY) { -+ throw std::invalid_argument("nonsensical input note value"); -+ } -+ -+ lhs_value += inputs[i].note.value; -+ -+ if (lhs_value > MAX_MONEY) { -+ throw std::invalid_argument("nonsensical left hand size of joinsplit balance"); -+ } -+ } -+ -+ // Compute nullifier of input - out_nullifiers[i] = inputs[i].nullifier(); - } - -*************** -*** 197,208 **** ---- 263,291 ---- - - // Compute notes for outputs - for (size_t i = 0; i < NumOutputs; i++) { -+ // Sanity checks of output -+ { -+ if (outputs[i].value > MAX_MONEY) { -+ throw std::invalid_argument("nonsensical output value"); -+ } -+ -+ rhs_value += outputs[i].value; -+ -+ if (rhs_value > MAX_MONEY) { -+ throw std::invalid_argument("nonsensical right hand side of joinsplit balance"); -+ } -+ } -+ - // Sample r - uint256 r = random_uint256(); - - out_notes[i] = outputs[i].note(phi, r, i, h_sig); - } - -+ if (lhs_value != rhs_value) { -+ throw std::invalid_argument("invalid joinsplit balance"); -+ } -+ - // Compute the output commitments - for (size_t i = 0; i < NumOutputs; i++) { - out_commitments[i] = out_notes[i].cm(); -*************** -*** 249,257 **** - ); - } - -! if (!pb.is_satisfied()) { -! throw std::invalid_argument("Constraint system not satisfied by inputs"); -! } - - // TODO: These are copies, which is not strictly necessary. - std::vector primary_input = pb.primary_input(); ---- 331,339 ---- - ); - } - -! // The constraint system must be satisfied or there is an unimplemented -! // or incorrect sanity check above. Or the constraint system is broken! -! assert(pb.is_satisfied()); - - // TODO: These are copies, which is not strictly necessary. - std::vector primary_input = pb.primary_input(); -*************** -*** 275,281 **** - template - JoinSplit* JoinSplit::Generate() - { -! JoinSplitCircuit::initialize(); - auto js = new JoinSplitCircuit(); - js->generate(); - ---- 357,363 ---- - template - JoinSplit* JoinSplit::Generate() - { -! initialize_curve_params(); - auto js = new JoinSplitCircuit(); - js->generate(); - -*************** -*** 285,291 **** - template - JoinSplit* JoinSplit::Unopened() - { -! JoinSplitCircuit::initialize(); - return new JoinSplitCircuit(); - } - ---- 367,373 ---- - template - JoinSplit* JoinSplit::Unopened() - { -! initialize_curve_params(); - return new JoinSplitCircuit(); - } - -diff -crB ./src/zcash/JoinSplit.hpp ../../komodo-jl777/src/zcash/JoinSplit.hpp -*** ./src/zcash/JoinSplit.hpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/JoinSplit.hpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 62,67 **** ---- 62,68 ---- - virtual void saveProvingKey(std::string path) = 0; - virtual void loadVerifyingKey(std::string path) = 0; - virtual void saveVerifyingKey(std::string path) = 0; -+ virtual void saveR1CS(std::string path) = 0; - - virtual ZCProof prove( - const boost::array& inputs, -*************** -*** 82,87 **** ---- 83,89 ---- - - virtual bool verify( - const ZCProof& proof, -+ ProofVerifier& verifier, - const uint256& pubKeyHash, - const uint256& randomSeed, - const boost::array& hmacs, -diff -crB ./src/zcash/Proof.cpp ../../komodo-jl777/src/zcash/Proof.cpp -*** ./src/zcash/Proof.cpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/Proof.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 1,6 **** ---- 1,7 ---- - #include "Proof.hpp" - - #include -+ #include - - #include "crypto/common.h" - #include "libsnark/common/default_types/r1cs_ppzksnark_pp.hpp" -*************** -*** 211,214 **** ---- 212,247 ---- - return p; - } - -+ std::once_flag init_public_params_once_flag; -+ -+ void initialize_curve_params() -+ { -+ std::call_once (init_public_params_once_flag, curve_pp::init_public_params); -+ } -+ -+ ProofVerifier ProofVerifier::Strict() { -+ initialize_curve_params(); -+ return ProofVerifier(true); -+ } -+ -+ ProofVerifier ProofVerifier::Disabled() { -+ initialize_curve_params(); -+ return ProofVerifier(false); -+ } -+ -+ template<> -+ bool ProofVerifier::check( -+ const r1cs_ppzksnark_verification_key& vk, -+ const r1cs_ppzksnark_processed_verification_key& pvk, -+ const r1cs_primary_input& primary_input, -+ const r1cs_ppzksnark_proof& proof -+ ) -+ { -+ if (perform_verification) { -+ return r1cs_ppzksnark_online_verifier_strong_IC(pvk, primary_input, proof); -+ } else { -+ return true; -+ } -+ } -+ - } -diff -crB ./src/zcash/Proof.hpp ../../komodo-jl777/src/zcash/Proof.hpp -*** ./src/zcash/Proof.hpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcash/Proof.hpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 235,240 **** ---- 235,276 ---- - } - }; - -+ void initialize_curve_params(); -+ -+ class ProofVerifier { -+ private: -+ bool perform_verification; -+ -+ ProofVerifier(bool perform_verification) : perform_verification(perform_verification) { } -+ -+ public: -+ // ProofVerifier should never be copied -+ ProofVerifier(const ProofVerifier&) = delete; -+ ProofVerifier& operator=(const ProofVerifier&) = delete; -+ ProofVerifier(ProofVerifier&&); -+ ProofVerifier& operator=(ProofVerifier&&); -+ -+ // Creates a verification context that strictly verifies -+ // all proofs using libsnark's API. -+ static ProofVerifier Strict(); -+ -+ // Creates a verification context that performs no -+ // verification, used when avoiding duplicate effort -+ // such as during reindexing. -+ static ProofVerifier Disabled(); -+ -+ template -+ bool check( -+ const VerificationKey& vk, -+ const ProcessedVerificationKey& pvk, -+ const PrimaryInput& pi, -+ const Proof& p -+ ); -+ }; - - } - -diff -crB ./src/zcbenchmarks.cpp ../../komodo-jl777/src/zcbenchmarks.cpp -*** ./src/zcbenchmarks.cpp 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcbenchmarks.cpp 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 17,22 **** ---- 17,23 ---- - #include "script/sign.h" - #include "sodium.h" - #include "streams.h" -+ #include "utiltest.h" - #include "wallet/wallet.h" - - #include "zcbenchmarks.h" -*************** -*** 89,95 **** - 0); - double ret = timer_stop(tv_start); - -! assert(jsdesc.Verify(*pzcashParams, pubKeyHash)); - return ret; - } - ---- 90,97 ---- - 0); - double ret = timer_stop(tv_start); - -! auto verifier = libzcash::ProofVerifier::Strict(); -! assert(jsdesc.Verify(*pzcashParams, verifier, pubKeyHash)); - return ret; - } - -*************** -*** 98,104 **** - struct timeval tv_start; - timer_start(tv_start); - uint256 pubKeyHash; -! joinsplit.Verify(*pzcashParams, pubKeyHash); - return timer_stop(tv_start); - } - ---- 100,107 ---- - struct timeval tv_start; - timer_start(tv_start); - uint256 pubKeyHash; -! auto verifier = libzcash::ProofVerifier::Strict(); -! joinsplit.Verify(*pzcashParams, verifier, pubKeyHash); - return timer_stop(tv_start); - } - -*************** -*** 223,225 **** ---- 226,301 ---- - return timer_stop(tv_start); - } - -+ double benchmark_try_decrypt_notes(size_t nAddrs) -+ { -+ CWallet wallet; -+ for (int i = 0; i < nAddrs; i++) { -+ auto sk = libzcash::SpendingKey::random(); -+ wallet.AddSpendingKey(sk); -+ } -+ -+ auto sk = libzcash::SpendingKey::random(); -+ auto tx = GetValidReceive(*pzcashParams, sk, 10, true); -+ -+ struct timeval tv_start; -+ timer_start(tv_start); -+ auto nd = wallet.FindMyNotes(tx); -+ return timer_stop(tv_start); -+ } -+ -+ double benchmark_increment_note_witnesses(size_t nTxs) -+ { -+ CWallet wallet; -+ ZCIncrementalMerkleTree tree; -+ -+ auto sk = libzcash::SpendingKey::random(); -+ wallet.AddSpendingKey(sk); -+ -+ // First block -+ CBlock block1; -+ for (int i = 0; i < nTxs; i++) { -+ auto wtx = GetValidReceive(*pzcashParams, sk, 10, true); -+ auto note = GetNote(*pzcashParams, sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ block1.vtx.push_back(wtx); -+ } -+ CBlockIndex index1(block1); -+ index1.nHeight = 1; -+ -+ // Increment to get transactions witnessed -+ wallet.ChainTip(&index1, &block1, tree, true); -+ -+ // Second block -+ CBlock block2; -+ block2.hashPrevBlock = block1.GetHash(); -+ { -+ auto wtx = GetValidReceive(*pzcashParams, sk, 10, true); -+ auto note = GetNote(*pzcashParams, sk, wtx, 0, 1); -+ auto nullifier = note.nullifier(sk); -+ -+ mapNoteData_t noteData; -+ JSOutPoint jsoutpt {wtx.GetHash(), 0, 1}; -+ CNoteData nd {sk.address(), nullifier}; -+ noteData[jsoutpt] = nd; -+ -+ wtx.SetNoteData(noteData); -+ wallet.AddToWallet(wtx, true, NULL); -+ block2.vtx.push_back(wtx); -+ } -+ CBlockIndex index2(block2); -+ index2.nHeight = 2; -+ -+ struct timeval tv_start; -+ timer_start(tv_start); -+ wallet.ChainTip(&index2, &block2, tree, true); -+ return timer_stop(tv_start); -+ } -+ -diff -crB ./src/zcbenchmarks.h ../../komodo-jl777/src/zcbenchmarks.h -*** ./src/zcbenchmarks.h 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/src/zcbenchmarks.h 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 12,16 **** ---- 12,18 ---- - extern double benchmark_verify_joinsplit(const JSDescription &joinsplit); - extern double benchmark_verify_equihash(); - extern double benchmark_large_tx(); -+ extern double benchmark_try_decrypt_notes(size_t nAddrs); -+ extern double benchmark_increment_note_witnesses(size_t nTxs); - - #endif -diff -crB ./zcutil/build-debian-package.sh ../../komodo-jl777/zcutil/build-debian-package.sh -*** ./zcutil/build-debian-package.sh 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/zcutil/build-debian-package.sh 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 23,32 **** - rm -R $BUILD_DIR - fi - - DEB_BIN=$BUILD_DIR/usr/bin - DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME - DEB_MAN=$BUILD_DIR/usr/share/man/man1 -! mkdir -p $BUILD_DIR/DEBIAN $DEB_BIN $DEB_DOC $DEB_MAN - chmod 0755 -R $BUILD_DIR/* - - # Copy control file ---- 23,33 ---- - rm -R $BUILD_DIR - fi - -+ DEB_CMP=$BUILD_DIR/etc/bash_completion.d - DEB_BIN=$BUILD_DIR/usr/bin - DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME - DEB_MAN=$BUILD_DIR/usr/share/man/man1 -! mkdir -p $BUILD_DIR/DEBIAN $DEB_CMP $DEB_BIN $DEB_DOC $DEB_MAN - chmod 0755 -R $BUILD_DIR/* - - # Copy control file -*************** -*** 48,53 **** ---- 49,57 ---- - # Copy manpages - cp $SRC_DEB/manpages/zcashd.1 $DEB_MAN - cp $SRC_DEB/manpages/zcash-cli.1 $DEB_MAN -+ # Copy bash completion files -+ cp $SRC_PATH/contrib/bitcoind.bash-completion $DEB_CMP/zcashd -+ cp $SRC_PATH/contrib/bitcoin-cli.bash-completion $DEB_CMP/zcash-cli - # Gzip files - gzip --best -n $DEB_DOC/changelog - gzip --best -n $DEB_DOC/changelog.Debian -diff -crB ./zcutil/build.sh ../../komodo-jl777/zcutil/build.sh -*** ./zcutil/build.sh 2017-01-03 10:40:50.435340501 +0000 ---- ../../komodo-jl777/zcutil/build.sh 2017-01-03 09:49:08.876507395 +0000 -*************** -*** 1,7 **** -! #!/bin/bash - - set -eu -o pipefail - - if [ "x$*" = 'x--help' ] - then - cat < Date: Thu, 17 Oct 2019 19:49:47 -0700 Subject: [PATCH 037/339] debian stuff --- contrib/debian/changelog | 240 +--------- contrib/debian/examples/HUSH3.conf | 140 ++++++ .../debian/{zcash.examples => hush.example} | 0 .../debian/{zcash.install => hush.install} | 0 .../debian/{zcash.manpages => hush.manpages} | 0 zcutil/VerusCoin.xml | 432 ------------------ zcutil/build-debian-package.sh | 13 +- 7 files changed, 148 insertions(+), 677 deletions(-) create mode 100644 contrib/debian/examples/HUSH3.conf rename contrib/debian/{zcash.examples => hush.example} (100%) rename contrib/debian/{zcash.install => hush.install} (100%) rename contrib/debian/{zcash.manpages => hush.manpages} (100%) delete mode 100644 zcutil/VerusCoin.xml diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 1dbe1cc0d..08ed69a2c 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,239 +1,5 @@ -zcash (2.0.1) stable; urgency=medium +hush (3.2.0) stable; urgency=medium - * 2.0.1 release. + * 3.2.0.1 release. - -- Zcash Company Sun, 14 Oct 2018 13:40:30 -0700 - -zcash (2.0.1~rc1) stable; urgency=medium - - * 2.0.1-rc1 release. - - -- Zcash Company Mon, 08 Oct 2018 12:40:54 -0700 - -zcash (2.0.0) stable; urgency=medium - - * 2.0.0 release. - - -- Zcash Company Wed, 15 Aug 2018 17:57:50 -0700 - -zcash (2.0.0~rc1) stable; urgency=medium - - * 2.0.0-rc1 release. - - -- Zcash Company Thu, 09 Aug 2018 16:56:56 +0000 - -zcash (1.1.2) stable; urgency=medium - - * 1.1.2 release. - - -- Zcash Company Sun, 01 Jul 2018 20:12:33 -0700 - -zcash (1.1.2~rc1) stable; urgency=medium - - * 1.1.2-rc1 release. - - -- Zcash Company Fri, 22 Jun 2018 17:03:41 -0700 - -zcash (1.1.1) stable; urgency=medium - - * 1.1.1 release. - - -- Zcash Company Fri, 25 May 2018 15:49:34 +1200 - -zcash (1.1.1~rc2) stable; urgency=medium - - * 1.1.1-rc2 release. - - -- Zcash Company Wed, 23 May 2018 09:28:50 -0700 - -zcash (1.1.1~rc1) stable; urgency=medium - - * 1.1.1-rc1 release. - - -- Zcash Company Sat, 19 May 2018 10:16:14 +1200 - -zcash (1.1.0) stable; urgency=medium - - * 1.1.0 release. - - -- Zcash Company Wed, 11 Apr 2018 20:15:29 -0600 - -zcash (1.1.0~rc1) stable; urgency=medium - - * 1.1.0-rc1 release. - - -- Zcash Company Thu, 05 Apr 2018 03:26:17 +0100 - -zcash (1.0.15) stable; urgency=medium - - * 1.0.15 release. - - -- Zcash Company Wed, 28 Feb 2018 16:58:19 +0000 - -zcash (1.0.15~rc1) stable; urgency=medium - - * 1.0.15-rc1 release. - - -- Zcash Company Sat, 24 Feb 2018 04:20:05 +0000 - -zcash (1.0.14) stable; urgency=medium - - * 1.0.14 release. - - -- Zcash Company Wed, 03 Jan 2018 23:54:16 +0100 - -zcash (1.0.14~rc1) stable; urgency=medium - - * 1.0.14-rc1 release. - - -- Zcash Company Fri, 22 Dec 2017 10:12:41 +0000 - -zcash (1.0.13) stable; urgency=medium - - * 1.0.13 release. - - -- Zcash Company Mon, 20 Nov 2017 12:31:53 +0000 - -zcash (1.0.13~rc2) stable; urgency=medium - - * 1.0.13-rc2 release. - - -- Zcash Company Fri, 17 Nov 2017 18:01:08 +0000 - -zcash (1.0.13~rc1) stable; urgency=medium - - * 1.0.13-rc1 release. - - -- Zcash Company Wed, 15 Nov 2017 00:02:21 +0000 - -zcash (1.0.12) stable; urgency=medium - - * 1.0.12 release. - - -- Zcash Company Thu, 28 Sep 2017 01:26:44 +0100 - -zcash (1.0.12~rc1) stable; urgency=medium - - * 1.0.12-rc1 release. - - -- Zcash Company Sat, 23 Sep 2017 10:51:36 +0100 - -zcash (1.0.11) stable; urgency=medium - - * 1.0.11 release. - - -- Zcash Company Tue, 15 Aug 2017 10:06:25 +0100 - -zcash (1.0.11~rc1) stable; urgency=medium - - * 1.0.11-rc1 release. - - -- Zcash Company Tue, 01 Aug 2017 17:12:52 +0200 - -zcash (1.0.10+1) stable; urgency=medium - - * 1.0.10-1 release. - - -- Zcash Company Fri, 23 Jun 2017 19:50:41 -0700 - -zcash (1.0.10) stable; urgency=medium - - * 1.0.10 release. - - -- Zcash Company Thu, 22 Jun 2017 15:13:04 +1200 - -zcash (1.0.9) stable; urgency=medium - - * 1.0.9 release. - - -- Zcash Company Wed, 24 May 2017 12:51:06 -0700 - -zcash (1.0.8+1) jessie; urgency=high - - * 1.0.8-1 release. - - -- Zcash Company Thu, 13 Apr 2017 20:20:37 -0700 - -zcash (1.0.8) jessie; urgency=medium - - * 1.0.8 release. - - -- Zcash Company Mon, 27 Mar 2017 21:30:07 +0100 - -zcash (1.0.7+1) jessie; urgency=medium - - * 1.0.7-1 release. - - -- Zcash Company Wed, 08 Mar 2017 13:51:11 -0800 - -zcash (1.0.7) jessie; urgency=medium - - * 1.0.7 release. - - -- Zcash Company Fri, 03 Mar 2017 20:55:04 -0800 - -zcash (1.0.6) jessie; urgency=medium - - * 1.0.6 release. - - -- Zcash Company Fri, 10 Feb 2017 10:23:00 -0800 - -zcash (1.0.5) jessie; urgency=medium - - * 1.0.5 release. - - -- Zcash Company Thu, 19 Jan 2017 19:23:40 -0700 - -zcash (1.0.4) jessie; urgency=medium - - * 1.0.4 release. - - -- Zcash Company Thu, 15 Dec 2016 16:46:14 +1300 - -zcash (1.0.3) jessie; urgency=medium - - * 1.0.3 release. - - -- Zcash Company Wed, 17 Nov 2016 15:56:00 -0700 - -zcash (1.0.2) jessie; urgency=medium - - * 1.0.2 release. - - -- Zcash Company Mon, 07 Nov 2016 19:01:35 -0600 - -zcash (1.0.1) jessie; urgency=medium - - * 1.0.1 release. - - -- Zcash Company Thu, 03 Nov 2016 23:21:09 -0500 - -zcash (1.0.0-sprout) jessie; urgency=medium - - * 1.0.0 release. - - -- Zcash Company Fri, 28 Oct 2016 03:00:50 -0700 - -zcash (1.0.0-rc4) jessie; urgency=medium - - * 1.0.0-rc4 release. - - -- Zcash Company Thu, 27 Oct 2016 13:36:00 +0100 - -zcash (1.0.0-rc3) jessie; urgency=medium - - * 1.0.0-rc3 release. - - -- Zcash Company Wed, 26 Oct 2016 23:17:03 +0100 - -zcash (1.0.0-rc2) jessie; urgency=medium - - * 1.0.0-rc2 release. - - -- Zcash Company Sun, 23 Oct 2016 01:51:27 +0100 - -zcash (1.0.0-rc1) jessie; urgency=medium - - * Initial packaging for Debian. - - -- Zcash Company Mon, 17 Oct 2016 11:47:02 -0700 + -- Hush Core Sun, 14 Oct 2019 13:40:30 -0700 diff --git a/contrib/debian/examples/HUSH3.conf b/contrib/debian/examples/HUSH3.conf new file mode 100644 index 000000000..656a43533 --- /dev/null +++ b/contrib/debian/examples/HUSH3.conf @@ -0,0 +1,140 @@ +## +## komodo.conf configuration file. Lines beginning with # are comments. +## + +# Network-related settings: + +# Run a regression test network +#regtest=0 + +# Connect via a SOCKS5 proxy +#proxy=127.0.0.1:9050 + +# Bind to given address and always listen on it. Use [host]:port notation for IPv6 +#bind= + +# Bind to given address and whitelist peers connecting to it. Use [host]:port notation for IPv6 +#whitebind= + +############################################################## +## Quick Primer on addnode vs connect ## +## Let's say for instance you use addnode=4.2.2.4 ## +## addnode will connect you to and tell you about the ## +## nodes connected to 4.2.2.4. In addition it will tell ## +## the other nodes connected to it that you exist so ## +## they can connect to you. ## +## connect will not do the above when you 'connect' to it. ## +## It will *only* connect you to 4.2.2.4 and no one else.## +## ## +## So if you're behind a firewall, or have other problems ## +## finding nodes, add some using 'addnode'. ## +## ## +## If you want to stay private, use 'connect' to only ## +## connect to "trusted" nodes. ## +## ## +## If you run multiple nodes on a LAN, there's no need for ## +## all of them to open lots of connections. Instead ## +## 'connect' them all to one node that is port forwarded ## +## and has lots of connections. ## +## Thanks goes to [Noodle] on Freenode. ## +############################################################## + +# Use as many addnode= settings as you like to connect to specific peers +#addnode=69.164.218.197 +#addnode=10.0.0.2:8233 + +# Alternatively use as many connect= settings as you like to connect ONLY to specific peers +#connect=69.164.218.197 +#connect=10.0.0.1:8233 + +# Listening mode, enabled by default except when 'connect' is being used +#listen=1 + +# Maximum number of inbound+outbound connections. +#maxconnections= + +# +# JSON-RPC options (for controlling a running Komodo/komodod process) +# + +# server=1 tells komodod to accept JSON-RPC commands (set as default if not specified) +#server=1 + +# Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. +# This option can be specified multiple times (default: bind to all interfaces) +#rpcbind= + +# You must set rpcuser and rpcpassword to secure the JSON-RPC api +#rpcuser=Ulysses +#rpcpassword=YourSuperGreatPasswordNumber_DO_NOT_USE_THIS_OR_YOU_WILL_GET_ROBBED_385593 + +# How many seconds komodo will wait for a complete RPC HTTP request. +# after the HTTP connection is established. +#rpcclienttimeout=30 + +# By default, only RPC connections from localhost are allowed. +# Specify as many rpcallowip= settings as you like to allow connections from other hosts, +# either as a single IPv4/IPv6 or with a subnet specification. + +# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED, +# because the rpcpassword is transmitted over the network unencrypted and also because anyone +# that can authenticate on the RPC port can steal your keys + take over the account running komodod +# For more information see https://github.com/zcash/zcash/issues/1497 + +#rpcallowip=10.1.1.34/255.255.255.0 +#rpcallowip=1.2.3.4/24 +#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96 + +# Listen for RPC connections on this TCP port: +#rpcport=8232 + +# You can use Komodo or komodod to send commands to Komodo/komodod +# running on another host using this option: +#rpcconnect=127.0.0.1 + +# Transaction Fee + +# Send transactions as zero-fee transactions if possible (default: 0) +#sendfreetransactions=0 + +# Create transactions that have enough fees (or priority) so they are likely to # begin confirmation within n blocks (default: 1). +# This setting is overridden by the -paytxfee option. +#txconfirmtarget=n + +# Miscellaneous options + +# Enable attempt to mine komodo. +#gen=0 + +# Set the number of threads to be used for mining komodo (-1 = all cores). +#genproclimit=1 + +# Specify a different Equihash solver (e.g. "tromp") to try to mine komodo +# faster when gen=1. +#equihashsolver=default + +# Pre-generate this many public/private key pairs, so wallet backups will be valid for +# both prior transactions and several dozen future transactions. +#keypool=100 + +# Pay an optional transaction fee every time you send komodo. Transactions with fees +# are more likely than free transactions to be included in generated blocks, so may +# be validated sooner. This setting does not affect private transactions created with +# 'z_sendmany'. +#paytxfee=0.00 + +#Rewind the chain to specific block height. This is useful for creating snapshots at a given block height. +#rewind=777777 + +#Stop the chain a specific block height. This is useful for creating snapshots at a given block height. +#stopat=1000000 + +#Set an address to use as change address for all transactions. This value must be set to a 33 byte pubkey. All mined coins will also be sent to this address. +#pubkey=027dc7b5cfb5efca96674b45e9fda18df069d040b9fd9ff32c35df56005e330392 + +#Forfeit all user rewards to miners. Set this to explicitly not claim user rewards. +#exchange=1 + +#Donate all user rewards to a a specific address. This value must be set to a 33 byte pubkey. +#donation=027dc7b5cfb5efca96674b45e9fda18df069d040b9fd9ff32c35df56005e330392 + diff --git a/contrib/debian/zcash.examples b/contrib/debian/hush.example similarity index 100% rename from contrib/debian/zcash.examples rename to contrib/debian/hush.example diff --git a/contrib/debian/zcash.install b/contrib/debian/hush.install similarity index 100% rename from contrib/debian/zcash.install rename to contrib/debian/hush.install diff --git a/contrib/debian/zcash.manpages b/contrib/debian/hush.manpages similarity index 100% rename from contrib/debian/zcash.manpages rename to contrib/debian/hush.manpages diff --git a/zcutil/VerusCoin.xml b/zcutil/VerusCoin.xml deleted file mode 100644 index 914e2f14b..000000000 --- a/zcutil/VerusCoin.xml +++ /dev/null @@ -1,432 +0,0 @@ - - VerusCoin - VerusCoin - 0.3.12 - ${product_shortname}-v${product_version}-${platform_name}-installer.${platform_exec_suffix} - ../COPYING - ../assets/imgs/VRSC_256x256.png - ../assets/imgs/VRSC_256x256.png - ../assets/imgs/VRSC_256x256.png - 1 - - - VerusCoin - VerusCoin CLI - 1 - 1 - 1 - 1 - - - Agama - Verus-Enhanced Agama Wallet - 1 - 1 - 1 - 1 - - - Start Agama App - - ../assets/icons/agama_icons/256x256.png - Agama App - - all - 0 - 0 - ${installdir}/Agama/Agama-win32-x64/Agama.exe - - - ${windows_folder_common_programs}/ - - - - - Verus-Enhanced Agama Wallet - ${installdir}/Agama - Agama - all - - - ../Agama-win32-x64 - - - - - - - - - Program Files - ${installdir} - programfiles - all - - - Uninstall - ${installdir}/${uninstallerName} - - Uninstall ${product_fullname} - ${installdir} - all - 0 - 0 - ${installdir}/${uninstallerName}.exe - - - ${installdir} - - - - - VerusCoin - ${installdir}/ - VerusCoin - all - - - ../verus-cli - - - - - - - - - HKEY_LOCAL_MACHINE\SOFTWARE\${project.shortname} - uninstaller_path - uninstaller_path - - - previous_installation_exists - 1 - - - - - - - - ${uninstaller_path} - - - - equals - ${previous_installation_exists} - 1 - - - - - Deleting user data - ${windows_folder_appdata}/Agama - Deleting user data - - - equals - ${previous_installation_exists} - 1 - - - equals - ${installation_type} - uninstall - - - equals - ${delete_user_data} - 1 - - - - - Deleting iguana config json - ${windows_folder_appdata}/Iguana/config.json - Deleting iguana config - - - equals - ${previous_installation_exists} - 1 - - - equals - ${installation_type} - uninstall - - - equals - ${delete_config_data} - 1 - - - - - Uninstalled - Uninstalled - - - equals - ${previous_installation_exists} - 1 - - - equals - ${installation_type} - uninstall - - - - - Downloading files - - - 0 - Visual C++ Redistributable for Visual Studio 2015 library files are needed for Agama daemon - ${system_temp_directory}/vc_redist.x64.exe - Downloading Visual C++ Redistributable for Visual Studio 2015 - 0 - https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe - - - - - 1 - ${system_temp_directory}/vc_redist.x64.exe - - - - - 0 - Visual C++ Redistributable for Visual Studio 2015 library files are needed for Agama daemon - ${system_temp_directory}/vc_redist.x64.exe - /install /passive - Downloading Visual C++ Redistributable for Visual Studio 2015 - 0 - - - Downloading files - - - 0 - Visual C++ Redistributable for Visual Studio 2015 library files are needed for Agama daemon - ${system_temp_directory}/vc_redist.x86.exe - Downloading Visual C++ Redistributable for Visual Studio 2015 - 0 - https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe - - - - - 1 - ${system_temp_directory}/vc_redist.x86.exe - - - - - 0 - Visual C++ Redistributable for Visual Studio 2015 library files are needed for Agama daemon - ${system_temp_directory}/vc_redist.x86.exe - /install /passive - Downloading Visual C++ Redistributable for Visual Studio 2015 - 0 - - - 0 - Creating ZcashParam directory - ${windows_folder_appdata}/ZcashParams/ - Creating ZcashParam directory - 0 - - - 0 - Zcash Params file: sprout-proving.key - Zcash Params file: sprout-proving.key - 0 - Downloading Zcash Params file - - - 0 - Zcash Params file: sprout-proving.key - ${windows_folder_appdata}/ZcashParams/sprout-proving.key - Zcash Params file: sprout-proving.key - 0 - https://z.cash/downloads/sprout-proving.key - - - - - 1 - ${windows_folder_appdata}/ZcashParams/sprout-proving.key - - - - - 0 - Zcash Params file: sprout-verifying.key - Zcash Params file: sprout-verifying.key - Downloading Zcash Params files - - - 0 - Zcash Params file: sprout-verifying.key - ${windows_folder_appdata}/ZcashParams/sprout-verifying.key - Zcash Params file: sprout-verifying.key - 0 - https://z.cash/downloads/sprout-verifying.key - - - - - 1 - ${windows_folder_appdata}/ZcashParams/sprout-verifying.key - - - - - - - VERUS_HOME - system - ${installdir}/verus-cli/ - - - HKEY_LOCAL_MACHINE\SOFTWARE\${project.shortname} - uninstaller_path - REG_SZ - ${installdir}/${uninstallerName}.exe - - - - - C:\Windows\System32\ - Copying ReqCopying Required DLL filesuired DLL files - ${installdir}/resources/app/windeps/x86/vcruntime140d.dll - Copying ReqCopying Required DLL filesuired DLL files - - - - - - - - - - C:\Windows\System32\ - Copying ReqCopying Required DLL filesuired DLL files - ${installdir}/resources/app/windeps/x64/ucrtbased.dll - Copying ReqCopying Required DLL filesuired DLL files - - - C:\Windows\System32\ - Copying ReqCopying Required DLL filesuired DLL files - ${installdir}/resources/app/windeps/x64/vcruntime140d.dll - Copying ReqCopying Required DLL filesuired DLL files - - - C:\Windows\SysWOW64\ - Copying ReqCopying Required DLL filesuired DLL files - ${installdir}/resources/app/windeps/x86/ucrtbased.dll - Copying ReqCopying Required DLL filesuired DLL files - - - C:\Windows\SysWOW64\ - Copying ReqCopying Required DLL filesuired DLL files - ${installdir}/resources/app/windeps/x86/vcruntime140d.dll - Copying ReqCopying Required DLL filesuired DLL files - - - - - - - - - - HKEY_LOCAL_MACHINE\SOFTWARE\${project.shortname} - uninstaller_path - - - 1 - 1 - 1 - 1 - 1 - ../builds - 1 - ${windows_folder_appdata} - 1 - 1 - VerusCoin - 1 - - - installdir - Installer.Parameter.installdir.description - Installer.Parameter.installdir.explanation - - ${platform_install_prefix}/${product_shortname} - 0 - prefix - 1 - 0 - 30 - - - You don't have enough disk space to install the application, - please select another installation directory - - - less - ${installdir} - ${required_diskspace} - - - - - - - installation_type - Instalation type - Existing instalation is detected - Existing instalation is detected - uninstall - uninstall - - - uninstall - Uninstall - Uninstall - - - - - - 0 - 0 - - - - 0 - 0 - - - - - Upgrade - - - - - - - equals - ${previous_installation_exists} - 1 - - - - - - diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index 9c621d15b..e9afcd83f 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -1,12 +1,13 @@ #!/bin/bash +# Copyright 2019 Hush Developers ## Usage: ## ./zcutil/build-debian-package.sh set -e set -x -BUILD_PATH="/tmp/verus-cli" -PACKAGE_NAME="verus-cli" +BUILD_PATH="/tmp/hush-deb" +PACKAGE_NAME="hush" SRC_PATH=`pwd` SRC_DEB=$SRC_PATH/contrib/debian SRC_DOC=$SRC_PATH/doc @@ -18,12 +19,8 @@ if [ ! -d $BUILD_PATH ]; then fi ## PACKAGE_VERSION=$($SRC_PATH/src/zcashd --version | grep version | cut -d' ' -f4 | tr -d v) -## Need version setting from environment - -PACKAGE_VERSION=0.3.10-beta - -## -## Also, what does the sed end up doing? +#PACKAGE_VERSION=0.3.10-beta +PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|head -n1|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') BUILD_DIR="$BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64" From 7caf82501c9a658c67dbf743f3fd23eca8f508c9 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 17 Oct 2019 19:54:54 -0700 Subject: [PATCH 038/339] debian stuff --- contrib/debian/hush.install | 1 - contrib/debian/hush.manpages | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/contrib/debian/hush.install b/contrib/debian/hush.install index 917d319b8..d81b1afe5 100644 --- a/contrib/debian/hush.install +++ b/contrib/debian/hush.install @@ -1,3 +1,2 @@ usr/bin/komodod usr/bin/komodo-cli -usr/bin/zcash-fetch-params diff --git a/contrib/debian/hush.manpages b/contrib/debian/hush.manpages index a1115f679..9f2665c3e 100644 --- a/contrib/debian/hush.manpages +++ b/contrib/debian/hush.manpages @@ -1,2 +1,2 @@ -DEBIAN/manpages/zcash-cli.1 -DEBIAN/manpages/zcashd.1 +DEBIAN/manpages/hush-cli.1 +DEBIAN/manpages/hushd.1 From 8aaa92366fa8da7f69cc8dc29f436a5d602a196f Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 17 Oct 2019 21:08:46 -0700 Subject: [PATCH 039/339] debianizing --- zcutil/build-debian-package.sh | 56 +++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index e9afcd83f..dac21ecdf 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -3,10 +3,12 @@ ## Usage: ## ./zcutil/build-debian-package.sh +echo "Let There Be Debian Packages" + set -e set -x -BUILD_PATH="/tmp/hush-deb" +BUILD_PATH="/tmp/hush-debian-$$" PACKAGE_NAME="hush" SRC_PATH=`pwd` SRC_DEB=$SRC_PATH/contrib/debian @@ -28,7 +30,7 @@ if [ -d $BUILD_DIR ]; then rm -R $BUILD_DIR fi -DEB_BIN=$BUILD_DIR/usr/bin +DEB_BIN=$BUILD_DIR/usr/local/bin DEB_CMP=$BUILD_DIR/usr/share/bash-completion/completions DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME DEB_MAN=$BUILD_DIR/usr/share/man/man1 @@ -40,37 +42,49 @@ chmod 0755 -R $BUILD_DIR/* #cp $SRC_DEB/postrm $BUILD_DIR/DEBIAN #cp $SRC_DEB/preinst $BUILD_DIR/DEBIAN #cp $SRC_DEB/prerm $BUILD_DIR/DEBIAN -# Copy binaries -cp $SRC_PATH/src/komodod $DEB_BIN -strip $DEB_BIN/komodod -cp $SRC_PATH/src/verusd $DEB_BIN -cp $SRC_PATH/src/komodo-cli $DEB_BIN -strip $DEB_BIN/komodo-cli -cp $SRC_PATH/src/verus $DEB_BIN -cp $SRC_PATH/zcutil/fetch-params.sh $DEB_BIN/zcash-fetch-params -# Copy docs -cp $SRC_PATH/doc/release-notes/release-notes-1.0.0.md $DEB_DOC/changelog +# Copy binaries. We prefix our komodod binaries with hush- to prevent conflicting with +# a stock komodod or other flavors of KMD +cp $SRC_PATH/src/komodod $DEB_BIN/hush-komodo +strip $DEB_BIN/hush-komodod +cp $SRC_PATH/src/hushd $DEB_BIN +cp $SRC_PATH/src/hush-cli $DEB_BIN +cp $SRC_PATH/src/hush-tx $DEB_BIN +cp $SRC_PATH/src/komodo-cli $DEB_BIN/hush-komodo-cli +strip $DEB_BIN/hush-komodo-cli +#cp $SRC_PATH/zcutil/fetch-params.sh $DEB_BIN/zcash-fetch-params cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian cp $SRC_DEB/copyright $DEB_DOC cp -r $SRC_DEB/examples $DEB_DOC # Copy manpages -cp $SRC_DOC/man/komodod.1 $DEB_MAN -cp $SRC_DOC/man/komodo-cli.1 $DEB_MAN -cp $SRC_DOC/man/zcash-fetch-params.1 $DEB_MAN +cp $SRC_DOC/man/komodod.1 $DEB_MAN/hush-komodod.1 +cp $SRC_DOC/man/komodo-cli.1 $DEB_MAN/hush-komodo-cli.1 +cp $SRC_DOC/man/komodo-tx.1 $DEB_MAN/hush-komodo-tx.1 + +cp $SRC_DOC/man/komodod.1 $DEB_MAN/hushd.1 +cp $SRC_DOC/man/komodo-cli.1 $DEB_MAN/hush-cli.1 +cp $SRC_DOC/man/komodo-tx.1 $DEB_MAN/hush-tx.1 +#TODO: process these copies and update names/binaries/etc + +#cp $SRC_DOC/man/zcash-fetch-params.1 $DEB_MAN # Copy bash completion files -cp $SRC_PATH/contrib/zcashd.bash-completion $DEB_CMP/zcashd -cp $SRC_PATH/contrib/zcash-cli.bash-completion $DEB_CMP/zcash-cli +cp $SRC_PATH/contrib/hushd.bash-completion $DEB_CMP/hushd +cp $SRC_PATH/contrib/hush-cli.bash-completion $DEB_CMP/hush-cli +cp $SRC_PATH/contrib/hush-tx.bash-completion $DEB_CMP/hush-tx # Gzip files gzip --best -n $DEB_DOC/changelog gzip --best -n $DEB_DOC/changelog.Debian -gzip --best -n $DEB_MAN/komodod.1 -gzip --best -n $DEB_MAN/komodo-cli.1 -gzip --best -n $DEB_MAN/zcash-fetch-params.1 +gzip --best -n $DEB_MAN/hush-komodod.1 +gzip --best -n $DEB_MAN/hush-komodo-cli.1 +gzip --best -n $DEB_MAN/hush-komodo-tx.1 +gzip --best -n $DEB_MAN/hush-komodod.1 +gzip --best -n $DEB_MAN/hush-komodo-cli.1 +gzip --best -n $DEB_MAN/hush-komodo-tx.1 +#gzip --best -n $DEB_MAN/zcash-fetch-params.1 cd $SRC_PATH/contrib # Create the control file -dpkg-shlibdeps $DEB_BIN/komodod $DEB_BIN/komodo-cli +dpkg-shlibdeps $DEB_BIN/hush-komodod $DEB_BIN/hush-komodo-cli dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION # Create the Debian package From 2bd1fb03cf2ee3676b79db06822fd794924a4433 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 01:04:02 -0400 Subject: [PATCH 040/339] make debian stuff happy --- contrib/debian/control | 5 ++--- zcutil/build-debian-package.sh | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/contrib/debian/control b/contrib/debian/control index 7fd6cc650..567b84dfb 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -1,4 +1,4 @@ -Source: Hush +Source: hush Section: utils Priority: optional Maintainer: Hush @@ -13,5 +13,4 @@ Vcs-Browser: https://github.com/MyHush/hush3 Package: hush Architecture: amd64 Depends: ${shlibs:Depends} -Description: Hush cryptocoin full node. Speak And Transact Freely. -Hush inherits from Bitcoin Protocol and Zcash Protocol and is focused on private communications. +Description: Hush cryptocoin full node. Speak And Transact Freely. Hush inherits from Bitcoin Protocol and Zcash Protocol and is focused on private communications. diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index dac21ecdf..bd9ea3963 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -30,7 +30,7 @@ if [ -d $BUILD_DIR ]; then rm -R $BUILD_DIR fi -DEB_BIN=$BUILD_DIR/usr/local/bin +DEB_BIN=$BUILD_DIR/usr/bin DEB_CMP=$BUILD_DIR/usr/share/bash-completion/completions DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME DEB_MAN=$BUILD_DIR/usr/share/man/man1 @@ -44,15 +44,17 @@ chmod 0755 -R $BUILD_DIR/* #cp $SRC_DEB/prerm $BUILD_DIR/DEBIAN # Copy binaries. We prefix our komodod binaries with hush- to prevent conflicting with # a stock komodod or other flavors of KMD -cp $SRC_PATH/src/komodod $DEB_BIN/hush-komodo +cp $SRC_PATH/src/komodod $DEB_BIN/hush-komodod strip $DEB_BIN/hush-komodod +cp $SRC_PATH/src/komodo-cli $DEB_BIN/hush-komodo-cli +strip $DEB_BIN/hush-komodo-cli +cp $SRC_PATH/src/komodo-tx $DEB_BIN/hush-komodo-tx +strip $DEB_BIN/hush-komodo-tx cp $SRC_PATH/src/hushd $DEB_BIN cp $SRC_PATH/src/hush-cli $DEB_BIN cp $SRC_PATH/src/hush-tx $DEB_BIN -cp $SRC_PATH/src/komodo-cli $DEB_BIN/hush-komodo-cli -strip $DEB_BIN/hush-komodo-cli #cp $SRC_PATH/zcutil/fetch-params.sh $DEB_BIN/zcash-fetch-params -cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian +#cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian cp $SRC_DEB/copyright $DEB_DOC cp -r $SRC_DEB/examples $DEB_DOC # Copy manpages @@ -71,14 +73,14 @@ cp $SRC_PATH/contrib/hushd.bash-completion $DEB_CMP/hushd cp $SRC_PATH/contrib/hush-cli.bash-completion $DEB_CMP/hush-cli cp $SRC_PATH/contrib/hush-tx.bash-completion $DEB_CMP/hush-tx # Gzip files -gzip --best -n $DEB_DOC/changelog -gzip --best -n $DEB_DOC/changelog.Debian -gzip --best -n $DEB_MAN/hush-komodod.1 -gzip --best -n $DEB_MAN/hush-komodo-cli.1 -gzip --best -n $DEB_MAN/hush-komodo-tx.1 +#gzip --best -n $DEB_DOC/changelog +#gzip --best -n $DEB_DOC/changelog.Debian gzip --best -n $DEB_MAN/hush-komodod.1 gzip --best -n $DEB_MAN/hush-komodo-cli.1 gzip --best -n $DEB_MAN/hush-komodo-tx.1 +gzip --best -n $DEB_MAN/hushd.1 +gzip --best -n $DEB_MAN/hush-cli.1 +gzip --best -n $DEB_MAN/hush-tx.1 #gzip --best -n $DEB_MAN/zcash-fetch-params.1 cd $SRC_PATH/contrib From 25e025ef8778d4be3612ec826b7c356b8073db0c Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 01:20:02 -0400 Subject: [PATCH 041/339] Install sapling params in debian /usr/share/hush for debian packages; show sha when making .deb --- zcutil/build-debian-package.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index bd9ea3963..062f2d6b0 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -34,7 +34,8 @@ DEB_BIN=$BUILD_DIR/usr/bin DEB_CMP=$BUILD_DIR/usr/share/bash-completion/completions DEB_DOC=$BUILD_DIR/usr/share/doc/$PACKAGE_NAME DEB_MAN=$BUILD_DIR/usr/share/man/man1 -mkdir -p $BUILD_DIR/DEBIAN $DEB_CMP $DEB_BIN $DEB_DOC $DEB_MAN +DEB_SHR=$BUILD_DIR/usr/share/hush +mkdir -p $BUILD_DIR/DEBIAN $DEB_CMP $DEB_BIN $DEB_DOC $DEB_MAN $DEB_SHR chmod 0755 -R $BUILD_DIR/* # Package maintainer scripts (currently empty) @@ -44,6 +45,8 @@ chmod 0755 -R $BUILD_DIR/* #cp $SRC_DEB/prerm $BUILD_DIR/DEBIAN # Copy binaries. We prefix our komodod binaries with hush- to prevent conflicting with # a stock komodod or other flavors of KMD +cp $SRC_PATH/sapling-spend.params $DEB_SHR +cp $SRC_PATH/sapling-output.params $DEB_SHR cp $SRC_PATH/src/komodod $DEB_BIN/hush-komodod strip $DEB_BIN/hush-komodod cp $SRC_PATH/src/komodo-cli $DEB_BIN/hush-komodo-cli @@ -86,12 +89,13 @@ gzip --best -n $DEB_MAN/hush-tx.1 cd $SRC_PATH/contrib # Create the control file -dpkg-shlibdeps $DEB_BIN/hush-komodod $DEB_BIN/hush-komodo-cli +dpkg-shlibdeps $DEB_BIN/hush-komodod $DEB_BIN/hush-komodo-cli $DEB_BIN/hush-komodo-tx dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION # Create the Debian package fakeroot dpkg-deb --build $BUILD_DIR cp $BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64.deb $SRC_PATH +shasum -a 256 $SRC_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64.deb # Analyze with Lintian, reporting bugs and policy violations lintian -i $SRC_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64.deb exit 0 From 52c716e6252c378dbd24950d166089a7a1abe9ba Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 18 Oct 2019 10:58:27 -0700 Subject: [PATCH 042/339] Look in /usr/share/hush for sapling params --- src/init.cpp | 68 +++++++++++++++++++++++++++++++++------------------- src/main.cpp | 2 +- src/net.cpp | 3 ++- src/util.cpp | 1 + 4 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index f850a7cb8..c31f7b834 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -770,7 +770,7 @@ void NoParamsShutdown(void) uiInterface.ThreadSafeMessageBox(strprintf( _("Cannot find the Sapling network parameters in the following directory:\n" "%s\n" - "Please run 'zcash-fetch-params' or './zcutil/fetch-params.sh' and then restart."), + "Please run join our Discord for help: https://myhush.org/discord/"), ZC_GetParamsDir()), "", CClientUIInterface::MSG_ERROR); StartShutdown(); @@ -781,41 +781,59 @@ static void ZC_LoadParams( const CChainParams& chainparams ) { + namespace fs = boost::filesystem; struct timeval tv_start, tv_end; float elapsed; - // First check the global installation location + // First check the per-user installation location boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output.params"; - // NOTE: This means that sapling params do not need to be installed, just findable + // Debian packages install globally into /usr/share/hush if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not globally installed, use local copies if they exist - // First check ., then .., then ../hush3 - sapling_spend = "sapling-spend.params"; - sapling_output = "sapling-output.params"; + boost::filesystem::path sapling_spend = fs::path("/usr/share/hush") / "sapling-spend.params"; + boost::filesystem::path sapling_output = fs::path("/usr/share/hush") / "sapling-output.params"; - // This is the most common case, for binaries distributed with params + // NOTE: This means that sapling params do not need to be installed, just findable if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not in PWD, try .. - sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; - sapling_output = boost::filesystem::path("..") / "sapling-output.params"; + // Not globally installed, use local copies if they exist + // First check ., then .., then ../hush3 + sapling_spend = "sapling-spend.params"; + sapling_output = "sapling-output.params"; - // Try .. in case this binary has no params + // This is the most common case, for binaries distributed with params if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not in .., try ../hush3 (the case of SilentDragon installed in same directory as hush3) - sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; - sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; + // Not in PWD, try .. + sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; + sapling_output = boost::filesystem::path("..") / "sapling-output.params"; - // This will catch the case of any external software (i.e. GUI wallets) needing params and installed in same dir as hush3.git + // Try .. in case this binary has no params if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // No Sapling params, at least we tried - NoParamsShutdown(); - return; + // Not in .., try ../hush3 (the case of SilentDragon installed in same directory as hush3) + sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; + sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; + + // This will catch the case of any external software (i.e. GUI wallets) needing params and installed in same dir as hush3.git + if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { + // No Sapling params, at least we tried + NoParamsShutdown(); + return; + } else { + fprintf(stderr,"Found sapling params in ../hush3\n"); + } + } else { + fprintf(stderr,"Found sapling params in ..\n"); } + } else { + fprintf(stderr,"Found sapling params in PWD\n"); } - } + } else { + fprintf(stderr,"Found sapling params in /usr/share/hush\n"); } + } else { + fprintf(stderr,"Found sapling params in %s\n", ZC_GetParamsDir().string().c_str() ); + } + //LogPrintf("Loading verifying key from %s\n", vk_path.string().c_str()); gettimeofday(&tv_start, 0); @@ -870,7 +888,7 @@ bool AppInitServers(boost::thread_group& threadGroup) return true; } -/** Initialize bitcoin. +/** Initialize Hush. * @pre Parameters should be parsed and config file should be read. */ extern int32_t KOMODO_REWIND; @@ -1816,10 +1834,10 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) InitWarning(msg); } else if (nLoadWalletRet == DB_TOO_NEW) - strErrors << _("Error loading wallet.dat: Wallet requires newer version of Komodo") << "\n"; + strErrors << _("Error loading wallet.dat: Wallet requires newer version of Hush") << "\n"; else if (nLoadWalletRet == DB_NEED_REWRITE) { - strErrors << _("Wallet needed to be rewritten: restart Zcash to complete") << "\n"; + strErrors << _("Wallet needed to be rewritten: restart Hush to complete") << "\n"; LogPrintf("%s", strErrors.str()); return InitError(strErrors.str()); } @@ -1926,10 +1944,10 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #ifdef ENABLE_MINING #ifndef ENABLE_WALLET if (GetBoolArg("-minetolocalwallet", false)) { - return InitError(_("Zcash was not built with wallet support. Set -minetolocalwallet=0 to use -mineraddress, or rebuild Zcash with wallet support.")); + return InitError(_("Hush was not built with wallet support. Set -minetolocalwallet=0 to use -mineraddress, or rebuild Hush with wallet support.")); } if (GetArg("-mineraddress", "").empty() && GetBoolArg("-gen", false)) { - return InitError(_("Zcash was not built with wallet support. Set -mineraddress, or rebuild Zcash with wallet support.")); + return InitError(_("Hush was not built with wallet support. Set -mineraddress, or rebuild Hush with wallet support.")); } #endif // !ENABLE_WALLET diff --git a/src/main.cpp b/src/main.cpp index f9dd2db26..17980ec1f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -67,7 +67,7 @@ using namespace std; #if defined(NDEBUG) -# error "Zcash cannot be compiled without assertions." +# error "Hush cannot be compiled without assertions." #endif #include "librustzcash.h" diff --git a/src/net.cpp b/src/net.cpp index 00ba44434..f2e240617 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -1710,7 +1711,7 @@ bool BindListenPort(const CService &addrBind, string& strError, bool fWhiteliste { int nErr = WSAGetLastError(); if (nErr == WSAEADDRINUSE) - strError = strprintf(_("Unable to bind to %s on this computer. Zcash is probably already running."), addrBind.ToString()); + strError = strprintf(_("Unable to bind to %s on this computer. Hush is probably already running."), addrBind.ToString()); else strError = strprintf(_("Unable to bind to %s on this computer (bind returned error %s)"), addrBind.ToString(), NetworkErrorString(nErr)); LogPrintf("%s\n", strError); diff --git a/src/util.cpp b/src/util.cpp index 38ce9319c..7fd4d87c6 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. From 258d04e0a043512b7f220cfeb2400f66c341d572 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 18 Oct 2019 11:31:17 -0700 Subject: [PATCH 043/339] Remove agama dingleberries and fix manpages --- Makefile.am | 90 +-------------------------------------------- doc/man/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 90 deletions(-) diff --git a/Makefile.am b/Makefile.am index 51d0430ac..0f3e07e94 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,18 +18,6 @@ BITCOIN_CLI_BIN=$(top_builddir)/src/komodo-cli$(EXEEXT) #WALLET_UTILITY_BIN=$(top_builddir)/src/wallet-utility$(EXEEXT) BITCOIN_WIN_INSTALLER=$(PACKAGE)-$(PACKAGE_VERSION)-win$(WINDOWS_BITS)-setup$(EXEEXT) -if TARGET_DARWIN -OSX_APP=Agama.app -OSX_DMG=Agama.dmg -OSX_BACKGROUND_IMAGE=background.tiff -OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus -OSX_FANCY_PLIST=$(top_srcdir)/contrib/macdeploy/fancy.plist -OSX_BASE_LPROJ_DIR=$(top_srcdir)/contrib/macdeploy/Base.lproj/InfoPlist.strings -OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns -OSX_PLIST=$(top_srcdir)/share/qt/Info.plist #not installed -OSX_QT_TRANSLATIONS = da,de,es,hu,ru,uk,zh_CN,zh_TW -endif - DIST_DOCS = $(wildcard doc/*.md) $(wildcard doc/release-notes/*.md) BIN_CHECKS=$(top_srcdir)/contrib/devtools/symbol-check.py \ @@ -41,14 +29,6 @@ WINDOWS_PACKAGING = $(top_srcdir)/share/pixmaps/bitcoin.ico \ $(top_srcdir)/share/pixmaps/nsis-header.bmp \ $(top_srcdir)/share/pixmaps/nsis-wizard.bmp -if TARGET_DARWIN -OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) $(OSX_BASE_LPROJ_DIR) \ - $(top_srcdir)/contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) \ - $(top_srcdir)/contrib/macdeploy/DS_Store \ - $(top_srcdir)/contrib/macdeploy/detached-sig-apply.sh \ - $(top_srcdir)/contrib/macdeploy/detached-sig-create.sh -endif - if TARGET_DARWIN COVERAGE_INFO = baseline_filtered_combined.info baseline.info block_test.info \ leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \ @@ -79,74 +59,6 @@ distcleancheck: $(if $(findstring src/,$(MAKECMDGOALS)),$(MAKECMDGOALS), none): FORCE $(MAKE) -C src $(patsubst src/%,%,$@) -if TARGET_DARWIN - -$(OSX_APP)/Contents/PkgInfo: - $(MKDIR_P) $(@D) - @echo "APPL????" > $@ - -$(OSX_APP)/Contents/Resources/empty.lproj: - $(MKDIR_P) $(@D) - @touch $@ - -$(OSX_APP)/Contents/Info.plist: $(OSX_PLIST) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -$(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN) - $(MKDIR_P) $(@D) - STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@ - -$(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings: $(OSX_BASE_LPROJ_DIR) - $(MKDIR_P) $(@D) - $(INSTALL_DATA) $< $@ - -OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \ - $(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \ - $(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings - -endif - -if BUILD_DARWIN -$(OSX_DMG): $(OSX_APP_BUILT) $(OSX_PACKAGING) - $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -add-qt-tr $(OSX_QT_TRANSLATIONS) -translations-dir=$(QT_TRANSLATION_DIR) -dmg -fancy $(OSX_FANCY_PLIST) -verbose 2 -deploydir: $(OSX_DMG) -else -APP_DIST_DIR=$(top_builddir)/dist -APP_DIST_EXTRAS=$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE) $(APP_DIST_DIR)/.DS_Store $(APP_DIST_DIR)/Applications -endif - -if TARGET_DARWIN -$(APP_DIST_DIR)/Applications: - @rm -f $@ - @cd $(@D); $(LN_S) /Applications $(@F) - -$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt - -$(OSX_DMG): $(APP_DIST_EXTRAS) - $(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "Bitcoin-Core" -no-pad -r -apple -o $@ dist - -$(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): contrib/macdeploy/$(OSX_BACKGROUND_IMAGE) - $(MKDIR_P) $(@D) - $(INSTALL) $< $@ -$(APP_DIST_DIR)/.DS_Store: contrib/macdeploy/DS_Store - $(INSTALL) $< $@ - -$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) - INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2 - -deploydir: $(APP_DIST_EXTRAS) -endif - -if TARGET_DARWIN -appbundle: $(OSX_APP_BUILT) -deploy: $(OSX_DMG) -endif - if TARGET_WINDOWS deploy: $(BITCOIN_WIN_INSTALLER) endif @@ -336,7 +248,7 @@ dist_noinst_SCRIPTS = autogen.sh zcutil/build-debian-package.sh zcutil/build.sh EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests qa/zcash $(DIST_DOCS) $(BIN_CHECKS) install-exec-hook: - mv $(DESTDIR)$(bindir)/fetch-params.sh $(DESTDIR)$(bindir)/zcash-fetch-params + echo "We no longer install fetch-params!" .INTERMEDIATE: $(COVERAGE_INFO) diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am index 27917a208..98a1278d8 100644 --- a/doc/man/Makefile.am +++ b/doc/man/Makefile.am @@ -1 +1 @@ -dist_man1_MANS=zcashd.1 zcash-cli.1 zcash-fetch-params.1 zcash-tx.1 +dist_man1_MANS=komodod.1 komodo-cli.1 komodo-tx.1 From a74910806372e7136be2776723abf2c44601cd5b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 15:28:55 -0400 Subject: [PATCH 044/339] Update wrapper scripts for Debian systems --- src/hush-cli | 12 +++++++++++- src/hushd | 48 +++++++++++++++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/hush-cli b/src/hush-cli index efa1840a6..bf4511073 100755 --- a/src/hush-cli +++ b/src/hush-cli @@ -2,10 +2,20 @@ # Copyright (c) 2019 Hush developers # set working directory to the location of this script +# readlink -f does not always exist DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd $DIR +DIR="$( cd "$( dirname "$( readlink "${BASH_SOURCE[0]}" )" )" && pwd )" +cd $DIR NAME=HUSH3 CLI=${KOMODOCLI:-./komodo-cli} -$CLI -ac_name=$NAME "$@" +if [ -f $CLI ]; then + $CLI -ac_name=$NAME "$@" +else + # We prefix our binary when installed + # system wide on Debain system, to prevent clashes + CLI=hush-komodo-cli + $CLI -ac_name=$NAME "$@" +fi diff --git a/src/hushd b/src/hushd index 046dbaddb..df1673fbb 100755 --- a/src/hushd +++ b/src/hushd @@ -28,6 +28,7 @@ SEEDNODE1=188.165.212.101 SEEDNODE2=136.243.227.142 SEEDNODE3=5.9.224.250 CCLIB=hush3 +SAPLING=1 # CryptoConditions/Custom Consensus params FAUCET=228 @@ -37,22 +38,35 @@ ORACLE=236 GATEWAY=241 CCENABLE=$FAUCET,$HEIR,$CHANNEL,$ORACLE,$GATEWAY -#NOTE: This is not compatible with upstream KMD komodod, -# but you can reuse one hush3 komodod binary in various -# directories/repos on one server, to save disk space KMD=${KOMODOD:-./komodod} -$KMD -ac_name=$NAME -ac_sapling=1 \ - -ac_reward=$REWARD \ - -ac_halving=$HALVING \ - -ac_end=$END \ - -ac_eras=$ERAS \ - -ac_blocktime=$BLOCKTIME \ - -ac_cc=2 -ac_ccenable=$CCENABLE \ - -ac_founders=$FOUNDERS -ac_supply=$SUPPLY \ - -ac_perc=$PERC \ - -clientname=$CLIENTNAME \ - -addnode=$SEEDNODE1 \ - -addnode=$SEEDNODE2 \ - -addnode=$SEEDNODE3 \ - -ac_cclib=$CCLIB \ +if [ -f $KMD ]; then + echo "Found binary: $KMD" +else + KMD=hush-komodod + if [ -f $KMD ]; then + echo "Found binary: $KMD" + else + echo "ERROR: Could not find Komodo binary!!!" + exit 1 + fi +fi + + +$KMD -ac_name=$NAME \ + -ac_sapling=$SAPLING \ + -ac_reward=$REWARD \ + -ac_halving=$HALVING \ + -ac_end=$END \ + -ac_eras=$ERAS \ + -ac_blocktime=$BLOCKTIME \ + -ac_cc=2 \ + -ac_ccenable=$CCENABLE \ + -ac_founders=$FOUNDERS \ + -ac_supply=$SUPPLY \ + -ac_perc=$PERC \ + -clientname=$CLIENTNAME \ + -addnode=$SEEDNODE1 \ + -addnode=$SEEDNODE2 \ + -addnode=$SEEDNODE3 \ + -ac_cclib=$CCLIB \ -ac_script=$SCRIPT "$@" From b93da6e67364307dfbf687b3946b46b2e5daf11f Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 15:35:41 -0400 Subject: [PATCH 045/339] this is why we cannot have nice things --- zcutil/build-debian-package.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index 062f2d6b0..61b151389 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -21,9 +21,9 @@ if [ ! -d $BUILD_PATH ]; then fi ## PACKAGE_VERSION=$($SRC_PATH/src/zcashd --version | grep version | cut -d' ' -f4 | tr -d v) -#PACKAGE_VERSION=0.3.10-beta -PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|head -n1|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') -DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') +PACKAGE_VERSION=0.3.2 +#PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|head -n1|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') +#DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') BUILD_DIR="$BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64" if [ -d $BUILD_DIR ]; then @@ -90,7 +90,8 @@ cd $SRC_PATH/contrib # Create the control file dpkg-shlibdeps $DEB_BIN/hush-komodod $DEB_BIN/hush-komodo-cli $DEB_BIN/hush-komodo-tx -dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION +#dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION +dpkg-gencontrol -P$BUILD_DIR # Create the Debian package fakeroot dpkg-deb --build $BUILD_DIR From 15a28a1480e9928c829221063f8d54e48b491ba1 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 18:48:05 -0400 Subject: [PATCH 046/339] Unbreak stuff --- zcutil/build-debian-package.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/zcutil/build-debian-package.sh b/zcutil/build-debian-package.sh index 61b151389..0b33182bf 100755 --- a/zcutil/build-debian-package.sh +++ b/zcutil/build-debian-package.sh @@ -21,9 +21,9 @@ if [ ! -d $BUILD_PATH ]; then fi ## PACKAGE_VERSION=$($SRC_PATH/src/zcashd --version | grep version | cut -d' ' -f4 | tr -d v) -PACKAGE_VERSION=0.3.2 -#PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|head -n1|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') -#DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') +#PACKAGE_VERSION=3.2.0 +PACKAGE_VERSION=$($SRC_PATH/src/hushd --version|grep version|cut -d' ' -f4|cut -d- -f1|sed 's/v//g') +DEBVERSION=$(echo $PACKAGE_VERSION | sed 's/-beta/~beta/' | sed 's/-rc/~rc/' | sed 's/-/+/') BUILD_DIR="$BUILD_PATH/$PACKAGE_NAME-$PACKAGE_VERSION-amd64" if [ -d $BUILD_DIR ]; then @@ -90,8 +90,8 @@ cd $SRC_PATH/contrib # Create the control file dpkg-shlibdeps $DEB_BIN/hush-komodod $DEB_BIN/hush-komodo-cli $DEB_BIN/hush-komodo-tx -#dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION -dpkg-gencontrol -P$BUILD_DIR +dpkg-gencontrol -P$BUILD_DIR -v$DEBVERSION +#dpkg-gencontrol -P$BUILD_DIR # Create the Debian package fakeroot dpkg-deb --build $BUILD_DIR From e673b44dc7789f06086c6eaa35f8ea9a1cad09f3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 18 Oct 2019 19:00:33 -0400 Subject: [PATCH 047/339] add authors file --- AUTHORS | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 AUTHORS diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 000000000..18d070911 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,3 @@ +jl777 https://github.com/jl777 +Duke Leto https://github.com/leto + From f4b063af583870cbb3d1700465e7b6785a82b023 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 19 Oct 2019 18:23:03 -0400 Subject: [PATCH 048/339] no mo fetchin' --- INSTALL.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 348aa9f3d..c5ed51861 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -32,11 +32,6 @@ cd hush3 ./zcutil/build.sh -j$(nproc) ``` -## Download proving key: -```sh -./zcutil/fetch-params.sh -``` - ## Run a HUSH Node ```sh From 1b16eb9f194994f6a7a1d469971d734f42702dcb Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 19 Oct 2019 18:32:03 -0400 Subject: [PATCH 049/339] remove junk --- doc/payment-api.md | 2 +- qa/rpc-tests/verushash.py | 99 -------------------------- qa/verus-cli-tests/verus-cli-tester.py | 39 ---------- src/fiat/verus | 7 -- src/fiat/verus.bat | 14 ---- src/verusd | 5 -- src/verusd.bat | 10 --- 7 files changed, 1 insertion(+), 175 deletions(-) delete mode 100755 qa/rpc-tests/verushash.py delete mode 100644 qa/verus-cli-tests/verus-cli-tester.py delete mode 100755 src/fiat/verus delete mode 100644 src/fiat/verus.bat delete mode 100755 src/verusd delete mode 100644 src/verusd.bat diff --git a/doc/payment-api.md b/doc/payment-api.md index 8737b7dae..3eff3aa93 100644 --- a/doc/payment-api.md +++ b/doc/payment-api.md @@ -64,7 +64,7 @@ Command | Parameters | Description z_exportkey | zaddr | _Requires an unlocked wallet or an unencrypted wallet._

Return a zkey for a given zaddr belonging to the node’s wallet.

The key will be returned as a string formatted using Base58Check as described in the Zcash protocol spec.

Output:AKWUAkypwQjhZ6LLNaMuuuLcmZ6gt5UFyo8m3jGutvALmwZKLdR5 z_importkey | zkey [rescan=true] | _Wallet must be unlocked._

Add a zkey as returned by z_exportkey to a node's wallet.

The key should be formatted using Base58Check as described in the Zcash protocol spec.

Set rescan to true (the default) to rescan the entire local block database for transactions affecting any address or pubkey script in the wallet (including transactions affecting the newly-added address for this spending key). z_exportwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._

Creates or overwrites a file with taddr private keys and zaddr private keys in a human-readable format.

Filename is the file in which the wallet dump will be placed. May be prefaced by an absolute file path. An existing file with that name will be overwritten.

No value is returned but a JSON-RPC error will be reported if a failure occurred. -z_importwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._

Imports private keys from a file in wallet export file format (see z_exportwallet). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.

Filename is the file to import. The path is relative to verusd’s working directory.

No value is returned but a JSON-RPC error will be reported if a failure occurred. +z_importwallet | filename | _Requires an unlocked wallet or an unencrypted wallet._

Imports private keys from a file in wallet export file format (see z_exportwallet). These keys will be added to the keys currently in the wallet. This call may need to rescan all or parts of the block chain for transactions affecting the newly-added keys, which may take several minutes.

Filename is the file to import. The path is relative to hushd’s working directory.

No value is returned but a JSON-RPC error will be reported if a failure occurred. z_exportviewingkey | zaddr | Reveals the viewing key corresponding to 'zaddr'. Then the z_importviewingkey can be used with this output. z_importviewingkey | vkey [rescan=whenkeyisnew] [startHeight=0] | Adds a viewing key (as returned by z_exportviewingkey) to your wallet. diff --git a/qa/rpc-tests/verushash.py b/qa/rpc-tests/verushash.py deleted file mode 100755 index db1ab20e9..000000000 --- a/qa/rpc-tests/verushash.py +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env python2 -# Copyright (c) 2018 SuperNET developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. - -from test_framework.test_framework import BitcoinTestFramework -from test_framework.authproxy import JSONRPCException -from test_framework.util import assert_equal, assert_greater_than, \ - initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \ - stop_nodes, sync_blocks, sync_mempools, wait_bitcoinds, rpc_port, assert_raises - -import time -from decimal import Decimal -from random import choice -from string import ascii_uppercase - -def assert_success(result): - assert_equal(result['result'], 'success') - -def assert_error(result): - assert_equal(result['result'], 'error') - -def generate_random_string(length): - random_string = ''.join(choice(ascii_uppercase) for i in range(length)) - return random_string - - -class VerusHashTest (BitcoinTestFramework): - - def setup_chain(self): - print("Initializing VerusHash test directory "+self.options.tmpdir) - self.num_nodes = 2 - initialize_chain_clean(self.options.tmpdir, self.num_nodes) - - def setup_network(self, split = False): - print("Setting up network...") - self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, - extra_args=[[ - # always give -ac_name as first extra_arg and port as third - '-ac_name=REGTEST', - '-conf='+self.options.tmpdir+'/node0/REGTEST.conf', - '-port=64367', - '-rpcport=64368', - '-regtest', - '-addressindex=1', - '-spentindex=1', - '-ac_supply=5555555', - '-ac_reward=10000000000000', - '-ac_algo=verushash', - '-ac_cc=2', - '-whitelist=127.0.0.1', - '-debug', - '--daemon', - '-rpcuser=rt', - '-rpcpassword=rt' - ], - ['-ac_name=REGTEST', - '-conf='+self.options.tmpdir+'/node1/REGTEST.conf', - '-port=64365', - '-rpcport=64366', - '-regtest', - '-addressindex=1', - '-spentindex=1', - '-ac_supply=5555555', - '-ac_reward=10000000000000', - '-ac_algo=verushash', - '-ac_cc=2', - '-whitelist=127.0.0.1', - '-debug', - '-addnode=127.0.0.1:64367', - '--daemon', - '-rpcuser=rt', - '-rpcpassword=rt']] - ) - self.is_network_split = split - self.rpc = self.nodes[0] - self.rpc1 = self.nodes[1] - self.sync_all() - print("Done setting up network") - - def send_and_mine(self, xtn, rpc_connection): - txid = rpc_connection.sendrawtransaction(xtn) - assert txid, 'got txid' - # we need the tx above to be confirmed in the next block - rpc_connection.generate(1) - return txid - - def run_test (self): - print("Mining blocks...") - rpc = self.nodes[0] - rpc1 = self.nodes[1] - # utxos from block 1 become mature in block 101 - rpc.generate(101) - self.sync_all() - rpc.getinfo() - rpc1.getinfo() - -if __name__ == '__main__': - VerusHashTest ().main() diff --git a/qa/verus-cli-tests/verus-cli-tester.py b/qa/verus-cli-tests/verus-cli-tester.py deleted file mode 100644 index 147686110..000000000 --- a/qa/verus-cli-tests/verus-cli-tester.py +++ /dev/null @@ -1,39 +0,0 @@ -from subprocess import Popen, check_output, call -from time import sleep -from os import environ, path - -daemon_wrapper = "verusd" -cli_wrapper = "verus" -daemon_runtime_seconds = 600 -cli_commands = ["getblockchaininfo", "getmininginfo", "getwalletinfo", "stop"] - - -def start_daemon(daemon_wrapper): - try: - Popen(daemon_wrapper, shell=True, close_fds=True) - except: - exit(1) - - -def fetch_zcash_params(): - try: - call("fetch-params", shell=True) - except: - exit(1) - - -def run_cli_commands(cli_wrapper, commands): - for command in commands: - command = "%(cli_wrapper)s %(command)s" % locals() - try: - with open(path.join(environ["CI_PROJECT_DIR"], "log.txt"), "a") as log: - command_output = check_output(command, shell=True) - log.write("%(command_output)s\n" % locals()) - except: - exit(1) - - -fetch_zcash_params() -start_daemon(daemon_wrapper) -sleep(daemon_runtime_seconds) -run_cli_commands(cli_wrapper, cli_commands) diff --git a/src/fiat/verus b/src/fiat/verus deleted file mode 100755 index 956ac71c4..000000000 --- a/src/fiat/verus +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -#set working directory to the location of this script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd $DIR - -../komodo-cli -ac_name=VRSC "$@" diff --git a/src/fiat/verus.bat b/src/fiat/verus.bat deleted file mode 100644 index 0bf87d33b..000000000 --- a/src/fiat/verus.bat +++ /dev/null @@ -1,14 +0,0 @@ -@call :GET_CURRENT_DIR -@cd %THIS_DIR% -komodo-cli.exe -ac_name=VRSC %1 %2 %3 %4 %5 %6 %7 %8 %9 -@goto :EOF - -:GET_CURRENT_DIR -@pushd %~dp0 -@set THIS_DIR=%CD% -@popd -@goto :EOF - - - - diff --git a/src/verusd b/src/verusd deleted file mode 100755 index 179585519..000000000 --- a/src/verusd +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -#set working directory to the location of this script -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd $DIR -./komodod -ac_name=VRSC -ac_algo=verushash -ac_cc=1 -ac_supply=0 -ac_eras=3 -ac_reward=0,38400000000,2400000000 -ac_halving=1,43200,1051920 -ac_decay=100000000,0,0 -ac_end=10080,226080,0 -ac_timelockgte=19200000000 -ac_timeunlockfrom=129600 -ac_timeunlockto=1180800 -ac_veruspos=50 "$@" diff --git a/src/verusd.bat b/src/verusd.bat deleted file mode 100644 index b921ed452..000000000 --- a/src/verusd.bat +++ /dev/null @@ -1,10 +0,0 @@ -@call :GET_CURRENT_DIR -@cd %THIS_DIR% -komodod.exe -ac_name=VRSC -ac_algo=verushash -ac_cc=1 -ac_supply=0 -ac_eras=3 -ac_reward=0,38400000000,2400000000 -ac_halving=1,43200,1051920 -ac_decay=100000000,0,0 -ac_end=10080,226080,0 -ac_timelockgte=19200000000 -ac_timeunlockfrom=129600 -ac_timeunlockto=1180800 -ac_veruspos=50 %1 %2 %3 %4 %5 %6 %7 %8 %9 -@goto :EOF - -:GET_CURRENT_DIR -@pushd %~dp0 -@set THIS_DIR=%CD% -@popd -@goto :EOF From 85f4ba694e945a03806aca4142dc24a43f48859d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 19 Oct 2019 19:16:40 -0400 Subject: [PATCH 050/339] update configure --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 88872aad8..f38ff8c30 100644 --- a/configure.ac +++ b/configure.ac @@ -8,7 +8,7 @@ define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLI define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2019) -AC_INIT([Verus-CLI],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/VerusCoin/VerusCoin/issues],[verus-cli]) +AC_INIT([Hush],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/MyHush/hush3],[hush]) AC_CONFIG_SRCDIR([src/main.cpp]) AC_CONFIG_HEADERS([src/config/bitcoin-config.h]) AC_CONFIG_AUX_DIR([build-aux]) @@ -800,7 +800,7 @@ AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS - LIBZCASH_LIBS="-lgmp -lgmpxx $BOOST_SYSTEM_LIB -lcrypto -lsodium $RUST_LIBS" -AC_MSG_CHECKING([whether to build bitcoind]) +AC_MSG_CHECKING([whether to build komodod]) AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes]) AC_MSG_RESULT($build_bitcoind) From 0d4f96b5123a8c4ba6949ebdebacc3d892e1d680 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 19 Oct 2019 23:18:27 -0400 Subject: [PATCH 051/339] Teach hushd to look in /usr/share/hush for params --- src/util.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index 7fd4d87c6..b6e868489 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -583,8 +583,7 @@ static CCriticalSection csPathCached; static boost::filesystem::path ZC_GetBaseParamsDir() { - // Copied from GetDefaultDataDir and adapter for zcash params. - + // Copied from GetDefaultDataDir and adapted for zcash params. namespace fs = boost::filesystem; // Windows < Vista: C:\Documents and Settings\Username\Application Data\ZcashParams // Windows >= Vista: C:\Users\Username\AppData\Roaming\ZcashParams @@ -605,8 +604,13 @@ static boost::filesystem::path ZC_GetBaseParamsDir() TryCreateDirectory(pathRet); return pathRet / "ZcashParams"; #else - // Unix - return pathRet / ".zcash-params"; + // Unixy systems. Debian packages install params system-wide + if (fs::exists("/usr/share/hush")) { + pathRet = fs::path("/usr/share/hush"); + return pathRet; + } else { + return pathRet / ".zcash-params"; + } #endif #endif } From edf0f1b672563746dbf068ecfbac28df769e720f Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 20 Oct 2019 10:09:53 -0400 Subject: [PATCH 052/339] document install/uninstall deb --- INSTALL.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index c5ed51861..c47c6ddfe 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,5 +1,15 @@ # Installing Hush +## Installing Binaries + +To install a Debian package: + + dpkg -i hush-3.2.0-amd4.deb + +To uninstall: + + apt-get remove hush + ## Build HUSH dependencies The following build process generally applies to Ubuntu (and similar) Linux From 15504ef2c173b6d94c22624ee695d3605297c8a8 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 20 Oct 2019 10:14:15 -0400 Subject: [PATCH 053/339] Add .bat files --- src/hush-cli.bat | 14 ++++++++++++++ src/hushd.bat | 10 ++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/hush-cli.bat create mode 100644 src/hushd.bat diff --git a/src/hush-cli.bat b/src/hush-cli.bat new file mode 100644 index 000000000..802315b44 --- /dev/null +++ b/src/hush-cli.bat @@ -0,0 +1,14 @@ +@call :GET_CURRENT_DIR +@cd %THIS_DIR% +komodo-cli.exe -ac_name=HUSH3 %1 %2 %3 %4 %5 %6 %7 %8 %9 +@goto :EOF + +:GET_CURRENT_DIR +@pushd %~dp0 +@set THIS_DIR=%CD% +@popd +@goto :EOF + + + + diff --git a/src/hushd.bat b/src/hushd.bat new file mode 100644 index 000000000..12291f131 --- /dev/null +++ b/src/hushd.bat @@ -0,0 +1,10 @@ +@call :GET_CURRENT_DIR +@cd %THIS_DIR% +komodod.exe -ac_name=HUSH3 -ac_sapling=1 -ac_reward=0,1125000000,562500000 -ac_halving=129,340000,840000 -ac_end=128,340000,5422111 -ac_eras=3 -ac_blocktime=150 -ac_cc=2 -ac_ccenable=228,234,235,236,241 -ac_founders=1 -ac_supply=6178674 -ac_perc=11111111 -clientname=GoldenSandtrout -addnode=188.165.212.101 -ac_cclib=hush3 -ac_script=76a9145eb10cf64f2bab1b457f1f25e658526155928fac88ac -daemon %1 %2 %3 %4 %5 %6 %7 %8 %9 +@goto :EOF + +:GET_CURRENT_DIR +@pushd %~dp0 +@set THIS_DIR=%CD% +@popd +@goto :EOF From 556703ddbce4d531650b150b459efd4c89052116 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 20 Oct 2019 11:14:39 -0400 Subject: [PATCH 054/339] update contributing doc --- CONTRIBUTING.md | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b7ff449d6..c8a12e601 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ -# Komodo Core (komodod) Software Contribution Guidelines +# Hush Core (hushd) Software Contribution Guidelines -Thank you for reaching out and trying to make Komodo an even better software application and blockchain platform. These contribution guidelines shall help you figuring out where you can be helpful and how to easily get started. +Thank you for reaching out and trying to make Hush an even better software application and blockchain platform. These contribution guidelines shall help you figuring out where you can be helpful and how to easily get started. ## Table of Contents @@ -14,13 +14,13 @@ Thank you for reaching out and trying to make Komodo an even better software app 0. [Community](#community) ## Types of contributions we're looking for -There are many ways you can directly contribute to Komodo: +There are many ways you can directly contribute to Hush: -* Debug and test the Komodo Core code +* Debug and test the Hush Core code * Find and fix bugs * Improve suboptimal code * Extend our software -* Perform a secure code review of Komodo Core and other Komodo-related software +* Perform a secure code review of Hush Core and other Hush-related software Interested in making a contribution? Read on! @@ -28,16 +28,16 @@ Interested in making a contribution? Read on! Before we get started, here are a few things we expect from you (and that you should expect from others): -* Be kind and thoughtful in your conversations around this project. We all come from different backgrounds and projects, which means we likely have different perspectives on "how open source is done." Try to listen to others rather than convince them that your way is correct. +* Be kind and thoughtful in your conversations around this project. We all come from different backgrounds and projects, which means we likely have different perspectives on "how free software and open source is done." Try to listen to others rather than convince them that your way is correct. * Open Source Guides are released with a [Contributor Code of Conduct](./code_of_conduct.md). By participating in this project, you agree to abide by its terms. -* If you open a pull request, please ensure that your contribution passes all tests. If there are test failures, you will need to address them before we can merge your contribution. +* If you open a pull request, please ensure that your contribution does not increase test failures. If there are additional test failures, you will need to address them before we can merge your contribution. * When adding content, please consider if it is widely valuable. Please don't add references or links to things you or your employer have created as others will do so if they appreciate it. ## How to contribute -If you'd like to contribute, start by searching through the [issues](https://github.com/komodoplatform/komodo/issues) and [pull requests](https://github.com/komodoplatform/komodo/pulls) to see whether someone else has raised a similar idea or question. +If you'd like to contribute, start by searching through the [issues](https://github.com/MyHush/hush3/issues) and [pull requests](https://github.com/MyHush/hush3/pulls) to see whether someone else has raised a similar idea or question. -If you don't see your idea listed, and you think it can contribute to Komodo, do one of the following: +If you don't see your idea listed, and you think it can contribute to Hush, do one of the following: * **If your contribution is minor,** such as a fixing a typo, open a pull request. * **If your contribution is major,** such as a new feature or bugfix, start by opening an issue first. That way, other contributors can weigh in on the discussion before you do any work. @@ -46,17 +46,14 @@ Write clear, clean and consistent code. Follow well-known and established style ## Setting up your environment -The Komodo Core (komodod) is mainly written in C++ with specific modules written in C. Follow the [Getting Started](https://github.com/komodoplatform/komodo#getting-started) instructions to build komodod from sources. For more informations about the Komodo Platform and a full API documentation please visit the official [Komodo developer documentation](https://docs.komodoplatform.com/). +The Hush Core (hushd) is mainly written in C++ with specific modules written in C. Follow the [Install](https://github.com/MyHush/hush3/blob/master/INSTALL.md) instructions to build hushd from sources. For more informations about the Hush Platform and a full API documentation please visit the official [Komodo developer documentation](https://docs.komodoplatform.com/). ## Contribution review process -Our team and community will review your contribution and start a transparent testing and quality assurance process. As soon as your contribution has undergone sucessful review and QA signoff it gets merged into the Komodo sourcecode. +Our team and community will review your contribution and start a transparent testing and quality assurance process. As soon as your contribution has undergone sucessful review and QA signoff it gets merged into the Hush sourcecode. ## Community -Discussions about Komodo's development take place on our [discord server](https://discord.gg/yhfzqsg). Anybody is welcome to join these conversations. There is also a [newsletter](http://komodoplatform.com) with regular updates. - -Wherever possible, do not take these conversations to private channels, including contacting the maintainers directly. Keeping communication public means everybody can benefit and learn from the conversation. - +Discussions about Hush's development take place on our [discord server](https://myhush.org/discord/) This contribution guideline is adapted from the Open Source Guides. From 2040061acb27a1a65b555dd91c62622886efdb2a Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 20 Oct 2019 11:27:31 -0400 Subject: [PATCH 055/339] add dev doc --- DEVELOPING.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 DEVELOPING.md diff --git a/DEVELOPING.md b/DEVELOPING.md new file mode 100644 index 000000000..a6b1d3a89 --- /dev/null +++ b/DEVELOPING.md @@ -0,0 +1,57 @@ +# Being a Hush Developer + +## Compiling Hush + +Normal compiling is as simple as: + + ./zcutil/build.sh + +To make it use as many CPU threads as you have: + + ./zcutil/build.sh -j$(nproc) # assumes linux + ./zcutil/build.sh -j8 # use a fixed 8 threads, more portable + +## Good Hygiene + +To avoid weirld build system issues, it's often good to run: + + make clean + +*before* you switch Git branches. Otherwise, the new branches Makefiles +often are incompatible and `make clean` will be impossible, which can +sometimes introduce weird bugs or make compiling really annoying. + +## Switching branches + +Switching branches and doing partial compiles in Komodo/Hush source code +can introduce weird bugs, which are fixed by running `build.sh` again. +When in doubt, if you run into a compile error, especially if it mentions +`OCTET_STRING`, run `build.sh` again. Running `make clean` before switching +branches can often prevent those problems. + +## Partial compiles + +At any point, you can modify hush source code and then use `make` or `build.sh` +to do a partial compile. The first is faster but the latter is more likely to +work correctly in all circustances. Sometimes partial compiles break weird +build system dependencies, and you must do a `make clean` first, or even +`git clean -fdx` (look up what it means first!) to clean things. The nuclear +option is to re-clone the repo, which sometimes is the least work to fix +the problem. + +## Generating new unix man pages + +Make sure that you have updated all version numbers in hushd and compiled, then +to generate new unix man pages for that version : + + ./contrib/devtools/gen-manpages.sh + +## Generating new debian packages + +After successfully compiling Hush, you can generate a debian package of these binaries with: + + ./zcutil/build-debian-package.sh + +This command will not work on Mac OS X. Currently you cannot generate a Debian package +from operating systems other than Linux. + From b32c5c2b3a6f6b4ccf87f18399011fa0745645dd Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 22 Oct 2019 17:40:10 -0700 Subject: [PATCH 056/339] These are not dns seeds so let us not confuse people --- src/hushd | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/hushd b/src/hushd index df1673fbb..e6242c2c7 100755 --- a/src/hushd +++ b/src/hushd @@ -24,10 +24,11 @@ HALVING=129,340000,840000 # NOTE: keep in sync with komodo_bitcoind.h END=128,340000,5422111 CLIENTNAME=GoldenSandtrout -SEEDNODE1=188.165.212.101 -SEEDNODE2=136.243.227.142 -SEEDNODE3=5.9.224.250 +NODE1=188.165.212.101 +NODE2=136.243.227.142 +NODE3=5.9.224.250 CCLIB=hush3 +# First Pure Sapling Zcash Protocol chain! SAPLING=1 # CryptoConditions/Custom Consensus params @@ -65,8 +66,8 @@ $KMD -ac_name=$NAME \ -ac_supply=$SUPPLY \ -ac_perc=$PERC \ -clientname=$CLIENTNAME \ - -addnode=$SEEDNODE1 \ - -addnode=$SEEDNODE2 \ - -addnode=$SEEDNODE3 \ + -addnode=$NODE1 \ + -addnode=$NODE2 \ + -addnode=$NODE3 \ -ac_cclib=$CCLIB \ -ac_script=$SCRIPT "$@" From 02bdc9d6575e1464e08a37bf57fe79daaefcb9b0 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 22 Oct 2019 18:14:35 -0700 Subject: [PATCH 057/339] Fix mempool bug where fees are mis-calculated when fSkipExpiry is used --- src/main.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 17980ec1f..38bba3d26 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1950,17 +1950,18 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } CAmount nValueOut = tx.GetValueOut(); - CAmount nFees = nValueIn-nValueOut; - double dPriority = 0; + double dPriority = 0; + CAmount nFees = 0; + if (!fSkipExpiry) { dPriority = view.GetPriority(tx, chainActive.Height()); - nFees = 0; + nFees = nValueIn-nValueOut; } if ( nValueOut > 777777*COIN && KOMODO_VALUETOOBIG(nValueOut - 777777*COIN) != 0 ) // some room for blockreward and txfees return state.DoS(100, error("AcceptToMemoryPool: GetValueOut too big"),REJECT_INVALID,"tx valueout is too big"); - + // Keep track of transactions that spend a coinbase, which we re-scan // during reorgs to ensure COINBASE_MATURITY is still met. bool fSpendsCoinbase = false; @@ -1973,7 +1974,6 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } } } -//fprintf(stderr,"addmempool 5\n"); // Grab the branch ID we expect this transaction to commit to. We don't // yet know if it does, but if the entry gets added to the mempool, then From 31f4957ea20edc0d13d644eee9b231add0064609 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 22 Oct 2019 18:21:31 -0700 Subject: [PATCH 058/339] Update our addnodes --- src/hushd | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/hushd b/src/hushd index e6242c2c7..b5b504ea4 100755 --- a/src/hushd +++ b/src/hushd @@ -24,9 +24,10 @@ HALVING=129,340000,840000 # NOTE: keep in sync with komodo_bitcoind.h END=128,340000,5422111 CLIENTNAME=GoldenSandtrout -NODE1=188.165.212.101 -NODE2=136.243.227.142 -NODE3=5.9.224.250 +NODE1=188.165.212.101 # EU +NODE2=64.120.113.130 # AR +NODE3=209.58.144.205 # NA +NODE4=94.130.35.94 # EU CCLIB=hush3 # First Pure Sapling Zcash Protocol chain! SAPLING=1 @@ -69,5 +70,6 @@ $KMD -ac_name=$NAME \ -addnode=$NODE1 \ -addnode=$NODE2 \ -addnode=$NODE3 \ + -addnode=$NODE4 \ -ac_cclib=$CCLIB \ -ac_script=$SCRIPT "$@" From c29f5cca42de22f6f2fe9e08376fc5caef564312 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 22 Oct 2019 19:07:13 -0700 Subject: [PATCH 059/339] Update port in docs and some branding --- src/init.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index c31f7b834..88d8f0f51 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1297,7 +1297,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // Sanity check if (!InitSanityCheck()) - return InitError(_("Initialization sanity check failed. Komodo is shutting down.")); + return InitError(_("Initialization sanity check failed. Please check for insanity. Hush is shutting down!")); std::string strDataDir = GetDataDir().string(); #ifdef ENABLE_WALLET @@ -1305,7 +1305,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (strWalletFile != boost::filesystem::basename(strWalletFile) + boost::filesystem::extension(strWalletFile)) return InitError(strprintf(_("Wallet %s resides outside data directory %s"), strWalletFile, strDataDir)); #endif - // Make sure only a single Bitcoin process is using the data directory. + // Make sure only a single Hush process is using the data directory. boost::filesystem::path pathLockFile = GetDataDir() / ".lock"; FILE* file = fopen(pathLockFile.string().c_str(), "a"); // empty lock file; created if it doesn't exist. if (file) fclose(file); @@ -1315,9 +1315,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) try { static boost::interprocess::file_lock lock(pathLockFile.string().c_str()); if (!lock.try_lock()) - return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Komodo is probably already running."), strDataDir)); + return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Hush is probably already running."), strDataDir)); } catch(const boost::interprocess::interprocess_exception& e) { - return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Komodo is probably already running.") + " %s.", strDataDir, e.what())); + return InitError(strprintf(_("Cannot obtain a lock on data directory %s. Hush is probably already running.") + " %s.", strDataDir, e.what())); } #ifndef _WIN32 @@ -1326,7 +1326,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (GetBoolArg("-shrinkdebugfile", !fDebug)) ShrinkDebugFile(); LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - LogPrintf("Komodo version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); + LogPrintf("Hush version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); if (fPrintToDebugLog) OpenDebugLog(); From ced4d38255135a366cc96396911089ab4d37fe45 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Tue, 22 Oct 2019 19:21:23 -0700 Subject: [PATCH 060/339] Bunch of little things --- src/bitcoind.cpp | 17 +++++++++-------- src/deprecation.cpp | 5 +++-- src/main.cpp | 2 +- src/miner.cpp | 22 +++++++++++----------- src/rpc/misc.cpp | 2 -- src/sendalert.cpp | 4 ++-- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 655251638..bdd368530 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -150,7 +150,7 @@ bool AppInit(int argc, char* argv[]) // Process help and version before taking care about datadir if (mapArgs.count("-?") || mapArgs.count("-h") || mapArgs.count("-help") || mapArgs.count("-version")) { - std::string strUsage = _("Komodo Daemon") + " " + _("version") + " " + FormatFullVersion() + "\n" + PrivacyInfo(); + std::string strUsage = _("Hush Daemon") + " " + _("version") + " " + FormatFullVersion() + "\n" + PrivacyInfo(); if (mapArgs.count("-version")) { @@ -159,7 +159,7 @@ bool AppInit(int argc, char* argv[]) else { strUsage += "\n" + _("Usage:") + "\n" + - " komodod [options] " + _("Start Komodo Daemon") + "\n"; + " komodod [options] " + _("Start Hush-flavored Komodo Daemon") + "\n"; strUsage += "\n" + HelpMessage(HMM_BITCOIND); } @@ -192,21 +192,22 @@ bool AppInit(int argc, char* argv[]) ReadConfigFile(mapArgs, mapMultiArgs); } catch (const missing_zcash_conf& e) { fprintf(stderr, - (_("Before starting komodod, you need to create a configuration file:\n" + (_("Before starting hushd, you need to create a configuration file:\n" "%s\n" "It can be completely empty! That indicates you are happy with the default\n" - "configuration of komodod. But requiring a configuration file to start ensures\n" - "that komodod won't accidentally compromise your privacy if there was a default\n" + "configuration of hushd. But requiring a configuration file to start ensures\n" + "that hushd won't accidentally compromise your privacy if there was a default\n" "option you needed to change.\n" "\n" "You can look at the example configuration file for suggestions of default\n" "options that you may want to change. It should be in one of these locations,\n" - "depending on how you installed Komodo:\n") + + "depending on how you installed Hush\n") + _("- Source code: %s\n" "- .deb package: %s\n")).c_str(), GetConfigFile().string().c_str(), - "contrib/debian/examples/komodo.conf", - "/usr/share/doc/komodo/examples/komodo.conf"); + "contrib/debian/examples/HUSH3.conf", + "/usr/share/doc/hush/examples/HUSH3.conf", + "https://github.com/MyHush/hush3/blob/master/contrib/debian/examples/HUSH3.conf"); return false; } catch (const std::exception& e) { fprintf(stderr,"Error reading configuration file: %s\n", e.what()); diff --git a/src/deprecation.cpp b/src/deprecation.cpp index 6005918ec..99ec30e4f 100644 --- a/src/deprecation.cpp +++ b/src/deprecation.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2017 The Zcash developers +// Copyright (c) 2018-2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -48,7 +49,7 @@ void EnforceNodeDeprecation(int nHeight, bool forceLogging, bool fThread) { if (blocksToDeprecation == 0 || forceLogging) { msg = strprintf(_("This version has been deprecated as of block height %d."), DEPRECATION_HEIGHT) + " " + - _("You should upgrade to the latest version of Komodo."); + _("You should upgrade to the latest version of Hush! See Discord for more info: https://myhush.org/discord"); LogPrintf("*** %s\n", msg); CAlert::Notify(msg, fThread); uiInterface.ThreadSafeMessageBox(msg, "", CClientUIInterface::MSG_ERROR); @@ -57,7 +58,7 @@ void EnforceNodeDeprecation(int nHeight, bool forceLogging, bool fThread) { } else if (blocksToDeprecation == DEPRECATION_WARN_LIMIT || (blocksToDeprecation < DEPRECATION_WARN_LIMIT && forceLogging)) { msg = strprintf(_("This version will be deprecated at block height %d, and will automatically shut down."), DEPRECATION_HEIGHT) + " " + - _("You should upgrade to the latest version of Komodo."); + _("You should upgrade to the latest version of Hush! See Discord for more info: https://myhush.org/discord"); LogPrintf("*** %s\n", msg); CAlert::Notify(msg, fThread); uiInterface.ThreadSafeMessageBox(msg, "", CClientUIInterface::MSG_WARNING); diff --git a/src/main.cpp b/src/main.cpp index 38bba3d26..6052839f5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -141,7 +141,7 @@ static void CheckBlockIndex(); /** Constant stuff for coinbase transactions we create: */ CScript COINBASE_FLAGS; -const string strMessageMagic = "Komodo Signed Message:\n"; +const string strMessageMagic = "Hush Signed Message:\n"; // Internal stuff namespace { diff --git a/src/miner.cpp b/src/miner.cpp index 5b0d2658f..e3c88afb7 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1032,7 +1032,7 @@ static bool ProcessBlockFound(CBlock* pblock) fprintf(stderr,"%02x",((uint8_t *)&hash)[i]); fprintf(stderr," <- chainTip (stale)\n"); - return error("KomodoMiner: generated block is stale"); + return error("HushMiner: generated block is stale"); } } @@ -1058,7 +1058,7 @@ static bool ProcessBlockFound(CBlock* pblock) // Process this block the same as if we had received it from another node CValidationState state; if (!ProcessNewBlock(1,chainActive.LastTip()->GetHeight()+1,state, NULL, pblock, true, NULL)) - return error("KomodoMiner: ProcessNewBlock, block not accepted"); + return error("HushMiner: ProcessNewBlock, block not accepted"); TrackMinedBlock(pblock->GetHash()); //komodo_broadcast(pblock,16); @@ -1615,7 +1615,7 @@ void static BitcoinMiner(CWallet *pwallet) void static BitcoinMiner() #endif { - LogPrintf("KomodoMiner started\n"); + LogPrintf("HushMiner started\n"); SetThreadPriority(THREAD_PRIORITY_LOWEST); RenameThread("komodo-miner"); const CChainParams& chainparams = Params(); @@ -1715,7 +1715,7 @@ void static BitcoinMiner() { miningTimer.stop(); c.disconnect(); - LogPrintf("KomodoMiner terminated\n"); + LogPrintf("HushMiner terminated\n"); return; } static uint32_t counter; @@ -1729,10 +1729,10 @@ void static BitcoinMiner() if (!pblocktemplate.get()) { if (GetArg("-mineraddress", "").empty()) { - LogPrintf("Error in KomodoMiner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n"); + LogPrintf("Error in HushMiner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n"); } else { // Should never reach here, because -mineraddress validity is checked in init.cpp - LogPrintf("Error in KomodoMiner: Invalid -mineraddress\n"); + LogPrintf("Error in HushMiner: Invalid -mineraddress\n"); } return; } @@ -1752,8 +1752,8 @@ void static BitcoinMiner() } } IncrementExtraNonce(pblock, pindexPrev, nExtraNonce); - //fprintf(stderr,"Running KomodoMiner.%s with %u transactions in block\n",solver.c_str(),(int32_t)pblock->vtx.size()); - LogPrintf("Running KomodoMiner.%s with %u transactions in block (%u bytes)\n",solver.c_str(),pblock->vtx.size(),::GetSerializeSize(*pblock,SER_NETWORK,PROTOCOL_VERSION)); + //fprintf(stderr,"Running HushMiner.%s with %u transactions in block\n",solver.c_str(),(int32_t)pblock->vtx.size()); + LogPrintf("Running HushMiner.%s with %u transactions in block (%u bytes)\n",solver.c_str(),pblock->vtx.size(),::GetSerializeSize(*pblock,SER_NETWORK,PROTOCOL_VERSION)); // // Search // @@ -1929,7 +1929,7 @@ void static BitcoinMiner() KOMODO_CHOSEN_ONE = 1; // Found a solution SetThreadPriority(THREAD_PRIORITY_NORMAL); - LogPrintf("KomodoMiner:\n"); + LogPrintf("HushMiner:\n"); LogPrintf("proof-of-work found \n hash: %s \ntarget: %s\n", B.GetHash().GetHex(), HASHTarget.GetHex()); #ifdef ENABLE_WALLET if (ProcessBlockFound(&B, *pwallet, reservekey)) { @@ -2072,14 +2072,14 @@ void static BitcoinMiner() { miningTimer.stop(); c.disconnect(); - LogPrintf("KomodoMiner terminated\n"); + LogPrintf("HushMiner terminated\n"); throw; } catch (const std::runtime_error &e) { miningTimer.stop(); c.disconnect(); - LogPrintf("KomodoMiner runtime error: %s\n", e.what()); + LogPrintf("HushMiner runtime error: %s\n", e.what()); return; } miningTimer.stop(); diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index f7b6659c5..86e6d44ea 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -79,7 +79,6 @@ uint64_t komodo_notarypayamount(int32_t nHeight, int64_t notarycount); int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp); #define KOMODO_VERSION "0.4.0a" -#define VERUS_VERSION "0.4.0g" extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; extern uint32_t ASSETCHAINS_CC; extern uint32_t ASSETCHAINS_MAGIC,ASSETCHAINS_ALGO; @@ -238,7 +237,6 @@ UniValue getinfo(const UniValue& params, bool fHelp) obj.push_back(Pair("protocolversion", PROTOCOL_VERSION)); obj.push_back(Pair("KMDversion", KOMODO_VERSION)); obj.push_back(Pair("synced", KOMODO_INSYNC!=0)); - //obj.push_back(Pair("VRSCversion", VERUS_VERSION)); obj.push_back(Pair("notarized", notarized_height)); obj.push_back(Pair("prevMoMheight", prevMoMheight)); obj.push_back(Pair("notarizedhash", notarized_hash.ToString())); diff --git a/src/sendalert.cpp b/src/sendalert.cpp index 6525cb356..7b8ca4589 100644 --- a/src/sendalert.cpp +++ b/src/sendalert.cpp @@ -42,7 +42,7 @@ Modify the alert parameters, id and message found in this file. Build and run with -sendalert or -printalert. -./zcashd -printtoconsole -sendalert +./hushd -printtoconsole -sendalert One minute after starting up, the alert will be broadcast. It is then flooded through the network until the nRelayUntil time, and will be @@ -103,7 +103,7 @@ void ThreadSendAlert() // 4000 or higher will put the RPC into safe mode alert.nPriority = 4000; alert.strComment = ""; - alert.strStatusBar = "Your client version has degraded networking behavior. Please update to the most recent version of Komodo (0.3.3 or later)."; + alert.strStatusBar = "Your client version has degraded networking behavior. Please update to the most recent version of Hush (3.2.0 or later)."; alert.strRPCError = alert.strStatusBar; // Set specific client version/versions here. If setSubVer is empty, no filtering on subver is done: From 7afb1cb370384f5f066393458bb493558c524711 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 23 Oct 2019 06:40:48 -0700 Subject: [PATCH 061/339] KMD seeds return many IPs which do not run Hush, so we will focus on using our own DNS seeds that only return Hush nodes --- src/chainparams.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 9d566ea3d..07adada36 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -182,10 +182,6 @@ public: assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")); vFixedSeeds.clear(); vSeeds.clear(); - vSeeds.push_back(CDNSSeedData("komodoplatform.com", "seeds.komodoplatform.com")); // @kolo - old static dns seeds - vSeeds.push_back(CDNSSeedData("kolo.supernet.org", "static.kolo.supernet.org")); // @kolo - new static dns seeds ToDo - vSeeds.push_back(CDNSSeedData("kolo.supernet.org", "dynamic.kolo.supernet.org")); // @kolo - crawler seeds ToDo - vSeeds.push_back(CDNSSeedData("kolo.supernet.org", "dynamic.kolo.supernet.org")); // @kolo - crawler seeds ToDo vSeeds.push_back(CDNSSeedData("node1", "dnsseed.myhush.org")); vSeeds.push_back(CDNSSeedData("node2", "dnsseed2.myhush.org")); vSeeds.push_back(CDNSSeedData("node3", "dnsseed.bleuzero.com")); From bfd15422ef52a7cb72e685181fba062b8248c2eb Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 23 Oct 2019 06:54:35 -0700 Subject: [PATCH 062/339] remove stuff --- src/KMD.batch0 | 1151 ---------------------------------- src/KMD.batch0.listunspent | 1190 ------------------------------------ src/KMD.batch0.txids | 525 ---------------- src/KMD.batch1 | 443 -------------- src/KMD.batch1.txids | 166 ----- src/KMD.batch2 | 268 -------- src/KMD.batch2.txids | 100 --- src/KMD.batch3 | 248 -------- src/KMD.batch3.utxo | 94 --- src/KMD.batch4 | 251 -------- src/KMD.batch4.txids | 97 --- 11 files changed, 4533 deletions(-) delete mode 100755 src/KMD.batch0 delete mode 100755 src/KMD.batch0.listunspent delete mode 100644 src/KMD.batch0.txids delete mode 100755 src/KMD.batch1 delete mode 100644 src/KMD.batch1.txids delete mode 100755 src/KMD.batch2 delete mode 100644 src/KMD.batch2.txids delete mode 100755 src/KMD.batch3 delete mode 100644 src/KMD.batch3.utxo delete mode 100755 src/KMD.batch4 delete mode 100644 src/KMD.batch4.txids diff --git a/src/KMD.batch0 b/src/KMD.batch0 deleted file mode 100755 index 411d7221d..000000000 --- a/src/KMD.batch0 +++ /dev/null @@ -1,1151 +0,0 @@ -# disable running again -sleep 9999999 -# RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 KMD 16462.32091533, REVS 289.86606506 -# RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 KMD 16462.32091533 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58\",\"symbol\":\"KMD\"}" # 16462.32091533 -sleep 13 -./komodo-cli sendtoaddress RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 16462.32091533 -# RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA KMD 74417.52897713, REVS 500.77700000 -# RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA KMD 74417.52897713 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA\",\"symbol\":\"KMD\"}" # 74417.52897713 -sleep 13 -./komodo-cli sendtoaddress RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA 74417.52897713 -# RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe KMD 9691.47954009 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe\",\"symbol\":\"KMD\"}" # 9691.47954009 -sleep 13 -./komodo-cli sendtoaddress RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe 9691.47954009 -# RRCwketDe8CXt4dMWpL4NpQntxJvmwousn KMD 201.21200152 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRCwketDe8CXt4dMWpL4NpQntxJvmwousn\",\"symbol\":\"KMD\"}" # 201.21200152 -sleep 13 -./komodo-cli sendtoaddress RRCwketDe8CXt4dMWpL4NpQntxJvmwousn 201.21200152 -# RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c KMD 616895.10028203, REVS 3685.61452692 -# RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c KMD 616895.10028203 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c\",\"symbol\":\"KMD\"}" # 616895.10028203 -sleep 13 -./komodo-cli sendtoaddress RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c 616895.10028203 -# R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n KMD 1053.37494565, REVS 4.29070721 -# R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n KMD 1053.37494565 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n\",\"symbol\":\"KMD\"}" # 1053.37494565 -sleep 13 -./komodo-cli sendtoaddress R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n 1053.37494565 -# RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ 774.65219950 -# REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE KMD 3945.67461320, REVS 30.24757576 -# REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE KMD 3945.67461320 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE\",\"symbol\":\"KMD\"}" # 3945.67461320 -sleep 13 -./komodo-cli sendtoaddress REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE 3945.67461320 -# RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub KMD 96831.52493750 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub\",\"symbol\":\"KMD\"}" # 96831.52493750 -sleep 13 -./komodo-cli sendtoaddress RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub 96831.52493750 -# RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj KMD 2729058.03025689, REVS 54178.00103054 -# RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj KMD 2729058.03025689 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj\",\"symbol\":\"KMD\"}" # 2729058.03025689 -sleep 13 -./komodo-cli sendtoaddress RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj 2729058.03025689 -# RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw KMD 61869.43786697 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw\",\"symbol\":\"KMD\"}" # 61869.43786697 -sleep 13 -./komodo-cli sendtoaddress RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw 61869.43786697 -# RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8 KMD 94617.81776961 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8\",\"symbol\":\"KMD\"}" # 94617.81776961 -sleep 13 -./komodo-cli sendtoaddress RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8 94617.81776961 -# RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF KMD 5315819.89184465 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF\",\"symbol\":\"KMD\"}" # 5315819.89184465 -sleep 13 -./komodo-cli sendtoaddress RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF 5315819.89184465 -# RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r KMD 8661.80183095, REVS 171.90929822 -# RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r KMD 8661.80183095 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r\",\"symbol\":\"KMD\"}" # 8661.80183095 -sleep 13 -./komodo-cli sendtoaddress RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r 8661.80183095 -# RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV KMD 4964.66964335 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV\",\"symbol\":\"KMD\"}" # 4964.66964335 -sleep 13 -./komodo-cli sendtoaddress RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV 4964.66964335 -# RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk KMD 17816.10973847 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk\",\"symbol\":\"KMD\"}" # 17816.10973847 -sleep 13 -./komodo-cli sendtoaddress RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk 17816.10973847 -# RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV KMD 699334.64129367 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV\",\"symbol\":\"KMD\"}" # 699334.64129367 -sleep 13 -./komodo-cli sendtoaddress RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV 699334.64129367 -# REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv KMD 503444.41817988 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv\",\"symbol\":\"KMD\"}" # 503444.41817988 -sleep 13 -./komodo-cli sendtoaddress REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv 503444.41817988 -# RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia KMD 18367.01200788, REVS 350.00000000 -# RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia KMD 18367.01200788 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia\",\"symbol\":\"KMD\"}" # 18367.01200788 -sleep 13 -./komodo-cli sendtoaddress RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia 18367.01200788 -# RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn KMD 2848.88502056 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn\",\"symbol\":\"KMD\"}" # 2848.88502056 -sleep 13 -./komodo-cli sendtoaddress RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn 2848.88502056 -# RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS KMD 1254936.56318998 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS\",\"symbol\":\"KMD\"}" # 1254936.56318998 -sleep 13 -./komodo-cli sendtoaddress RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS 1254936.56318998 -# REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7 KMD 107312.62836396 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7\",\"symbol\":\"KMD\"}" # 107312.62836396 -sleep 13 -./komodo-cli sendtoaddress REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7 107312.62836396 -# RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F KMD 368374.24120335 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F\",\"symbol\":\"KMD\"}" # 368374.24120335 -sleep 13 -./komodo-cli sendtoaddress RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F 368374.24120335 -# RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 KMD 7816.63087181, REVS 78.63808960 -# RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 KMD 7816.63087181 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6\",\"symbol\":\"KMD\"}" # 7816.63087181 -sleep 13 -./komodo-cli sendtoaddress RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 7816.63087181 -# RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn KMD 92958.26394000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn\",\"symbol\":\"KMD\"}" # 92958.26394000 -sleep 13 -./komodo-cli sendtoaddress RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn 92958.26394000 -# RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78 KMD 26149.64106420 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78\",\"symbol\":\"KMD\"}" # 26149.64106420 -sleep 13 -./komodo-cli sendtoaddress RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78 26149.64106420 -# RE3yR2mCeG15ARgvENMbb573VqoQJcM3po KMD 17738.87416605, REVS 18.61556549 -# RE3yR2mCeG15ARgvENMbb573VqoQJcM3po KMD 17738.87416605 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RE3yR2mCeG15ARgvENMbb573VqoQJcM3po\",\"symbol\":\"KMD\"}" # 17738.87416605 -sleep 13 -./komodo-cli sendtoaddress RE3yR2mCeG15ARgvENMbb573VqoQJcM3po 17738.87416605 -# RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq KMD 17817.00058850 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq\",\"symbol\":\"KMD\"}" # 17817.00058850 -sleep 13 -./komodo-cli sendtoaddress RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq 17817.00058850 -# RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe KMD 928.65305676 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe\",\"symbol\":\"KMD\"}" # 928.65305676 -sleep 13 -./komodo-cli sendtoaddress RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe 928.65305676 -# RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ KMD 19137.10414825 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ\",\"symbol\":\"KMD\"}" # 19137.10414825 -sleep 13 -./komodo-cli sendtoaddress RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ 19137.10414825 -# RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a KMD 7891.18147631 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a\",\"symbol\":\"KMD\"}" # 7891.18147631 -sleep 13 -./komodo-cli sendtoaddress RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a 7891.18147631 -# RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn KMD 259520.15743267 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn\",\"symbol\":\"KMD\"}" # 259520.15743267 -sleep 13 -./komodo-cli sendtoaddress RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn 259520.15743267 -# RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw KMD 3730.99968446 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw\",\"symbol\":\"KMD\"}" # 3730.99968446 -sleep 13 -./komodo-cli sendtoaddress RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw 3730.99968446 -# RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn KMD 894973.14219837 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn\",\"symbol\":\"KMD\"}" # 894973.14219837 -sleep 13 -./komodo-cli sendtoaddress RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn 894973.14219837 -# RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr KMD 722795.20152529 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr\",\"symbol\":\"KMD\"}" # 722795.20152529 -sleep 13 -./komodo-cli sendtoaddress RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr 722795.20152529 -# RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3 KMD 755.28589451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3\",\"symbol\":\"KMD\"}" # 755.28589451 -sleep 13 -./komodo-cli sendtoaddress RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3 755.28589451 -# RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa KMD 19366.30498750 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa\",\"symbol\":\"KMD\"}" # 19366.30498750 -sleep 13 -./komodo-cli sendtoaddress RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa 19366.30498750 -# RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71 KMD 7523.80948764 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71\",\"symbol\":\"KMD\"}" # 7523.80948764 -sleep 13 -./komodo-cli sendtoaddress RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71 7523.80948764 -# RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK KMD 7746.52199500 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK\",\"symbol\":\"KMD\"}" # 7746.52199500 -sleep 13 -./komodo-cli sendtoaddress RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK 7746.52199500 -# RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH KMD 26696.69308472, REVS 529.99000000 -# RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH KMD 26696.69308472 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH\",\"symbol\":\"KMD\"}" # 26696.69308472 -sleep 13 -./komodo-cli sendtoaddress RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH 26696.69308472 -# RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B KMD 1711.08167983 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B\",\"symbol\":\"KMD\"}" # 1711.08167983 -sleep 13 -./komodo-cli sendtoaddress RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B 1711.08167983 -# RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne KMD 1846.86875964 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne\",\"symbol\":\"KMD\"}" # 1846.86875964 -sleep 13 -./komodo-cli sendtoaddress RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne 1846.86875964 -# RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP KMD 1092.25960129 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP\",\"symbol\":\"KMD\"}" # 1092.25960129 -sleep 13 -./komodo-cli sendtoaddress RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP 1092.25960129 -# RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b KMD 82906.87674571, REVS 1438.93600000 -# RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b KMD 82906.87674571 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b\",\"symbol\":\"KMD\"}" # 82906.87674571 -sleep 13 -./komodo-cli sendtoaddress RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b 82906.87674571 -# RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4 KMD 15493.04399000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4\",\"symbol\":\"KMD\"}" # 15493.04399000 -sleep 13 -./komodo-cli sendtoaddress RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4 15493.04399000 -# RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN KMD 732.43675323 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN\",\"symbol\":\"KMD\"}" # 732.43675323 -sleep 13 -./komodo-cli sendtoaddress RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN 732.43675323 -# RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed KMD 5458.23813028 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed\",\"symbol\":\"KMD\"}" # 5458.23813028 -sleep 13 -./komodo-cli sendtoaddress RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed 5458.23813028 -# RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y KMD 46479.13197000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y\",\"symbol\":\"KMD\"}" # 46479.13197000 -sleep 13 -./komodo-cli sendtoaddress RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y 46479.13197000 -# RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 KMD 2197.34858012, REVS 43.61040113 -# RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 KMD 2197.34858012 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3\",\"symbol\":\"KMD\"}" # 2197.34858012 -sleep 13 -./komodo-cli sendtoaddress RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 2197.34858012 -# RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP KMD 64966.39751162, REVS 1035.00000000 -# RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP KMD 64966.39751162 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP\",\"symbol\":\"KMD\"}" # 64966.39751162 -sleep 13 -./komodo-cli sendtoaddress RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP 64966.39751162 -# RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1 KMD 38732.60997500 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1\",\"symbol\":\"KMD\"}" # 38732.60997500 -sleep 13 -./komodo-cli sendtoaddress RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1 38732.60997500 -# RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ KMD 377892.70160675, REVS 7501.00000000 -# RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ KMD 377892.70160675 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ\",\"symbol\":\"KMD\"}" # 377892.70160675 -sleep 13 -./komodo-cli sendtoaddress RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ 377892.70160675 -# RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716 KMD 100542.16930966 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716\",\"symbol\":\"KMD\"}" # 100542.16930966 -sleep 13 -./komodo-cli sendtoaddress RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716 100542.16930966 -# R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY KMD 96830.55662225 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY\",\"symbol\":\"KMD\"}" # 96830.55662225 -sleep 13 -./komodo-cli sendtoaddress R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY 96830.55662225 -# RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz KMD 2140.79273143 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz\",\"symbol\":\"KMD\"}" # 2140.79273143 -sleep 13 -./komodo-cli sendtoaddress RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz 2140.79273143 -# RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA KMD 968.31524937 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA\",\"symbol\":\"KMD\"}" # 968.31524937 -sleep 13 -./komodo-cli sendtoaddress RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA 968.31524937 -# RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR KMD 41.38832712, REVS 0.82090537 -# RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR KMD 41.38832712 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR\",\"symbol\":\"KMD\"}" # 41.38832712 -sleep 13 -./komodo-cli sendtoaddress RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR 41.38832712 -# RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 KMD 1350076.86672091, REVS 100.00000000 -# RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 KMD 1350076.86672091 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8\",\"symbol\":\"KMD\"}" # 1350076.86672091 -sleep 13 -./komodo-cli sendtoaddress RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 1350076.86672091 -# RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu KMD 50567.04202258, REVS 1003.32000000 -# RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu KMD 50567.04202258 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu\",\"symbol\":\"KMD\"}" # 50567.04202258 -sleep 13 -./komodo-cli sendtoaddress RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu 50567.04202258 -# RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL KMD 589187.66272894, REVS 11685.49743445 -# RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL KMD 589187.66272894 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL\",\"symbol\":\"KMD\"}" # 589187.66272894 -sleep 13 -./komodo-cli sendtoaddress RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL 589187.66272894 -# RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S KMD 100.59218694 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S\",\"symbol\":\"KMD\"}" # 100.59218694 -sleep 13 -./komodo-cli sendtoaddress RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S 100.59218694 -# RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH KMD 1012.75625347, REVS 20.10000000 -# RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH KMD 1012.75625347 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH\",\"symbol\":\"KMD\"}" # 1012.75625347 -sleep 13 -./komodo-cli sendtoaddress RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH 1012.75625347 -# RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa KMD 45132.81116316, REVS 342.26137428 -# RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa KMD 45132.81116316 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa\",\"symbol\":\"KMD\"}" # 45132.81116316 -sleep 13 -./komodo-cli sendtoaddress RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa 45132.81116316 -# RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac KMD 5028.91865657 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac\",\"symbol\":\"KMD\"}" # 5028.91865657 -sleep 13 -./komodo-cli sendtoaddress RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac 5028.91865657 -# RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq KMD 155.36852443, REVS 3.08314987 -# RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq KMD 155.36852443 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq\",\"symbol\":\"KMD\"}" # 155.36852443 -sleep 13 -./komodo-cli sendtoaddress RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq 155.36852443 -# RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb KMD 15607.20311298 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb\",\"symbol\":\"KMD\"}" # 15607.20311298 -sleep 13 -./komodo-cli sendtoaddress RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb 15607.20311298 -# RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts KMD 23963.90703474, REVS 475.60756080 -# RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts KMD 23963.90703474 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts\",\"symbol\":\"KMD\"}" # 23963.90703474 -sleep 13 -./komodo-cli sendtoaddress RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts 23963.90703474 -# RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z 774.65219950 -# RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr KMD 43088.75849296, REVS 470.88002226 -# RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr KMD 43088.75849296 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr\",\"symbol\":\"KMD\"}" # 43088.75849296 -sleep 13 -./komodo-cli sendtoaddress RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr 43088.75849296 -# RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX KMD 19172.64193762 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX\",\"symbol\":\"KMD\"}" # 19172.64193762 -sleep 13 -./komodo-cli sendtoaddress RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX 19172.64193762 -# R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN KMD 111664.10821907, REVS 2023.42268720 -# R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN KMD 111664.10821907 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN\",\"symbol\":\"KMD\"}" # 111664.10821907 -sleep 13 -./komodo-cli sendtoaddress R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN 111664.10821907 -# RH2udBo3386n4hatBet85WUxiGao8VVSM6 KMD 4047.94506848 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RH2udBo3386n4hatBet85WUxiGao8VVSM6\",\"symbol\":\"KMD\"}" # 4047.94506848 -sleep 13 -./komodo-cli sendtoaddress RH2udBo3386n4hatBet85WUxiGao8VVSM6 4047.94506848 -# RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe KMD 1011.40498451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe\",\"symbol\":\"KMD\"}" # 1011.40498451 -sleep 13 -./komodo-cli sendtoaddress RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe 1011.40498451 -# RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk KMD 972.80557592, REVS 19.29916914 -# RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk KMD 972.80557592 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk\",\"symbol\":\"KMD\"}" # 972.80557592 -sleep 13 -./komodo-cli sendtoaddress RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk 972.80557592 -# RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B KMD 2420.78812342 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B\",\"symbol\":\"KMD\"}" # 2420.78812342 -sleep 13 -./komodo-cli sendtoaddress RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B 2420.78812342 -# RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ KMD 1589.10920508 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ\",\"symbol\":\"KMD\"}" # 1589.10920508 -sleep 13 -./komodo-cli sendtoaddress RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ 1589.10920508 -# RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE KMD 43251.49599262, REVS 857.93461385 -# RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE KMD 43251.49599262 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE\",\"symbol\":\"KMD\"}" # 43251.49599262 -sleep 13 -./komodo-cli sendtoaddress RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE 43251.49599262 -# RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY KMD 53585.08128315, REVS 731.01000000 -# RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY KMD 53585.08128315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY\",\"symbol\":\"KMD\"}" # 53585.08128315 -sleep 13 -./komodo-cli sendtoaddress RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY 53585.08128315 -# RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv KMD 4924.65994176 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv\",\"symbol\":\"KMD\"}" # 4924.65994176 -sleep 13 -./komodo-cli sendtoaddress RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv 4924.65994176 -# RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX KMD 55939.57195639 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX\",\"symbol\":\"KMD\"}" # 55939.57195639 -sleep 13 -./komodo-cli sendtoaddress RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX 55939.57195639 -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 57862.44847739, REVS 464.78017965 -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 57862.44847739 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3\",\"symbol\":\"KMD\"}" # 57862.44847739 -sleep 13 -./komodo-cli sendtoaddress RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 57862.44847739 -# RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6 KMD 11629.46614499 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6\",\"symbol\":\"KMD\"}" # 11629.46614499 -sleep 13 -./komodo-cli sendtoaddress RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6 11629.46614499 -# RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz KMD 2494.84014833 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz\",\"symbol\":\"KMD\"}" # 2494.84014833 -sleep 13 -./komodo-cli sendtoaddress RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz 2494.84014833 -# RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq KMD 755216.97171164 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq\",\"symbol\":\"KMD\"}" # 755216.97171164 -sleep 13 -./komodo-cli sendtoaddress RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq 755216.97171164 -# RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ KMD 7436.66111520 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ\",\"symbol\":\"KMD\"}" # 7436.66111520 -sleep 13 -./komodo-cli sendtoaddress RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ 7436.66111520 -# RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr KMD 215743.93040290, REVS 4280.65926868 -# RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr KMD 215743.93040290 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr\",\"symbol\":\"KMD\"}" # 215743.93040290 -sleep 13 -./komodo-cli sendtoaddress RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr 215743.93040290 -# R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb KMD 1006939.18080157 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb\",\"symbol\":\"KMD\"}" # 1006939.18080157 -sleep 13 -./komodo-cli sendtoaddress R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb 1006939.18080157 -# RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN KMD 4005.10943567 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN\",\"symbol\":\"KMD\"}" # 4005.10943567 -sleep 13 -./komodo-cli sendtoaddress RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN 4005.10943567 -# RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb KMD 10117.34846003 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb\",\"symbol\":\"KMD\"}" # 10117.34846003 -sleep 13 -./komodo-cli sendtoaddress RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb 10117.34846003 -# RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP KMD 1005.49855495 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP\",\"symbol\":\"KMD\"}" # 1005.49855495 -sleep 13 -./komodo-cli sendtoaddress RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP 1005.49855495 -# RUtbAxmAqv1V47932T89tt79AN6TzazXSk KMD 1277.32401175 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUtbAxmAqv1V47932T89tt79AN6TzazXSk\",\"symbol\":\"KMD\"}" # 1277.32401175 -sleep 13 -./komodo-cli sendtoaddress RUtbAxmAqv1V47932T89tt79AN6TzazXSk 1277.32401175 -# RS9erX84xJG17efdZ66qHxhsUMG15fnCsH KMD 977546.42205511, REVS 19403.85638743 -# RS9erX84xJG17efdZ66qHxhsUMG15fnCsH KMD 977546.42205511 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RS9erX84xJG17efdZ66qHxhsUMG15fnCsH\",\"symbol\":\"KMD\"}" # 977546.42205511 -sleep 13 -./komodo-cli sendtoaddress RS9erX84xJG17efdZ66qHxhsUMG15fnCsH 977546.42205511 -# RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL KMD 8908.50029425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL\",\"symbol\":\"KMD\"}" # 8908.50029425 -sleep 13 -./komodo-cli sendtoaddress RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL 8908.50029425 -# RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ KMD 1394.37395910 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ\",\"symbol\":\"KMD\"}" # 1394.37395910 -sleep 13 -./komodo-cli sendtoaddress RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ 1394.37395910 -# RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 KMD 14588.33036215, REVS 289.61149547 -# RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 KMD 14588.33036215 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7\",\"symbol\":\"KMD\"}" # 14588.33036215 -sleep 13 -./komodo-cli sendtoaddress RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 14588.33036215 -# RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC KMD 18008.72700786 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC\",\"symbol\":\"KMD\"}" # 18008.72700786 -sleep 13 -./komodo-cli sendtoaddress RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC 18008.72700786 -# RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk KMD 1626.76961895 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk\",\"symbol\":\"KMD\"}" # 1626.76961895 -sleep 13 -./komodo-cli sendtoaddress RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk 1626.76961895 -# RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN KMD 722.28571081 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN\",\"symbol\":\"KMD\"}" # 722.28571081 -sleep 13 -./komodo-cli sendtoaddress RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN 722.28571081 -# RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL KMD 9863.45132134 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL\",\"symbol\":\"KMD\"}" # 9863.45132134 -sleep 13 -./komodo-cli sendtoaddress RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL 9863.45132134 -# RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3 KMD 83629.96327501 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3\",\"symbol\":\"KMD\"}" # 83629.96327501 -sleep 13 -./komodo-cli sendtoaddress RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3 83629.96327501 -# RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 KMD 3170.70655908, REVS 37.96790925 -# RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 KMD 3170.70655908 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6\",\"symbol\":\"KMD\"}" # 3170.70655908 -sleep 13 -./komodo-cli sendtoaddress RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 3170.70655908 -# RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN KMD 11760.26545254 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN\",\"symbol\":\"KMD\"}" # 11760.26545254 -sleep 13 -./komodo-cli sendtoaddress RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN 11760.26545254 -# RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a KMD 7073.16782615, REVS 44.30216197 -# RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a KMD 7073.16782615 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a\",\"symbol\":\"KMD\"}" # 7073.16782615 -sleep 13 -./komodo-cli sendtoaddress RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a 7073.16782615 -# RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv KMD 117108.97863641, REVS 1631.49836519 -# RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv KMD 117108.97863641 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv\",\"symbol\":\"KMD\"}" # 117108.97863641 -sleep 13 -./komodo-cli sendtoaddress RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv 117108.97863641 -# RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt KMD 163386.58575808, REVS 50.00000000 -# RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt KMD 163386.58575808 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt\",\"symbol\":\"KMD\"}" # 163386.58575808 -sleep 13 -./komodo-cli sendtoaddress RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt 163386.58575808 -# RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q 774.65219950 -# RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU KMD 6742.29255596, REVS 105.00000000 -# RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU KMD 6742.29255596 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU\",\"symbol\":\"KMD\"}" # 6742.29255596 -sleep 13 -./komodo-cli sendtoaddress RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU 6742.29255596 -# RBxjj7kxFipThuHR9i3cyumFzM2c1puiua KMD 15493.04399000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBxjj7kxFipThuHR9i3cyumFzM2c1puiua\",\"symbol\":\"KMD\"}" # 15493.04399000 -sleep 13 -./komodo-cli sendtoaddress RBxjj7kxFipThuHR9i3cyumFzM2c1puiua 15493.04399000 -# REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js KMD 1936.63049875 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js\",\"symbol\":\"KMD\"}" # 1936.63049875 -sleep 13 -./komodo-cli sendtoaddress REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js 1936.63049875 -# RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF KMD 1598.36899361, REVS 11.75449303 -# RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF KMD 1598.36899361 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF\",\"symbol\":\"KMD\"}" # 1598.36899361 -sleep 13 -./komodo-cli sendtoaddress RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF 1598.36899361 -# RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK KMD 1341.60124279 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK\",\"symbol\":\"KMD\"}" # 1341.60124279 -sleep 13 -./komodo-cli sendtoaddress RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK 1341.60124279 -# RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a KMD 753.34926401 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a\",\"symbol\":\"KMD\"}" # 753.34926401 -sleep 13 -./komodo-cli sendtoaddress RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a 753.34926401 -# RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk KMD 9212.17131564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk\",\"symbol\":\"KMD\"}" # 9212.17131564 -sleep 13 -./komodo-cli sendtoaddress RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk 9212.17131564 -# RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj KMD 18464.80349033 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj\",\"symbol\":\"KMD\"}" # 18464.80349033 -sleep 13 -./komodo-cli sendtoaddress RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj 18464.80349033 -# RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a\",\"symbol\":\"KMD\"}" # 9683.15249375 -sleep 13 -./komodo-cli sendtoaddress RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a 9683.15249375 -# RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ KMD 7019.31724271 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ\",\"symbol\":\"KMD\"}" # 7019.31724271 -sleep 13 -./komodo-cli sendtoaddress RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ 7019.31724271 -# RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A KMD 3975.36465037 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A\",\"symbol\":\"KMD\"}" # 3975.36465037 -sleep 13 -./komodo-cli sendtoaddress RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A 3975.36465037 -# RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ KMD 4066.92404737 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ\",\"symbol\":\"KMD\"}" # 4066.92404737 -sleep 13 -./komodo-cli sendtoaddress RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ 4066.92404737 -# RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU KMD 2128.72487792 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU\",\"symbol\":\"KMD\"}" # 2128.72487792 -sleep 13 -./komodo-cli sendtoaddress RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU 2128.72487792 -# RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7 KMD 8908.50029425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7\",\"symbol\":\"KMD\"}" # 8908.50029425 -sleep 13 -./komodo-cli sendtoaddress RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7 8908.50029425 -# RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM 774.65219950 -# RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS KMD 1470662.43386573 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS\",\"symbol\":\"KMD\"}" # 1470662.43386573 -sleep 13 -./komodo-cli sendtoaddress RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS 1470662.43386573 -# RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG KMD 3692.08658052 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG\",\"symbol\":\"KMD\"}" # 3692.08658052 -sleep 13 -./komodo-cli sendtoaddress RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG 3692.08658052 -# RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z KMD 1243.73516984 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z\",\"symbol\":\"KMD\"}" # 1243.73516984 -sleep 13 -./komodo-cli sendtoaddress RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z 1243.73516984 -# RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb\",\"symbol\":\"KMD\"}" # 9683.15249375 -sleep 13 -./komodo-cli sendtoaddress RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb 9683.15249375 -# RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM 774.65219950 -# RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y KMD 21671.70738465, REVS 170.69524117 -# RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y KMD 21671.70738465 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y\",\"symbol\":\"KMD\"}" # 21671.70738465 -sleep 13 -./komodo-cli sendtoaddress RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y 21671.70738465 -# RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4 KMD 4307.02827126 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4\",\"symbol\":\"KMD\"}" # 4307.02827126 -sleep 13 -./komodo-cli sendtoaddress RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4 4307.02827126 -# RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG KMD 12075.12037906, REVS 239.62000000 -# RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG KMD 12075.12037906 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG\",\"symbol\":\"KMD\"}" # 12075.12037906 -sleep 13 -./komodo-cli sendtoaddress RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG 12075.12037906 -# RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG KMD 1676.97635800 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG\",\"symbol\":\"KMD\"}" # 1676.97635800 -sleep 13 -./komodo-cli sendtoaddress RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG 1676.97635800 -# RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj KMD 25710.06172178, REVS 510.00000000 -# RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj KMD 25710.06172178 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj\",\"symbol\":\"KMD\"}" # 25710.06172178 -sleep 13 -./komodo-cli sendtoaddress RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj 25710.06172178 -# RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky KMD 4453.35929709 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky\",\"symbol\":\"KMD\"}" # 4453.35929709 -sleep 13 -./komodo-cli sendtoaddress RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky 4453.35929709 -# RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC KMD 34758.47429765, REVS 689.94006658 -# RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC KMD 34758.47429765 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC\",\"symbol\":\"KMD\"}" # 34758.47429765 -sleep 13 -./komodo-cli sendtoaddress RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC 34758.47429765 -# RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS KMD 6487.71217081 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS\",\"symbol\":\"KMD\"}" # 6487.71217081 -sleep 13 -./komodo-cli sendtoaddress RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS 6487.71217081 -# REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY KMD 4003.40256701 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY\",\"symbol\":\"KMD\"}" # 4003.40256701 -sleep 13 -./komodo-cli sendtoaddress REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY 4003.40256701 -# RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq KMD 816561.67159376, REVS 16199.49755302 -# RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq KMD 816561.67159376 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq\",\"symbol\":\"KMD\"}" # 816561.67159376 -sleep 13 -./komodo-cli sendtoaddress RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq 816561.67159376 -# RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 KMD 88331.27512150, REVS 1398.88449696 -# RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 KMD 88331.27512150 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5\",\"symbol\":\"KMD\"}" # 88331.27512150 -sleep 13 -./komodo-cli sendtoaddress RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 88331.27512150 -# RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz KMD 541891.46150744 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz\",\"symbol\":\"KMD\"}" # 541891.46150744 -sleep 13 -./komodo-cli sendtoaddress RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz 541891.46150744 -# RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i KMD 22366.16022678, REVS 443.95821128 -# RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i KMD 22366.16022678 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i\",\"symbol\":\"KMD\"}" # 22366.16022678 -sleep 13 -./komodo-cli sendtoaddress RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i 22366.16022678 -# RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54 KMD 4454.25014712 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54\",\"symbol\":\"KMD\"}" # 4454.25014712 -sleep 13 -./komodo-cli sendtoaddress RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54 4454.25014712 -# RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN KMD 25.54297774, REVS 0.50680815 -# RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN KMD 25.54297774 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN\",\"symbol\":\"KMD\"}" # 25.54297774 -sleep 13 -./komodo-cli sendtoaddress RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN 25.54297774 -# RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym KMD 21446.21749875, REVS 241.00000000 -# RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym KMD 21446.21749875 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym\",\"symbol\":\"KMD\"}" # 21446.21749875 -sleep 13 -./komodo-cli sendtoaddress RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym 21446.21749875 -# RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao KMD 1093.79403237 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao\",\"symbol\":\"KMD\"}" # 1093.79403237 -sleep 13 -./komodo-cli sendtoaddress RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao 1093.79403237 -# RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 KMD 102137.83664315, REVS 2027.11216000 -# RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 KMD 102137.83664315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4\",\"symbol\":\"KMD\"}" # 102137.83664315 -sleep 13 -./komodo-cli sendtoaddress RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 102137.83664315 -# RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA KMD 15451.81049286 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA\",\"symbol\":\"KMD\"}" # 15451.81049286 -sleep 13 -./komodo-cli sendtoaddress RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA 15451.81049286 -# R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs KMD 4066.92404737 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs\",\"symbol\":\"KMD\"}" # 4066.92404737 -sleep 13 -./komodo-cli sendtoaddress R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs 4066.92404737 -# RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW KMD 968.31524937 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW\",\"symbol\":\"KMD\"}" # 968.31524937 -sleep 13 -./komodo-cli sendtoaddress RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW 968.31524937 -# RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C KMD 11415.41169287 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C\",\"symbol\":\"KMD\"}" # 11415.41169287 -sleep 13 -./komodo-cli sendtoaddress RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C 11415.41169287 -# RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB\",\"symbol\":\"KMD\"}" # 9683.15249375 -sleep 13 -./komodo-cli sendtoaddress RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB 9683.15249375 -# REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf KMD 130928.69826981, REVS 2597.54928401 -# REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf KMD 130928.69826981 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf\",\"symbol\":\"KMD\"}" # 130928.69826981 -sleep 13 -./komodo-cli sendtoaddress REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf 130928.69826981 -# RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ KMD 8948.17705032 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ\",\"symbol\":\"KMD\"}" # 8948.17705032 -sleep 13 -./komodo-cli sendtoaddress RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ 8948.17705032 -# RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP KMD 5117.51239557 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP\",\"symbol\":\"KMD\"}" # 5117.51239557 -sleep 13 -./komodo-cli sendtoaddress RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP 5117.51239557 -# RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32 KMD 3721.26805123 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32\",\"symbol\":\"KMD\"}" # 3721.26805123 -sleep 13 -./komodo-cli sendtoaddress RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32 3721.26805123 -# RFwK8bejf6ANo61ipukbXxto15z55CwRUm KMD 4360.41373744 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFwK8bejf6ANo61ipukbXxto15z55CwRUm\",\"symbol\":\"KMD\"}" # 4360.41373744 -sleep 13 -./komodo-cli sendtoaddress RFwK8bejf6ANo61ipukbXxto15z55CwRUm 4360.41373744 -# RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ KMD 26947.73503767 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ\",\"symbol\":\"KMD\"}" # 26947.73503767 -sleep 13 -./komodo-cli sendtoaddress RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ 26947.73503767 -# RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA KMD 28641.72782430, REVS 337.66808110 -# RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA KMD 28641.72782430 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA\",\"symbol\":\"KMD\"}" # 28641.72782430 -sleep 13 -./komodo-cli sendtoaddress RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA 28641.72782430 -# RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk KMD 2171.04073365, REVS 43.05910000 -# RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk KMD 2171.04073365 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk\",\"symbol\":\"KMD\"}" # 2171.04073365 -sleep 13 -./komodo-cli sendtoaddress RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk 2171.04073365 -# RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp KMD 56753.10185822 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp\",\"symbol\":\"KMD\"}" # 56753.10185822 -sleep 13 -./komodo-cli sendtoaddress RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp 56753.10185822 -# RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS KMD 31741.86724191, REVS 514.45537037 -# RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS KMD 31741.86724191 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS\",\"symbol\":\"KMD\"}" # 31741.86724191 -sleep 13 -./komodo-cli sendtoaddress RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS 31741.86724191 -# RYWPYz5qotHsukbFpzRksctMUBobmWLdkG KMD 9295.82639400 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYWPYz5qotHsukbFpzRksctMUBobmWLdkG\",\"symbol\":\"KMD\"}" # 9295.82639400 -sleep 13 -./komodo-cli sendtoaddress RYWPYz5qotHsukbFpzRksctMUBobmWLdkG 9295.82639400 -# RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct KMD 4841.57624687 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct\",\"symbol\":\"KMD\"}" # 4841.57624687 -sleep 13 -./komodo-cli sendtoaddress RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct 4841.57624687 -# RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd KMD 12756.16332851, REVS 253.10000000 -# RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd KMD 12756.16332851 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd\",\"symbol\":\"KMD\"}" # 12756.16332851 -sleep 13 -./komodo-cli sendtoaddress RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd 12756.16332851 -# RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz KMD 3422.63549310, REVS 51.90683618 -# RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz KMD 3422.63549310 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz\",\"symbol\":\"KMD\"}" # 3422.63549310 -sleep 13 -./komodo-cli sendtoaddress RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz 3422.63549310 -# RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns KMD 77986.19708921, REVS 1548.20316000 -# RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns KMD 77986.19708921 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns\",\"symbol\":\"KMD\"}" # 77986.19708921 -sleep 13 -./komodo-cli sendtoaddress RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns 77986.19708921 -# RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm KMD 1633.25733112 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm\",\"symbol\":\"KMD\"}" # 1633.25733112 -sleep 13 -./komodo-cli sendtoaddress RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm 1633.25733112 -# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 11621.99031627, REVS 192.14192021 -# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 11621.99031627 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf\",\"symbol\":\"KMD\"}" # 11621.99031627 -sleep 13 -./komodo-cli sendtoaddress RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf 11621.99031627 -# RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx KMD 4237.18880501 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx\",\"symbol\":\"KMD\"}" # 4237.18880501 -sleep 13 -./komodo-cli sendtoaddress RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx 4237.18880501 -# RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB KMD 111549.91672800 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB\",\"symbol\":\"KMD\"}" # 111549.91672800 -sleep 13 -./komodo-cli sendtoaddress RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB 111549.91672800 -# RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A KMD 2186.32329008 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A\",\"symbol\":\"KMD\"}" # 2186.32329008 -sleep 13 -./komodo-cli sendtoaddress RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A 2186.32329008 -# RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms\",\"symbol\":\"KMD\"}" # 774.65219950 -sleep 13 -./komodo-cli sendtoaddress RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms 774.65219950 -# REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH KMD 25088.84725730, REVS 305.62849999 -# REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH KMD 25088.84725730 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH\",\"symbol\":\"KMD\"}" # 25088.84725730 -sleep 13 -./komodo-cli sendtoaddress REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH 25088.84725730 -# RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 KMD 3546.25060143, REVS 39.99000000 -# RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 KMD 3546.25060143 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3\",\"symbol\":\"KMD\"}" # 3546.25060143 -sleep 13 -./komodo-cli sendtoaddress RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 3546.25060143 -# REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM KMD 3874.81030189 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM\",\"symbol\":\"KMD\"}" # 3874.81030189 -sleep 13 -./komodo-cli sendtoaddress REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM 3874.81030189 -# RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd KMD 69108.92543895, REVS 314.51750000 -# RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd KMD 69108.92543895 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd\",\"symbol\":\"KMD\"}" # 69108.92543895 -sleep 13 -./komodo-cli sendtoaddress RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd 69108.92543895 -# RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg KMD 971.41385817 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg\",\"symbol\":\"KMD\"}" # 971.41385817 -sleep 13 -./komodo-cli sendtoaddress RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg 971.41385817 -# RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW KMD 1118.61025995 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW\",\"symbol\":\"KMD\"}" # 1118.61025995 -sleep 13 -./komodo-cli sendtoaddress RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW 1118.61025995 -# RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE KMD 2931.50081538, REVS 40.37145505 -# RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE KMD 2931.50081538 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE\",\"symbol\":\"KMD\"}" # 2931.50081538 -sleep 13 -./komodo-cli sendtoaddress RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE 2931.50081538 -# RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd KMD 8222.77359680 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd\",\"symbol\":\"KMD\"}" # 8222.77359680 -sleep 13 -./komodo-cli sendtoaddress RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd 8222.77359680 -# RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF KMD 19588.92575705 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF\",\"symbol\":\"KMD\"}" # 19588.92575705 -sleep 13 -./komodo-cli sendtoaddress RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF 19588.92575705 -# RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE KMD 5506.18026103, REVS 90.00054364 -# RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE KMD 5506.18026103 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE\",\"symbol\":\"KMD\"}" # 5506.18026103 -sleep 13 -./komodo-cli sendtoaddress RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE 5506.18026103 -# RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy KMD 8130.94314900 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy\",\"symbol\":\"KMD\"}" # 8130.94314900 -sleep 13 -./komodo-cli sendtoaddress RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy 8130.94314900 -# RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx KMD 529.41438680, REVS 10.50000000 -# RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx KMD 529.41438680 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx\",\"symbol\":\"KMD\"}" # 529.41438680 -sleep 13 -./komodo-cli sendtoaddress RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx 529.41438680 -# R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J KMD 15051.18125683, REVS 298.60000000 -# R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J KMD 15051.18125683 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J\",\"symbol\":\"KMD\"}" # 15051.18125683 -sleep 13 -./komodo-cli sendtoaddress R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J 15051.18125683 -# RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH KMD 710.45289846 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH\",\"symbol\":\"KMD\"}" # 710.45289846 -sleep 13 -./komodo-cli sendtoaddress RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH 710.45289846 -# RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A KMD 755.28589451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A\",\"symbol\":\"KMD\"}" # 755.28589451 -sleep 13 -./komodo-cli sendtoaddress RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A 755.28589451 -# RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb KMD 166779.58408020, REVS 3310.49966000 -# RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb KMD 166779.58408020 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb\",\"symbol\":\"KMD\"}" # 166779.58408020 -sleep 13 -./komodo-cli sendtoaddress RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb 166779.58408020 -# RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 KMD 25746.96382302, REVS 510.64558668 -# RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 KMD 25746.96382302 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RALRwXaEN3yS5damdDwAkmEMKvdAkVs361\",\"symbol\":\"KMD\"}" # 25746.96382302 -sleep 13 -./komodo-cli sendtoaddress RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 25746.96382302 -# RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V KMD 4647.91319700 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V\",\"symbol\":\"KMD\"}" # 4647.91319700 -sleep 13 -./komodo-cli sendtoaddress RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V 4647.91319700 -# RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 KMD 16872.68860925, REVS 334.64000000 -# RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 KMD 16872.68860925 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9\",\"symbol\":\"KMD\"}" # 16872.68860925 -sleep 13 -./komodo-cli sendtoaddress RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 16872.68860925 -# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 19616.45270312, REVS 389.05771834 -# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 19616.45270312 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" # 19616.45270312 -sleep 13 -./komodo-cli sendtoaddress RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A 19616.45270312 -# RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx KMD 327.74801651, REVS 6.50475878 -# RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx KMD 327.74801651 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx\",\"symbol\":\"KMD\"}" # 327.74801651 -sleep 13 -./komodo-cli sendtoaddress RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx 327.74801651 -# RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z KMD 27224.94567564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z\",\"symbol\":\"KMD\"}" # 27224.94567564 -sleep 13 -./komodo-cli sendtoaddress RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z 27224.94567564 -# RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3 KMD 3892.43363943 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3\",\"symbol\":\"KMD\"}" # 3892.43363943 -sleep 13 -./komodo-cli sendtoaddress RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3 3892.43363943 -# RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4 KMD 9265.21407570 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4\",\"symbol\":\"KMD\"}" # 9265.21407570 -sleep 13 -./komodo-cli sendtoaddress RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4 9265.21407570 -# RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD KMD 2183.96436714, REVS 2.36599993 -# RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD KMD 2183.96436714 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD\",\"symbol\":\"KMD\"}" # 2183.96436714 -sleep 13 -./komodo-cli sendtoaddress RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD 2183.96436714 -# RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF KMD 29049.45748125 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF\",\"symbol\":\"KMD\"}" # 29049.45748125 -sleep 13 -./komodo-cli sendtoaddress RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF 29049.45748125 -# RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f KMD 3457.02047726, REVS 68.56389987 -# RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f KMD 3457.02047726 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f\",\"symbol\":\"KMD\"}" # 3457.02047726 -sleep 13 -./komodo-cli sendtoaddress RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f 3457.02047726 -# RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW KMD 15358.01719845 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW\",\"symbol\":\"KMD\"}" # 15358.01719845 -sleep 13 -./komodo-cli sendtoaddress RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW 15358.01719845 -# RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby KMD 28274.80528175 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby\",\"symbol\":\"KMD\"}" # 28274.80528175 -sleep 13 -./komodo-cli sendtoaddress RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby 28274.80528175 -# RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy KMD 1456.34613506 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy\",\"symbol\":\"KMD\"}" # 1456.34613506 -sleep 13 -./komodo-cli sendtoaddress RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy 1456.34613506 -# RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M KMD 76598.36955552, REVS 1519.19347187 -# RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M KMD 76598.36955552 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M\",\"symbol\":\"KMD\"}" # 76598.36955552 -sleep 13 -./komodo-cli sendtoaddress RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M 76598.36955552 -# RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ KMD 82831.36892196, REVS 1643.94000000 -# RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ KMD 82831.36892196 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ\",\"symbol\":\"KMD\"}" # 82831.36892196 -sleep 13 -./komodo-cli sendtoaddress RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ 82831.36892196 -# RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj KMD 34065.53877698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj\",\"symbol\":\"KMD\"}" # 34065.53877698 -sleep 13 -./komodo-cli sendtoaddress RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj 34065.53877698 -# RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL KMD 67327.03192299, REVS 1282.48928243 -# RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL KMD 67327.03192299 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL\",\"symbol\":\"KMD\"}" # 67327.03192299 -sleep 13 -./komodo-cli sendtoaddress RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL 67327.03192299 -# RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf KMD 1538.42929417, REVS 30.51202988 -# RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf KMD 1538.42929417 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf\",\"symbol\":\"KMD\"}" # 1538.42929417 -sleep 13 -./komodo-cli sendtoaddress RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf 1538.42929417 -# RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d KMD 73542.70261753, REVS 1459.56877203 -# RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d KMD 73542.70261753 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d\",\"symbol\":\"KMD\"}" # 73542.70261753 -sleep 13 -./komodo-cli sendtoaddress RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d 73542.70261753 -# RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ KMD 8540.87460698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ\",\"symbol\":\"KMD\"}" # 8540.87460698 -sleep 13 -./komodo-cli sendtoaddress RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ 8540.87460698 -# RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY KMD 10419.10088055, REVS 206.75776925 -# RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY KMD 10419.10088055 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY\",\"symbol\":\"KMD\"}" # 10419.10088055 -sleep 13 -./komodo-cli sendtoaddress RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY 10419.10088055 -# RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU KMD 43480.56469698, REVS 50.30001915 -# RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU KMD 43480.56469698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU\",\"symbol\":\"KMD\"}" # 43480.56469698 -sleep 13 -./komodo-cli sendtoaddress RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU 43480.56469698 -# REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3 KMD 8489.87824564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3\",\"symbol\":\"KMD\"}" # 8489.87824564 -sleep 13 -./komodo-cli sendtoaddress REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3 8489.87824564 -# RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw KMD 20170.47947167 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw\",\"symbol\":\"KMD\"}" # 20170.47947167 -sleep 13 -./komodo-cli sendtoaddress RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw 20170.47947167 -# RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ KMD 105141.23597043, REVS 1006.07261743 -# RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ KMD 105141.23597043 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ\",\"symbol\":\"KMD\"}" # 105141.23597043 -sleep 13 -./komodo-cli sendtoaddress RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ 105141.23597043 -# RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi KMD 33700.59190315, REVS 380.47576230 -# RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi KMD 33700.59190315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi\",\"symbol\":\"KMD\"}" # 33700.59190315 -sleep 13 -./komodo-cli sendtoaddress RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi 33700.59190315 -# RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP KMD 61230.10078656, REVS 600.00100000 -# RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP KMD 61230.10078656 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP\",\"symbol\":\"KMD\"}" # 61230.10078656 -sleep 13 -./komodo-cli sendtoaddress RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP 61230.10078656 -# RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt KMD 153725.02014837, REVS 3049.70000000 -# RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt KMD 153725.02014837 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt\",\"symbol\":\"KMD\"}" # 153725.02014837 -sleep 13 -./komodo-cli sendtoaddress RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt 153725.02014837 -# RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN KMD 790607.74140148, REVS 15691.16324116 -# RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN KMD 790607.74140148 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN\",\"symbol\":\"KMD\"}" # 790607.74140148 -sleep 13 -./komodo-cli sendtoaddress RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN 790607.74140148 -# RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y KMD 293399.52056062 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y\",\"symbol\":\"KMD\"}" # 293399.52056062 -sleep 13 -./komodo-cli sendtoaddress RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y 293399.52056062 -# RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es KMD 14524.72874062 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es\",\"symbol\":\"KMD\"}" # 14524.72874062 -sleep 13 -./komodo-cli sendtoaddress RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es 14524.72874062 -# RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S KMD 6042.28715610 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S\",\"symbol\":\"KMD\"}" # 6042.28715610 -sleep 13 -./komodo-cli sendtoaddress RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S 6042.28715610 -# RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG KMD 26022.54788263, REVS 5.39446042 -# RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG KMD 26022.54788263 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG\",\"symbol\":\"KMD\"}" # 26022.54788263 -sleep 13 -./komodo-cli sendtoaddress RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG 26022.54788263 -# RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq KMD 14461.16736567 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq\",\"symbol\":\"KMD\"}" # 14461.16736567 -sleep 13 -./komodo-cli sendtoaddress RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq 14461.16736567 -# R9u7V63TLwJPH1shvAGHRG61aci61yy7RN KMD 20764.40163902, REVS 291.83028199 -# R9u7V63TLwJPH1shvAGHRG61aci61yy7RN KMD 20764.40163902 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9u7V63TLwJPH1shvAGHRG61aci61yy7RN\",\"symbol\":\"KMD\"}" # 20764.40163902 -sleep 13 -./komodo-cli sendtoaddress R9u7V63TLwJPH1shvAGHRG61aci61yy7RN 20764.40163902 -# RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA KMD 1859.16527880 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA\",\"symbol\":\"KMD\"}" # 1859.16527880 -sleep 13 -./komodo-cli sendtoaddress RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA 1859.16527880 -# RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh KMD 25176.19648375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh\",\"symbol\":\"KMD\"}" # 25176.19648375 -sleep 13 -./komodo-cli sendtoaddress RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh 25176.19648375 -# RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 KMD 6483.53169406, REVS 5.41696484 -# RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 KMD 6483.53169406 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4\",\"symbol\":\"KMD\"}" # 6483.53169406 -sleep 13 -./komodo-cli sendtoaddress RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 6483.53169406 -# R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb KMD 120245.29223059 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb\",\"symbol\":\"KMD\"}" # 120245.29223059 -sleep 13 -./komodo-cli sendtoaddress R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb 120245.29223059 -# RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 KMD 81008.20903630, REVS 1607.10337790 -# RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 KMD 81008.20903630 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3\",\"symbol\":\"KMD\"}" # 81008.20903630 -sleep 13 -./komodo-cli sendtoaddress RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 81008.20903630 -# RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v KMD 14010.00244099, REVS 277.86367220 -# RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v KMD 14010.00244099 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v\",\"symbol\":\"KMD\"}" # 14010.00244099 -sleep 13 -./komodo-cli sendtoaddress RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v 14010.00244099 -# RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 KMD 674.21697725, REVS 13.37190382 -# RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 KMD 674.21697725 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4\",\"symbol\":\"KMD\"}" # 674.21697725 -sleep 13 -./komodo-cli sendtoaddress RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 674.21697725 -# RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN KMD 1258661.38989150 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN\",\"symbol\":\"KMD\"}" # 1258661.38989150 -sleep 13 -./komodo-cli sendtoaddress RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN 1258661.38989150 -# RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx KMD 1924794.21182562 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx\",\"symbol\":\"KMD\"}" # 1924794.21182562 -sleep 13 -./komodo-cli sendtoaddress RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx 1924794.21182562 -# RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH KMD 4841.57624687 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH\",\"symbol\":\"KMD\"}" # 4841.57624687 -sleep 13 -./komodo-cli sendtoaddress RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH 4841.57624687 -# RU49btc37WeEiQotQZMhEaGokFYeJYc616 KMD 128958.92559312 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RU49btc37WeEiQotQZMhEaGokFYeJYc616\",\"symbol\":\"KMD\"}" # 128958.92559312 -sleep 13 -./komodo-cli sendtoaddress RU49btc37WeEiQotQZMhEaGokFYeJYc616 128958.92559312 -# RW3gz9fEadohRLZerK9r8zXkugk5swWHrf KMD 21219.62483892, REVS 421.20000000 -# RW3gz9fEadohRLZerK9r8zXkugk5swWHrf KMD 21219.62483892 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf\",\"symbol\":\"KMD\"}" # 21219.62483892 -sleep 13 -./komodo-cli sendtoaddress RW3gz9fEadohRLZerK9r8zXkugk5swWHrf 21219.62483892 -# RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U KMD 1677670.82328714 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U\",\"symbol\":\"KMD\"}" # 1677670.82328714 -sleep 13 -./komodo-cli sendtoaddress RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U 1677670.82328714 -# RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu KMD 52588.80320859, REVS 1043.00609779 -# RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu KMD 52588.80320859 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu\",\"symbol\":\"KMD\"}" # 52588.80320859 -sleep 13 -./komodo-cli sendtoaddress RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu 52588.80320859 -# RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 KMD 668547.16129881, REVS 13259.45302721 -# RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 KMD 668547.16129881 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4\",\"symbol\":\"KMD\"}" # 668547.16129881 -sleep 13 -./komodo-cli sendtoaddress RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 668547.16129881 -# R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc KMD 241619.45649268, REVS 4792.09548598 -# R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc KMD 241619.45649268 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc\",\"symbol\":\"KMD\"}" # 241619.45649268 -sleep 13 -./komodo-cli sendtoaddress R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc 241619.45649268 -# RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm KMD 9071868.91817425, REVS 180010.00000000 -# RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm KMD 9071868.91817425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm\",\"symbol\":\"KMD\"}" # 9071868.91817425 -sleep 13 -./komodo-cli sendtoaddress RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm 9071868.91817425 -# RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm KMD 25778.27244764, REVS 225.87592741 -# RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm KMD 25778.27244764 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm\",\"symbol\":\"KMD\"}" # 25778.27244764 -sleep 13 -./komodo-cli sendtoaddress RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm 25778.27244764 -# RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q KMD 1781.70005885 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q\",\"symbol\":\"KMD\"}" # 1781.70005885 -sleep 13 -./komodo-cli sendtoaddress RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q 1781.70005885 -# RSixxEuXMe8DacnajhgqDdrcFjeGD54drE KMD 266743.29833631 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSixxEuXMe8DacnajhgqDdrcFjeGD54drE\",\"symbol\":\"KMD\"}" # 266743.29833631 -sleep 13 -./komodo-cli sendtoaddress RSixxEuXMe8DacnajhgqDdrcFjeGD54drE 266743.29833631 -# RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu KMD 6387.59296405, REVS 126.73871740 -# RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu KMD 6387.59296405 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu\",\"symbol\":\"KMD\"}" # 6387.59296405 -sleep 13 -./komodo-cli sendtoaddress RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu 6387.59296405 -# RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU KMD 1243.42190050 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU\",\"symbol\":\"KMD\"}" # 1243.42190050 -sleep 13 -./komodo-cli sendtoaddress RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU 1243.42190050 -# RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z KMD 492782.94486222, REVS 9773.48000000 -# RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z KMD 492782.94486222 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z\",\"symbol\":\"KMD\"}" # 492782.94486222 -sleep 13 -./komodo-cli sendtoaddress RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z 492782.94486222 -# RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP KMD 343847.33707184, REVS 6001.47957339 -# RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP KMD 343847.33707184 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP\",\"symbol\":\"KMD\"}" # 343847.33707184 -sleep 13 -./komodo-cli sendtoaddress RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP 343847.33707184 -# RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG KMD 155758.69136969 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG\",\"symbol\":\"KMD\"}" # 155758.69136969 -sleep 13 -./komodo-cli sendtoaddress RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG 155758.69136969 -# RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq KMD 4060.09161497 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq\",\"symbol\":\"KMD\"}" # 4060.09161497 -sleep 13 -./komodo-cli sendtoaddress RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq 4060.09161497 -# RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw KMD 36335.50253541, REVS 413.60001059 -# RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw KMD 36335.50253541 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw\",\"symbol\":\"KMD\"}" # 36335.50253541 -sleep 13 -./komodo-cli sendtoaddress RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw 36335.50253541 -# RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ KMD 5270.01925860 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ\",\"symbol\":\"KMD\"}" # 5270.01925860 -sleep 13 -./komodo-cli sendtoaddress RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ 5270.01925860 -# RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp KMD 47464.51702590, REVS 634.55156126 -# RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp KMD 47464.51702590 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp\",\"symbol\":\"KMD\"}" # 47464.51702590 -sleep 13 -./komodo-cli sendtoaddress RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp 47464.51702590 -# RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 KMD 36359.70475507, REVS 100.00000000 -# RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 KMD 36359.70475507 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1\",\"symbol\":\"KMD\"}" # 36359.70475507 -sleep 13 -./komodo-cli sendtoaddress RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 36359.70475507 -# R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd KMD 915808.36366861, REVS 18163.44258555 -# R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd KMD 915808.36366861 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd\",\"symbol\":\"KMD\"}" # 915808.36366861 -sleep 13 -./komodo-cli sendtoaddress R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd 915808.36366861 -# RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU KMD 18822.21903353, REVS 360.77089072 -# RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU KMD 18822.21903353 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU\",\"symbol\":\"KMD\"}" # 18822.21903353 -sleep 13 -./komodo-cli sendtoaddress RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU 18822.21903353 -# RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG KMD 62376.97840244, REVS 1045.22605497 -# RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG KMD 62376.97840244 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG\",\"symbol\":\"KMD\"}" # 62376.97840244 -sleep 13 -./komodo-cli sendtoaddress RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG 62376.97840244 -# RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu KMD 37183.30557600 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu\",\"symbol\":\"KMD\"}" # 37183.30557600 -sleep 13 -./komodo-cli sendtoaddress RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu 37183.30557600 -# RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC KMD 541390.42407502, REVS 10592.65522652 -# RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC KMD 541390.42407502 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC\",\"symbol\":\"KMD\"}" # 541390.42407502 -sleep 13 -./komodo-cli sendtoaddress RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC 541390.42407502 -# RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs KMD 130769.80646849, REVS 2593.58831601 -# RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs KMD 130769.80646849 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs\",\"symbol\":\"KMD\"}" # 130769.80646849 -sleep 13 -./komodo-cli sendtoaddress RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs 130769.80646849 -# RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC KMD 6843.04832293, REVS 25.10000000 -# RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC KMD 6843.04832293 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC\",\"symbol\":\"KMD\"}" # 6843.04832293 -sleep 13 -./komodo-cli sendtoaddress RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC 6843.04832293 -# RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 KMD 95283.12042643, REVS 497.50723875 -# RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 KMD 95283.12042643 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9\",\"symbol\":\"KMD\"}" # 95283.12042643 -sleep 13 -./komodo-cli sendtoaddress RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 95283.12042643 - -# total KMD 45769105.32172734 REVS 0.00000000 diff --git a/src/KMD.batch0.listunspent b/src/KMD.batch0.listunspent deleted file mode 100755 index 33bd0eb10..000000000 --- a/src/KMD.batch0.listunspent +++ /dev/null @@ -1,1190 +0,0 @@ -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getinfo\",\"symbol\":\"BTC\"}" -# RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 KMD 16462.32091533, REVS 289.86606506 -# RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 KMD 16462.32091533 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58\",\"symbol\":\"KMD\"}" -echo "16462.32091533 <- expected amount RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58" - -# RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA KMD 74417.52897713, REVS 500.77700000 -# RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA KMD 74417.52897713 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA\",\"symbol\":\"KMD\"}" -echo "74417.52897713 <- expected amount RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA" - -# RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe KMD 9691.47954009 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe\",\"symbol\":\"KMD\"}" -echo "9691.47954009 <- expected amount RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe" - -# RRCwketDe8CXt4dMWpL4NpQntxJvmwousn KMD 201.21200152 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRCwketDe8CXt4dMWpL4NpQntxJvmwousn\",\"symbol\":\"KMD\"}" -echo "201.21200152 <- expected amount RRCwketDe8CXt4dMWpL4NpQntxJvmwousn" - -# RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c KMD 616895.10028203, REVS 3685.61452692 -# RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c KMD 616895.10028203 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c\",\"symbol\":\"KMD\"}" -echo "616895.10028203 <- expected amount RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c" - -# R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n KMD 1053.37494565, REVS 4.29070721 -# R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n KMD 1053.37494565 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n\",\"symbol\":\"KMD\"}" -echo "1053.37494565 <- expected amount R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n" - -# RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ" - -# REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE KMD 3945.67461320, REVS 30.24757576 -# REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE KMD 3945.67461320 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE\",\"symbol\":\"KMD\"}" -echo "3945.67461320 <- expected amount REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE" - -# RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub KMD 96831.52493750 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub\",\"symbol\":\"KMD\"}" -echo "96831.52493750 <- expected amount RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub" - -# RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj KMD 2729058.03025689, REVS 54178.00103054 -# RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj KMD 2729058.03025689 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj\",\"symbol\":\"KMD\"}" -echo "2729058.03025689 <- expected amount RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj" - -# RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw KMD 61869.43786697 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw\",\"symbol\":\"KMD\"}" -echo "61869.43786697 <- expected amount RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw" - -# RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8 KMD 94617.81776961 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8\",\"symbol\":\"KMD\"}" -echo "94617.81776961 <- expected amount RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8" - -# RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF KMD 5315819.89184465 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF\",\"symbol\":\"KMD\"}" -echo "5315819.89184465 <- expected amount RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF" - -# RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r KMD 8661.80183095, REVS 171.90929822 -# RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r KMD 8661.80183095 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r\",\"symbol\":\"KMD\"}" -echo "8661.80183095 <- expected amount RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r" - -# RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV KMD 4964.66964335 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV\",\"symbol\":\"KMD\"}" -echo "4964.66964335 <- expected amount RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV" - -# RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk KMD 17816.10973847 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk\",\"symbol\":\"KMD\"}" -echo "17816.10973847 <- expected amount RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk" - -# RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV KMD 699334.64129367 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV\",\"symbol\":\"KMD\"}" -echo "699334.64129367 <- expected amount RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV" - -# REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv KMD 503444.41817988 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv\",\"symbol\":\"KMD\"}" -echo "503444.41817988 <- expected amount REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv" - -# RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia KMD 18367.01200788, REVS 350.00000000 -# RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia KMD 18367.01200788 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia\",\"symbol\":\"KMD\"}" -echo "18367.01200788 <- expected amount RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia" - -# RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn KMD 2848.88502056 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn\",\"symbol\":\"KMD\"}" -echo "2848.88502056 <- expected amount RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn" - -# RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS KMD 1254936.56318998 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS\",\"symbol\":\"KMD\"}" -echo "1254936.56318998 <- expected amount RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS" - -# REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7 KMD 107312.62836396 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7\",\"symbol\":\"KMD\"}" -echo "107312.62836396 <- expected amount REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7" - -# RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F KMD 368374.24120335 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F\",\"symbol\":\"KMD\"}" -echo "368374.24120335 <- expected amount RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F" - -# RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 KMD 7816.63087181, REVS 78.63808960 -# RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 KMD 7816.63087181 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6\",\"symbol\":\"KMD\"}" -echo "7816.63087181 <- expected amount RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6" - -# RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn KMD 92958.26394000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn\",\"symbol\":\"KMD\"}" -echo "92958.26394000 <- expected amount RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn" - -# RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78 KMD 26149.64106420 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78\",\"symbol\":\"KMD\"}" -echo "26149.64106420 <- expected amount RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78" - -# RE3yR2mCeG15ARgvENMbb573VqoQJcM3po KMD 17738.87416605, REVS 18.61556549 -# RE3yR2mCeG15ARgvENMbb573VqoQJcM3po KMD 17738.87416605 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RE3yR2mCeG15ARgvENMbb573VqoQJcM3po\",\"symbol\":\"KMD\"}" -echo "17738.87416605 <- expected amount RE3yR2mCeG15ARgvENMbb573VqoQJcM3po" - -# RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq KMD 17817.00058850 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq\",\"symbol\":\"KMD\"}" -echo "17817.00058850 <- expected amount RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq" - -# RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe KMD 928.65305676 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe\",\"symbol\":\"KMD\"}" -echo "928.65305676 <- expected amount RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe" - -# RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ KMD 19137.10414825 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ\",\"symbol\":\"KMD\"}" -echo "19137.10414825 <- expected amount RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ" - -# RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a KMD 7891.18147631 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a\",\"symbol\":\"KMD\"}" -echo "7891.18147631 <- expected amount RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a" - -# RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn KMD 259520.15743267 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn\",\"symbol\":\"KMD\"}" -echo "259520.15743267 <- expected amount RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn" - -# RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw KMD 3730.99968446 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw\",\"symbol\":\"KMD\"}" -echo "3730.99968446 <- expected amount RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw" - -# RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn KMD 894973.14219837 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn\",\"symbol\":\"KMD\"}" -echo "894973.14219837 <- expected amount RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn" - -# RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr KMD 722795.20152529 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr\",\"symbol\":\"KMD\"}" -echo "722795.20152529 <- expected amount RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr" - -# RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3 KMD 755.28589451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3\",\"symbol\":\"KMD\"}" -echo "755.28589451 <- expected amount RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3" - -# RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa KMD 19366.30498750 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa\",\"symbol\":\"KMD\"}" -echo "19366.30498750 <- expected amount RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa" - -# RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71 KMD 7523.80948764 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71\",\"symbol\":\"KMD\"}" -echo "7523.80948764 <- expected amount RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71" - -# RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK KMD 7746.52199500 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK\",\"symbol\":\"KMD\"}" -echo "7746.52199500 <- expected amount RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK" - -# RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH KMD 26696.69308472, REVS 529.99000000 -# RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH KMD 26696.69308472 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH\",\"symbol\":\"KMD\"}" -echo "26696.69308472 <- expected amount RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH" - -# RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B KMD 1711.08167983 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B\",\"symbol\":\"KMD\"}" -echo "1711.08167983 <- expected amount RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B" - -# RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne KMD 1846.86875964 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne\",\"symbol\":\"KMD\"}" -echo "1846.86875964 <- expected amount RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne" - -# RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP KMD 1092.25960129 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP\",\"symbol\":\"KMD\"}" -echo "1092.25960129 <- expected amount RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP" - -# RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b KMD 82906.87674571, REVS 1438.93600000 -# RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b KMD 82906.87674571 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b\",\"symbol\":\"KMD\"}" -echo "82906.87674571 <- expected amount RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b" - -# RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4 KMD 15493.04399000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4\",\"symbol\":\"KMD\"}" -echo "15493.04399000 <- expected amount RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4" - -# RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN KMD 732.43675323 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN\",\"symbol\":\"KMD\"}" -echo "732.43675323 <- expected amount RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN" - -# RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed KMD 5458.23813028 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed\",\"symbol\":\"KMD\"}" -echo "5458.23813028 <- expected amount RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed" - -# RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y KMD 46479.13197000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y\",\"symbol\":\"KMD\"}" -echo "46479.13197000 <- expected amount RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y" - -# RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 KMD 2197.34858012, REVS 43.61040113 -# RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 KMD 2197.34858012 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3\",\"symbol\":\"KMD\"}" -echo "2197.34858012 <- expected amount RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3" - -# RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP KMD 64966.39751162, REVS 1035.00000000 -# RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP KMD 64966.39751162 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP\",\"symbol\":\"KMD\"}" -echo "64966.39751162 <- expected amount RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP" - -# RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1 KMD 38732.60997500 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1\",\"symbol\":\"KMD\"}" -echo "38732.60997500 <- expected amount RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1" - -# RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ KMD 377892.70160675, REVS 7501.00000000 -# RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ KMD 377892.70160675 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ\",\"symbol\":\"KMD\"}" -echo "377892.70160675 <- expected amount RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ" - -# RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716 KMD 100542.16930966 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716\",\"symbol\":\"KMD\"}" -echo "100542.16930966 <- expected amount RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716" - -# R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY KMD 96830.55662225 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY\",\"symbol\":\"KMD\"}" -echo "96830.55662225 <- expected amount R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY" - -# RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz KMD 2140.79273143 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz\",\"symbol\":\"KMD\"}" -echo "2140.79273143 <- expected amount RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz" - -# RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA KMD 968.31524937 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA\",\"symbol\":\"KMD\"}" -echo "968.31524937 <- expected amount RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA" - -# RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR KMD 41.38832712, REVS 0.82090537 -# RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR KMD 41.38832712 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR\",\"symbol\":\"KMD\"}" -echo "41.38832712 <- expected amount RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR" - -# RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 KMD 1350076.86672091, REVS 100.00000000 -# RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 KMD 1350076.86672091 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8\",\"symbol\":\"KMD\"}" -echo "1350076.86672091 <- expected amount RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8" - -# RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu KMD 50567.04202258, REVS 1003.32000000 -# RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu KMD 50567.04202258 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu\",\"symbol\":\"KMD\"}" -echo "50567.04202258 <- expected amount RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu" - -# RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL KMD 589187.66272894, REVS 11685.49743445 -# RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL KMD 589187.66272894 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL\",\"symbol\":\"KMD\"}" -echo "589187.66272894 <- expected amount RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL" - -# RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S KMD 100.59218694 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S\",\"symbol\":\"KMD\"}" -echo "100.59218694 <- expected amount RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S" - -# RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH KMD 1012.75625347, REVS 20.10000000 -# RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH KMD 1012.75625347 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH\",\"symbol\":\"KMD\"}" -echo "1012.75625347 <- expected amount RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH" - -# RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa KMD 45132.81116316, REVS 342.26137428 -# RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa KMD 45132.81116316 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa\",\"symbol\":\"KMD\"}" -echo "45132.81116316 <- expected amount RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa" - -# RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac KMD 5028.91865657 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac\",\"symbol\":\"KMD\"}" -echo "5028.91865657 <- expected amount RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac" - -# RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq KMD 155.36852443, REVS 3.08314987 -# RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq KMD 155.36852443 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq\",\"symbol\":\"KMD\"}" -echo "155.36852443 <- expected amount RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq" - -# RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb KMD 15607.20311298 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb\",\"symbol\":\"KMD\"}" -echo "15607.20311298 <- expected amount RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb" - -# RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts KMD 23963.90703474, REVS 475.60756080 -# RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts KMD 23963.90703474 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts\",\"symbol\":\"KMD\"}" -echo "23963.90703474 <- expected amount RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts" - -# RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z" - -# RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr KMD 43088.75849296, REVS 470.88002226 -# RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr KMD 43088.75849296 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr\",\"symbol\":\"KMD\"}" -echo "43088.75849296 <- expected amount RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr" - -# RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX KMD 19172.64193762 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX\",\"symbol\":\"KMD\"}" -echo "19172.64193762 <- expected amount RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX" - -# R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN KMD 111664.10821907, REVS 2023.42268720 -# R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN KMD 111664.10821907 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN\",\"symbol\":\"KMD\"}" -echo "111664.10821907 <- expected amount R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN" - -# RH2udBo3386n4hatBet85WUxiGao8VVSM6 KMD 4047.94506848 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RH2udBo3386n4hatBet85WUxiGao8VVSM6\",\"symbol\":\"KMD\"}" -echo "4047.94506848 <- expected amount RH2udBo3386n4hatBet85WUxiGao8VVSM6" - -# RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe KMD 1011.40498451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe\",\"symbol\":\"KMD\"}" -echo "1011.40498451 <- expected amount RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe" - -# RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk KMD 972.80557592, REVS 19.29916914 -# RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk KMD 972.80557592 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk\",\"symbol\":\"KMD\"}" -echo "972.80557592 <- expected amount RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk" - -# RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B KMD 2420.78812342 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B\",\"symbol\":\"KMD\"}" -echo "2420.78812342 <- expected amount RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B" - -# RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ KMD 1589.10920508 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ\",\"symbol\":\"KMD\"}" -echo "1589.10920508 <- expected amount RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ" - -# RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE KMD 43251.49599262, REVS 857.93461385 -# RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE KMD 43251.49599262 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE\",\"symbol\":\"KMD\"}" -echo "43251.49599262 <- expected amount RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE" - -# RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY KMD 53585.08128315, REVS 731.01000000 -# RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY KMD 53585.08128315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY\",\"symbol\":\"KMD\"}" -echo "53585.08128315 <- expected amount RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY" - -# RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv KMD 4924.65994176 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv\",\"symbol\":\"KMD\"}" -echo "4924.65994176 <- expected amount RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv" - -# RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX KMD 55939.57195639 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX\",\"symbol\":\"KMD\"}" -echo "55939.57195639 <- expected amount RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX" - -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 57862.44847739, REVS 464.78017965 -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 57862.44847739 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3\",\"symbol\":\"KMD\"}" -echo "57862.44847739 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3" - -# RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6 KMD 11629.46614499 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6\",\"symbol\":\"KMD\"}" -echo "11629.46614499 <- expected amount RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6" - -# RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz KMD 2494.84014833 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz\",\"symbol\":\"KMD\"}" -echo "2494.84014833 <- expected amount RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz" - -# RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq KMD 755216.97171164 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq\",\"symbol\":\"KMD\"}" -echo "755216.97171164 <- expected amount RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq" - -# RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ KMD 7436.66111520 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ\",\"symbol\":\"KMD\"}" -echo "7436.66111520 <- expected amount RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ" - -# RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr KMD 215743.93040290, REVS 4280.65926868 -# RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr KMD 215743.93040290 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr\",\"symbol\":\"KMD\"}" -echo "215743.93040290 <- expected amount RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr" - -# R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb KMD 1006939.18080157 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb\",\"symbol\":\"KMD\"}" -echo "1006939.18080157 <- expected amount R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb" - -# RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN KMD 4005.10943567 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN\",\"symbol\":\"KMD\"}" -echo "4005.10943567 <- expected amount RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN" - -# RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb KMD 10117.34846003 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb\",\"symbol\":\"KMD\"}" -echo "10117.34846003 <- expected amount RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb" - -# RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP KMD 1005.49855495 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP\",\"symbol\":\"KMD\"}" -echo "1005.49855495 <- expected amount RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP" - -# RUtbAxmAqv1V47932T89tt79AN6TzazXSk KMD 1277.32401175 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUtbAxmAqv1V47932T89tt79AN6TzazXSk\",\"symbol\":\"KMD\"}" -echo "1277.32401175 <- expected amount RUtbAxmAqv1V47932T89tt79AN6TzazXSk" - -# RS9erX84xJG17efdZ66qHxhsUMG15fnCsH KMD 977546.42205511, REVS 19403.85638743 -# RS9erX84xJG17efdZ66qHxhsUMG15fnCsH KMD 977546.42205511 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RS9erX84xJG17efdZ66qHxhsUMG15fnCsH\",\"symbol\":\"KMD\"}" -echo "977546.42205511 <- expected amount RS9erX84xJG17efdZ66qHxhsUMG15fnCsH" - -# RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL KMD 8908.50029425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL\",\"symbol\":\"KMD\"}" -echo "8908.50029425 <- expected amount RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL" - -# RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ KMD 1394.37395910 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ\",\"symbol\":\"KMD\"}" -echo "1394.37395910 <- expected amount RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ" - -# RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 KMD 14588.33036215, REVS 289.61149547 -# RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 KMD 14588.33036215 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7\",\"symbol\":\"KMD\"}" -echo "14588.33036215 <- expected amount RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7" - -# RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC KMD 18008.72700786 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC\",\"symbol\":\"KMD\"}" -echo "18008.72700786 <- expected amount RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC" - -# RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk KMD 1626.76961895 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk\",\"symbol\":\"KMD\"}" -echo "1626.76961895 <- expected amount RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk" - -# RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN KMD 722.28571081 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN\",\"symbol\":\"KMD\"}" -echo "722.28571081 <- expected amount RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN" - -# RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL KMD 9863.45132134 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL\",\"symbol\":\"KMD\"}" -echo "9863.45132134 <- expected amount RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL" - -# RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3 KMD 83629.96327501 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3\",\"symbol\":\"KMD\"}" -echo "83629.96327501 <- expected amount RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3" - -# RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 KMD 3170.70655908, REVS 37.96790925 -# RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 KMD 3170.70655908 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6\",\"symbol\":\"KMD\"}" -echo "3170.70655908 <- expected amount RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6" - -# RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN KMD 11760.26545254 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN\",\"symbol\":\"KMD\"}" -echo "11760.26545254 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN" - -# RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a KMD 7073.16782615, REVS 44.30216197 -# RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a KMD 7073.16782615 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a\",\"symbol\":\"KMD\"}" -echo "7073.16782615 <- expected amount RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a" - -# RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv KMD 117108.97863641, REVS 1631.49836519 -# RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv KMD 117108.97863641 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv\",\"symbol\":\"KMD\"}" -echo "117108.97863641 <- expected amount RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv" - -# RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt KMD 163386.58575808, REVS 50.00000000 -# RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt KMD 163386.58575808 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt\",\"symbol\":\"KMD\"}" -echo "163386.58575808 <- expected amount RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt" - -# RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q" - -# RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU KMD 6742.29255596, REVS 105.00000000 -# RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU KMD 6742.29255596 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU\",\"symbol\":\"KMD\"}" -echo "6742.29255596 <- expected amount RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU" - -# RBxjj7kxFipThuHR9i3cyumFzM2c1puiua KMD 15493.04399000 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBxjj7kxFipThuHR9i3cyumFzM2c1puiua\",\"symbol\":\"KMD\"}" -echo "15493.04399000 <- expected amount RBxjj7kxFipThuHR9i3cyumFzM2c1puiua" - -# REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js KMD 1936.63049875 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js\",\"symbol\":\"KMD\"}" -echo "1936.63049875 <- expected amount REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js" - -# RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF KMD 1598.36899361, REVS 11.75449303 -# RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF KMD 1598.36899361 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF\",\"symbol\":\"KMD\"}" -echo "1598.36899361 <- expected amount RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF" - -# RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK KMD 1341.60124279 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK\",\"symbol\":\"KMD\"}" -echo "1341.60124279 <- expected amount RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK" - -# RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a KMD 753.34926401 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a\",\"symbol\":\"KMD\"}" -echo "753.34926401 <- expected amount RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a" - -# RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk KMD 9212.17131564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk\",\"symbol\":\"KMD\"}" -echo "9212.17131564 <- expected amount RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk" - -# RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj KMD 18464.80349033 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj\",\"symbol\":\"KMD\"}" -echo "18464.80349033 <- expected amount RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj" - -# RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a\",\"symbol\":\"KMD\"}" -echo "9683.15249375 <- expected amount RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a" - -# RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ KMD 7019.31724271 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ\",\"symbol\":\"KMD\"}" -echo "7019.31724271 <- expected amount RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ" - -# RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A KMD 3975.36465037 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A\",\"symbol\":\"KMD\"}" -echo "3975.36465037 <- expected amount RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A" - -# RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ KMD 4066.92404737 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ\",\"symbol\":\"KMD\"}" -echo "4066.92404737 <- expected amount RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ" - -# RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU KMD 2128.72487792 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU\",\"symbol\":\"KMD\"}" -echo "2128.72487792 <- expected amount RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU" - -# RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7 KMD 8908.50029425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7\",\"symbol\":\"KMD\"}" -echo "8908.50029425 <- expected amount RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7" - -# RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM" - -# RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS KMD 1470662.43386573 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS\",\"symbol\":\"KMD\"}" -echo "1470662.43386573 <- expected amount RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS" - -# RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG KMD 3692.08658052 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG\",\"symbol\":\"KMD\"}" -echo "3692.08658052 <- expected amount RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG" - -# RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z KMD 1243.73516984 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z\",\"symbol\":\"KMD\"}" -echo "1243.73516984 <- expected amount RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z" - -# RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb\",\"symbol\":\"KMD\"}" -echo "9683.15249375 <- expected amount RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb" - -# RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM" - -# RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y KMD 21671.70738465, REVS 170.69524117 -# RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y KMD 21671.70738465 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y\",\"symbol\":\"KMD\"}" -echo "21671.70738465 <- expected amount RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y" - -# RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4 KMD 4307.02827126 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4\",\"symbol\":\"KMD\"}" -echo "4307.02827126 <- expected amount RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4" - -# RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG KMD 12075.12037906, REVS 239.62000000 -# RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG KMD 12075.12037906 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG\",\"symbol\":\"KMD\"}" -echo "12075.12037906 <- expected amount RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG" - -# RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG KMD 1676.97635800 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG\",\"symbol\":\"KMD\"}" -echo "1676.97635800 <- expected amount RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG" - -# RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj KMD 25710.06172178, REVS 510.00000000 -# RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj KMD 25710.06172178 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj\",\"symbol\":\"KMD\"}" -echo "25710.06172178 <- expected amount RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj" - -# RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky KMD 4453.35929709 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky\",\"symbol\":\"KMD\"}" -echo "4453.35929709 <- expected amount RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky" - -# RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC KMD 34758.47429765, REVS 689.94006658 -# RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC KMD 34758.47429765 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC\",\"symbol\":\"KMD\"}" -echo "34758.47429765 <- expected amount RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC" - -# RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS KMD 6487.71217081 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS\",\"symbol\":\"KMD\"}" -echo "6487.71217081 <- expected amount RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS" - -# REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY KMD 4003.40256701 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY\",\"symbol\":\"KMD\"}" -echo "4003.40256701 <- expected amount REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY" - -# RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq KMD 816561.67159376, REVS 16199.49755302 -# RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq KMD 816561.67159376 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq\",\"symbol\":\"KMD\"}" -echo "816561.67159376 <- expected amount RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq" - -# RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 KMD 88331.27512150, REVS 1398.88449696 -# RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 KMD 88331.27512150 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5\",\"symbol\":\"KMD\"}" -echo "88331.27512150 <- expected amount RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5" - -# RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz KMD 541891.46150744 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz\",\"symbol\":\"KMD\"}" -echo "541891.46150744 <- expected amount RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz" - -# RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i KMD 22366.16022678, REVS 443.95821128 -# RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i KMD 22366.16022678 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i\",\"symbol\":\"KMD\"}" -echo "22366.16022678 <- expected amount RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i" - -# RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54 KMD 4454.25014712 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54\",\"symbol\":\"KMD\"}" -echo "4454.25014712 <- expected amount RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54" - -# RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN KMD 25.54297774, REVS 0.50680815 -# RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN KMD 25.54297774 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN\",\"symbol\":\"KMD\"}" -echo "25.54297774 <- expected amount RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN" - -# RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym KMD 21446.21749875, REVS 241.00000000 -# RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym KMD 21446.21749875 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym\",\"symbol\":\"KMD\"}" -echo "21446.21749875 <- expected amount RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym" - -# RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao KMD 1093.79403237 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao\",\"symbol\":\"KMD\"}" -echo "1093.79403237 <- expected amount RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao" - -# RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 KMD 102137.83664315, REVS 2027.11216000 -# RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 KMD 102137.83664315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4\",\"symbol\":\"KMD\"}" -echo "102137.83664315 <- expected amount RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4" - -# RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA KMD 15451.81049286 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA\",\"symbol\":\"KMD\"}" -echo "15451.81049286 <- expected amount RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA" - -# R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs KMD 4066.92404737 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs\",\"symbol\":\"KMD\"}" -echo "4066.92404737 <- expected amount R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs" - -# RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW KMD 968.31524937 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW\",\"symbol\":\"KMD\"}" -echo "968.31524937 <- expected amount RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW" - -# RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C KMD 11415.41169287 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C\",\"symbol\":\"KMD\"}" -echo "11415.41169287 <- expected amount RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C" - -# RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB KMD 9683.15249375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB\",\"symbol\":\"KMD\"}" -echo "9683.15249375 <- expected amount RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB" - -# REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf KMD 130928.69826981, REVS 2597.54928401 -# REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf KMD 130928.69826981 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf\",\"symbol\":\"KMD\"}" -echo "130928.69826981 <- expected amount REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf" - -# RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ KMD 8948.17705032 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ\",\"symbol\":\"KMD\"}" -echo "8948.17705032 <- expected amount RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ" - -# RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP KMD 5117.51239557 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP\",\"symbol\":\"KMD\"}" -echo "5117.51239557 <- expected amount RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP" - -# RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32 KMD 3721.26805123 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32\",\"symbol\":\"KMD\"}" -echo "3721.26805123 <- expected amount RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32" - -# RFwK8bejf6ANo61ipukbXxto15z55CwRUm KMD 4360.41373744 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFwK8bejf6ANo61ipukbXxto15z55CwRUm\",\"symbol\":\"KMD\"}" -echo "4360.41373744 <- expected amount RFwK8bejf6ANo61ipukbXxto15z55CwRUm" - -# RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ KMD 26947.73503767 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ\",\"symbol\":\"KMD\"}" -echo "26947.73503767 <- expected amount RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ" - -# RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA KMD 28641.72782430, REVS 337.66808110 -# RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA KMD 28641.72782430 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA\",\"symbol\":\"KMD\"}" -echo "28641.72782430 <- expected amount RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA" - -# RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk KMD 2171.04073365, REVS 43.05910000 -# RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk KMD 2171.04073365 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk\",\"symbol\":\"KMD\"}" -echo "2171.04073365 <- expected amount RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk" - -# RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp KMD 56753.10185822 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp\",\"symbol\":\"KMD\"}" -echo "56753.10185822 <- expected amount RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp" - -# RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS KMD 31741.86724191, REVS 514.45537037 -# RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS KMD 31741.86724191 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS\",\"symbol\":\"KMD\"}" -echo "31741.86724191 <- expected amount RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS" - -# RYWPYz5qotHsukbFpzRksctMUBobmWLdkG KMD 9295.82639400 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYWPYz5qotHsukbFpzRksctMUBobmWLdkG\",\"symbol\":\"KMD\"}" -echo "9295.82639400 <- expected amount RYWPYz5qotHsukbFpzRksctMUBobmWLdkG" - -# RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct KMD 4841.57624687 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct\",\"symbol\":\"KMD\"}" -echo "4841.57624687 <- expected amount RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct" - -# RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd KMD 12756.16332851, REVS 253.10000000 -# RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd KMD 12756.16332851 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd\",\"symbol\":\"KMD\"}" -echo "12756.16332851 <- expected amount RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd" - -# RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz KMD 3422.63549310, REVS 51.90683618 -# RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz KMD 3422.63549310 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz\",\"symbol\":\"KMD\"}" -echo "3422.63549310 <- expected amount RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz" - -# RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns KMD 77986.19708921, REVS 1548.20316000 -# RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns KMD 77986.19708921 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns\",\"symbol\":\"KMD\"}" -echo "77986.19708921 <- expected amount RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns" - -# RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm KMD 1633.25733112 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm\",\"symbol\":\"KMD\"}" -echo "1633.25733112 <- expected amount RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm" - -# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 11621.99031627, REVS 192.14192021 -# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 11621.99031627 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf\",\"symbol\":\"KMD\"}" -echo "11621.99031627 <- expected amount RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf" - -# RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx KMD 4237.18880501 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx\",\"symbol\":\"KMD\"}" -echo "4237.18880501 <- expected amount RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx" - -# RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB KMD 111549.91672800 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB\",\"symbol\":\"KMD\"}" -echo "111549.91672800 <- expected amount RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB" - -# RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A KMD 2186.32329008 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A\",\"symbol\":\"KMD\"}" -echo "2186.32329008 <- expected amount RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A" - -# RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms KMD 774.65219950 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms\",\"symbol\":\"KMD\"}" -echo "774.65219950 <- expected amount RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms" - -# REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH KMD 25088.84725730, REVS 305.62849999 -# REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH KMD 25088.84725730 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH\",\"symbol\":\"KMD\"}" -echo "25088.84725730 <- expected amount REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH" - -# RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 KMD 3546.25060143, REVS 39.99000000 -# RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 KMD 3546.25060143 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3\",\"symbol\":\"KMD\"}" -echo "3546.25060143 <- expected amount RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3" - -# REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM KMD 3874.81030189 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM\",\"symbol\":\"KMD\"}" -echo "3874.81030189 <- expected amount REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM" - -# RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd KMD 69108.92543895, REVS 314.51750000 -# RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd KMD 69108.92543895 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd\",\"symbol\":\"KMD\"}" -echo "69108.92543895 <- expected amount RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd" - -# RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg KMD 971.41385817 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg\",\"symbol\":\"KMD\"}" -echo "971.41385817 <- expected amount RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg" - -# RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW KMD 1118.61025995 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW\",\"symbol\":\"KMD\"}" -echo "1118.61025995 <- expected amount RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW" - -# RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE KMD 2931.50081538, REVS 40.37145505 -# RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE KMD 2931.50081538 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE\",\"symbol\":\"KMD\"}" -echo "2931.50081538 <- expected amount RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE" - -# RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd KMD 8222.77359680 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd\",\"symbol\":\"KMD\"}" -echo "8222.77359680 <- expected amount RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd" - -# RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF KMD 19588.92575705 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF\",\"symbol\":\"KMD\"}" -echo "19588.92575705 <- expected amount RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF" - -# RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE KMD 5506.18026103, REVS 90.00054364 -# RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE KMD 5506.18026103 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE\",\"symbol\":\"KMD\"}" -echo "5506.18026103 <- expected amount RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE" - -# RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy KMD 8130.94314900 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy\",\"symbol\":\"KMD\"}" -echo "8130.94314900 <- expected amount RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy" - -# RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx KMD 529.41438680, REVS 10.50000000 -# RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx KMD 529.41438680 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx\",\"symbol\":\"KMD\"}" -echo "529.41438680 <- expected amount RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx" - -# R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J KMD 15051.18125683, REVS 298.60000000 -# R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J KMD 15051.18125683 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J\",\"symbol\":\"KMD\"}" -echo "15051.18125683 <- expected amount R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J" - -# RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH KMD 710.45289846 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH\",\"symbol\":\"KMD\"}" -echo "710.45289846 <- expected amount RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH" - -# RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A KMD 755.28589451 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A\",\"symbol\":\"KMD\"}" -echo "755.28589451 <- expected amount RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A" - -# RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb KMD 166779.58408020, REVS 3310.49966000 -# RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb KMD 166779.58408020 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb\",\"symbol\":\"KMD\"}" -echo "166779.58408020 <- expected amount RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb" - -# RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 KMD 25746.96382302, REVS 510.64558668 -# RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 KMD 25746.96382302 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RALRwXaEN3yS5damdDwAkmEMKvdAkVs361\",\"symbol\":\"KMD\"}" -echo "25746.96382302 <- expected amount RALRwXaEN3yS5damdDwAkmEMKvdAkVs361" - -# RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V KMD 4647.91319700 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V\",\"symbol\":\"KMD\"}" -echo "4647.91319700 <- expected amount RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V" - -# RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 KMD 16872.68860925, REVS 334.64000000 -# RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 KMD 16872.68860925 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9\",\"symbol\":\"KMD\"}" -echo "16872.68860925 <- expected amount RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9" - -# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 19616.45270312, REVS 389.05771834 -# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 19616.45270312 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" -echo "19616.45270312 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" - -# RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx KMD 327.74801651, REVS 6.50475878 -# RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx KMD 327.74801651 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx\",\"symbol\":\"KMD\"}" -echo "327.74801651 <- expected amount RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx" - -# RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z KMD 27224.94567564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z\",\"symbol\":\"KMD\"}" -echo "27224.94567564 <- expected amount RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z" - -# RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3 KMD 3892.43363943 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3\",\"symbol\":\"KMD\"}" -echo "3892.43363943 <- expected amount RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3" - -# RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4 KMD 9265.21407570 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4\",\"symbol\":\"KMD\"}" -echo "9265.21407570 <- expected amount RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4" - -# RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD KMD 2183.96436714, REVS 2.36599993 -# RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD KMD 2183.96436714 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD\",\"symbol\":\"KMD\"}" -echo "2183.96436714 <- expected amount RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD" - -# RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF KMD 29049.45748125 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF\",\"symbol\":\"KMD\"}" -echo "29049.45748125 <- expected amount RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF" - -# RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f KMD 3457.02047726, REVS 68.56389987 -# RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f KMD 3457.02047726 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f\",\"symbol\":\"KMD\"}" -echo "3457.02047726 <- expected amount RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f" - -# RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW KMD 15358.01719845 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW\",\"symbol\":\"KMD\"}" -echo "15358.01719845 <- expected amount RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW" - -# RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby KMD 28274.80528175 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby\",\"symbol\":\"KMD\"}" -echo "28274.80528175 <- expected amount RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby" - -# RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy KMD 1456.34613506 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy\",\"symbol\":\"KMD\"}" -echo "1456.34613506 <- expected amount RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy" - -# RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M KMD 76598.36955552, REVS 1519.19347187 -# RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M KMD 76598.36955552 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M\",\"symbol\":\"KMD\"}" -echo "76598.36955552 <- expected amount RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M" - -# RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ KMD 82831.36892196, REVS 1643.94000000 -# RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ KMD 82831.36892196 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ\",\"symbol\":\"KMD\"}" -echo "82831.36892196 <- expected amount RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ" - -# RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj KMD 34065.53877698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj\",\"symbol\":\"KMD\"}" -echo "34065.53877698 <- expected amount RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj" - -# RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL KMD 67327.03192299, REVS 1282.48928243 -# RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL KMD 67327.03192299 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL\",\"symbol\":\"KMD\"}" -echo "67327.03192299 <- expected amount RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL" - -# RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf KMD 1538.42929417, REVS 30.51202988 -# RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf KMD 1538.42929417 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf\",\"symbol\":\"KMD\"}" -echo "1538.42929417 <- expected amount RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf" - -# RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d KMD 73542.70261753, REVS 1459.56877203 -# RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d KMD 73542.70261753 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d\",\"symbol\":\"KMD\"}" -echo "73542.70261753 <- expected amount RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d" - -# RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ KMD 8540.87460698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ\",\"symbol\":\"KMD\"}" -echo "8540.87460698 <- expected amount RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ" - -# RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY KMD 10419.10088055, REVS 206.75776925 -# RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY KMD 10419.10088055 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY\",\"symbol\":\"KMD\"}" -echo "10419.10088055 <- expected amount RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY" - -# RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU KMD 43480.56469698, REVS 50.30001915 -# RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU KMD 43480.56469698 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU\",\"symbol\":\"KMD\"}" -echo "43480.56469698 <- expected amount RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU" - -# REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3 KMD 8489.87824564 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3\",\"symbol\":\"KMD\"}" -echo "8489.87824564 <- expected amount REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3" - -# RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw KMD 20170.47947167 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw\",\"symbol\":\"KMD\"}" -echo "20170.47947167 <- expected amount RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw" - -# RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ KMD 105141.23597043, REVS 1006.07261743 -# RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ KMD 105141.23597043 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ\",\"symbol\":\"KMD\"}" -echo "105141.23597043 <- expected amount RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ" - -# RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi KMD 33700.59190315, REVS 380.47576230 -# RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi KMD 33700.59190315 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi\",\"symbol\":\"KMD\"}" -echo "33700.59190315 <- expected amount RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi" - -# RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP KMD 61230.10078656, REVS 600.00100000 -# RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP KMD 61230.10078656 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP\",\"symbol\":\"KMD\"}" -echo "61230.10078656 <- expected amount RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP" - -# RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt KMD 153725.02014837, REVS 3049.70000000 -# RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt KMD 153725.02014837 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt\",\"symbol\":\"KMD\"}" -echo "153725.02014837 <- expected amount RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt" - -# RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN KMD 790607.74140148, REVS 15691.16324116 -# RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN KMD 790607.74140148 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN\",\"symbol\":\"KMD\"}" -echo "790607.74140148 <- expected amount RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN" - -# RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y KMD 293399.52056062 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y\",\"symbol\":\"KMD\"}" -echo "293399.52056062 <- expected amount RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y" - -# RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es KMD 14524.72874062 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es\",\"symbol\":\"KMD\"}" -echo "14524.72874062 <- expected amount RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es" - -# RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S KMD 6042.28715610 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S\",\"symbol\":\"KMD\"}" -echo "6042.28715610 <- expected amount RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S" - -# RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG KMD 26022.54788263, REVS 5.39446042 -# RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG KMD 26022.54788263 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG\",\"symbol\":\"KMD\"}" -echo "26022.54788263 <- expected amount RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG" - -# RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq KMD 14461.16736567 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq\",\"symbol\":\"KMD\"}" -echo "14461.16736567 <- expected amount RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq" - -# R9u7V63TLwJPH1shvAGHRG61aci61yy7RN KMD 20764.40163902, REVS 291.83028199 -# R9u7V63TLwJPH1shvAGHRG61aci61yy7RN KMD 20764.40163902 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9u7V63TLwJPH1shvAGHRG61aci61yy7RN\",\"symbol\":\"KMD\"}" -echo "20764.40163902 <- expected amount R9u7V63TLwJPH1shvAGHRG61aci61yy7RN" - -# RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA KMD 1859.16527880 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA\",\"symbol\":\"KMD\"}" -echo "1859.16527880 <- expected amount RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA" - -# RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh KMD 25176.19648375 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh\",\"symbol\":\"KMD\"}" -echo "25176.19648375 <- expected amount RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh" - -# RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 KMD 6483.53169406, REVS 5.41696484 -# RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 KMD 6483.53169406 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4\",\"symbol\":\"KMD\"}" -echo "6483.53169406 <- expected amount RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4" - -# R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb KMD 120245.29223059 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb\",\"symbol\":\"KMD\"}" -echo "120245.29223059 <- expected amount R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb" - -# RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 KMD 81008.20903630, REVS 1607.10337790 -# RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 KMD 81008.20903630 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3\",\"symbol\":\"KMD\"}" -echo "81008.20903630 <- expected amount RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3" - -# RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v KMD 14010.00244099, REVS 277.86367220 -# RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v KMD 14010.00244099 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v\",\"symbol\":\"KMD\"}" -echo "14010.00244099 <- expected amount RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v" - -# RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 KMD 674.21697725, REVS 13.37190382 -# RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 KMD 674.21697725 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4\",\"symbol\":\"KMD\"}" -echo "674.21697725 <- expected amount RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4" - -# RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN KMD 1258661.38989150 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN\",\"symbol\":\"KMD\"}" -echo "1258661.38989150 <- expected amount RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN" - -# RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx KMD 1924794.21182562 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx\",\"symbol\":\"KMD\"}" -echo "1924794.21182562 <- expected amount RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx" - -# RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH KMD 4841.57624687 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH\",\"symbol\":\"KMD\"}" -echo "4841.57624687 <- expected amount RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH" - -# RU49btc37WeEiQotQZMhEaGokFYeJYc616 KMD 128958.92559312 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RU49btc37WeEiQotQZMhEaGokFYeJYc616\",\"symbol\":\"KMD\"}" -echo "128958.92559312 <- expected amount RU49btc37WeEiQotQZMhEaGokFYeJYc616" - -# RW3gz9fEadohRLZerK9r8zXkugk5swWHrf KMD 21219.62483892, REVS 421.20000000 -# RW3gz9fEadohRLZerK9r8zXkugk5swWHrf KMD 21219.62483892 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf\",\"symbol\":\"KMD\"}" -echo "21219.62483892 <- expected amount RW3gz9fEadohRLZerK9r8zXkugk5swWHrf" - -# RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U KMD 1677670.82328714 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U\",\"symbol\":\"KMD\"}" -echo "1677670.82328714 <- expected amount RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U" - -# RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu KMD 52588.80320859, REVS 1043.00609779 -# RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu KMD 52588.80320859 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu\",\"symbol\":\"KMD\"}" -echo "52588.80320859 <- expected amount RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu" - -# RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 KMD 668547.16129881, REVS 13259.45302721 -# RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 KMD 668547.16129881 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4\",\"symbol\":\"KMD\"}" -echo "668547.16129881 <- expected amount RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4" - -# R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc KMD 241619.45649268, REVS 4792.09548598 -# R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc KMD 241619.45649268 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc\",\"symbol\":\"KMD\"}" -echo "241619.45649268 <- expected amount R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc" - -# RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm KMD 9071868.91817425, REVS 180010.00000000 -# RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm KMD 9071868.91817425 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm\",\"symbol\":\"KMD\"}" -echo "9071868.91817425 <- expected amount RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm" - -# RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm KMD 25778.27244764, REVS 225.87592741 -# RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm KMD 25778.27244764 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm\",\"symbol\":\"KMD\"}" -echo "25778.27244764 <- expected amount RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm" - -# RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q KMD 1781.70005885 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q\",\"symbol\":\"KMD\"}" -echo "1781.70005885 <- expected amount RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q" - -# RSixxEuXMe8DacnajhgqDdrcFjeGD54drE KMD 266743.29833631 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSixxEuXMe8DacnajhgqDdrcFjeGD54drE\",\"symbol\":\"KMD\"}" -echo "266743.29833631 <- expected amount RSixxEuXMe8DacnajhgqDdrcFjeGD54drE" - -# RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu KMD 6387.59296405, REVS 126.73871740 -# RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu KMD 6387.59296405 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu\",\"symbol\":\"KMD\"}" -echo "6387.59296405 <- expected amount RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu" - -# RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU KMD 1243.42190050 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU\",\"symbol\":\"KMD\"}" -echo "1243.42190050 <- expected amount RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU" - -# RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z KMD 492782.94486222, REVS 9773.48000000 -# RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z KMD 492782.94486222 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z\",\"symbol\":\"KMD\"}" -echo "492782.94486222 <- expected amount RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z" - -# RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP KMD 343847.33707184, REVS 6001.47957339 -# RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP KMD 343847.33707184 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP\",\"symbol\":\"KMD\"}" -echo "343847.33707184 <- expected amount RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP" - -# RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG KMD 155758.69136969 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG\",\"symbol\":\"KMD\"}" -echo "155758.69136969 <- expected amount RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG" - -# RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq KMD 4060.09161497 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq\",\"symbol\":\"KMD\"}" -echo "4060.09161497 <- expected amount RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq" - -# RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw KMD 36335.50253541, REVS 413.60001059 -# RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw KMD 36335.50253541 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw\",\"symbol\":\"KMD\"}" -echo "36335.50253541 <- expected amount RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw" - -# RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ KMD 5270.01925860 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ\",\"symbol\":\"KMD\"}" -echo "5270.01925860 <- expected amount RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ" - -# RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp KMD 47464.51702590, REVS 634.55156126 -# RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp KMD 47464.51702590 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp\",\"symbol\":\"KMD\"}" -echo "47464.51702590 <- expected amount RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp" - -# RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 KMD 36359.70475507, REVS 100.00000000 -# RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 KMD 36359.70475507 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1\",\"symbol\":\"KMD\"}" -echo "36359.70475507 <- expected amount RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1" - -# R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd KMD 915808.36366861, REVS 18163.44258555 -# R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd KMD 915808.36366861 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd\",\"symbol\":\"KMD\"}" -echo "915808.36366861 <- expected amount R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd" - -# RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU KMD 18822.21903353, REVS 360.77089072 -# RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU KMD 18822.21903353 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU\",\"symbol\":\"KMD\"}" -echo "18822.21903353 <- expected amount RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU" - -# RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG KMD 62376.97840244, REVS 1045.22605497 -# RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG KMD 62376.97840244 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG\",\"symbol\":\"KMD\"}" -echo "62376.97840244 <- expected amount RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG" - -# RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu KMD 37183.30557600 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu\",\"symbol\":\"KMD\"}" -echo "37183.30557600 <- expected amount RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu" - -# RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC KMD 541390.42407502, REVS 10592.65522652 -# RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC KMD 541390.42407502 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC\",\"symbol\":\"KMD\"}" -echo "541390.42407502 <- expected amount RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC" - -# RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs KMD 130769.80646849, REVS 2593.58831601 -# RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs KMD 130769.80646849 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs\",\"symbol\":\"KMD\"}" -echo "130769.80646849 <- expected amount RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs" - -# RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC KMD 6843.04832293, REVS 25.10000000 -# RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC KMD 6843.04832293 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC\",\"symbol\":\"KMD\"}" -echo "6843.04832293 <- expected amount RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC" - -# RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 KMD 95283.12042643, REVS 497.50723875 -# RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 KMD 95283.12042643 -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9\",\"symbol\":\"KMD\"}" -echo "95283.12042643 <- expected amount RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9" - - -# total KMD 45769105.32172734 REVS 0.00000000 diff --git a/src/KMD.batch0.txids b/src/KMD.batch0.txids deleted file mode 100644 index 885bb23b7..000000000 --- a/src/KMD.batch0.txids +++ /dev/null @@ -1,525 +0,0 @@ -{"isvalid":true,"address":"RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58","scriptPubKey":"76a91449cc5da005a2aa06e6690353e722f88ee89363a588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58","randipbits":3539516869,"coin":"KMD","tag":"16288560152454326470"} -6c41106538a27ef2bb120c00dd1d3e20090f1b840566bdd7512e4a0bca186215 -{"isvalid":true,"address":"RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA","scriptPubKey":"76a91444398dc662aac85fc0609aec81e9d79322ce900c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA","randipbits":1411135637,"coin":"KMD","tag":"3179312406704497929"} -05bd059c29f88d5d9035c4f1c1cebed5472d90fe76ed9e690799e9184809c710 -{"isvalid":true,"address":"RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe","scriptPubKey":"76a914773718a66f6b0c7659317ca4fc18190605e17d7388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RL9YVW2GxbYh6hM3D1J7Z2y4feK4MrwZqe","randipbits":91648679,"coin":"KMD","tag":"11766425327561479716"} -b523610a955ca1eac0c1dd045638187faf1e3fc5e2f1bfaf1afe83d237072c82 -{"isvalid":true,"address":"RRCwketDe8CXt4dMWpL4NpQntxJvmwousn","scriptPubKey":"76a914aeb463ff1d4c9c27b5f09a35b990e0fba0615efb88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRCwketDe8CXt4dMWpL4NpQntxJvmwousn","randipbits":3795805790,"coin":"KMD","tag":"2213064305641142722"} -4bf772a69fd710e33120d3505af324c8f8385c998667e4edfb61bf6b8bc581ab -{"isvalid":true,"address":"RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c","scriptPubKey":"76a914ea96b2ebeaaaddbdcebee688115f0cd17ef21de088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c","randipbits":54591336,"coin":"KMD","tag":"1991526992156118043"} -6d6149051a2ada76f42602086904aebb7ad4204d0b839718357aa4fd7e099d57 -{"isvalid":true,"address":"R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n","scriptPubKey":"76a91403d5490200db77ec959c5cf6969cf05f14df3ed188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n","randipbits":1411135637,"coin":"KMD","tag":"12495037900283412508"} -9056c3261b7e83aca6b7452e67624ec41fcb1f34828909567d2bc9de281b3fb2 -{"isvalid":true,"address":"RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ","scriptPubKey":"76a914300a1aec1446041f14da6d398db07401f8c99c8c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDfCcqrNn8wgkr8CL29Z7PynpGP4w2ZySQ","randipbits":3909093808,"coin":"KMD","tag":"11062888787074595098"} -c481af1d88dd5a4a7bd70215ee844fbf93d0b8cbbbd14b7e2d3ee4159e942e8d -{"isvalid":true,"address":"REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE","scriptPubKey":"76a9143ddd624736664ccccf41b086ca4365f699b05cfd88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE","randipbits":3510593118,"coin":"KMD","tag":"7033063778497304509"} -487390833e214ef3844db459a6e89c8793afb82f14d0c15032679c29bc4f969b -{"isvalid":true,"address":"RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub","scriptPubKey":"76a914f4b3e0d24ea8a51e5e881c9bb895f4c9ee9e13c288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RXb4SUn9mQ4Q1Fa8eehn5vitcfMMCjW2Ub","randipbits":91648679,"coin":"KMD","tag":"10824723049153421531"} -0342364215116a32fa2867493057700bd5e475f14385b68d868bb20a5fc60fee -{"isvalid":true,"address":"RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj","scriptPubKey":"76a9141bcf69a7ab607498d0f1c63b2fa688e5154975bc88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj","randipbits":3558029461,"coin":"KMD","tag":"7785495498399627728"} -5096f8365fae17da86137a1cbea31bf06cc3b0c9d511260a29aa134c284fde7c -{"isvalid":true,"address":"RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw","scriptPubKey":"76a9144bd75bd5192483706cdcd0049822713f6c3afd3c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGCCkHkLTkSiQFMeFvWSPzM2rNM3rrDkfw","randipbits":3401109677,"coin":"KMD","tag":"16537564279194878673"} -6919ad3587cbe425da0dbe4310f26f9395632fca5f9a05ac43ddd98d30a3d9cc -{"isvalid":true,"address":"RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8","scriptPubKey":"76a914ad8e97c42d07bad4bde9a0beece8316c64b0b9cf88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RR6soE71ZggsYm6FeSVqebtn6oruYm3Xr8","randipbits":1212417070,"coin":"KMD","tag":"7525933131130473137"} -0a80c365dff82831085c7d53e1de4d5105a9bd89306e80883e9cfc6bcc50ffea -{"isvalid":true,"address":"RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF","scriptPubKey":"76a91431a072f05bafb0227368d56bfff15903fbc4552588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF","randipbits":649762625,"coin":"KMD","tag":"2425986373848064585"} -fc2dde20fd79bb832b7030d64366d29826fbff3619ac49a536a2987be2c4368c -{"isvalid":true,"address":"RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r","scriptPubKey":"76a914598637bc09954bd7da6a778ea9c7f3cfd4d3904b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r","randipbits":1088793017,"coin":"KMD","tag":"14096394822976266606"} -f210ca40ab1086d81490a530df38113e353169f01984aa228961ff10cefb59b9 -{"isvalid":true,"address":"RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV","scriptPubKey":"76a914bd4905c1577b64e76a80f418dd9dab9e9373bba688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSY3GTogE7WfwukhaemrAZtPh6Gsy2q1XV","randipbits":2966062244,"coin":"KMD","tag":"18071086034519656023"} -cbf73f04e90be80486427f209a4538b415b3d15798b6008c45c8fe086f2ac0fb -{"isvalid":true,"address":"RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk","scriptPubKey":"76a9148137608770773545f9c440ea89ffa0bfb53abef288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RM4RavnpbqkyB3cVq9tyzkoPuFZ2q87qqk","randipbits":3510593118,"coin":"KMD","tag":"3561554924088986465"} -02e0e3d66d975c8894f259cc3d46d3731e0c0482c0b819bb585c0998eff990c6 -{"isvalid":true,"address":"RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV","scriptPubKey":"76a914b065eee5b00d302ea21bc7a3a2f70ca9443d38e888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRMu7ikH1CVQmpY1vHWSZh7NTjVFbaAcUV","randipbits":2474273465,"coin":"KMD","tag":"11509287663278756924"} -634e2fe90916382616d59598f96bd4a9f9b7b2f7da7cbc186f4dc33da2a1a657 -{"isvalid":true,"address":"REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv","scriptPubKey":"76a9143e6f8312f4eaa31bf524c6a32f7685555b63faa188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REyKZQ8q8xbRNCtpA5ABY1BsfscduWGgKv","randipbits":716060302,"coin":"KMD","tag":"4325124703204695399"} -b81349eace18c6217e0316a26bc60050508f382db8d78e2acad208cbbc8ccc6d -{"isvalid":true,"address":"RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia","scriptPubKey":"76a914cb97d060539ff58c1bd400574ea65e9f91fd968a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia","randipbits":3539516869,"coin":"KMD","tag":"13543971405175291137"} -3952e239e439f67dd7cadf6b976ad75926c2e8b998ce03c4e7236dfe21d5e283 -{"isvalid":true,"address":"RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn","scriptPubKey":"76a91465b78ee8240e7782fa27e881d670712c31f0569e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn","randipbits":3403802753,"coin":"KMD","tag":"4335745825084189316"} -error: {"code":-4,"message":"Transaction too large"} -{"isvalid":true,"address":"RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS","scriptPubKey":"76a914cba8fc05e1f3aaf40d860be4d4be0f07460c248a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTr3ghnoUgKMz7NVhcc2PEMmQ637J1P3CS","randipbits":2422516899,"coin":"KMD","tag":"2947923480050518251"} -da4f18857462797230b5364dbe72ec1b894caff855330caf6380dda06fab6f6a -{"isvalid":true,"address":"REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7","scriptPubKey":"76a914380db4e82b6f46ec530c83adda33d86e56f1301088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REPaLcbXYKr7D6kx6M56bwwgC7QShb8gL7","randipbits":726058584,"coin":"KMD","tag":"4980424036659628209"} -22cd1971f3b04800000c7e38bb20e1545de02df1f0eec4da4881fb7b7a966fcc -{"isvalid":true,"address":"RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F","scriptPubKey":"76a914f960aaceaf81ac5964449e0dbc0de837c980ce4b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RY1n8qYX7hUVPiupbiX5zAbN4CtGpyKN5F","randipbits":3403802753,"coin":"KMD","tag":"3251164214415661624"} -812b649ba9934722da8a9aebf9def7afbe3443d31d203f231713fed70f266a20 -{"isvalid":true,"address":"RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6","scriptPubKey":"76a9149349522c5c55a9ec0123af9f168cabed8109fe2188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6","randipbits":716060302,"coin":"KMD","tag":"5234495825041085252"} -a9a0e66817c6486ae275b6a45caa8fa283b19210572a058fa66780b3cdc46748 -{"isvalid":true,"address":"RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn","scriptPubKey":"76a914d8c25d99ff2688fd583d758b3c6d24d3e26ef8cc88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RV3JsiGCq92BXiyo4JvRVJzTAm9RTdnNKn","randipbits":2474273465,"coin":"KMD","tag":"9180311689755188937"} -e4658a039c5710109cd247b6277543d0222130dccac2173bea9a2ffb4694845b -{"isvalid":true,"address":"RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78","scriptPubKey":"76a914b0473ef7cceb7ab1235bc20092dc04c604d2745788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRMGMXyfD4ye9ebKwGWrAme3KU2CbaWy78","randipbits":2064902657,"coin":"KMD","tag":"15674851778818678874"} -529def46303ab4b76d303747165109d0cb4b1c86c8e618a34bdb52f51bad3790 -{"isvalid":true,"address":"RE3yR2mCeG15ARgvENMbb573VqoQJcM3po","scriptPubKey":"76a9143458a682ab0925d5d56e0610e626b3172dcd51ec88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RE3yR2mCeG15ARgvENMbb573VqoQJcM3po","randipbits":306342285,"coin":"KMD","tag":"9687020715829259000"} -a008035209a4b2f4a6aa2d576290a6d6a80ab7eb58212908a0aad1cc558d60d7 -{"isvalid":true,"address":"RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq","scriptPubKey":"76a914402ac71f9482aa74c7814f596272fe4509bb68a088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RF8Ua3mt2tMbwADn1XvYWxfJGz6fAnYBeq","randipbits":4250743323,"coin":"KMD","tag":"17377210194918425517"} -90dc4ffb856cc8c1a99477bb53effb45c7b2ef70aaa2e28357a7d7e039eee979 -{"isvalid":true,"address":"RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe","scriptPubKey":"76a91410e4a22cbc2658898cb06cba104e58d4f3d339a688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RApWnKTepnDfPSDGX1wJnLXoNFCP5QzGWe","randipbits":1923364494,"coin":"KMD","tag":"17542877703605544136"} -7952dce16d049bdacdbb094d3d464f220a9885bfff368ecdc402ffea96b0da31 -{"isvalid":true,"address":"RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ","scriptPubKey":"76a914a9989c3f389ebdb64d8e69b7fd36633c2c27745e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQjw6VEsAECmnKxXwwWCixCsz7gfFSaKsZ","randipbits":3795805790,"coin":"KMD","tag":"3735447127207900209"} -441a799eb41a295ac8d0012b4f849d317322cf39985fe4515288f2271f141020 -{"isvalid":true,"address":"RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a","scriptPubKey":"76a914e911947b9ed9f98913e50d0064f862077f3d66ff88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWXYahA1NR6p5sBzXBknCaTDGmhSfhMV3a","randipbits":2358278621,"coin":"KMD","tag":"6739245804480077645"} -5f8db9862cbea86bed29bc0bcf60b669256c90e16751f7888d39d519cde7f761 -{"isvalid":true,"address":"RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn","scriptPubKey":"76a9149eb516ac39827e32c13866aa711226bcffaf6a5d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPkMn5ZH5E7xPbQdCYkZYx3WueAqYKVTyn","randipbits":2462330702,"coin":"KMD","tag":"11324913039846102509"} -6cf2ba41bf1e2c02292aa00101ae5c76cd4400e11e53e016d6203ac630559147 -{"isvalid":true,"address":"RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw","scriptPubKey":"76a9140947d04682d3ed7296161e47d83e364d412d8b7988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RA8GBwKDSyQas9uTAi6ThYi2jNXfrcbyZw","randipbits":2320559039,"coin":"KMD","tag":"691697661607362697"} -e44a891c59676ae770867d90b9b24c403a4255741aca3fa66b973e896ee84095 -{"isvalid":true,"address":"RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn","scriptPubKey":"76a914610fca9762bdd0a73343fbb7fd0632daf9eed78988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJ8QYKwegf7ApdYsWo3PXrGfX3nBvpN9Zn","randipbits":3364309044,"coin":"KMD","tag":"6358148030402549471"} -a9f6929d64b2f3513660667a068c693dce25a428406e2e43e89f21d327e8fb80 -{"isvalid":true,"address":"RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr","scriptPubKey":"76a914e3cf9890f7dda2aeb1636e102e33a0a78fc5dd1f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RW3kA5hhT2Zi19ifVLWh3eHEbF7vGHp5xr","randipbits":1254871213,"coin":"KMD","tag":"16358443473279198304"} -cb2f5d2ca806f1c6d929aba2200816dd73c1e76d84b7fb3eeaf2298b93b3fb6d -{"isvalid":true,"address":"RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3","scriptPubKey":"76a9145c2398f7905a487ef2c2dde166629c501817395188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHgNtXM72MHF8BtiD9mixaotZvb1W3LsN3","randipbits":2064902657,"coin":"KMD","tag":"2346456096472089935"} -df4c96cf763367fb5c7bbe119592c7b58664f496646a0536f6789f7ebd072c40 -{"isvalid":true,"address":"RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa","scriptPubKey":"76a914e8f984140df1804f049f854978c029699d96508788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWX3kh4b4vR2fsrgEm9SA4KQbWMaJEH5fa","randipbits":2064902657,"coin":"KMD","tag":"12537419930934684840"} -fce876ee6f84d7b4273fd1b1a0985b95cc9f27c5b9a9491c04552981bc84c976 -{"isvalid":true,"address":"RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71","scriptPubKey":"76a91496e8be6804163c7b83a0baf3c63036ca3dd407dd88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RP38FcReMG1hqt4jjLVuGUzbQQPgNwEQ71","randipbits":2474273465,"coin":"KMD","tag":"5384244912975550172"} -15d1a53e7e710d19080703bede7aba84401c1e19c765397199d1acf62e162e54 -{"isvalid":true,"address":"RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK","scriptPubKey":"76a914d2a015bc549478ff8e33b68e50c7ac084e912cf688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUUskhF2uWvRGsnTvhgjMkq48XgZ12EXuK","randipbits":3909093808,"coin":"KMD","tag":"12528796893037423999"} -66aab31fd9b7cc9ba594fec0ab6cfe81be82c6ee2e4ab8bd32e010e3b818b35a -{"isvalid":true,"address":"RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH","scriptPubKey":"76a914c39004363120a3aa755761ef960155dd1aafad7188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH","randipbits":1542469781,"coin":"KMD","tag":"11491814467570927200"} -8294fd3faa45599a1f40c7fb4f5a8b6d5672b1f4a5a31aaa5f1bc85b6c50322c -{"isvalid":true,"address":"RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B","scriptPubKey":"76a91475611dfa5f73e2b84c6389e1d05ae24bd626d50c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKyqUmtUmogi4qT5uWxvSh15TwFebrJS4B","randipbits":3558029461,"coin":"KMD","tag":"15194126656935962116"} -635e95f78bb7fc6ad94094730aa9e25c830d604a92634c9d28732512b57a5df2 -{"isvalid":true,"address":"RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne","scriptPubKey":"76a914223f08ed3f1631212f45737855f63c6e55a1caea88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCQGZn4x3AFjQJJwW6hFHfsiQQQ1pL2Kne","randipbits":726058584,"coin":"KMD","tag":"3967062199769834648"} -b023e334164367987fa52c4149fb81efa6d84d5a01d0836c432ebed4c15f4efa -{"isvalid":true,"address":"RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP","scriptPubKey":"76a914ba832d877e47318901fb3931ca6787fbbc0e73bb88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSHNubMtw3ZLmHy9QEkYmwPLy7vob6NvfP","randipbits":306342285,"coin":"KMD","tag":"4483658653165447734"} -c35fbde14f46e6f848b6edec6d3df9ecaa9928ec31a2fbf4bf2cf4214d1dcd01 -{"isvalid":true,"address":"RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b","scriptPubKey":"76a9142dd955280946cc639cab214bbf446b3ff0f8518588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b","randipbits":3634905133,"coin":"KMD","tag":"11344523147445575411"} -62200600b4acb2f6e2e3d8b3935c0909f8271ab219d41972d0d24bf496885fe7 -{"isvalid":true,"address":"RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4","scriptPubKey":"76a914eae9ab9dc139c650d4250f8e236d5734a3e555b088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWhJ879HiwHEb9sKbdhWQuoSQAFtC4G6t4","randipbits":3401109677,"coin":"KMD","tag":"16787258714200697070"} -0cfed45ada960afb1bd423c690d0e8927d2e5c138646635b1af889f24512c10b -{"isvalid":true,"address":"RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN","scriptPubKey":"76a9147a59729a5a8dd074584f4e67cd21e0d307897f3a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLS7frPLUVeNTMGQx6rBHYmcDgvNrT4cKN","randipbits":649762625,"coin":"KMD","tag":"11053535089936096826"} -92f3f4309e6bbf972cfe68446751ca764d2f1039afba6869ae9d19391010f4a9 -{"isvalid":true,"address":"RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed","scriptPubKey":"76a914c6e07b432daf16066df6547c909084963d1b71a088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTQknkEBMuz5i7m8ZM9BjbuFn8iXNxgeed","randipbits":726058584,"coin":"KMD","tag":"5325563408707364750"} -c65010c8e7cf56b2c430088e8469b24915f329f5a72e5d62794e871a3de702af -{"isvalid":true,"address":"RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y","scriptPubKey":"76a914f58ca7af165e6f00f878b5935fcf2e3c1e05cf0088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RXfY8PwT85HVhK2cgV9uRpdaLQzTsR5g1y","randipbits":3293921202,"coin":"KMD","tag":"9195255102705678520"} -32fdb823cc855083fc99e2fcbb8dabc6070eca610fd7f0ccaaae9add2769f8b8 -{"isvalid":true,"address":"RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3","scriptPubKey":"76a9145982addd174641008df30c1524ad27dfccb8ad7488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3","randipbits":3364309044,"coin":"KMD","tag":"8518964928972688730"} -fcec44ec1e7576f6870cdcde063b6882f7b2e988b946b5c353a3f5550b6c8381 -{"isvalid":true,"address":"RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP","scriptPubKey":"76a914623254bf2cd6434f6fb5c842239774ef249f6dcc88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP","randipbits":4267520539,"coin":"KMD","tag":"16626053169895800025"} -edf9594142d015aa6235ff033c417bd8a7c32b1b5a88efce9d5da84426a45744 -{"isvalid":true,"address":"RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1","scriptPubKey":"76a914ae7c7b8f3c14553692894d655d0006f604fe8aff88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRBnn6p3pJfyrjFBrDrTD2RJg2AAQVSXa1","randipbits":3401109677,"coin":"KMD","tag":"14413840130845658678"} -99349c193d04ebe3a446588b018edb00bd05a99744df88a71a9f70d93b25cfc9 -{"isvalid":true,"address":"RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ","scriptPubKey":"76a9145fb3a458652cd3fb73b76d2e80c9bcfdc679729688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ","randipbits":3310160965,"coin":"KMD","tag":"14126720894847525618"} -752d12092ed2b760f6220ade29cb5bc2a6901e30ed546b671d3e1ac6d5e6e4cb -{"isvalid":true,"address":"RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716","scriptPubKey":"76a914745373da21b3bb80036a769e80f8c6a3d3e4948688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKtGS9q1vcReNcEtP3MzQjfjXyomLK2716","randipbits":2358278621,"coin":"KMD","tag":"17104607943365151277"} -6eec059986ea9c5e82dacff7aa35d393874eb1ff3676638ea847b020779575c2 -{"isvalid":true,"address":"R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY","scriptPubKey":"76a91402e8071e2f5a14918907badf6b94b85c7948725a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9YZPUTTVNcnKpuQ4JgMaxYzLXmeWA3msY","randipbits":306342285,"coin":"KMD","tag":"5232612928191713501"} -070eba63d2bc102861db484c1b55859c4e2f2d5058e5c0e4bbd8e28db2f329a4 -{"isvalid":true,"address":"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz","scriptPubKey":"76a914804cde8bd43649030d5145e9101bb7ac3b23b73b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz","randipbits":91648679,"coin":"KMD","tag":"10039760411238994711"} -8cd23c312e725e78bfc222a7c19be9f22dcc7ebb01048e1aeb7ed9d92d9edca2 -{"isvalid":true,"address":"RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA","scriptPubKey":"76a9143fd230db3f6c4886618c38ad4ab20f9288be8e9488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RF6eSvAE12JNFZ2eT9rwFti2CJT8m13gwA","randipbits":2520388199,"coin":"KMD","tag":"13292755015763538750"} -f91d7878b4e4d6f0e7a6c001ac36de4b5a33932671986ff25e8c677b0b44d6e0 -{"isvalid":true,"address":"RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR","scriptPubKey":"76a9141e2ebb6842a61c203086408455e5eea44dc6598b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR","randipbits":847292520,"coin":"KMD","tag":"9397111505327710979"} -407eb64d1b0894e582ac0e60d6d81b0000d7c07d2fe46594da900dda8815b036 -{"isvalid":true,"address":"RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8","scriptPubKey":"76a914211d19ce1683dd3659156a274a4edbe93a38f88588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8","randipbits":1844341465,"coin":"KMD","tag":"17859576886586018081"} -2cc3b69f247b0d6a8ec638ff4edbdc8298eaf226b3826fba1004d13c703be833 -{"isvalid":true,"address":"RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu","scriptPubKey":"76a91466434d0797d5a5aa97986dae9b8fb0741a0e1ba888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu","randipbits":1212417070,"coin":"KMD","tag":"7540453955310013286"} -a0e2c98c384964fcf401a26e3d7babc92a5cb6eefb85bca20d41fa175e749018 -{"isvalid":true,"address":"RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL","scriptPubKey":"76a914be5166b5403b56f7efc38cbbcfce87a1450e357f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL","randipbits":716060302,"coin":"KMD","tag":"6972408695981873869"} -f5783555e153fb023781e4351baa5d04338325ee7c97e56ad36d0e27441bdfa3 -{"isvalid":true,"address":"RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S","scriptPubKey":"76a914fa347707836553e07a5f7b238176f93b8c960c8e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RY69roX9pRXdH3yeF8WMFUDWFEoEdWDn5S","randipbits":3496806661,"coin":"KMD","tag":"15234119449986174095"} -377b110b0207b3a68fe79c4fc4c7b70f52e2f6b61407a11af0bf86780d8e8e3c -{"isvalid":true,"address":"RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH","scriptPubKey":"76a914e924c4e0837d80befa971d1b47143aa270c46d2f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH","randipbits":114528085,"coin":"KMD","tag":"943732072175534499"} -ce54ec0b12791cb1025baafeba17a11482f42cf191101271539c61a40b5db46a -{"isvalid":true,"address":"RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa","scriptPubKey":"76a914092181f6b17ac6731ae4ca8b86d63f19b602f7d688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa","randipbits":3401109677,"coin":"KMD","tag":"2878844206316999883"} -c02114f4ab56ad0af0bf62ca8311b4c654840b1b86ead10c075a88a180a76063 -{"isvalid":true,"address":"RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac","scriptPubKey":"76a914d2e27b5425896664c33d046856789e297976b50b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUWFJ2c9CvJM8sp3YmaaN6EG58qkZ9M6ac","randipbits":4250743323,"coin":"KMD","tag":"357309525036217724"} -76a5d648f0ffe8f925b501b1be4378b25a2092983933d8fedaa7fd6eb2cc0741 -{"isvalid":true,"address":"RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq","scriptPubKey":"76a914af246c8e231a108fea8878d5f142d4946428cd0788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq","randipbits":2064902657,"coin":"KMD","tag":"210881918943137081"} -d7bdb5b203224a421197c8cd5e37179cd6e58495d9fe93b10d51cf994d49b340 -{"isvalid":true,"address":"RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb","scriptPubKey":"76a9146c7979b415b433a5c8bc8ba508d2429430f5510188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKAkaVY1fgNKDbwSNiFKfWE9o5Rten6yQb","randipbits":206567803,"coin":"KMD","tag":"5746501564338759564"} -34fa33d1032630b84579950bb82a20e4e2543f85217e1acc60ea8b5be29d7f39 -{"isvalid":true,"address":"RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts","scriptPubKey":"76a914e605ee4325ca45fa3a742617d85bdcf162343ae588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts","randipbits":1212417070,"coin":"KMD","tag":"8736280242584498818"} -73e5694f9114bc263a5806a3cc36cc23585c83712bf76834ab5a54b3f8e59a15 -{"isvalid":true,"address":"RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z","scriptPubKey":"76a914fdafead11ddddad539874cc4c20016f5c1c9754088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYQZmzckzB1gMYZQAYorYUcRuND8J6Lm4Z","randipbits":2064902657,"coin":"KMD","tag":"17575441322980275301"} -a92f52a9110bb60b6a25705f0f35f8a951bcf71f3d4af5d1b0df88972033f9d9 -{"isvalid":true,"address":"RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr","scriptPubKey":"76a914d2caad29e4776ab5a721ca6cd9b8e4c0b8b12b3188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr","randipbits":3644810846,"coin":"KMD","tag":"2583959057534564900"} -e2909b8e5a767c7caaa8906edd752350b00cad780282067c23af2b7f3cf7c001 -{"isvalid":true,"address":"RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX","scriptPubKey":"76a914e5ba533418d08703cceb09411171744dd857c59088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWDt2Xw6gHLdKdFEQFsNqAYYGUq37MvWYX","randipbits":2422516899,"coin":"KMD","tag":"2048027938272322199"} -b304bd4af03705c22481d87a96435c97b88dc2553db6758a7e8b8b507205aed9 -{"isvalid":true,"address":"R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN","scriptPubKey":"76a91406fef164e66fe13fc0d004ee799e5ec45cbc465088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN","randipbits":457907142,"coin":"KMD","tag":"9283672618776353727"} -621545f8933fc63cd4dfb84c84ee572e4a34f686465decb037b2ef3953d9614d -{"isvalid":true,"address":"RH2udBo3386n4hatBet85WUxiGao8VVSM6","scriptPubKey":"76a914550d729f014e2a096e36d34b1fc75262020c89c588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RH2udBo3386n4hatBet85WUxiGao8VVSM6","randipbits":54591336,"coin":"KMD","tag":"251527748478896161"} -2a6fe584d8de09f9d98ddf07774f7ac6aa1723c3838344dcc3ffb31cf17f2863 -{"isvalid":true,"address":"RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe","scriptPubKey":"76a914d0277904bffa113141ccbbc71873821bf7eea8b388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUFov2hPGqwtVTVVJGxUL5AGcyFSWmjRXe","randipbits":1254871213,"coin":"KMD","tag":"17551086453483742837"} -b26f3ec0c0ab12780c8cc15a616bc69a57ea375f84427645d03af4b575b29ad2 -{"isvalid":true,"address":"RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk","scriptPubKey":"76a9144b2c894c2626b5293e55c214cf628f2de606499688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk","randipbits":2520388199,"coin":"KMD","tag":"4954973328524652350"} -cdf4d221895b073158cf5a5f18e9223cbee1bf2a9aa6e496fdb9b4ba54ce33aa -{"isvalid":true,"address":"RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B","scriptPubKey":"76a914c4b94e200349e3a08a4d1f86296a9b76d6d3bc8688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTDNWLv3EJeKhhwrvBdKuxBLfWz7prmv9B","randipbits":2324724189,"coin":"KMD","tag":"7142362055829083106"} -bf8326cffa7d143091f1b37e3aa04eaf94e7f1c7122908815245f8ff76ea2b67 -{"isvalid":true,"address":"RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ","scriptPubKey":"76a91424cba09649f2096b3b58d8230308ef8d3eadd9ec88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCdkLhDy7Ec2i7pwAsVmi1rnUufy2TEZmJ","randipbits":3634905133,"coin":"KMD","tag":"2336355694077200792"} -cbe889025be1cc7a7c96304fcfd880bf4fb19acf9e885e0ef69ed1f04586407d -{"isvalid":true,"address":"RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE","scriptPubKey":"76a91460e0507759fa96a2a05791ad76fdf97bb85baf9388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE","randipbits":1088793017,"coin":"KMD","tag":"14390406640983825135"} -c85c72314bb4c3164267fb5d7f25a4eee99a682fd92f1f7120b7f9a1b2c95997 -{"isvalid":true,"address":"RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY","scriptPubKey":"76a914910a3d320cd80073a08cbe7eb7f25eddc6c1ef8c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY","randipbits":847292520,"coin":"KMD","tag":"14017430827874418616"} -fb1ba9f28573ff72aecb57c6a0f2ced35b012a7b937b3187fcd0070b85f3ba69 -{"isvalid":true,"address":"RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv","scriptPubKey":"76a914b08f10b08c959821af9501602dced4869746100588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRNkPd3BmppvxVxQCLzKfg2vVT2ypNcVxv","randipbits":2324724189,"coin":"KMD","tag":"13526153211163956794"} -02d621f92d7c18d6ea73beba325036d4ef1fbf54227c7978dd270e3e07a12f14 -{"isvalid":true,"address":"RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX","scriptPubKey":"76a91408444d2068632d58ab97a4df1dc529352f54d2db88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RA2uJhw4TktHGHShKBTKoTaGjZSXU9Z2nX","randipbits":114528085,"coin":"KMD","tag":"11739329602920481340"} -dd42502b243f23c52660e8ac3c4e812e563fb2472714773d3f59053ebd741299 -{"isvalid":true,"address":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","scriptPubKey":"76a91433dab4ba613013fc625b8a8f13dfa24ac871a57788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","randipbits":206567803,"coin":"KMD","tag":"2188765595827953039"} -6adda35ccf807130e1e184ec3be431cbca497891cfdaf2413b8f0758cb77a882 -{"isvalid":true,"address":"RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6","scriptPubKey":"76a914bb44df19df2bbee23f70c347b6513769130f89ba88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSMNwfRUZxbE5YPud3PM46YYML8XsdELf6","randipbits":2324724189,"coin":"KMD","tag":"14203284957422953099"} -72e54ad3664eed5c7a7d0795f5269bb7ed23ac9cbdf8a48d924a1aaa0ef02e86 -{"isvalid":true,"address":"RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz","scriptPubKey":"76a914d4991008dd3d3f49219ebad8d81d3be20b68d8e188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUfJhANk7NzFapqGV1zamTgHm47LXsi8Zz","randipbits":2358278621,"coin":"KMD","tag":"7194688126046488756"} -82e7f1134ba7492b89cc22589ee735ebcaa0cfb1581a77ccb576a3c26203c40c -{"isvalid":true,"address":"RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq","scriptPubKey":"76a91428784eee5fcd571e0868215b5e35eca6d5a2f64e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCyBEMjM6UgHAEosMCdxJb5VophihZ84hq","randipbits":4250743323,"coin":"KMD","tag":"17248417093121510016"} -7db24382fd29cf34a67be01e1c07fcbefdeb6bd965210746eddb8a241503bd01 -{"isvalid":true,"address":"RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ","scriptPubKey":"76a914b99dc8f9aa36ee23981c6ab7c526b4a49ab0586488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSCe76vADETuwWAdga98c2LVdvKcNXeHmJ","randipbits":457907142,"coin":"KMD","tag":"778630204581031306"} -21f0500514dc34a01a87375873d82dccd88926d8ef42c5449f298a683563732d -{"isvalid":true,"address":"RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr","scriptPubKey":"76a914cab1230d7fb16813ab068980a34de836ca72130188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr","randipbits":3558029461,"coin":"KMD","tag":"5320375479599427963"} -78058b35527a437bd96fce13c3e514125d0ff1e41ecd43b23e31b3926cff36d7 -{"isvalid":true,"address":"R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb","scriptPubKey":"76a914022a2fa9e4d8b3c9b22c7661652844a0f1cbaba588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9Udy3hSfnsr6YuRkHXsuKWrZsd8oEm2jb","randipbits":3364309044,"coin":"KMD","tag":"15333721779696912075"} -a5dad1b9de870faf83619122fa56b8ddd96b9ba514cdab058f4117efd471f3f4 -{"isvalid":true,"address":"RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN","scriptPubKey":"76a9140e39c2b09627151a71a5552e7bf60f6805b9512d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAaQjULJVvG6LLF8NVKPidX1HYtrGSWbCN","randipbits":1088793017,"coin":"KMD","tag":"17243448525041517600"} -9d304d9d3c55ca70485ac2d9e079508528d9e4fcc68038350bdc2af1e0a525e6 -{"isvalid":true,"address":"RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb","scriptPubKey":"76a9148d962062eb70f15c447163baab98497bb6af33ca88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNBqCY6Mcp5ZLgL8R66FzvprYKhXaraeBb","randipbits":847292520,"coin":"KMD","tag":"6707385559134931632"} -0590159c5841969e39c4009c491c500078ee02392c985fe59baa7c7f6444d20a -{"isvalid":true,"address":"RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP","scriptPubKey":"76a91421c431f36ed6dec6568c7af58fe69f8e32bb534088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCMjQirY1RqzJDEKLQjvN4Q35CHgy6LbEP","randipbits":2520388199,"coin":"KMD","tag":"1770519203948001772"} -421dea2b550587801d8e5a7b77c0e7644455f4ca8feecb57193fabf7dea6a997 -{"isvalid":true,"address":"RUtbAxmAqv1V47932T89tt79AN6TzazXSk","scriptPubKey":"76a914d71c39f36e8be76b75818576fa3dce6e000417a588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUtbAxmAqv1V47932T89tt79AN6TzazXSk","randipbits":3634905133,"coin":"KMD","tag":"16491680889809776621"} -4632b4efb5f8d1dfb7e4a52699b31a6fb6b813b34db0682795b8e6c8f744de2f -{"isvalid":true,"address":"RS9erX84xJG17efdZ66qHxhsUMG15fnCsH","scriptPubKey":"76a914b90d297c4cce14a4db9c697b7202ffb291a8e12988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RS9erX84xJG17efdZ66qHxhsUMG15fnCsH","randipbits":1542469781,"coin":"KMD","tag":"17766574050972005361"} -b9561160578cbcb33a2af1dfeb9451a844f27a2778e1866f32225d214ef0f443 -{"isvalid":true,"address":"RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL","scriptPubKey":"76a91483eff0e4d61e91512a67f03ae3be73e23066a2b588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMJp33AqgWV6oH4iLgN9XaXa2WThNdWdKL","randipbits":585288902,"coin":"KMD","tag":"16365871507310721637"} -af0f9734bcdda97719db25039f07d64c85228f7ecbeb391bfa48849d88f92ddf -{"isvalid":true,"address":"RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ","scriptPubKey":"76a9147870577336ce44b2ef218650b3a865b73e6b261988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLG1kAeCLx4heef3FfqcqWe9ysR1BdNMoZ","randipbits":2474273465,"coin":"KMD","tag":"10744261407829615743"} -d6c372038dda9a16bf33a112ddc403200170f40c8d562dc535d2769a48cb82f4 -{"isvalid":true,"address":"RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7","scriptPubKey":"76a91433f688f3b18263f634aabb69efd3b93a33fde24088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7","randipbits":457907142,"coin":"KMD","tag":"11780765036246479007"} -1b2a1cdc356e3414f977d625465b60b889f19a05ee444c83ef3bfcfa6388e726 -{"isvalid":true,"address":"RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC","scriptPubKey":"76a914b2f7b13d911ac7325b79fd9c72730d00cd82286a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRbV5dN4N7wUj3iLrv95SWJCZbtkV9uwoC","randipbits":1411135637,"coin":"KMD","tag":"1438068949713707267"} -b3502fbb49f8c4d629e7126f1ab6f4168e758c8b7cf5c42a16cf299db3b8ab8a -{"isvalid":true,"address":"RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk","scriptPubKey":"76a914ccc08455e15336a52f15a8e077dd1f86d0fec27a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTwpYxfrofdzSYg55ci6Us48jHmtS4cjKk","randipbits":1505688468,"coin":"KMD","tag":"13886562617860071686"} -56fcc61b28bcc8172ee61c21841cd20d56dce4b16eee653f2623bf5c64a3f74c -{"isvalid":true,"address":"RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN","scriptPubKey":"76a91497944949e3b91dd584926f4ad6c03571082cd86588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RP6fkbQibLJnKqJTogBpJ1sv6zX9b6widN","randipbits":2582272023,"coin":"KMD","tag":"13785824139789581179"} -952ddf2c76d9aeeaf0a1980e9e6ec4cb2c1d0edd5fb641a987780fd87a2efd94 -{"isvalid":true,"address":"RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL","scriptPubKey":"76a91413aa00f2b3e0b42834712f1d118003f070d084cb88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RB5AaE1vQKejds89eDxDzsWcDSfi8ixfbL","randipbits":3678679579,"coin":"KMD","tag":"4999111739944287822"} -cb10ee752a4b0b82b9aad04995c46578562071e76b332a4b2721fdd4ea2d79d2 -{"isvalid":true,"address":"RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3","scriptPubKey":"76a91484d197a55ca3df9d1bfd578d456856b533e963d188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMPUMa3sjX98GG1RQunbc4mnTqUq4E6ZU3","randipbits":649762625,"coin":"KMD","tag":"11958180350852771857"} -1014eff6a17d8e094519427b6e25c01563009ef5df4f0916e6ff0eb3c21bc9b8 -{"isvalid":true,"address":"RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6","scriptPubKey":"76a9146b6c05399e340b2eccfa4236256edb12b3852bd488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6","randipbits":2007892413,"coin":"KMD","tag":"14446227905410790814"} -4d4535cb9dcf87bc72fdef7e02b23086ee78b7317ef149eb8dbf6dfda4b01ec9 -{"isvalid":true,"address":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","scriptPubKey":"76a914d749183b4beeae17edc5c89e7c9660ae592712ab88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","randipbits":54591336,"coin":"KMD","tag":"5018494193879306000"} -585da7006a6572f1c0b7b909060349ad46910deab6915c5f7df48171bf1766d9 -{"isvalid":true,"address":"RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a","scriptPubKey":"76a9148c9211c51a59f12b1dc13f012648a39a7056b09f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a","randipbits":3337526720,"coin":"KMD","tag":"534424659596494422"} -75c1b09830c5acbeff23f2ea270ac8a69a2b89829533c348515006e58b6eaef9 -{"isvalid":true,"address":"RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv","scriptPubKey":"76a914d8f1c39ed42cb8be6568f726ffe63f4e81f6e0bc88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv","randipbits":749314742,"coin":"KMD","tag":"7441787949666968718"} -33f07fd3098bf6d7ab4df6e5c6a2ee651a644c6f2e8895c0ff76d734b1687988 -{"isvalid":true,"address":"RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt","scriptPubKey":"76a914fb2c9506c8d00f379e212575dcac3870426acd7188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt","randipbits":749314742,"coin":"KMD","tag":"511634291572145073"} -783e0fd8fd7916ed107586ee44b073436a46284822e98f23340d17f975cb0d16 -{"isvalid":true,"address":"RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q","scriptPubKey":"76a91456a307a21837e9c204a58bf20a06b105eb07528488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHBHVXLAnvB8y5itKBNxnM8w2zqDRGCg2q","randipbits":3529902341,"coin":"KMD","tag":"7494929723958765508"} -0b0f79b25d4f4d9adc9d3c7178483d206745713d767914682cc80bf6d15d8efa -{"isvalid":true,"address":"RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU","scriptPubKey":"76a914d33cd80a35f1b186c90316918341d5427041e19588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU","randipbits":119096734,"coin":"KMD","tag":"3434976226585857084"} -5026d39dd6a23266bc22682fd09854ab3c482c8f18ce36ace7bc11f6729766e6 -{"isvalid":true,"address":"RBxjj7kxFipThuHR9i3cyumFzM2c1puiua","scriptPubKey":"76a9141d6ae48afde378a6ab28b0c9aa2c5ec4074ca72e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBxjj7kxFipThuHR9i3cyumFzM2c1puiua","randipbits":54591336,"coin":"KMD","tag":"2622549340299730568"} -2cf0fcaa8ef97cf35ffc7079ce26b380fa6e5b6cb546bc6bd9d802b4dd7e9a0c -{"isvalid":true,"address":"REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js","scriptPubKey":"76a914384a82bdc7803e98e226447234e784e88e93a92d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REQqBMStNf7gWLxvG1a9KnbSgV78Hk19Js","randipbits":847292520,"coin":"KMD","tag":"15965009567113204449"} -751f17608d49b2a9167ef27c060f8b3e7bc091c924f296f0dc728be89a64bde6 -{"isvalid":true,"address":"RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF","scriptPubKey":"76a91491034a2cecea787192a3e3e89a01cd5c9345ff4988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF","randipbits":3510593118,"coin":"KMD","tag":"15837593094225797232"} -2d6eb44496a5592b3055c21fe4715d031fe9f6fa98ce600a07d444771c439553 -{"isvalid":true,"address":"RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK","scriptPubKey":"76a91459a68b09c1d233068d1a667145d6c43ee34c0ecc88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHTDjCzn36ERtpE2DddYZq162EL9DZcsbK","randipbits":457907142,"coin":"KMD","tag":"12565475373131426932"} -8980af120fc9c2c63dc69ac2269545080c4b6f2565128b0296e9f9f026e655e3 -{"isvalid":true,"address":"RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a","scriptPubKey":"76a91414d5e98308cc6adda82731d2e38fdfeeaea436e488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBBMrEHLVicGMQx1Do5FBUFP2tk5QiTD5a","randipbits":3529902341,"coin":"KMD","tag":"300934710021873493"} -805383f9257764387480475987857f677ec8a55d0da478ba606728f32e92052a -{"isvalid":true,"address":"RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk","scriptPubKey":"76a914ea92ae8aec967c174909ac5f798cb755e1e162d788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWfVv2z5FrHmKPayFfSM4FZQpgBctbPHTk","randipbits":3350674129,"coin":"KMD","tag":"7098830207905164869"} -fbdec954360187e674ee97fd26a230aaa20e4aca3e1ee0b43a5c26b598a4f2b0 -{"isvalid":true,"address":"RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj","scriptPubKey":"76a9141d7eedb01b9c96f3d55f8628f88f76d58d65640288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBy9jDvvNgvRGeyWh96rhvwLJ8zR44YTBj","randipbits":1254871213,"coin":"KMD","tag":"1319568634314930573"} -a1fca322764d9a3f1322a1cc52a489d5c1054f0d5c0c2b2d2d62b4f7ecba8544 -{"isvalid":true,"address":"RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a","scriptPubKey":"76a91487aa68b72eb2d26ef5f77d3894db960ef59bfb0788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMeXSe9FBfb7UA4rWKbbyUykF5SWsQFu2a","randipbits":3510593118,"coin":"KMD","tag":"394498272477560351"} -bd8e8d2f4f976569984d68d7963246bcac817dc03c396f846e37ae000a63ae4b -{"isvalid":true,"address":"RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ","scriptPubKey":"76a914579c7750254b9393561cd536eaaada5707dbcdd788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHGSJf8UV9zJTdszmggAPdmNzzewrc5fnQ","randipbits":3337526720,"coin":"KMD","tag":"6694083873737818898"} -940095b2a0ede8cd6bcc1169e28ca8b05c92ad270e51273231ed91e5cf45d53e -{"isvalid":true,"address":"RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A","scriptPubKey":"76a9146be75ee62891cdaeb881d5fb5163521742bc73cd88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RK7jYxdWFmDNEyutSbt5mLYdAdqsJv2E7A","randipbits":4250743323,"coin":"KMD","tag":"16731422082360975529"} -4f4eca5a7373bec93bea81e1f60808812d287b89db50035c67a20307deb3a383 -{"isvalid":true,"address":"RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ","scriptPubKey":"76a914d1ce6a9fcb1eb633c27d4a406397c7cb32f0623388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUQYagJpBH5Enm8jRJcY4yfGUtKdXe5jLJ","randipbits":3795805790,"coin":"KMD","tag":"4521076885978381865"} -94db6f0136d3f779911653a56f84a28e7a3c35b9487d53a259b31c6f45438d79 -{"isvalid":true,"address":"RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU","scriptPubKey":"76a9146eadd0f5aab812a543e7e30ce6b8204204a1db5488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKNQdaiP4PivQqtE9wE3nPHFZkkBXSmprU","randipbits":4267520539,"coin":"KMD","tag":"11442699958332113711"} -4344a05556982b7bb204616ccfe75e06807bc325565ff873277aec898f555d64 -{"isvalid":true,"address":"RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7","scriptPubKey":"76a914726c209c25bfe7b9ca4efd1d043f1b520661c69388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKiCeCxYaJNGfgvkbH1RHsVctR3JWtDNw7","randipbits":3756225191,"coin":"KMD","tag":"13589462905750214810"} -d1f1146089eadd90054cb74d8de79937017a8b0d5ee6f928ef2e24e88aa4e15b -{"isvalid":true,"address":"RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM","scriptPubKey":"76a914cdeb8ec9727b93b2abb369a2936e3fe213d3b83388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RU3zngUmo6Mg4kDSWdLazMS5ht1RxQ7DCM","randipbits":3644810846,"coin":"KMD","tag":"8690642146235803592"} -8048ca4813cc758c747f3a190f11b9dcb48d4bd15271aa1372f85dd690490345 -{"isvalid":true,"address":"RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS","scriptPubKey":"76a9148a782a3541059ec42d67786223bf282fd863afd688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMuMHC1Gp3b8yCUD5XsQH85QpfrRm1kLyS","randipbits":2320559039,"coin":"KMD","tag":"10001715180968585266"} -dd5c616d14054f3c6386df8ddaefad3348655137644b5e28b4ff9e8c436aeddf -{"isvalid":true,"address":"RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG","scriptPubKey":"76a914906223a25fbadbd61240bfbd091bac775c1f8aea88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNScwyFBUV5yZz6svwsVD7fVDrAydrqFRG","randipbits":1923364494,"coin":"KMD","tag":"12150764634426200372"} -7ddb9993f4fbfebd2be2b6219ae7e28987d1853acb6f50a7c2f9d9e3b9bca654 -{"isvalid":true,"address":"RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z","scriptPubKey":"76a914feda99e4e1cbdaf75988e3b9e4769fca9c8fef2a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYWjav2a7USMWe5qK2rtLkzRgE4Ciezb9Z","randipbits":3529902341,"coin":"KMD","tag":"13857744196806816320"} -b16b2e0c7b2b269a65a23e27961ba53774befcd298a44e6e790ee23b37de90b0 -{"isvalid":true,"address":"RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb","scriptPubKey":"76a914bdea295b83d94bf60f6e3fbb0a2678c41c59dede88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSbNJbs7PitRvqqVMdCpzD1yKBMM3gGAQb","randipbits":1088793017,"coin":"KMD","tag":"16902010955508909"} -23472f0b052ea3613807d17fff268169d92ebd39102238968b6209e1c12cac5a -{"isvalid":true,"address":"RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM","scriptPubKey":"76a914197cb92d18306351e887459061c1691bc8677f2a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBbxPEyNRrJ5f3QtG6yz8hco3nFZPoLeUM","randipbits":306342285,"coin":"KMD","tag":"3783173686883055537"} -63b3ca7f8adf7df6a1dd7b8e9a3836d094fd14b5c043fda62161223f6a89237e -{"isvalid":true,"address":"RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y","scriptPubKey":"76a9149fe8cdfa1ff37c6051aff789f52534e0f87b760e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y","randipbits":3350674129,"coin":"KMD","tag":"7767367854665040092"} -8b57bff58cbae87e299647b9b027c5a0646b9e7f0d67c0fc1156067a91521fb6 -{"isvalid":true,"address":"RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4","scriptPubKey":"76a914454ade6e54f6c5bb738d3e93906451fb3d7be2db88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFbaPjT7beKPWswQHcHSpicRJ35ZBMCPC4","randipbits":3644810846,"coin":"KMD","tag":"1633406094519773603"} -4b90fdf777eb0b005179d129d4cd735a5c2c66e4392058765445fd4b473b1ef0 -{"isvalid":true,"address":"RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG","scriptPubKey":"76a914b99d6780a34383e9afb2ce0ddb59d013bb22dc1888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG","randipbits":649762625,"coin":"KMD","tag":"3248725960354162385"} -6cac71e1faf5d7d28396480f095b4f78f73685ef0327d4453c1f1a5b8d60ff0f -{"isvalid":true,"address":"RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG","scriptPubKey":"76a914b48f5c3796a0f05f66cb8208653996f0f69279ea88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRjuStV5BMjwEueeEZT8DWBaUx9gQjRDLG","randipbits":2462330702,"coin":"KMD","tag":"12254026536075417754"} -13311ca88878ae6f4040a61704faabd8b8b4b633cc898cf96cb973684de26a17 -{"isvalid":true,"address":"RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj","scriptPubKey":"76a914cf3af6c2197d16c8349f98b3aa5f48c98fc51e3888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj","randipbits":1374184384,"coin":"KMD","tag":"15878239814491599651"} -617dbf8b37dc4f6f74545c54110ad9bda172cf9920ebe224ee5365790e0c51f1 -{"isvalid":true,"address":"RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky","scriptPubKey":"76a9143249f795abe0ff5f15bb08c8fa7b0c4e85cfe35d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDs6US7EYgfFrKiPzMFT84PcoQWUCniwky","randipbits":3606291758,"coin":"KMD","tag":"304075312990232153"} -470cae60ebb45da984e69e6bbb07612cacd231707998699ccef238e6e7ec9f95 -{"isvalid":true,"address":"RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC","scriptPubKey":"76a914ab608060994e0d84a92d4ede5ae7521250945f0588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC","randipbits":716060302,"coin":"KMD","tag":"16841908010320994413"} -fa7f4bc04cb787b60266390c75a11596e43e3b1de93d7eaf9c1275cfca1ea711 -{"isvalid":true,"address":"RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS","scriptPubKey":"76a914e1616213dce019aa785d4f50e93044323a3f3f9688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RVptmyXVcTSkZQNd7UMgDz73p3AdfsamLS","randipbits":2007892413,"coin":"KMD","tag":"17542855293629488829"} -10a0f36aa4b41085b2729cb98f4c5ff2ebd36d2b494ec56cb3e8a1d83bc7a521 -{"isvalid":true,"address":"REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY","scriptPubKey":"76a9143acf4d5e59871fcb370ec2e33722ea65bbb309e988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REe9cFdWLNNDbCgWMNHAYBU4hBjUsu8zgY","randipbits":1986374819,"coin":"KMD","tag":"11909432399170482093"} -527582bb80e267d5f81dace2041ae354223c40dde432366aa9a90e9e1ed33c9b -{"isvalid":true,"address":"RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq","scriptPubKey":"76a91416e1800d3dd586c4c6d91121ed749fd04471cc1b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq","randipbits":3401109677,"coin":"KMD","tag":"18350877783347530320"} -de9926f4d719e8b6ec643f3f5a631d36197b0b7170c20947f7135373ce3519f7 -{"isvalid":true,"address":"RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5","scriptPubKey":"76a9145d8b6349c3527dca7775b2b90a58a7de78faa22588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5","randipbits":3350674129,"coin":"KMD","tag":"7123808566180249738"} -464b5f7fcb81232475b060b48cb02060b79e6670e658a78dc342bb01986f787c -{"isvalid":true,"address":"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz","scriptPubKey":"76a914121988609954b7cab724bb1a7b765007be0af53f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz","randipbits":3634905133,"coin":"KMD","tag":"9537577755089129848"} -ed73d122e844f89644b2834139e97aee01d9cf916cfd054087ebac3d02d64eb5 -{"isvalid":true,"address":"RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i","scriptPubKey":"76a91478ab350e4688cde485981b263b107ca8530df35388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i","randipbits":2358278621,"coin":"KMD","tag":"5718268358216405838"} -5965e76bcd04dfc7f05fde7d38f4485eaf8996d1a16967f0073a6558b67b2a9d -{"isvalid":true,"address":"RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54","scriptPubKey":"76a9148628ecf9c505db39c9d7f970c51b32b1800ab50388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMWZenedfv1AQtuJw1EzYj9R2FxwzFpd54","randipbits":1505688468,"coin":"KMD","tag":"4674256031372819957"} -86851cbc08c16417fa68499e3b79b41f504d9245b788872e120558d0eae5ce31 -{"isvalid":true,"address":"RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN","scriptPubKey":"76a9140a886960c8b160b4320158608a2aa4b092e19ff088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN","randipbits":114528085,"coin":"KMD","tag":"10552555834387036968"} -6dd815f89a731a406b09900fcf324303a7be8c13365ab9a7dec63f60c1139192 -{"isvalid":true,"address":"RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym","scriptPubKey":"76a914d4035d191e1b7a8fbd75017d3835615c740a9cd388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym","randipbits":54591336,"coin":"KMD","tag":"13813100490014569188"} -e8815e7710ae3e4f1e3e04d862557e8398d6fa7cf8c49f03e1c32e90df74659b -{"isvalid":true,"address":"RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao","scriptPubKey":"76a91431721cf6ffd22fc321672a296b736700a7da0b5488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDndtdqjEgQ2kyiCzpeWEtf9TSDJnMBvao","randipbits":4250743323,"coin":"KMD","tag":"7291875145736103770"} -5098d95a95c46aede54f23dc304e194ccdb407656d48b9485ce38ae2ed0b6713 -{"isvalid":true,"address":"RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4","scriptPubKey":"76a9144a06bfc7b5774b79b75bb1fd59aa55564ca7851888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4","randipbits":1254871213,"coin":"KMD","tag":"6911754146836909525"} -9614014f177326c1ecb7deca198da9a42f7d12e000cde4805a8932507174aa63 -{"isvalid":true,"address":"RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA","scriptPubKey":"76a914ba1e408d6de31fdcf06b0630e7fd141d3baecb0988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSFJ19qzQbtYJQD98pqpkTNoBEi9gM31TA","randipbits":2324724189,"coin":"KMD","tag":"14797953134924064379"} -69e29c31f55c34b7e5a13d73ed9192b545c91d2a077d1ab1144951e5f76016d9 -{"isvalid":true,"address":"R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs","scriptPubKey":"76a914045aac8c4b5e08a096bbcb3731883d85df7c8e5e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9gDQRa62Eg24qwZd3Pv374bYbWf4BSLZs","randipbits":3812583006,"coin":"KMD","tag":"9620290839030244767"} -cea46d425815acc0c1a850e96387f2aa5a9a4dbecdecbd8de6943d1427d3f941 -{"isvalid":true,"address":"RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW","scriptPubKey":"76a914c9f83a320582f8626b687cb068e4d3414560d8c888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTh7GDBqLRDMYLdQyE7HHooBobztNXfsdW","randipbits":2320559039,"coin":"KMD","tag":"16922858734762556442"} -5150e662e2bd14543c2431878e65d9f0af277b753bac98b961a90dd702507c68 -{"isvalid":true,"address":"RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C","scriptPubKey":"76a9146d3b6a051157ac77a03b33d114f9a5afd33f904688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKEkubK347PwSM9SQ9eReFng1yFrEbGN8C","randipbits":2324724189,"coin":"KMD","tag":"4744510157175025104"} -23bc43496ede3eacda904ea0d0e1f5ca5d986dc8a1ee7b8bc967ebfc54ae1b56 -{"isvalid":true,"address":"RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB","scriptPubKey":"76a9145888b9ced1e7b109b7726285f282c610b934b5b288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHMKLGnyum4miEW55qL8Mawv7KdGsjbmAB","randipbits":3350674129,"coin":"KMD","tag":"5367532454610447559"} -62b7d9122629b14ea243792661d1b79f030e38828e5c1923b057f1cb8e002cce -{"isvalid":true,"address":"REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf","scriptPubKey":"76a9143eae58974a1556bf59b8466cfc7722c48c8e63c888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf","randipbits":1212417070,"coin":"KMD","tag":"11412226478957048194"} -cf033ccd827c66a31fed7c0f632220fbf962ba85e3ed32a20bbd5c451ccec775 -{"isvalid":true,"address":"RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ","scriptPubKey":"76a914cc5a6afa24ae63f07a2f5be771ac4c7019f7d7fa88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTuiEzbcX7N1j1oXSwBbRE5n8s31wzyuXQ","randipbits":4233966107,"coin":"KMD","tag":"778006809548776634"} -9d3a45f497d3d8f4692f8c987fe61804f8c7472cb63d603b8cd9874845fa970f -{"isvalid":true,"address":"RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP","scriptPubKey":"76a914df2025ac1ca399941504360a093fbf6f2c1374ae88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RVcyGvC5uYhT1UguHu1wgHxSTH6JEx8NHP","randipbits":54591336,"coin":"KMD","tag":"12876797057007631595"} -5e5540d6242d839f13467208615208f77ca79af123bb1e87eee1295e058e74ce -{"isvalid":true,"address":"RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32","scriptPubKey":"76a914a50b00fd9bd4ab6716a1a8388fc06260fff597c388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQKrkjKAvhPvhB3f9yAjipBPutJAP7TA32","randipbits":749314742,"coin":"KMD","tag":"1385317779138681935"} -f508d1cf5b97a96642542aa664a2bf1e12355f5e65760dc97c0b8330d0b6dcf5 -{"isvalid":true,"address":"RFwK8bejf6ANo61ipukbXxto15z55CwRUm","scriptPubKey":"76a914490672ec2d4d90f387a5234879c9218484fabb3288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFwK8bejf6ANo61ipukbXxto15z55CwRUm","randipbits":2320559039,"coin":"KMD","tag":"4313376125996087051"} -76a5b7c320eb55b7dbaeb182e9d04b78da451121a7726a3c9246e47dd5ed0da8 -{"isvalid":true,"address":"RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ","scriptPubKey":"76a91441d0a442f03aeedb063a5abead3b7952a7028f6088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFHBwfH6pSfzaw3WDvV84ii4SGvGpEtgjJ","randipbits":2324724189,"coin":"KMD","tag":"8759821642199629279"} -c4fec5cedfd6c87cdec0e3581d2ad915b36b05589d5c8b2a3cc5ed363dfef0d2 -{"isvalid":true,"address":"RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA","scriptPubKey":"76a914f1c5b376a2ece345538303b7909537eea0dc673d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA","randipbits":2422516899,"coin":"KMD","tag":"8492321325267627692"} -aad28724a994936e8247ae00442db08e3d1bdfc16bc5cfae8a99596e3e1a58b6 -{"isvalid":true,"address":"RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk","scriptPubKey":"76a914286541fe60f8df629cc7fd38178fdb3d3da9ed8088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk","randipbits":3558029461,"coin":"KMD","tag":"18417126252958022460"} -98e3bfcd7af8d2d9442e3bb6ed41e1dbbdc4b352171401c925cca2ac28617319 -{"isvalid":true,"address":"RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp","scriptPubKey":"76a9148e3fca2cf0ebbf8951534c93f4874c0aa877475c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNFLSwnYtoA5Gjb1eHDszeGLtxaE9yPiFp","randipbits":1212417070,"coin":"KMD","tag":"9599710567188407177"} -27d879a8c15eab6e578372ef23d4cd341f40879b973dbc0d136c61156c32a075 -{"isvalid":true,"address":"RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS","scriptPubKey":"76a914a0549146a960c4a94c6b5e32e920b1c998f27d4988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS","randipbits":1986374819,"coin":"KMD","tag":"11042382638743199135"} -eb456947490ef5307495665184ffe4972d46c607987729f7799e94353198ae4f -{"isvalid":true,"address":"RYWPYz5qotHsukbFpzRksctMUBobmWLdkG","scriptPubKey":"76a914fec9e0d27479c32069dfbf7508dbde33580059f188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYWPYz5qotHsukbFpzRksctMUBobmWLdkG","randipbits":4250743323,"coin":"KMD","tag":"17319290498951891263"} -50e8b42e36624a41d81e1b76fdcd8672fd7e0aee06488bec8e2dfb7cf1126339 -{"isvalid":true,"address":"RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct","scriptPubKey":"76a9141b79966b3b9d5945e0cdd171c8c7d376d02d2cd088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBnTykMEj7GPYN1v8VtE9rrPvggZGuHzct","randipbits":306342285,"coin":"KMD","tag":"12897443633789600924"} -1b14ec04e35f10a4f739f50ba2426417da50604ebf555fce8d993b7a554c4f25 -{"isvalid":true,"address":"RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd","scriptPubKey":"76a914fd335d6f4fc38b4a4a987df588c44725ebb7343a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd","randipbits":4250743323,"coin":"KMD","tag":"954207933552674459"} -90c7027fcec618acd43127a249a20f94dda8e2e10ef565d0285ca48829c95381 -{"isvalid":true,"address":"RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz","scriptPubKey":"76a914a128ae07bfea203567eed1d4387e9982cdb220fa88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz","randipbits":3756225191,"coin":"KMD","tag":"15826281881566727460"} -f29fe74e7e4432e47ad5e7107d2defb2d5f5fc817fa970b418454af4177dc84f -{"isvalid":true,"address":"RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns","scriptPubKey":"76a914defe36b60170a9e8e9bd72c6d2e261ae3844e71788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns","randipbits":2582272023,"coin":"KMD","tag":"16897803795030709684"} -e7be7bd4a50917ae08dbcc552899579ce007c04c450db239ed04ab21a6b3c0bb -{"isvalid":true,"address":"RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm","scriptPubKey":"76a9149c8f629187105a8fa636522df9ac5a7733ec87c088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPZ1G1SP3qmfdmwxeLzuFYpeg2YgsyDmKm","randipbits":2324724189,"coin":"KMD","tag":"11315948320004966528"} -d0192a91c0fcbfbc3bc9f1dac9d69cc9833713be6a46ad45685d74b43cd3c935 -{"isvalid":true,"address":"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf","scriptPubKey":"76a9145557a99fd7b24c7446c3073cfd32fa0f1cefa4d988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf","randipbits":3909093808,"coin":"KMD","tag":"7344087155129809820"} -0faf3844c6a7a397ae493073c9dacc11837767029ea30230c25891b9b6a86c68 -{"isvalid":true,"address":"RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx","scriptPubKey":"76a914aad5cff252e7d513f77b0641975ae825bb126ee288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQrV64mBwDgfSSe7Tf57xApNUYKfgeAyUx","randipbits":1505688468,"coin":"KMD","tag":"16079253493034989224"} -abf5bfde999429f715526121bb39c69848923ac19625a38d25be7a22048df736 -{"isvalid":true,"address":"RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB","scriptPubKey":"76a914d9fd124397928b0bdb92db17d84a62361a28cf5988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RV9osrAbwSAdNpm6qNXJrC2gk3nZhp3dZB","randipbits":1077965479,"coin":"KMD","tag":"9988292869269206255"} -175cc61e5248906edd3b7db690c214b14ab46cd0ec2f5e8f92578342c34831bd -{"isvalid":true,"address":"RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A","scriptPubKey":"76a91493341264d21e46de1fa136ee1c9262ce4c78dc2488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNhXnjLYF8xWK3WJ81QGayVKspv39piE9A","randipbits":847292520,"coin":"KMD","tag":"1403051894683228468"} -a6c9cfc58d407efdc675c3728f341c742dba746bdca5f453fa12a3b8e3d3f890 -{"isvalid":true,"address":"RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms","scriptPubKey":"76a9148a5292eda04f6c8320528f7021b628292e0101aa88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMtaFKtY9shLtoP3WBZqWgwGFGnN48aEms","randipbits":3756225191,"coin":"KMD","tag":"6503461066901703669"} -ff046afbfa484fd79b46eefed4456dbae47b3c5925bc4f4a5eb7e74145cbc3de -{"isvalid":true,"address":"REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH","scriptPubKey":"76a9143d960379bf0e4810f83901222e7336b22cfe96a488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH","randipbits":3634905133,"coin":"KMD","tag":"7508633147319547146"} -76905fc13c9ea057bef4c2a19572cd694a7f370342ebb3c19d4cc3780e6dfceb -{"isvalid":true,"address":"RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3","scriptPubKey":"76a914b7f4439822570e19407915681dceef4216d3d2c988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3","randipbits":3529902341,"coin":"KMD","tag":"1611789650002957008"} -e69fe9437bd18e84094ccf24539aa247504880990a9070a8ab15e029a0c637b4 -{"isvalid":true,"address":"REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM","scriptPubKey":"76a914366b95d90bff5aa4fdd0639a0a94efb7b27e785a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REEwT31zNEKL9B6ufdEeh3v39kaGXXmbHM","randipbits":649762625,"coin":"KMD","tag":"15096574960004591485"} -56d892f8d413a17d6c37994551757f9a995eb4ee153269b06e27470d7bf67ac1 -{"isvalid":true,"address":"RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd","scriptPubKey":"76a91454ada2c4bfec4e7ed82382211696f9ce87b09c1688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd","randipbits":1212417070,"coin":"KMD","tag":"18297255803991747940"} -9c666a9485226b43ea7347c3501a1e202c15cc774198af8c7ae08c2c2ed55562 -{"isvalid":true,"address":"RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg","scriptPubKey":"76a914d1795fd0bc9baf0088a8b83a6d740d93f3278e1488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUNnhqkaV7SLEGCaD72mPq8nmY4c2kFpZg","randipbits":3795805790,"coin":"KMD","tag":"2145714060452604690"} -df90b57f4b9449064e3ca431d57060852a90f0985a2d54fcc70630712d9e0370 -{"isvalid":true,"address":"RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW","scriptPubKey":"76a9146e35150271cf43c66a7a922835b9fad8d45ef6db88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKKuzpkq1jxGAJSbADQzUDHUbfNvVCKFpW","randipbits":643714192,"coin":"KMD","tag":"2946658726146331625"} -03af4acfcc572ef72a52a3de00f0f5184335d46cce10759768b4521faa4ca7c2 -{"isvalid":true,"address":"RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE","scriptPubKey":"76a91482d761f006050eb1b113a3888661d5e0375f05d988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE","randipbits":3812583006,"coin":"KMD","tag":"16372490744275563321"} -1cda54568e4675b0b518d7e263a21d4af5cb770b57746db815da857d4a3e401e -{"isvalid":true,"address":"RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd","scriptPubKey":"76a914751c5536fa26302c9f156e8fc30b1e3af5ad40f488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKxR5Zafxm5WcmFFBdfWYTk55Qv6fbC4Vd","randipbits":749314742,"coin":"KMD","tag":"1309576106322226605"} -951d923d10a05f21b958e1995a6c7b629896baad1fd29b3b6ebfea9ea3c7fd16 -{"isvalid":true,"address":"RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF","scriptPubKey":"76a9144087b3baa1860e9850a116b233f09428bea53e6388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFAPtYANyAs9hhwUBNYemugxjhpwp4YvwF","randipbits":3529902341,"coin":"KMD","tag":"5056643247278593208"} -fee88cbd9256d4040147f1a9084c837cfe543c65e6c517d725053e0f4cce4fab -{"isvalid":true,"address":"RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE","scriptPubKey":"76a914a3999a1d550236b3751f2686b9bb028a6d809c2488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE","randipbits":1923364494,"coin":"KMD","tag":"12755903076952666958"} -9b7899b241a21fb8f42da4cd4d95eebdff582d2cde6fc75d41bf3a1e8ccb7721 -{"isvalid":true,"address":"RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy","scriptPubKey":"76a9142e82fb97834aacac8775388add5a55c3efa1160488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDX85BbF7kJY4S33VTPgCM1tWQGwU9huTy","randipbits":4267520539,"coin":"KMD","tag":"16666215209891718793"} -cb6383f164c1b4f0c43b967c1fe661cb70e0fc99a56964d9810fceac995315cb -{"isvalid":true,"address":"RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx","scriptPubKey":"76a914263b2433c4d49decd7bfe07b979b9d4e1f1199c988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx","randipbits":3529902341,"coin":"KMD","tag":"12381750983796080467"} -5ddc1f11bee91a4ae75b322c4b75e1a3fe99c05e928160a5f50cc1dae108357d -{"isvalid":true,"address":"R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J","scriptPubKey":"76a914021b95a25573864846945228ae49eee8988bbd9f88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J","randipbits":3496806661,"coin":"KMD","tag":"17644502224478366215"} -1224a168d52a5b655cbcec7fa0a24298edc9dbc30c07ea2cf498c3c1fa067bb1 -{"isvalid":true,"address":"RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH","scriptPubKey":"76a9143418ed6789ece2b95fd952365ad120d9eec6021088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RE2f5UV1JDhUk6TeJLhz3VgxH5ePPa7SYH","randipbits":2582272023,"coin":"KMD","tag":"6785214726302321931"} -1b5368b02c3d3e4c3c20f744d4c5f10e70a064183c368a2d3e60bd5cf9793dea -{"isvalid":true,"address":"RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A","scriptPubKey":"76a9144f35ddcc179396618acc714732967422738184b688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGW1zNcVLcZDHTMBqEiSEXCm2WNWBx3z9A","randipbits":1254871213,"coin":"KMD","tag":"14293138457751365327"} -637521bbe2c313ca0a07a462fc658fede79e7b414303e33c9ec3d00391235163 -{"isvalid":true,"address":"RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb","scriptPubKey":"76a914e3a96d98131e45c6f3e950f75253d98419aeb8d888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb","randipbits":3558029461,"coin":"KMD","tag":"5448300338283729444"} -1770fbc3208c66bd8b258cab6e2187265bfa8a4d97cb093a82a98b4c5a379247 -{"isvalid":true,"address":"RALRwXaEN3yS5damdDwAkmEMKvdAkVs361","scriptPubKey":"76a9140b94f1ffffa0faa5dac21421ae1e1bead1f66d7a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RALRwXaEN3yS5damdDwAkmEMKvdAkVs361","randipbits":4267520539,"coin":"KMD","tag":"12118001679126191805"} -7c7570ce5fa58b1a0bb93a2db3eea3c9028868a48641cd2a6af51387d66f8f9e -{"isvalid":true,"address":"RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V","scriptPubKey":"76a914f66b2db5f465e4fa0f6c9f31e32245848e6ed96e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RXk8hbw2g1iU5Vae5Aov8MmJBcNH9jTq6V","randipbits":4233966107,"coin":"KMD","tag":"5621563725418681913"} -aa21768e3c790802f3fa27b700f2742a43480df3f85be7eba7a4131b75032445 -{"isvalid":true,"address":"RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9","scriptPubKey":"76a9149bdf6fddcb7b9b67b5f6f23fdddea6f1f4cc77ec88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9","randipbits":726058584,"coin":"KMD","tag":"3851576222574280395"} -1722916a64aaa8367d2c3993184e98673a796e0d998ba6d5612e367e0c36f8cf -{"isvalid":true,"address":"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A","scriptPubKey":"76a914e8557b8b75b39e8d9a7b753cf9b7ab113896a65b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A","randipbits":649762625,"coin":"KMD","tag":"18419270347001149487"} -24447c5b1d1fdf46aeccff20b73441ca148380d1d515ef6066aab66d04fe039e -{"isvalid":true,"address":"RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx","scriptPubKey":"76a914f111a7dbd1f603dc32f374e4118b1dfc3fe14e9c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx","randipbits":3539516869,"coin":"KMD","tag":"13829815321973515267"} -d0498e111bcccc806b7afc51678adea13450af859596e3b7c663e60323259764 -{"isvalid":true,"address":"RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z","scriptPubKey":"76a914ff5644b531e1fb08b58dac5f1d37c078d9103a3288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RYZHjTxct7aq83rLkvb3ZrfXpPPQKdBX4z","randipbits":1254871213,"coin":"KMD","tag":"16781356966076449675"} -f4ea9bc2b3545436fc6a6dfb8a6b46a18a82c8602c9d599be1a74f39ed943369 -{"isvalid":true,"address":"RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3","scriptPubKey":"76a914216c68920eeddea258964692b1466271bdf6015c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCKvFCXm1SLr24i2FiVN7yNmxaXpWGy2o3","randipbits":2064902657,"coin":"KMD","tag":"7726735762950180477"} -86c4ad9a4c58f03f6abf54a76ea8f3624b6965862a0c63963681dd24039a2cf8 -{"isvalid":true,"address":"RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4","scriptPubKey":"76a914d689219c2fa34b4b808ab6c8c0e7564c787b579e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUqYxcjB5Hy6eqK1YDimjfXfhfp5TSyCF4","randipbits":3510593118,"coin":"KMD","tag":"16596108505359964587"} -76babaa471e2fdc389c72e22a655a4858abcce8ba2779a326a179fe6147f1869 -{"isvalid":true,"address":"RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD","scriptPubKey":"76a91459f455a7f1c831b5e48313dc4199ed96f4d9a87588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD","randipbits":3350674129,"coin":"KMD","tag":"16007497338429761026"} -679dc17d85468f1fad4246cf9af774978315cfe7ecb7857cfda443911a21a1a8 -{"isvalid":true,"address":"RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF","scriptPubKey":"76a914e49a6e8fbbdb28035a808eb49fe2081508c3b66b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RW7w9NLACVHnBW37QVTKeP6YYuYegfg1LF","randipbits":716060302,"coin":"KMD","tag":"5747497138021474289"} -8ce8a445c44931b44b476e108bce0bf9bb007286844d437e2aff34c1928e1237 -{"isvalid":true,"address":"RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f","scriptPubKey":"76a9140fa55a3e89016269ad97d9aa83af1f6be1f6d6ad88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f","randipbits":3558029461,"coin":"KMD","tag":"4441920960443819055"} -bd7a2bae340307163e9e2fb47c76a8b131da9dbd45ccb88111719ea0c71b0269 -{"isvalid":true,"address":"RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW","scriptPubKey":"76a914a24e52c8fee5637df02e97007ee05fef796157b588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQ5PNbYYJgytmGQQSdbUeuh7Nekc3jcMRW","randipbits":1212417070,"coin":"KMD","tag":"3842268692737470166"} -955346716d601009ab91b7f9eb71642feb3f2237c414ae059397f68732bea877 -{"isvalid":true,"address":"RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby","scriptPubKey":"76a9147a5a2b9063706a821b5587d55a1ef3de71f4d7ec88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLS8Y41iqJp8rBVPtsg6mDymyWmdWBQZby","randipbits":2520388199,"coin":"KMD","tag":"12038156323115667698"} -f5d6b5296e7bf4742de8461819b5d88a48afc2048976fa85083cfd33daafdd32 -{"isvalid":true,"address":"RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy","scriptPubKey":"76a914d34ffaf30e3d67c825a94edf932f8b35845cded188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUYWU7rQ4vDyhhHbnyEeSMHrxt79qsnsAy","randipbits":2320559039,"coin":"KMD","tag":"5932046731441869369"} -264d0216229c778eb7068db63a4261bb1a8d18855a1cb5533c3e976819b36f07 -{"isvalid":true,"address":"RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M","scriptPubKey":"76a9142b08762b7091f4308f0890c34f8bda155a898c5388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M","randipbits":3310160965,"coin":"KMD","tag":"12705068326486539703"} -722466cdfc81b2025b95e6094a746d68eac713d72b53eba6509121c473e1fd8b -{"isvalid":true,"address":"RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ","scriptPubKey":"76a9147758b5d2e66bff666973ab0a13f2605f14e9128088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ","randipbits":2474273465,"coin":"KMD","tag":"12111710440388271062"} -f7e7b99252dfc6b5c8ec506a2d8c96f526d55eac6535ad25af3cdbfac379e444 -{"isvalid":true,"address":"RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj","scriptPubKey":"76a9147de1c78be58cf827ffbd7cf13415a16842791ebd88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLko1vnC4k8WntCjCLwK6WcLYnzLZnCzfj","randipbits":749314742,"coin":"KMD","tag":"8226524654736218895"} -2e72a3f2d69e7ba6fba79e977543182ffb86f9a9eb4c9fa31ee04ae2741a81cc -{"isvalid":true,"address":"RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL","scriptPubKey":"76a914bca5d93ac90d40379e75f503406f58827bd984a288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL","randipbits":1505688468,"coin":"KMD","tag":"10008945353933923072"} -2868a66048b79c560d0b4c0ec8ca8d3567cd731fdf246fbeb96eaee49b3e5f9b -{"isvalid":true,"address":"RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf","scriptPubKey":"76a9149ec7fb32ba719194cbec3bee682970683ffeefa188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf","randipbits":1212417070,"coin":"KMD","tag":"804390373941681274"} -3041e038d4b498d32a7985870b8d1499accf35e76d9285cdf25e42153539e527 -{"isvalid":true,"address":"RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d","scriptPubKey":"76a914bfadf4850adc513efcb24ee1ae425ff0c67561f588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d","randipbits":3606291758,"coin":"KMD","tag":"9863218566458520290"} -34f2929e81a532a7acbcc1b9b7be539ecad2527162b2afda1db81accf5536680 -{"isvalid":true,"address":"RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ","scriptPubKey":"76a91497dd0cbf91133e34fed843b9d266b724400268f088ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ","randipbits":2064902657,"coin":"KMD","tag":"13143107622263065925"} -4f17c4368e0330e89e08d4271b35649093f121384b46ab311ca0aa1115e7f497 -{"isvalid":true,"address":"RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY","scriptPubKey":"76a914d0be25901387463ef3690e4561c24fcb342ce06788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY","randipbits":2320559039,"coin":"KMD","tag":"3164889605565987995"} -791f8a22193dfce8fbc2bea5466c747291391e85291f96b53c4f98ce012a1d35 -{"isvalid":true,"address":"RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU","scriptPubKey":"76a9147bcc1af6d5a695940a3f37e15f377e5adf39475888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU","randipbits":585288902,"coin":"KMD","tag":"14041076325487564924"} -7351a8e69fdea30190975ca4c84116cf2e3205d2e1f7f2a51a8dc865c34da859 -{"isvalid":true,"address":"REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3","scriptPubKey":"76a91438e5d6c5a489294ce3c6857c5b6fac47194b17e488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"REU3FkPuNbZxogpStpyhZiyPkCp58G2bh3","randipbits":2320559039,"coin":"KMD","tag":"6027473142906672140"} -6b9bbb886bba401ccbbca520bc85504fe2eea3c58c2ac6c8b114cf3648bd65b0 -{"isvalid":true,"address":"RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw","scriptPubKey":"76a9144ce64bc233e77d397cf575ef86bb14107a1c2a7288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGHoKLW6r7DEBtYfV6VgjeBsQQFMvZ5thw","randipbits":1374184384,"coin":"KMD","tag":"4680412223953801587"} -2d27631432ad1a61e46f2b1be20c46c518f5c2d3f38b7125556862ca76a670de -{"isvalid":true,"address":"RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ","scriptPubKey":"76a91477b844b38a23d95d1071051ea2c3f71e47f6877b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ","randipbits":2324724189,"coin":"KMD","tag":"4861630013629819552"} -75519042825ee2ac86142c0488d363a39557d98b59de2e4dc9c6f275d9106d25 -{"isvalid":true,"address":"RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi","scriptPubKey":"76a914e357107c6793c649aeaa83b1c2fbab3cdc717c2988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi","randipbits":2582272023,"coin":"KMD","tag":"3609665741252491211"} -9f38f6451f00adeef0e64ac32cddb32c5278e5721dd176e0204dc75fcb75de2c -{"isvalid":true,"address":"RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP","scriptPubKey":"76a914a6a69e87aeaa85845a2b4688b1df3b282ec959db88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP","randipbits":1844341465,"coin":"KMD","tag":"4594736785745315617"} -ae39a9904bfe3397e09f36d720f53d4caab83a8826a9f0225f550d70e05d29a5 -{"isvalid":true,"address":"RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt","scriptPubKey":"76a91497de9339d8c7071012e5cdc0d7fef07325bd9ece88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt","randipbits":119096734,"coin":"KMD","tag":"8511847080866559487"} -2bded7bf8992062ede8c27d4ac1960b667ed9d66e8bcb79cbc94ba5103182ee4 -{"isvalid":true,"address":"RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN","scriptPubKey":"76a914b66f9f348f8df6f7af3adb4d83699f68cea9307588ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN","randipbits":306342285,"coin":"KMD","tag":"7266318498151320931"} -35443c3f172f04e39320b8c25ebab7b5866577174e70bbedf7514645f2ee76ec -{"isvalid":true,"address":"RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y","scriptPubKey":"76a914c6ae0bb05c9a33ac18ef833f5e001973901872b788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RTPiNQKiaVaBnhneiZXqpieHfF6F2RWt7y","randipbits":2474273465,"coin":"KMD","tag":"1187650091494195557"} -998dac128e50a70addbcbc2492009ea03dd81d1ae1115fc78ef3f1df9a136217 -{"isvalid":true,"address":"RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es","scriptPubKey":"76a9140fc4740ee559334ea78908fbe0d0bc7d726b3b4e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAiZZDEXN8gqgotWvxxMc4cY7shkZ6y2Es","randipbits":2324724189,"coin":"KMD","tag":"15788132541469737392"} -eb3809ccc146af2e228234957e115a8003b6db0e89544dbb329bd2ef51dbc7b4 -{"isvalid":true,"address":"RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S","scriptPubKey":"76a9147dd20bc1dc1070e66616685c4fbdea2e77fe82c488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLkUAjyNy8CQz8SxGvLwLWMP6rj3AK8Y7S","randipbits":1923364494,"coin":"KMD","tag":"7216368189000613073"} -9621e4c03d1a0893873660052e6db5916181639299afb743764f9e69a8527b29 -{"isvalid":true,"address":"RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG","scriptPubKey":"76a914b223a38fd7eb896d55da2482791a348a86eeef1288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG","randipbits":3678679579,"coin":"KMD","tag":"7320146782036675413"} -e2560151e8f9979fed63a1264b9ecf9734652423d7c69d2019ea1c10bda6dcc7 -{"isvalid":true,"address":"RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq","scriptPubKey":"76a91415acd3f264307f868095fe1016c7853df10ff2d288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RBFoJqbhcDJG3wcKu9vvenTMcc7EJTowFq","randipbits":2320559039,"coin":"KMD","tag":"7368663450862819294"} -2f1140761ff445d9bea8dabed5e680eb1b121645e7d355b3617b56041c28ac0e -{"isvalid":true,"address":"R9u7V63TLwJPH1shvAGHRG61aci61yy7RN","scriptPubKey":"76a91406cb23dcc2f6c42c1ca274ee956c3eb8b9b4facf88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9u7V63TLwJPH1shvAGHRG61aci61yy7RN","randipbits":457907142,"coin":"KMD","tag":"13184722178550341776"} -c60188aa2f78979e09248dc4397c31b987391172a2aba4786a6160c5aa946445 -{"isvalid":true,"address":"RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA","scriptPubKey":"76a9146bc15fdad74e3c3626e06ee63198382557d3c60388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RK6x2w56cGqJrnFiGcuR5VNWahzm8G5AiA","randipbits":3634905133,"coin":"KMD","tag":"12251590486799800132"} -009d448297d24da1a93e08b297a44251f37b704563bcaf290167f42eaf147e1b -{"isvalid":true,"address":"RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh","scriptPubKey":"76a914d91921e070947bc792dcf0c43a07d315269531b488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RV56pNJyghFp8ikNMqPsuaffcJxrk39Xkh","randipbits":4267520539,"coin":"KMD","tag":"12059954479745860123"} -29adf19c3b9915939b9e2294501f2935da30112bf38ea66bd892b3010bcb9f8d -{"isvalid":true,"address":"RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4","scriptPubKey":"76a9146c83c9104daa35ad9351144d5b7e85326e10c9e288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4","randipbits":3756225191,"coin":"KMD","tag":"524537270209711700"} -34a157d49905f690aa5f9549cf5b864519fa348a7f10868a6642e2eb10c605c2 -{"isvalid":true,"address":"R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb","scriptPubKey":"76a91401b85cfebe711a95b9f553084f5101c22780964688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9SHcVV3m86KDnjRo2Pxc5yeLGKxwbyChb","randipbits":1844341465,"coin":"KMD","tag":"6409293806330068501"} -1f93484709404b43e25cc7d8d7e737ea2bd5d4382761cb1adae82563b84c3b4a -{"isvalid":true,"address":"RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3","scriptPubKey":"76a914d9320f6edb3adec52e7b63981d42c68cb2b3a1eb88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3","randipbits":2422516899,"coin":"KMD","tag":"16335033217890267622"} -112ecc7c1bb31c32eef17672d5edc367c3cdbb529cdfe9ac6f4356e71256f15a -{"isvalid":true,"address":"RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v","scriptPubKey":"76a914893ff54993f8c662a05e286a32762f651941fc7788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v","randipbits":649762625,"coin":"KMD","tag":"15192753244820233720"} -b848db8cecb959d7a253efc566ca7bc27c7a351dacfc9c19bcee084015ee8870 -{"isvalid":true,"address":"RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4","scriptPubKey":"76a9143f748ad131ae69461369d8aa8022bb49e3b19d1188ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4","randipbits":3678679579,"coin":"KMD","tag":"15693301119386652646"} -4068a71cd8c5cde48482ac401d051b79d8e55c8972d65b5dad46fa7b1df4b982 -{"isvalid":true,"address":"RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN","scriptPubKey":"76a9144231986e724878f23e1baa82f911a1cd46009afb88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFKC68PGKwYz6rnPAbWomGZUv1BWKY8ugN","randipbits":2358278621,"coin":"KMD","tag":"8100233926452389942"} -9c2015601f3e05365eb6a9bcd805533dd8b6b89554633e1fbd531e2427a9ff9c -{"isvalid":true,"address":"RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx","scriptPubKey":"76a914a35d95a508fe1da8ca967e0a0a066215e8186a3688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RQAzL9perFJbDKcHiJ9Lafxxce7XiKo7Sx","randipbits":1077965479,"coin":"KMD","tag":"17562431360068145734"} -da99d4b45f298f761c03f498bf4bcf780abd1322de1ec8cdb800a2b11ca82a86 -{"isvalid":true,"address":"RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH","scriptPubKey":"76a914b2c50a105d3f8ad8c8bc5fab0a7996f444627c2488ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RRaSQCAWk74r5cXzZV8JqqW9JFbhF2o2nH","randipbits":1505688468,"coin":"KMD","tag":"13131499332489581200"} -e2b77ab956cfd75a458bf94d485ef9dbfaf81ce0e6f1739f3a6cb1538cbe61af -{"isvalid":true,"address":"RU49btc37WeEiQotQZMhEaGokFYeJYc616","scriptPubKey":"76a914cdf2ea4f812d9b101c0f3ab2592b55b6b65ba80a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RU49btc37WeEiQotQZMhEaGokFYeJYc616","randipbits":3496806661,"coin":"KMD","tag":"12544229480263406885"} -bcbaeb10d2bb27e48a68d88f02c84439e4e5cf07fa4db8b01ab85a324f5da1a9 -{"isvalid":true,"address":"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf","scriptPubKey":"76a914e3ccf2e10b6458091159d89c462d747398bb1fc788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf","randipbits":3496806661,"coin":"KMD","tag":"18021827275773651771"} -a927c61a7cdc072e13b3851831f8c099574ef27c24dea53e20253ab0712e5aec -{"isvalid":true,"address":"RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U","scriptPubKey":"76a9140a9e2dc32e77fd3ad91b28b11581317695733aed88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RAFLKtQxyGECt5fBfufuCGY6rvupfKrn3U","randipbits":2966062244,"coin":"KMD","tag":"17980386951023891077"} -30e0c514b2be13f40cf44586c3e0323e1c9d137a45f105f43c282154afda964d -{"isvalid":true,"address":"RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu","scriptPubKey":"76a9146103885fca72f9596bcf24a60549afe1e375921d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu","randipbits":1077965479,"coin":"KMD","tag":"6623859242676141391"} -ca212b020dda025944d7c18f815339d4dd10d2d7c7b8f423eb42b3f1cd5591d5 -{"isvalid":true,"address":"RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4","scriptPubKey":"76a91471c6741d8ec5e9a546412794e75d7b88ec0f587a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4","randipbits":114528085,"coin":"KMD","tag":"15210845949632153032"} -2f0390723351dd64861ed915ea52fb4635d2c9ef9c3da8b25831d148b5a54a83 -{"isvalid":true,"address":"R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc","scriptPubKey":"76a91404cdc0d618d595996cfccc66a10cc4bcdcf18aae88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc","randipbits":3558029461,"coin":"KMD","tag":"9528516854577807170"} -ae807083da593f9d52bba1f3b69a41bae4035e1a3fb2ade88b1c730f51426bc4 -{"isvalid":true,"address":"RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm","scriptPubKey":"76a914541b25614a7625c52e4c21dd60314289900ff0de88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm","randipbits":3310160965,"coin":"KMD","tag":"18443691897336118104"} -c19bda5d056d8d9ec0d24bb3295e7286cc08ce603c404c7e259a485a9f177193 -{"isvalid":true,"address":"RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm","scriptPubKey":"76a914c35e411a73cff73790032b0fbed8eea33fc6dffe88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm","randipbits":3496806661,"coin":"KMD","tag":"415486371631711829"} -d79df8653e0788811d7c9ef352b6cea6625a68b11a60b4eb5dfede3271e3aaae -{"isvalid":true,"address":"RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q","scriptPubKey":"76a914670962cef415469e0b62d0c637981d6c0eec7f9688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJfzvRW4cWXcjFpQZmv2PSy5GDGrnbM76Q","randipbits":2474273465,"coin":"KMD","tag":"8013502689693214744"} -3cbbfe701158eac511e1586a765aacf568e6650efd1f105d8ae154b650ddb343 -{"isvalid":true,"address":"RSixxEuXMe8DacnajhgqDdrcFjeGD54drE","scriptPubKey":"76a914bf59ff2c07389655a469672cd03e2bf9edfceb9688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSixxEuXMe8DacnajhgqDdrcFjeGD54drE","randipbits":114528085,"coin":"KMD","tag":"15074159837093731000"} -a218dcfbe40ddf06f1526694b1e18b27e1f03ddf5cb517cfa5a5cc01593f5dcd -{"isvalid":true,"address":"RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu","scriptPubKey":"76a91450ec144f18b23eae5238e12592881b82b659868288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu","randipbits":2966062244,"coin":"KMD","tag":"8936737403658615534"} -69eb1aa7e85b7a482a85057139fea77da53da045afec40ad715fe226adbbab81 -{"isvalid":true,"address":"RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU","scriptPubKey":"76a91438b2656b6c8cfb9140367e588414cd18b99a8d1988ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RESydSaRoxRWWb1Pxn88H2kTRuV1W38dhU","randipbits":1212417070,"coin":"KMD","tag":"11659009895163208128"} -29cc4ce2621bf8921ab8d479f7583c293d8baa3f13b4a8e8ea1add1a229b87a9 -{"isvalid":true,"address":"RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z","scriptPubKey":"76a9146179aacfbc2836d98717833f48152f4edcacd94e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z","randipbits":2462330702,"coin":"KMD","tag":"9700846191891445667"} -f0fd5536b290f0e6b57917988ef0de03158de8f82d20e6ba5cc29442a8a2e732 -{"isvalid":true,"address":"RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP","scriptPubKey":"76a914bcea02be7c44fd1ddb4e49e60439548d43c3310e88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP","randipbits":2358278621,"coin":"KMD","tag":"10319162265769564466"} -e3bf487579e76e3ec2f8f0c5d1dcd9bf3857c9b2c992c9cbb93b1987f0031387 -{"isvalid":true,"address":"RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG","scriptPubKey":"76a914943c34ee1c920c171b1f876526b56c0848bea92a88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RNnzD9QxDZqo6DvzfM3Pu7GiyNkVk7dgsG","randipbits":1923364494,"coin":"KMD","tag":"18409283446389213145"} -b22b15340992d70c221b7320accaf625c0ea7102fab2cf1be7d1e1daea214dc5 -{"isvalid":true,"address":"RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq","scriptPubKey":"76a914c03d53fcd96b09a06f118c455b3e12c5ed12fe3288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSofHVn8U4WfqgfXCksqqgmiVSwXxnANvq","randipbits":1844341465,"coin":"KMD","tag":"7630923714071169428"} -f42e2f46b50f54bca487acb26a810e976a6eafbaabc9480f398c5f2650a418f1 -{"isvalid":true,"address":"RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw","scriptPubKey":"76a91442f9d2ac12e63b0b5a9d38c61ec4f11f2992e68688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw","randipbits":3795805790,"coin":"KMD","tag":"2785625006751141995"} -dc263bb3650ad3808755f878c880e3f4c5abe89f9ba98887b6c31e219bb45422 -{"isvalid":true,"address":"RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ","scriptPubKey":"76a9140999bb04e94a9ff14cd6ecff4a022e881ab8126688ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RA9xKdNjw1H2eqPi9f9J77v7Uq1CSWdNQJ","randipbits":3795805790,"coin":"KMD","tag":"7691621473590935051"} -a0046fcf6edd0265f6ffba0b9ad0b5a9d06d29d428fbe3b8e5c09a464c41ade2 -{"isvalid":true,"address":"RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp","scriptPubKey":"76a914db22da63a40e3dbffec5eda5ae6fd13924e32b7888ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp","randipbits":3678679579,"coin":"KMD","tag":"3212160090881594053"} -1e5426a9b795b4f02bd6507dc7521561244a00a6a24e1cd57a018b8afd51730f -{"isvalid":true,"address":"RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1","scriptPubKey":"76a91422311801b820cf5a169e3614cfc7e61e08cffc1c88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1","randipbits":2736601237,"coin":"KMD","tag":"11382624799425215788"} -7684235993f66a032341e2490fab43f9628a64680f186f264ddb33c53eeea8c7 -{"isvalid":true,"address":"R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd","scriptPubKey":"76a91403ad8e4339c06506054f30b8fc892d0a5929911388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd","randipbits":3539516869,"coin":"KMD","tag":"14036968980545438130"} -1df1eec279f85621609f2ebffe5cc8d001c538d7efa96113942ade806938e839 -{"isvalid":true,"address":"RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU","scriptPubKey":"76a914b793a92aa3faed3b311f6ddfb7643a1ddf25974788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU","randipbits":3496806661,"coin":"KMD","tag":"3577416118331019992"} -7d1f8ac6d53d17fced782240fc36b963f526e836701b1d9ce334159574f58731 -{"isvalid":true,"address":"RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG","scriptPubKey":"76a9147d0975b37fc7f1a178c8f79f2318f3ac6b0a331388ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG","randipbits":1664639832,"coin":"KMD","tag":"2925847345452408723"} -b91b032588384be30fc1ee5dddc1ab6bc270660482faa6f360cbc9519769aeae -{"isvalid":true,"address":"RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu","scriptPubKey":"76a91442bc52d84a6a4fc475a2d734ce676bf1c9af304788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RFN4H8YYm71TjCVkHkoVFBFpg31i4ejbiu","randipbits":3310160965,"coin":"KMD","tag":"8812871207750283691"} -451f8dd4333bb2274ebeb3f030aa51c3ca3e725a0f034c73d110009bc96cc33b -{"isvalid":true,"address":"RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC","scriptPubKey":"76a914cf49df6300a73fc8b97b9f0d48ac4b5ef1a6039d88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC","randipbits":3337526720,"coin":"KMD","tag":"3607830388298007708"} -e3e90065ca3ab033b284a5c3eb5bd28f9b09e6610a64927bc453c2a3544c5f94 -{"isvalid":true,"address":"RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs","scriptPubKey":"76a914bb8e781d7e1b8d749aba265b06dc119d5faeb96788ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs","randipbits":2736601237,"coin":"KMD","tag":"9147772191752034854"} -5d6f63ec26ebe0ef24bf5347e24ee94abb476209b7e9e85dfff2d23ed5e531c3 -{"isvalid":true,"address":"RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC","scriptPubKey":"76a9142726929106dcde565083ec6040339ca0bff1c63288ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC","randipbits":2358278621,"coin":"KMD","tag":"14533532906797650391"} -fc4a55367a6800e58c0672842a13827af143e67745b7313b1bcd274952bac78a -{"isvalid":true,"address":"RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9","scriptPubKey":"76a914dd46f8567587f0b56a2c2c686aa5ad73882f8b1b88ac","ismine":false,"iswatchonly":true,"isscript":false,"account":"RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9","randipbits":585288902,"coin":"KMD","tag":"12509011310067902676"} -33dddb1215c8deb4889d29f7f9d0b9767e0a467dbd43e8530675c6a56105a2bb - -fix: -./komodo-cli sendtoaddress RJZ2DjthdsfCuaGxiE1PNCUGuvARAsMpHn 2848.88502056 -4f7f03dc44a79078cbf1e103e254eafc6b8856c5be891f6b6f5bbc702edff159 - diff --git a/src/KMD.batch1 b/src/KMD.batch1 deleted file mode 100755 index 6074b17c7..000000000 --- a/src/KMD.batch1 +++ /dev/null @@ -1,443 +0,0 @@ -sleep 999999 -# RDjc2nYjd2cgcyLyfCxCHNUacTHueLH5W8 KMD 968.31524937 -./komodo-cli sendtoaddress RDjc2nYjd2cgcyLyfCxCHNUacTHueLH5W8 968.31524937 -sleep 3 -echo "968.31524937 <- expected amount RDjc2nYjd2cgcyLyfCxCHNUacTHueLH5W8" - -# RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 KMD 205767.24475092, REVS 4084.38717211 -# RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 KMD 205767.24475092 -./komodo-cli sendtoaddress RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 205767.24475092 -sleep 3 -echo "205767.24475092 <- expected amount RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4" - -# RAS5HArp8SMWVWm91Gwxtyno6Tkw9DBQLb KMD 9683.15249375 -./komodo-cli sendtoaddress RAS5HArp8SMWVWm91Gwxtyno6Tkw9DBQLb 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RAS5HArp8SMWVWm91Gwxtyno6Tkw9DBQLb" - -# RGQ6jMjParVKLYMVLoKTuUAeUDKBbZhHRh KMD 7746.52199500 -./komodo-cli sendtoaddress RGQ6jMjParVKLYMVLoKTuUAeUDKBbZhHRh 7746.52199500 -sleep 3 -echo "7746.52199500 <- expected amount RGQ6jMjParVKLYMVLoKTuUAeUDKBbZhHRh" - -# RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx KMD 138163.01002402, REVS 2740.59474723 -# RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx KMD 138163.01002402 -./komodo-cli sendtoaddress RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx 138163.01002402 -sleep 3 -echo "138163.01002402 <- expected amount RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx" - -# RHfHV1LTG5rz3T2HApavCto9973puD93qt KMD 243998.92767004, REVS 4839.53600000 -# RHfHV1LTG5rz3T2HApavCto9973puD93qt KMD 243998.92767004 -./komodo-cli sendtoaddress RHfHV1LTG5rz3T2HApavCto9973puD93qt 243998.92767004 -sleep 3 -echo "243998.92767004 <- expected amount RHfHV1LTG5rz3T2HApavCto9973puD93qt" - -# RMMR84AiLuuRB5gXESJ2W7q4M9bPdt57Ys KMD 5228902.34662500 -./komodo-cli sendtoaddress RMMR84AiLuuRB5gXESJ2W7q4M9bPdt57Ys 5228902.34662500 -sleep 3 -echo "5228902.34662500 <- expected amount RMMR84AiLuuRB5gXESJ2W7q4M9bPdt57Ys" - -# RCkJC2Vd3A3R7na5vfHaSBUQHA3iKB4veg KMD 82566.66667868 -./komodo-cli sendtoaddress RCkJC2Vd3A3R7na5vfHaSBUQHA3iKB4veg 82566.66667868 -sleep 3 -echo "82566.66667868 <- expected amount RCkJC2Vd3A3R7na5vfHaSBUQHA3iKB4veg" - -# RRjFRzpV5EBrGigciSUn5QHkdWhB7tC6oH KMD 9683.15249375 -./komodo-cli sendtoaddress RRjFRzpV5EBrGigciSUn5QHkdWhB7tC6oH 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RRjFRzpV5EBrGigciSUn5QHkdWhB7tC6oH" - -# RXs3VbEem331Rxg1Jac3hqknTti4UUo5pz KMD 968.31524937 -./komodo-cli sendtoaddress RXs3VbEem331Rxg1Jac3hqknTti4UUo5pz 968.31524937 -sleep 3 -echo "968.31524937 <- expected amount RXs3VbEem331Rxg1Jac3hqknTti4UUo5pz" - -# RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy KMD 36785.74330117, REVS 730.28056435 -# RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy KMD 36785.74330117 -./komodo-cli sendtoaddress RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy 36785.74330117 -sleep 3 -echo "36785.74330117 <- expected amount RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy" - -# RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB KMD 567760.05597770, REVS 11191.99000000 -# RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB KMD 567760.05597770 -./komodo-cli sendtoaddress RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB 567760.05597770 -sleep 3 -echo "567760.05597770 <- expected amount RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB" - -# RC22v2GtzyHqdVQFBstrps9SBoDnSuQWot KMD 30287.84201075 -./komodo-cli sendtoaddress RC22v2GtzyHqdVQFBstrps9SBoDnSuQWot 30287.84201075 -sleep 3 -echo "30287.84201075 <- expected amount RC22v2GtzyHqdVQFBstrps9SBoDnSuQWot" - -# RJdKcUM9LazYuw9xsUEQYZRjDCZNi1M9wJ KMD 2202.52763206 -./komodo-cli sendtoaddress RJdKcUM9LazYuw9xsUEQYZRjDCZNi1M9wJ 2202.52763206 -sleep 3 -echo "2202.52763206 <- expected amount RJdKcUM9LazYuw9xsUEQYZRjDCZNi1M9wJ" - -# RLWai9FYvgf88UmGhqBKQfU1HFcviD2yXQ KMD 1403669.78549400 -./komodo-cli sendtoaddress RLWai9FYvgf88UmGhqBKQfU1HFcviD2yXQ 1403669.78549400 -sleep 3 -echo "1403669.78549400 <- expected amount RLWai9FYvgf88UmGhqBKQfU1HFcviD2yXQ" - -# REvmz5CwutJh8pqSr6QtiZjMVmrvDMZsmD KMD 4002.16436294 -./komodo-cli sendtoaddress REvmz5CwutJh8pqSr6QtiZjMVmrvDMZsmD 4002.16436294 -sleep 3 -echo "4002.16436294 <- expected amount REvmz5CwutJh8pqSr6QtiZjMVmrvDMZsmD" - -# REu24h1gWLmijHRnw5JEiQYe395ZRqoP2F KMD 198171.06769187 -./komodo-cli sendtoaddress REu24h1gWLmijHRnw5JEiQYe395ZRqoP2F 198171.06769187 -sleep 3 -echo "198171.06769187 <- expected amount REu24h1gWLmijHRnw5JEiQYe395ZRqoP2F" - -# RShbCikwRgHp6YDNPWQyF8KBY3vEtMmtuP KMD 4824.87172431 -./komodo-cli sendtoaddress RShbCikwRgHp6YDNPWQyF8KBY3vEtMmtuP 4824.87172431 -sleep 3 -echo "4824.87172431 <- expected amount RShbCikwRgHp6YDNPWQyF8KBY3vEtMmtuP" - -# RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u KMD 7771.42052436, REVS 0.62700000 -# RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u KMD 7771.42052436 -./komodo-cli sendtoaddress RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u 7771.42052436 -sleep 3 -echo "7771.42052436 <- expected amount RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u" - -# RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK KMD 18186.86986853, REVS 143.39272495 -# RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK KMD 18186.86986853 -./komodo-cli sendtoaddress RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK 18186.86986853 -sleep 3 -echo "18186.86986853 <- expected amount RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK" - -# RKJGbG1xxkzwm54gdga9Jhj49G9C8F8KZL KMD 9673.46934125 -./komodo-cli sendtoaddress RKJGbG1xxkzwm54gdga9Jhj49G9C8F8KZL 9673.46934125 -sleep 3 -echo "9673.46934125 <- expected amount RKJGbG1xxkzwm54gdga9Jhj49G9C8F8KZL" - -# RJgMCdrxjg1xeJ1Rmi9CS3R93MS35Tx2sM KMD 601.90475901 -./komodo-cli sendtoaddress RJgMCdrxjg1xeJ1Rmi9CS3R93MS35Tx2sM 601.90475901 -sleep 3 -echo "601.90475901 <- expected amount RJgMCdrxjg1xeJ1Rmi9CS3R93MS35Tx2sM" - -# RSCeyDCcZ3kpJWcwBzmcEyHQ7e9VEtQXY7 KMD 1626.98055674 -./komodo-cli sendtoaddress RSCeyDCcZ3kpJWcwBzmcEyHQ7e9VEtQXY7 1626.98055674 -sleep 3 -echo "1626.98055674 <- expected amount RSCeyDCcZ3kpJWcwBzmcEyHQ7e9VEtQXY7" - -# RGERRfbvuZx2RsVyvUpjtdgBjdKzKMNww7 KMD 12588.09824187 -./komodo-cli sendtoaddress RGERRfbvuZx2RsVyvUpjtdgBjdKzKMNww7 12588.09824187 -sleep 3 -echo "12588.09824187 <- expected amount RGERRfbvuZx2RsVyvUpjtdgBjdKzKMNww7" - -# RJVPgswKQzcWxHB1Woin6QKpPVYRpXVoFn KMD 4919.31879231 -./komodo-cli sendtoaddress RJVPgswKQzcWxHB1Woin6QKpPVYRpXVoFn 4919.31879231 -sleep 3 -echo "4919.31879231 <- expected amount RJVPgswKQzcWxHB1Woin6QKpPVYRpXVoFn" - -# RBSqMV6ihCDzgMjFgm7g5bSxAwtBGseRuE KMD 17428.70617350 -./komodo-cli sendtoaddress RBSqMV6ihCDzgMjFgm7g5bSxAwtBGseRuE 17428.70617350 -sleep 3 -echo "17428.70617350 <- expected amount RBSqMV6ihCDzgMjFgm7g5bSxAwtBGseRuE" - -# RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu KMD 2375.16051963, REVS 47.12337252 -# RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu KMD 2375.16051963 -./komodo-cli sendtoaddress RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu 2375.16051963 -sleep 3 -echo "2375.16051963 <- expected amount RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu" - -# RGNrH63hZEkcPzCZBnnpyYLDYfKXQqvBk1 KMD 1742.96744887 -./komodo-cli sendtoaddress RGNrH63hZEkcPzCZBnnpyYLDYfKXQqvBk1 1742.96744887 -sleep 3 -echo "1742.96744887 <- expected amount RGNrH63hZEkcPzCZBnnpyYLDYfKXQqvBk1" - -# RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta KMD 70173.29001640, REVS 1392.33555151 -# RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta KMD 70173.29001640 -./komodo-cli sendtoaddress RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta 70173.29001640 -sleep 3 -echo "70173.29001640 <- expected amount RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta" - -# RQNegFE2PWQtC8La69esvn2VGKttTAYpny KMD 4766.21295597 -./komodo-cli sendtoaddress RQNegFE2PWQtC8La69esvn2VGKttTAYpny 4766.21295597 -sleep 3 -echo "4766.21295597 <- expected amount RQNegFE2PWQtC8La69esvn2VGKttTAYpny" - -# RPWiTSrWZyGDmpXfVYcVpmQq56XCh4Hkky KMD 228081.21691774 -./komodo-cli sendtoaddress RPWiTSrWZyGDmpXfVYcVpmQq56XCh4Hkky 228081.21691774 -sleep 3 -echo "228081.21691774 <- expected amount RPWiTSrWZyGDmpXfVYcVpmQq56XCh4Hkky" - -# REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 KMD 220390.81840860, REVS 1384.18511377 -# REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 KMD 220390.81840860 -./komodo-cli sendtoaddress REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 220390.81840860 -sleep 3 -echo "220390.81840860 <- expected amount REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8" - -# RLBg1V9MCKeQjjFd2d6WKxon1hVTS4si73 KMD 3505.92510761 -./komodo-cli sendtoaddress RLBg1V9MCKeQjjFd2d6WKxon1hVTS4si73 3505.92510761 -sleep 3 -echo "3505.92510761 <- expected amount RLBg1V9MCKeQjjFd2d6WKxon1hVTS4si73" - -# RQNmvhca3LfPV8mGf7GKKCMoM1PPMojxmz KMD 15844.60160895 -./komodo-cli sendtoaddress RQNmvhca3LfPV8mGf7GKKCMoM1PPMojxmz 15844.60160895 -sleep 3 -echo "15844.60160895 <- expected amount RQNmvhca3LfPV8mGf7GKKCMoM1PPMojxmz" - -# RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ KMD 479029.87110523, REVS 9502.00000000 -# RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ KMD 479029.87110523 -./komodo-cli sendtoaddress RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ 479029.87110523 -sleep 3 -echo "479029.87110523 <- expected amount RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ" - -# RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz KMD 230594.13977661, REVS 8.48502608 -# RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz KMD 230594.13977661 -./komodo-cli sendtoaddress RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz 230594.13977661 -sleep 3 -echo "230594.13977661 <- expected amount RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz" - -# RC1S2CERDJR8BmvF3GZ4sbPviC5JrDYNKe KMD 36914.86263802 -./komodo-cli sendtoaddress RC1S2CERDJR8BmvF3GZ4sbPviC5JrDYNKe 36914.86263802 -sleep 3 -echo "36914.86263802 <- expected amount RC1S2CERDJR8BmvF3GZ4sbPviC5JrDYNKe" - -# RNy3NHtaKZ11xRqEU4YWWbrcdzjCgDBTuV KMD 528.33837397 -./komodo-cli sendtoaddress RNy3NHtaKZ11xRqEU4YWWbrcdzjCgDBTuV 528.33837397 -sleep 3 -echo "528.33837397 <- expected amount RNy3NHtaKZ11xRqEU4YWWbrcdzjCgDBTuV" - -# RXUEryMpxikDCdUT7LyCT3dq6bf4PPRibX KMD 19366.30498750 -./komodo-cli sendtoaddress RXUEryMpxikDCdUT7LyCT3dq6bf4PPRibX 19366.30498750 -sleep 3 -echo "19366.30498750 <- expected amount RXUEryMpxikDCdUT7LyCT3dq6bf4PPRibX" - -# RVoY1wTJug2VWeEG7C35iPseW2CtgZduRN KMD 13921.94668799 -./komodo-cli sendtoaddress RVoY1wTJug2VWeEG7C35iPseW2CtgZduRN 13921.94668799 -sleep 3 -echo "13921.94668799 <- expected amount RVoY1wTJug2VWeEG7C35iPseW2CtgZduRN" - -# RUJRcSoNU1y8WM7xq7X4JAwBMEqovak4Rb KMD 3873.26099750 -./komodo-cli sendtoaddress RUJRcSoNU1y8WM7xq7X4JAwBMEqovak4Rb 3873.26099750 -sleep 3 -echo "3873.26099750 <- expected amount RUJRcSoNU1y8WM7xq7X4JAwBMEqovak4Rb" - -# RAp5JCZiuapAgcbxgLnvbYKZcLq66LWRRk KMD 28437.73050782 -./komodo-cli sendtoaddress RAp5JCZiuapAgcbxgLnvbYKZcLq66LWRRk 28437.73050782 -sleep 3 -echo "28437.73050782 <- expected amount RAp5JCZiuapAgcbxgLnvbYKZcLq66LWRRk" - -# RQantoJxT8szwfAqUM3enLPe85YiQtwndH KMD 4163.75557231 -./komodo-cli sendtoaddress RQantoJxT8szwfAqUM3enLPe85YiQtwndH 4163.75557231 -sleep 3 -echo "4163.75557231 <- expected amount RQantoJxT8szwfAqUM3enLPe85YiQtwndH" - -# RQ7ZvdGNyxKJsn9WKcPbc72R91gs7WooGY KMD 4483.69874171 -./komodo-cli sendtoaddress RQ7ZvdGNyxKJsn9WKcPbc72R91gs7WooGY 4483.69874171 -sleep 3 -echo "4483.69874171 <- expected amount RQ7ZvdGNyxKJsn9WKcPbc72R91gs7WooGY" - -# RWEzWEk5KSa2yBUCdHnoZ4RXS1VReq6omp KMD 56079.05303659 -./komodo-cli sendtoaddress RWEzWEk5KSa2yBUCdHnoZ4RXS1VReq6omp 56079.05303659 -sleep 3 -echo "56079.05303659 <- expected amount RWEzWEk5KSa2yBUCdHnoZ4RXS1VReq6omp" - -# RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ KMD 8540.87460698 -./komodo-cli sendtoaddress RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ 8540.87460698 -sleep 3 -echo "8540.87460698 <- expected amount RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ" - -# RLJkv3utC9vbsZDC12JtWPeY8Sp8dCAwZK KMD 1450.14891746 -./komodo-cli sendtoaddress RLJkv3utC9vbsZDC12JtWPeY8Sp8dCAwZK 1450.14891746 -sleep 3 -echo "1450.14891746 <- expected amount RLJkv3utC9vbsZDC12JtWPeY8Sp8dCAwZK" - -# RGZcCA8BT3m9vDSXmhyQQijGLw9HCsSdBy KMD 2949.36469257 -./komodo-cli sendtoaddress RGZcCA8BT3m9vDSXmhyQQijGLw9HCsSdBy 2949.36469257 -sleep 3 -echo "2949.36469257 <- expected amount RGZcCA8BT3m9vDSXmhyQQijGLw9HCsSdBy" - -# RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv KMD 25505.74161232, REVS 506.00000000 -# RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv KMD 25505.74161232 -./komodo-cli sendtoaddress RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv 25505.74161232 -sleep 3 -echo "25505.74161232 <- expected amount RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv" - -# RYE329fWaVUaVg55DU4hiB4P2rfr4w3K2Y KMD 51.15844888 -./komodo-cli sendtoaddress RYE329fWaVUaVg55DU4hiB4P2rfr4w3K2Y 51.15844888 -sleep 3 -echo "51.15844888 <- expected amount RYE329fWaVUaVg55DU4hiB4P2rfr4w3K2Y" - -# RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 KMD 4516.65527532, REVS 31.96541397 -# RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 KMD 4516.65527532 -./komodo-cli sendtoaddress RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 4516.65527532 -sleep 3 -echo "4516.65527532 <- expected amount RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5" - -# RTJFUrfou8DU63uyGqH7ULgiCHHPZLkDT5 KMD 288282.30230152 -./komodo-cli sendtoaddress RTJFUrfou8DU63uyGqH7ULgiCHHPZLkDT5 288282.30230152 -sleep 3 -echo "288282.30230152 <- expected amount RTJFUrfou8DU63uyGqH7ULgiCHHPZLkDT5" - -# RU1usSdDYTL7yN34EayPxJurQ7UMxDvTkF KMD 2218.92003493 -./komodo-cli sendtoaddress RU1usSdDYTL7yN34EayPxJurQ7UMxDvTkF 2218.92003493 -sleep 3 -echo "2218.92003493 <- expected amount RU1usSdDYTL7yN34EayPxJurQ7UMxDvTkF" - -# RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 KMD 30244.47828467 -./komodo-cli sendtoaddress RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 30244.47828467 -sleep 3 -echo "30244.47828467 <- expected amount RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6" - -# RF2LDXirQQ5afPGVM7W7o3ZQhgGbhSeH8W KMD 781.43040624 -./komodo-cli sendtoaddress RF2LDXirQQ5afPGVM7W7o3ZQhgGbhSeH8W 781.43040624 -sleep 3 -echo "781.43040624 <- expected amount RF2LDXirQQ5afPGVM7W7o3ZQhgGbhSeH8W" - -# RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH KMD 35011.78668474, REVS 310.59835083 -# RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH KMD 35011.78668474 -./komodo-cli sendtoaddress RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH 35011.78668474 -sleep 3 -echo "35011.78668474 <- expected amount RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH" - -# RH4u1f9PndVVYHkpxdMV28HwbdKphPiX6o KMD 20332.68360637 -./komodo-cli sendtoaddress RH4u1f9PndVVYHkpxdMV28HwbdKphPiX6o 20332.68360637 -sleep 3 -echo "20332.68360637 <- expected amount RH4u1f9PndVVYHkpxdMV28HwbdKphPiX6o" - -# RWszpjqDXG6ifFzTJN2qaqSfZ4nJ8FX3Cp KMD 4942.25856789 -./komodo-cli sendtoaddress RWszpjqDXG6ifFzTJN2qaqSfZ4nJ8FX3Cp 4942.25856789 -sleep 3 -echo "4942.25856789 <- expected amount RWszpjqDXG6ifFzTJN2qaqSfZ4nJ8FX3Cp" - -# R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks KMD 201.26853079, REVS 3.99180609 -# R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks KMD 201.26853079 -./komodo-cli sendtoaddress R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks 201.26853079 -sleep 3 -echo "201.26853079 <- expected amount R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks" - -# RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig KMD 663.13491046, REVS 13.16292943 -# RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig KMD 663.13491046 -./komodo-cli sendtoaddress RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig 663.13491046 -sleep 3 -echo "663.13491046 <- expected amount RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig" - -# RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK KMD 29548.60287586, REVS 586.04438779 -# RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK KMD 29548.60287586 -./komodo-cli sendtoaddress RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK 29548.60287586 -sleep 3 -echo "29548.60287586 <- expected amount RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK" - -# RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK KMD 100186.19238242, REVS 1944.84440292 -# RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK KMD 100186.19238242 -./komodo-cli sendtoaddress RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK 100186.19238242 -sleep 3 -echo "100186.19238242 <- expected amount RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK" - -# RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq KMD 1853646.03638691, REVS 415.68775429 -# RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq KMD 1853646.03638691 -./komodo-cli sendtoaddress RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq 1853646.03638691 -sleep 3 -echo "1853646.03638691 <- expected amount RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq" - -# RDQH9gVbS9Yza5fd7T4GSASzdTuwiP3Sgm KMD 56782.00622335 -./komodo-cli sendtoaddress RDQH9gVbS9Yza5fd7T4GSASzdTuwiP3Sgm 56782.00622335 -sleep 3 -echo "56782.00622335 <- expected amount RDQH9gVbS9Yza5fd7T4GSASzdTuwiP3Sgm" - -# RFREgr9p32GanT4YcM25hMcPYkvRLDNkja KMD 151544.96672946, REVS 3005.62695376 -# RFREgr9p32GanT4YcM25hMcPYkvRLDNkja KMD 151544.96672946 -./komodo-cli sendtoaddress RFREgr9p32GanT4YcM25hMcPYkvRLDNkja 151544.96672946 -sleep 3 -echo "151544.96672946 <- expected amount RFREgr9p32GanT4YcM25hMcPYkvRLDNkja" - -# RHQggZrkWW9HV8d7o2dvb9mgN1z6tGDJRh KMD 48415.76246875 -./komodo-cli sendtoaddress RHQggZrkWW9HV8d7o2dvb9mgN1z6tGDJRh 48415.76246875 -sleep 3 -echo "48415.76246875 <- expected amount RHQggZrkWW9HV8d7o2dvb9mgN1z6tGDJRh" - -# RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 KMD 295382.69930466, REVS 5860.00000000 -# RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 KMD 295382.69930466 -./komodo-cli sendtoaddress RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 295382.69930466 -sleep 3 -echo "295382.69930466 <- expected amount RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4" - -# RKyMDKFNC79FhCfnFr58JE1ibpADa2WScE KMD 64965.94673778 -./komodo-cli sendtoaddress RKyMDKFNC79FhCfnFr58JE1ibpADa2WScE 64965.94673778 -sleep 3 -echo "64965.94673778 <- expected amount RKyMDKFNC79FhCfnFr58JE1ibpADa2WScE" - -# RHoPZSxWRgeQp7nB3eTn4dyDpmBRoZPoKv KMD 9683.15249375 -./komodo-cli sendtoaddress RHoPZSxWRgeQp7nB3eTn4dyDpmBRoZPoKv 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RHoPZSxWRgeQp7nB3eTn4dyDpmBRoZPoKv" - -# RGiA2sP25BqtW9qfJ3vRUAPH8zbgepwriY KMD 2414.30320001 -./komodo-cli sendtoaddress RGiA2sP25BqtW9qfJ3vRUAPH8zbgepwriY 2414.30320001 -sleep 3 -echo "2414.30320001 <- expected amount RGiA2sP25BqtW9qfJ3vRUAPH8zbgepwriY" - -# RTHtdb735hqJi5DJjXNiP2LREkqUL5b8Sx KMD 19375.01982474 -./komodo-cli sendtoaddress RTHtdb735hqJi5DJjXNiP2LREkqUL5b8Sx 19375.01982474 -sleep 3 -echo "19375.01982474 <- expected amount RTHtdb735hqJi5DJjXNiP2LREkqUL5b8Sx" - -# RHZR3YhrgxaYASvNUrcVdoonXCfgrdGULz KMD 1589788.37880130 -./komodo-cli sendtoaddress RHZR3YhrgxaYASvNUrcVdoonXCfgrdGULz 1589788.37880130 -sleep 3 -echo "1589788.37880130 <- expected amount RHZR3YhrgxaYASvNUrcVdoonXCfgrdGULz" - -# RCaxwG9VfLVvxMVvc5q7SQxRSuwR9amxoy KMD 4458.42312105 -./komodo-cli sendtoaddress RCaxwG9VfLVvxMVvc5q7SQxRSuwR9amxoy 4458.42312105 -sleep 3 -echo "4458.42312105 <- expected amount RCaxwG9VfLVvxMVvc5q7SQxRSuwR9amxoy" - -# RAyEy5vxNeAAeRw57BrsN5Kh4zu8i3KYEf KMD 21120.82823309 -./komodo-cli sendtoaddress RAyEy5vxNeAAeRw57BrsN5Kh4zu8i3KYEf 21120.82823309 -sleep 3 -echo "21120.82823309 <- expected amount RAyEy5vxNeAAeRw57BrsN5Kh4zu8i3KYEf" - -# RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 KMD 6566.15472364 -./komodo-cli sendtoaddress RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 6566.15472364 -sleep 3 -echo "6566.15472364 <- expected amount RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47" - -# RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT KMD 59621.32507756, REVS 606.36817953 -# RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT KMD 59621.32507756 -./komodo-cli sendtoaddress RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT 59621.32507756 -sleep 3 -echo "59621.32507756 <- expected amount RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT" - -# RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p KMD 23159.75532541, REVS 459.58469952 -# RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p KMD 23159.75532541 -./komodo-cli sendtoaddress RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p 23159.75532541 -sleep 3 -echo "23159.75532541 <- expected amount RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p" - -# RG7jKgxwFPKNPy4MFxXaBr7TRDEzR2sSkV KMD 9683.15249375 -./komodo-cli sendtoaddress RG7jKgxwFPKNPy4MFxXaBr7TRDEzR2sSkV 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RG7jKgxwFPKNPy4MFxXaBr7TRDEzR2sSkV" - -# RQft1wNt3sgntZDRbpz2WzHDy4F2TRamhB KMD 1504.76189752 -./komodo-cli sendtoaddress RQft1wNt3sgntZDRbpz2WzHDy4F2TRamhB 1504.76189752 -sleep 3 -echo "1504.76189752 <- expected amount RQft1wNt3sgntZDRbpz2WzHDy4F2TRamhB" - -# RRergGKQPDcYHU8PxKhpx6kmR7mXdqp8Ce KMD 1452.47287406 -./komodo-cli sendtoaddress RRergGKQPDcYHU8PxKhpx6kmR7mXdqp8Ce 1452.47287406 -sleep 3 -echo "1452.47287406 <- expected amount RRergGKQPDcYHU8PxKhpx6kmR7mXdqp8Ce" - -# RDPo9tEaM9Ds5UePeQS1pAFqXzD1ZVvS1n KMD 7746.52199500 -./komodo-cli sendtoaddress RDPo9tEaM9Ds5UePeQS1pAFqXzD1ZVvS1n 7746.52199500 -sleep 3 -echo "7746.52199500 <- expected amount RDPo9tEaM9Ds5UePeQS1pAFqXzD1ZVvS1n" - -# RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ KMD 77304.58455563, REVS 1533.20000000 -# RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ KMD 77304.58455563 -./komodo-cli sendtoaddress RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ 77304.58455563 -sleep 3 -echo "77304.58455563 <- expected amount RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ" - -# RNpa2spCJutTMYHgsr6MwM6X2pmRfYd6LT KMD 894.72329042 -./komodo-cli sendtoaddress RNpa2spCJutTMYHgsr6MwM6X2pmRfYd6LT 894.72329042 -sleep 3 -echo "894.72329042 <- expected amount RNpa2spCJutTMYHgsr6MwM6X2pmRfYd6LT" - - -# total KMD 14534159.61298856 REVS 0.00000000 diff --git a/src/KMD.batch1.txids b/src/KMD.batch1.txids deleted file mode 100644 index 9b6d7ccf3..000000000 --- a/src/KMD.batch1.txids +++ /dev/null @@ -1,166 +0,0 @@ -325fc4797d28b57f477f7ea172972683a6ea2cdb5c5c238725f78856ef2e3a28 -968.31524937 <- expected amount RDjc2nYjd2cgcyLyfCxCHNUacTHueLH5W8 -509a075ecde88ca0fc5834cb0057d837eedc488870635f6461d7f5e60e5e49ce -205767.24475092 <- expected amount RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 -dbc1cca89049d06a5ac6de9922b1db01f3cda9c1b580c54400b0443ea06a84bb -9683.15249375 <- expected amount RAS5HArp8SMWVWm91Gwxtyno6Tkw9DBQLb -6260fbc0a0ddfd88b9f4603713c23dfb1d14a6dac586377268a893dc60d53252 -7746.52199500 <- expected amount RGQ6jMjParVKLYMVLoKTuUAeUDKBbZhHRh -34e61e89fc491a24291d4471d93d3b72b2ea790e4e18df941d9744273413f0de -138163.01002402 <- expected amount RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx -79873fe0e2e52f9e55601baf68b4770bcfcd2c9caf4e5015bdbb231a7089793f -243998.92767004 <- expected amount RHfHV1LTG5rz3T2HApavCto9973puD93qt -78d8efb10877c2293d5f2ed6fd3b7ff2da4f599ab63de25043e9211ddb669c13 -5228902.34662500 <- expected amount RMMR84AiLuuRB5gXESJ2W7q4M9bPdt57Ys -d1a8b7cc8782480f8c2633561193a79eaa0e31b0e12173a593cd0f52c29111f0 -82566.66667868 <- expected amount RCkJC2Vd3A3R7na5vfHaSBUQHA3iKB4veg -ce4e52efc6b973b073dd7246b881cd81fc2ad5927ee17f62a50b91b460fcaf46 -9683.15249375 <- expected amount RRjFRzpV5EBrGigciSUn5QHkdWhB7tC6oH -2af36c684878c208f477f4cb54a5ca05db84848a6aa5027386e997446fcf39b0 -968.31524937 <- expected amount RXs3VbEem331Rxg1Jac3hqknTti4UUo5pz -da64a366b0c2ee633390cd86d85a97eceda39e62c38d08ac4f48b1b15f43f396 -36785.74330117 <- expected amount RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy -c485e9ec07fefcdb01b98c7253ba7cae9cf44a6069f9c05a44f7910df96e8048 -567760.05597770 <- expected amount RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB -acd9dc7b2700e505e28f36ac6739c6a9aa50c77c1fad4c95581584431f89679c -30287.84201075 <- expected amount RC22v2GtzyHqdVQFBstrps9SBoDnSuQWot -51560f60cda3aa1ac1b887cea074a344f69f716e5d7777115976ef1538fad3fd -2202.52763206 <- expected amount RJdKcUM9LazYuw9xsUEQYZRjDCZNi1M9wJ -e0d4e99d2275cacf95be661ab6bd98935b547f59775281b085f5b26fe09cf18c -1403669.78549400 <- expected amount RLWai9FYvgf88UmGhqBKQfU1HFcviD2yXQ -6b5c4ed565ec56ff7cd8301e3051e96fc8f26186f64f93f12a65bde73f16d92d -4002.16436294 <- expected amount REvmz5CwutJh8pqSr6QtiZjMVmrvDMZsmD -ed8b998240bc13ff35dad3a7a8f96fbdc04ff8388e96d6f618ac4e66a29d1c53 -198171.06769187 <- expected amount REu24h1gWLmijHRnw5JEiQYe395ZRqoP2F -b7cf02901629acce9eb84c2b83839b4f575d3d8710fabb2d5e43f92308abaa6a -4824.87172431 <- expected amount RShbCikwRgHp6YDNPWQyF8KBY3vEtMmtuP -c0ee42c0a0a32ec75283b3899958d5d3d5d59202642933806e1dfc0dfc47b48e -7771.42052436 <- expected amount RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u -f0fa139e16b9a32af25d20daf6efef8b703a0b48ca12afd3743cb29e35955801 -18186.86986853 <- expected amount RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK -e080c71757f1bd918615cc7439c92db81a83da2dea904938463bb8b224679508 -9673.46934125 <- expected amount RKJGbG1xxkzwm54gdga9Jhj49G9C8F8KZL -2e343fd3e06b3a5081db25f8e549836feb850a10561dfb4d0ea19a7302238fa4 -601.90475901 <- expected amount RJgMCdrxjg1xeJ1Rmi9CS3R93MS35Tx2sM -b416a052a3ef694be7ef72d14846e2509199464ecb0b96087f484829c41bd30b -1626.98055674 <- expected amount RSCeyDCcZ3kpJWcwBzmcEyHQ7e9VEtQXY7 -8203d78d210e5a1b54443be48232658fe4b9f59819b1272cb5f9534866ce49af -12588.09824187 <- expected amount RGERRfbvuZx2RsVyvUpjtdgBjdKzKMNww7 -f52b579986b45625a33d56d5daa857918764dc17d71f5aff8e80c268d0572eea -4919.31879231 <- expected amount RJVPgswKQzcWxHB1Woin6QKpPVYRpXVoFn -ab386ce9a2cf983996d7146669dedd5d55a297998935707b6c0f5b7dea1bac05 -17428.70617350 <- expected amount RBSqMV6ihCDzgMjFgm7g5bSxAwtBGseRuE -78dacea10a1c616d6adafbf38e09c6814fc93b38509609823903c1a58de1aa27 -2375.16051963 <- expected amount RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu -30775d94acdeb3463d16989d110c0aa690e009839e28a2a7087c3b828adec933 -1742.96744887 <- expected amount RGNrH63hZEkcPzCZBnnpyYLDYfKXQqvBk1 -8ad511c7ad95ea7b8f866ae388ea49f16ebcb2131477135dd1a9ede4459e1381 -70173.29001640 <- expected amount RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta -45c359d398c92be3f6304db62f3247a03a8d2231583161a440ab88fc9653a90f -4766.21295597 <- expected amount RQNegFE2PWQtC8La69esvn2VGKttTAYpny -ee0dda87563392f4e999f67765506cbdd4896b281f0c7628c1f150972f2bc6e4 -228081.21691774 <- expected amount RPWiTSrWZyGDmpXfVYcVpmQq56XCh4Hkky -428f2447ae5f52492451e906837f9281ab0bfe5b0c5eba19ec8c85b3aab70fe1 -220390.81840860 <- expected amount REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 -0edcf59104c3ebcb7a013ab84810f3b90eee025fda6fa3adb1c3931891ffb746 -3505.92510761 <- expected amount RLBg1V9MCKeQjjFd2d6WKxon1hVTS4si73 -8c33e6e5649e1d741561ca8bccb544076981915e73aa0324de90f9eae6ceec3c -15844.60160895 <- expected amount RQNmvhca3LfPV8mGf7GKKCMoM1PPMojxmz -46e957ee13d83fc2e1fcc9b1509b3cce1a97853879527cc23105fd1e1041a9e6 -479029.87110523 <- expected amount RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ -ec1fe34569606f2fff172643d2cc7ff3ccabbc423a69641b689c1bbaaace7f4b -230594.13977661 <- expected amount RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz -ec3c0b89027f557d7bce9c7646ea16b4c30eff4e9939543492820f4040c4313e -36914.86263802 <- expected amount RC1S2CERDJR8BmvF3GZ4sbPviC5JrDYNKe -d1ab50f8afeb1e11eb1133fc9c20273cb2f4ef8eec971bdfa56f2d4349bf33c7 -528.33837397 <- expected amount RNy3NHtaKZ11xRqEU4YWWbrcdzjCgDBTuV -683591f99a2ed1d511613fe21496e84f15e86efc9365cb84a80847c2f80b0910 -19366.30498750 <- expected amount RXUEryMpxikDCdUT7LyCT3dq6bf4PPRibX -fd143bd2d9b5e4ff8747de2cf3951f0f52be6026df26478e5331618c7f3c97af -13921.94668799 <- expected amount RVoY1wTJug2VWeEG7C35iPseW2CtgZduRN -540e9c776c6c4dedd5def92a522a6b4c778550af2686866ad4b1287d8aebbb37 -3873.26099750 <- expected amount RUJRcSoNU1y8WM7xq7X4JAwBMEqovak4Rb -bcea48b56a6ad36af29f7c87fd7a14edd662ddbbc52f9c97371d16dcca29c7da -28437.73050782 <- expected amount RAp5JCZiuapAgcbxgLnvbYKZcLq66LWRRk -ded071de735644f210758726f68b4c6150bb4523f5653b7199a15eb7ab3a435b -4163.75557231 <- expected amount RQantoJxT8szwfAqUM3enLPe85YiQtwndH -b87f15a0f1c9ffb89e0535b1469ebda7cfe3dc83ad88891741e7837d60055253 -4483.69874171 <- expected amount RQ7ZvdGNyxKJsn9WKcPbc72R91gs7WooGY -788aa4fe73d8192633d1a461075735090a198c5d12bea35936cd7513c0d3fa95 -56079.05303659 <- expected amount RWEzWEk5KSa2yBUCdHnoZ4RXS1VReq6omp -8364a25a0d458dc05941e66e9eb09170a267ec1a1df63eefdfdb80d9d4a81232 -8540.87460698 <- expected amount RP8AvHsUhZkbDdcfHFrRsZZn2QVNcBMPNQ -c3e58a0d1c39010a922e4017fd221c4893b10772a3f447736ce722b1e8ea6993 -1450.14891746 <- expected amount RLJkv3utC9vbsZDC12JtWPeY8Sp8dCAwZK -a2bf31cefbc81290aecf3ff06a505d9f14605e7576a4d36d59820fb7b030e36b -2949.36469257 <- expected amount RGZcCA8BT3m9vDSXmhyQQijGLw9HCsSdBy -af648086e1d651d1d26456c4da519622ade8cbdccd6af9b0c8f5437fd251347b -25505.74161232 <- expected amount RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv -035ad7612e8e55c1d9278e212ac956446a5906e4feb003897f0f8b95f6663254 -51.15844888 <- expected amount RYE329fWaVUaVg55DU4hiB4P2rfr4w3K2Y -7350a71ea0d7e6d99526ed9a5c85b651f233982002f5cf301fbba79335028a3a -4516.65527532 <- expected amount RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 -11d94c19c3a2c82b02f1f93f0b4e2e1f0a6d8ebaef16fd89a0c305c420b1cde0 -288282.30230152 <- expected amount RTJFUrfou8DU63uyGqH7ULgiCHHPZLkDT5 -a97fb20e966eb2cd579b794bb2f218624ae2aeb8f0e37e5b324388ee3ceab56b -2218.92003493 <- expected amount RU1usSdDYTL7yN34EayPxJurQ7UMxDvTkF -710e15413e8da75abe790d0703ba30b472aa7105a77a1345c085d1eebfc4087f -30244.47828467 <- expected amount RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 -c6fa9d781a236f7c8093204aea3e556cdf5cfe9e063458ce67c2afc119f76580 -781.43040624 <- expected amount RF2LDXirQQ5afPGVM7W7o3ZQhgGbhSeH8W -18245cc8005658ef365bd12af5b97d7fc1f1a5675bbd1e4138b42c9ec6c8619d -35011.78668474 <- expected amount RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH -0acb562a4c07bdb2f33b2b5cb9f68f840210463e9fd18db639cbeb90de9e99e0 -20332.68360637 <- expected amount RH4u1f9PndVVYHkpxdMV28HwbdKphPiX6o -857d1d59ff05ff27e5b3e8ce700d96f3675f9fbfaf433dadfa12acb510a03b7f -4942.25856789 <- expected amount RWszpjqDXG6ifFzTJN2qaqSfZ4nJ8FX3Cp -341859ac10c24da4fb186a44c1e75cf4bedda18541d67ec07a707df7e0e69c30 -201.26853079 <- expected amount R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks -1d3cb3afd0bde49c6c7cdfa233db1822fe40914ee9bd61db2c81715e5ea53cd2 -663.13491046 <- expected amount RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig -0c824f0c1b31f59e41fbb428f8f0907cd2add1850ba1f9017e7e9f7f04f600ed -29548.60287586 <- expected amount RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK -37412c5be96ee323937ab206493b087475cab8fbae0197b8422308766cf915d2 -100186.19238242 <- expected amount RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK -474ef35ca33bae3dbf27ea3c7c97bf9a1602c35b49ebad3d547cbd6246d2f023 -1853646.03638691 <- expected amount RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq -a2f94d89c18012ff284a957cb02c782c3e0def90225326a13248429b5e004975 -56782.00622335 <- expected amount RDQH9gVbS9Yza5fd7T4GSASzdTuwiP3Sgm -d0b85a1a723b4be4d5dfd81d952edf4cd8e4f48efe5d94e06b284c64477e6fc2 -151544.96672946 <- expected amount RFREgr9p32GanT4YcM25hMcPYkvRLDNkja -610739fdc49cb25411ce8601afda3afec67ea302fb30143ffdbf610051212490 -48415.76246875 <- expected amount RHQggZrkWW9HV8d7o2dvb9mgN1z6tGDJRh -872c7832baefaec9371e405920d66a04eabad19a5bf96f1d4acf09a48ca7201e -295382.69930466 <- expected amount RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 -0a96a0d8f6286a92fbef3d0cdff39dac4a545ec53c86f208b7fa07597e426d05 -64965.94673778 <- expected amount RKyMDKFNC79FhCfnFr58JE1ibpADa2WScE -45b415f970c7be2eebda55ee16ec06f53e78108ea8dd8d6c6303739fe23a2f77 -9683.15249375 <- expected amount RHoPZSxWRgeQp7nB3eTn4dyDpmBRoZPoKv -b3e59b50ba662b58187ba8805cd538700001dafa3aaac7d861fd36e1d1fd28d0 -2414.30320001 <- expected amount RGiA2sP25BqtW9qfJ3vRUAPH8zbgepwriY -b9910599dbb95dbffa4654bb71e943a44137ac382961ef3e6cf0a7cd8cfad5a8 -19375.01982474 <- expected amount RTHtdb735hqJi5DJjXNiP2LREkqUL5b8Sx -1e4c430408b1348baeba6a3c5512c982178aa31ecfbd8e4ae2992a71cce71032 -1589788.37880130 <- expected amount RHZR3YhrgxaYASvNUrcVdoonXCfgrdGULz -270e639e54ca586a2f3e836f00d047469c275a2ce4939950c1af72e541651701 -4458.42312105 <- expected amount RCaxwG9VfLVvxMVvc5q7SQxRSuwR9amxoy -9aeef2d9cb225e6378b6395f80b427e74e4612b2c77fa917fcfc7b8769e72ae9 -21120.82823309 <- expected amount RAyEy5vxNeAAeRw57BrsN5Kh4zu8i3KYEf -6645da8d60c49f89481af3368809142031387df0fec55284c06a47fad3779b0e -6566.15472364 <- expected amount RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 -81ed2fa06af264ea2aa37c80520ed4c404ce9fe8df1d0ba74aeb793a01b0e507 -59621.32507756 <- expected amount RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT -c24ba22994d4fe8cb8fd16bc37e0c2b788146364da20087ae4ad66483f85d1b2 -23159.75532541 <- expected amount RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p -e44928ab1c8a9ca209476b8e045e8118e291e6d4e945ab220500c5cf0f095c0a -9683.15249375 <- expected amount RG7jKgxwFPKNPy4MFxXaBr7TRDEzR2sSkV -6213d1dcfc67f81075a2b6b75791868ff9215c85d9ad985ce064cf7e5926c9d7 -1504.76189752 <- expected amount RQft1wNt3sgntZDRbpz2WzHDy4F2TRamhB -4da2ae47d8745cf35b5ec454ea098b2d2ea58ccffddbde5adbe87de3c67d2a51 -1452.47287406 <- expected amount RRergGKQPDcYHU8PxKhpx6kmR7mXdqp8Ce -ac0d7b59075d46fc37d53a114c31183f592fc82f5d9c3da0a8cfbfa3dc78c038 -7746.52199500 <- expected amount RDPo9tEaM9Ds5UePeQS1pAFqXzD1ZVvS1n -15de030bc97e0edbd0f45bf45990d634a540e5ad746d89be763c95888a75f1e5 -77304.58455563 <- expected amount RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ -c00ef567b0cf806b09f3a9a30d9935efe8271960f97321804c697ad9d4c681c1 -894.72329042 <- expected amount RNpa2spCJutTMYHgsr6MwM6X2pmRfYd6LT diff --git a/src/KMD.batch2 b/src/KMD.batch2 deleted file mode 100755 index 4dde7d04c..000000000 --- a/src/KMD.batch2 +++ /dev/null @@ -1,268 +0,0 @@ -sleep 999999 -# RDB6rqTtXja9iRKu5KeKz36poQqQkadsvG KMD 1597.72016146 -./komodo-cli sendtoaddress RDB6rqTtXja9iRKu5KeKz36poQqQkadsvG 1597.72016146 -sleep 3 -echo "1597.72016146 <- expected amount RDB6rqTtXja9iRKu5KeKz36poQqQkadsvG" - -# RFahFwS1xmwufLvidWFg3aQwi6JnZ7MV92 KMD 30956.65119641 -./komodo-cli sendtoaddress RFahFwS1xmwufLvidWFg3aQwi6JnZ7MV92 30956.65119641 -sleep 3 -echo "30956.65119641 <- expected amount RFahFwS1xmwufLvidWFg3aQwi6JnZ7MV92" - -# RS3dv3trTkvMUc1qpycmcY2mZRZj527HMG KMD 8011.05479853 -./komodo-cli sendtoaddress RS3dv3trTkvMUc1qpycmcY2mZRZj527HMG 8011.05479853 -sleep 3 -echo "8011.05479853 <- expected amount RS3dv3trTkvMUc1qpycmcY2mZRZj527HMG" - -# RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU KMD 501.64865701, REVS 9.95750000 -# RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU KMD 501.64865701 -./komodo-cli sendtoaddress RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU 501.64865701 -sleep 3 -echo "501.64865701 <- expected amount RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU" - -# RFuD6bLb6seuKPmQqouwcjAy1yexEYGJ8Q KMD 6617.71011981 -./komodo-cli sendtoaddress RFuD6bLb6seuKPmQqouwcjAy1yexEYGJ8Q 6617.71011981 -sleep 3 -echo "6617.71011981 <- expected amount RFuD6bLb6seuKPmQqouwcjAy1yexEYGJ8Q" - -# RSj2RG9yEbokDDNCn94g6wRf3y1R4HztjT KMD 58970.39868693 -./komodo-cli sendtoaddress RSj2RG9yEbokDDNCn94g6wRf3y1R4HztjT 58970.39868693 -sleep 3 -echo "58970.39868693 <- expected amount RSj2RG9yEbokDDNCn94g6wRf3y1R4HztjT" - -# RLWjPQPe4zZ1ZF4VpShkiBkgkF4V9YFt7a KMD 18618.76561497 -./komodo-cli sendtoaddress RLWjPQPe4zZ1ZF4VpShkiBkgkF4V9YFt7a 18618.76561497 -sleep 3 -echo "18618.76561497 <- expected amount RLWjPQPe4zZ1ZF4VpShkiBkgkF4V9YFt7a" - -# RARemRFU1R5QcRdDZqrufjks2KCzBi6bxL KMD 52766.61227268 -./komodo-cli sendtoaddress RARemRFU1R5QcRdDZqrufjks2KCzBi6bxL 52766.61227268 -sleep 3 -echo "52766.61227268 <- expected amount RARemRFU1R5QcRdDZqrufjks2KCzBi6bxL" - -# REg8BhZUaxjJu8Ad4ZYsrETJwcwYL7mPkC KMD 7204.26545535 -./komodo-cli sendtoaddress REg8BhZUaxjJu8Ad4ZYsrETJwcwYL7mPkC 7204.26545535 -sleep 3 -echo "7204.26545535 <- expected amount REg8BhZUaxjJu8Ad4ZYsrETJwcwYL7mPkC" - -# RMnLqCcb13npqdUMgUYAdr4bGawNe5H8yo KMD 871.48372443 -./komodo-cli sendtoaddress RMnLqCcb13npqdUMgUYAdr4bGawNe5H8yo 871.48372443 -sleep 3 -echo "871.48372443 <- expected amount RMnLqCcb13npqdUMgUYAdr4bGawNe5H8yo" - -# RWCz1ibkFVpo6pBoBT7XeMZHVZy61EnYj3 KMD 681.69393556 -./komodo-cli sendtoaddress RWCz1ibkFVpo6pBoBT7XeMZHVZy61EnYj3 681.69393556 -sleep 3 -echo "681.69393556 <- expected amount RWCz1ibkFVpo6pBoBT7XeMZHVZy61EnYj3" - -# RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf KMD 62103.45021354, REVS 50.00000000 -# RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf KMD 62103.45021354 -./komodo-cli sendtoaddress RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf 62103.45021354 -sleep 3 -echo "62103.45021354 <- expected amount RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf" - -# RRcP4HLapHvTinSVYq6bMA3d41XeYCH2Uz KMD 9683.15249375 -./komodo-cli sendtoaddress RRcP4HLapHvTinSVYq6bMA3d41XeYCH2Uz 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RRcP4HLapHvTinSVYq6bMA3d41XeYCH2Uz" - -# RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 KMD 12520.16564088, REVS 138.94305839 -# RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 KMD 12520.16564088 -./komodo-cli sendtoaddress RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 12520.16564088 -sleep 3 -echo "12520.16564088 <- expected amount RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71" - -# RKb5ay26iSzmBoqm51vPveyErH9BYG3dry KMD 3674.15911735, REVS 72.89043156 -# RKb5ay26iSzmBoqm51vPveyErH9BYG3dry KMD 3674.15911735 -./komodo-cli sendtoaddress RKb5ay26iSzmBoqm51vPveyErH9BYG3dry 3674.15911735 -sleep 3 -echo "3674.15911735 <- expected amount RKb5ay26iSzmBoqm51vPveyErH9BYG3dry" - -# RNFKCPjFTQq5pFxBpehrVFzB55zE9enRyK KMD 1859.16527880 -./komodo-cli sendtoaddress RNFKCPjFTQq5pFxBpehrVFzB55zE9enRyK 1859.16527880 -sleep 3 -echo "1859.16527880 <- expected amount RNFKCPjFTQq5pFxBpehrVFzB55zE9enRyK" - -# REGu6tiLygx7HjsRnEYypHiV3QotErvKxP KMD 9683.15249375 -./komodo-cli sendtoaddress REGu6tiLygx7HjsRnEYypHiV3QotErvKxP 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount REGu6tiLygx7HjsRnEYypHiV3QotErvKxP" - -# RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx KMD 612851.03780014, REVS 5433.13031755 -# RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx KMD 612851.03780014 -./komodo-cli sendtoaddress RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx 612851.03780014 -sleep 3 -echo "612851.03780014 <- expected amount RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx" - -# RVGv9EP36z2SHf5zuGrGKEq6or8Q2hEPts KMD 954.83978703 -./komodo-cli sendtoaddress RVGv9EP36z2SHf5zuGrGKEq6or8Q2hEPts 954.83978703 -sleep 3 -echo "954.83978703 <- expected amount RVGv9EP36z2SHf5zuGrGKEq6or8Q2hEPts" - -# RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN KMD 139007.63452726 -./komodo-cli sendtoaddress RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN 139007.63452726 -sleep 3 -echo "139007.63452726 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN" - -# RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp KMD 519232.27493854, REVS 10298.05578171 -# RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp KMD 519232.27493854 -./komodo-cli sendtoaddress RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp 519232.27493854 -sleep 3 -echo "519232.27493854 <- expected amount RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp" - -# RV6EZQRiEszMydw3VjLabjGCBG1HiHrU6f KMD 19366.30498750 -./komodo-cli sendtoaddress RV6EZQRiEszMydw3VjLabjGCBG1HiHrU6f 19366.30498750 -sleep 3 -echo "19366.30498750 <- expected amount RV6EZQRiEszMydw3VjLabjGCBG1HiHrU6f" - -# RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i KMD 19106.59220646, REVS 374.39305755 -# RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i KMD 19106.59220646 -./komodo-cli sendtoaddress RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i 19106.59220646 -sleep 3 -echo "19106.59220646 <- expected amount RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i" - -# RK5z4QVhNBWJn5xSkpPPgdcZzms7VtFV4x KMD 3097.05949360 -./komodo-cli sendtoaddress RK5z4QVhNBWJn5xSkpPPgdcZzms7VtFV4x 3097.05949360 -sleep 3 -echo "3097.05949360 <- expected amount RK5z4QVhNBWJn5xSkpPPgdcZzms7VtFV4x" - -# RTSFrcYBPZ3wMUtJCo5RC8n71R2c1ypC46 KMD 968.31524937 -./komodo-cli sendtoaddress RTSFrcYBPZ3wMUtJCo5RC8n71R2c1ypC46 968.31524937 -sleep 3 -echo "968.31524937 <- expected amount RTSFrcYBPZ3wMUtJCo5RC8n71R2c1ypC46" - -# RSxDyaWzqT3VTK9WLkAKhY5WST8a9kQgr9 KMD 14268.23083290 -./komodo-cli sendtoaddress RSxDyaWzqT3VTK9WLkAKhY5WST8a9kQgr9 14268.23083290 -sleep 3 -echo "14268.23083290 <- expected amount RSxDyaWzqT3VTK9WLkAKhY5WST8a9kQgr9" - -# RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf KMD 1212.14061568, REVS 24.05385000 -# RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf KMD 1212.14061568 -./komodo-cli sendtoaddress RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf 1212.14061568 -sleep 3 -echo "1212.14061568 <- expected amount RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf" - -# RVUFVtJN2mVDEsADwMfZBBXXSq3G9QCvBs KMD 20418.65848567 -./komodo-cli sendtoaddress RVUFVtJN2mVDEsADwMfZBBXXSq3G9QCvBs 20418.65848567 -sleep 3 -echo "20418.65848567 <- expected amount RVUFVtJN2mVDEsADwMfZBBXXSq3G9QCvBs" - -# RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza KMD 10347.76210933, REVS 205.22959870 -# RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza KMD 10347.76210933 -./komodo-cli sendtoaddress RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza 10347.76210933 -sleep 3 -echo "10347.76210933 <- expected amount RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza" - -# RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr KMD 71712.83911390, REVS 500.67180183 -# RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr KMD 71712.83911390 -./komodo-cli sendtoaddress RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr 71712.83911390 -sleep 3 -echo "71712.83911390 <- expected amount RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr" - -# RNszK1KnyyDoU6di3qQgCYvSL3V3ZgGNGY KMD 26725.50088275 -./komodo-cli sendtoaddress RNszK1KnyyDoU6di3qQgCYvSL3V3ZgGNGY 26725.50088275 -sleep 3 -echo "26725.50088275 <- expected amount RNszK1KnyyDoU6di3qQgCYvSL3V3ZgGNGY" - -# RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr KMD 16435.34703311, REVS 114.80740001 -# RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr KMD 16435.34703311 -./komodo-cli sendtoaddress RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr 16435.34703311 -sleep 3 -echo "16435.34703311 <- expected amount RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr" - -# RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr KMD 17137.93285029, REVS 340.00462653 -# RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr KMD 17137.93285029 -./komodo-cli sendtoaddress RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr 17137.93285029 -sleep 3 -echo "17137.93285029 <- expected amount RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr" - -# RMKk4K7zC6QrESUxNGRTfqbBnXr2MFYsLV KMD 1302.29267891 -./komodo-cli sendtoaddress RMKk4K7zC6QrESUxNGRTfqbBnXr2MFYsLV 1302.29267891 -sleep 3 -echo "1302.29267891 <- expected amount RMKk4K7zC6QrESUxNGRTfqbBnXr2MFYsLV" - -# RJaaPBFPBTtqzPZ5ZV2uu15urxhiycwg7K KMD 32805.26183900 -./komodo-cli sendtoaddress RJaaPBFPBTtqzPZ5ZV2uu15urxhiycwg7K 32805.26183900 -sleep 3 -echo "32805.26183900 <- expected amount RJaaPBFPBTtqzPZ5ZV2uu15urxhiycwg7K" - -# R9isnAJ2iyyFq8BMZZJu8PiFLpnXPhXcZ7 KMD 502854.27827071 -./komodo-cli sendtoaddress R9isnAJ2iyyFq8BMZZJu8PiFLpnXPhXcZ7 502854.27827071 -sleep 3 -echo "502854.27827071 <- expected amount R9isnAJ2iyyFq8BMZZJu8PiFLpnXPhXcZ7" - -# RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF KMD 409543.68954327, REVS 8123.68911362 -# RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF KMD 409543.68954327 -./komodo-cli sendtoaddress RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF 409543.68954327 -sleep 3 -echo "409543.68954327 <- expected amount RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF" - -# RQWxU8AV5SkKCmz6Q3CecmAtnauESPxDod KMD 8908.50029425 -./komodo-cli sendtoaddress RQWxU8AV5SkKCmz6Q3CecmAtnauESPxDod 8908.50029425 -sleep 3 -echo "8908.50029425 <- expected amount RQWxU8AV5SkKCmz6Q3CecmAtnauESPxDod" - -# RMqivy9QZ7ax1UU8ZxqaupLqDqEBAFW6MY KMD 708.48776076 -./komodo-cli sendtoaddress RMqivy9QZ7ax1UU8ZxqaupLqDqEBAFW6MY 708.48776076 -sleep 3 -echo "708.48776076 <- expected amount RMqivy9QZ7ax1UU8ZxqaupLqDqEBAFW6MY" - -# RV85Dvvf4fm13xxtjmucYXDAarMcnV8EFq KMD 29057.20400324 -./komodo-cli sendtoaddress RV85Dvvf4fm13xxtjmucYXDAarMcnV8EFq 29057.20400324 -sleep 3 -echo "29057.20400324 <- expected amount RV85Dvvf4fm13xxtjmucYXDAarMcnV8EFq" - -# RJzRaaqhT8R7pbVuVeY3C69X9K89UMU55E KMD 632.08133544 -./komodo-cli sendtoaddress RJzRaaqhT8R7pbVuVeY3C69X9K89UMU55E 632.08133544 -sleep 3 -echo "632.08133544 <- expected amount RJzRaaqhT8R7pbVuVeY3C69X9K89UMU55E" - -# RCBSjuktzRbsz1UHKjFmTUVG6nDNhd3y2g KMD 24029.98198519 -./komodo-cli sendtoaddress RCBSjuktzRbsz1UHKjFmTUVG6nDNhd3y2g 24029.98198519 -sleep 3 -echo "24029.98198519 <- expected amount RCBSjuktzRbsz1UHKjFmTUVG6nDNhd3y2g" - -# RKDnex4tqTGA9u2UqEDGS8uTxceqWGwejk KMD 10684.09534584 -./komodo-cli sendtoaddress RKDnex4tqTGA9u2UqEDGS8uTxceqWGwejk 10684.09534584 -sleep 3 -echo "10684.09534584 <- expected amount RKDnex4tqTGA9u2UqEDGS8uTxceqWGwejk" - -# RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d KMD 302.06577591, REVS 5.99094155 -# RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d KMD 302.06577591 -./komodo-cli sendtoaddress RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d 302.06577591 -sleep 3 -echo "302.06577591 <- expected amount RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d" - -# REhPMC2k5XAsiqd3X1afzdT6SzE9vY7MS6 KMD 9683.15249375 -./komodo-cli sendtoaddress REhPMC2k5XAsiqd3X1afzdT6SzE9vY7MS6 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount REhPMC2k5XAsiqd3X1afzdT6SzE9vY7MS6" - -# RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL KMD 30407.13753317, REVS 411.30538288 -# RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL KMD 30407.13753317 -./komodo-cli sendtoaddress RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL 30407.13753317 -sleep 3 -echo "30407.13753317 <- expected amount RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL" - -# RKa3UX7xvQuYhd9LWHFGjQm8EjbLcnLxo1 KMD 4647.91319700 -./komodo-cli sendtoaddress RKa3UX7xvQuYhd9LWHFGjQm8EjbLcnLxo1 4647.91319700 -sleep 3 -echo "4647.91319700 <- expected amount RKa3UX7xvQuYhd9LWHFGjQm8EjbLcnLxo1" - -# RRBhAPHb7WY2XrLSST2oymc4LYtCskzijc KMD 1914.39627638 -./komodo-cli sendtoaddress RRBhAPHb7WY2XrLSST2oymc4LYtCskzijc 1914.39627638 -sleep 3 -echo "1914.39627638 <- expected amount RRBhAPHb7WY2XrLSST2oymc4LYtCskzijc" - -# RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 KMD 56568.34116197 -./komodo-cli sendtoaddress RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 56568.34116197 -sleep 3 -echo "56568.34116197 <- expected amount RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6" - -# RNkRuGR4uFrcMqrPMu8X5Nwvgbc3Jxxkqk KMD 96831.52493750 -./komodo-cli sendtoaddress RNkRuGR4uFrcMqrPMu8X5Nwvgbc3Jxxkqk 96831.52493750 -sleep 3 -echo "96831.52493750 <- expected amount RNkRuGR4uFrcMqrPMu8X5Nwvgbc3Jxxkqk" - - -# total KMD 3000044.12520703 REVS 0.00000000 diff --git a/src/KMD.batch2.txids b/src/KMD.batch2.txids deleted file mode 100644 index 0737039f8..000000000 --- a/src/KMD.batch2.txids +++ /dev/null @@ -1,100 +0,0 @@ -c329c89b3f7aafccc387d603701a6a64a936128ac7664fb0fee65e0bf2e429b6 -1597.72016146 <- expected amount RDB6rqTtXja9iRKu5KeKz36poQqQkadsvG -b2cdaf93b7eacfed0a4f5097aa04ec75b7370ba0af607eef94e350aea7e70434 -30956.65119641 <- expected amount RFahFwS1xmwufLvidWFg3aQwi6JnZ7MV92 -56ed0d28cec7e2c69b5c5032196cdeb836c0f03068d06c1ad1a0512cc4dd4829 -8011.05479853 <- expected amount RS3dv3trTkvMUc1qpycmcY2mZRZj527HMG -5278f1cd93023398be92f19af29e0a36650d44c749137b933330961f6b58e3f9 -501.64865701 <- expected amount RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU -179c2d0dead8ce8290259d89b9ec3e3636c8cfddb5c302329f7f370d7e1ca164 -6617.71011981 <- expected amount RFuD6bLb6seuKPmQqouwcjAy1yexEYGJ8Q -18a92ae3929a170820bcc5ad626a926a43f21bcf2010731d3e10618c723c48ab -58970.39868693 <- expected amount RSj2RG9yEbokDDNCn94g6wRf3y1R4HztjT -7e3f8af2083bfa820b629c28109d36aece5d211a90f4f28e2f6a166aa1cf52ba -18618.76561497 <- expected amount RLWjPQPe4zZ1ZF4VpShkiBkgkF4V9YFt7a -9cb657f2475005cd61d75b878f45e08c5a02dcc4f2697c8471b4d9a28e350f03 -52766.61227268 <- expected amount RARemRFU1R5QcRdDZqrufjks2KCzBi6bxL -87dce30d57d563adc799d2f10e865b0ff18336d50616bc326fbcc2b30c6f2fe2 -7204.26545535 <- expected amount REg8BhZUaxjJu8Ad4ZYsrETJwcwYL7mPkC -26f44e65cd397b58339bbc210e864172c17764f42c0507b603283be31b4e8256 -871.48372443 <- expected amount RMnLqCcb13npqdUMgUYAdr4bGawNe5H8yo -325d5c3fdd4a637ec18db2b182c7256535b1fad9e7246e9beab3c17203df9293 -681.69393556 <- expected amount RWCz1ibkFVpo6pBoBT7XeMZHVZy61EnYj3 -d70a3661cc7b41394e1493656391bb1cba899fbdea7d6ceef74068855324b647 -62103.45021354 <- expected amount RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf -2d26feebf39ec339502faa9f87269d3fe34caacb1eb3fcc332c17f85190ec351 -9683.15249375 <- expected amount RRcP4HLapHvTinSVYq6bMA3d41XeYCH2Uz -b87fcff23d4d6b1de22d101cb9d312ffd893f170e60726cd03cf2b998a5dbe9d -12520.16564088 <- expected amount RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 -d131c69df7cd932c6962957e5fed4c4288ef8114b14046a32514845817475bad -3674.15911735 <- expected amount RKb5ay26iSzmBoqm51vPveyErH9BYG3dry -915d049fb7144c834876f3cd37c6af78cfb9cae800dc0b8ed995262912a3129e -1859.16527880 <- expected amount RNFKCPjFTQq5pFxBpehrVFzB55zE9enRyK -33ef89d3a1685aa2f35307b86a198a4d643c43ddd8a13f00431d66cab8f0377c -9683.15249375 <- expected amount REGu6tiLygx7HjsRnEYypHiV3QotErvKxP -991a9017669144f83e724f134a4ae66c2db968fabb35d6196020686d8f10ae1f -612851.03780014 <- expected amount RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx -cabb00fd0bc49d51b494093a6aa247277391ec531b4b12beca58980ff4f6c831 -954.83978703 <- expected amount RVGv9EP36z2SHf5zuGrGKEq6or8Q2hEPts -82fa5756cba3af6b06f1dde3080e3e1eaf67f7fe10b1242f038f9e6780819ff3 -139007.63452726 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN -09d000249df0e9cd6a5bbcf110a04be611e19dce4bfc83a4986d8b84ffb8b609 -519232.27493854 <- expected amount RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp -8f453874283a089c2a3fe3b6ff5779174c57e230b04ee5c6246d02df042a333a -19366.30498750 <- expected amount RV6EZQRiEszMydw3VjLabjGCBG1HiHrU6f -065f16bf44bc940aab138fbe2ecf99bed897ec3fcdcb1ab97604564bc76a6b6f -19106.59220646 <- expected amount RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i -a64451f3360f11c068f2ed9393eba0a8889ffff4156d80e17fe969cb8811cb62 -3097.05949360 <- expected amount RK5z4QVhNBWJn5xSkpPPgdcZzms7VtFV4x -f93c8c747753e2742e89d8f0901b5084762327c733499fdc673f1c053ad3c64c -968.31524937 <- expected amount RTSFrcYBPZ3wMUtJCo5RC8n71R2c1ypC46 -484d5632f378f026b62c064c649e616b8d9bd889caa67f393210e771e845fe83 -14268.23083290 <- expected amount RSxDyaWzqT3VTK9WLkAKhY5WST8a9kQgr9 -adf2fd2eee75f5d9fdce44b4fe4d32f62d79f5e1b0362640c76eb109b1ceb30b -1212.14061568 <- expected amount RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf -5f2fbb598d9c824c65909c675f9cdf5450062dcf3c5cc74e7028f7709965fe2c -20418.65848567 <- expected amount RVUFVtJN2mVDEsADwMfZBBXXSq3G9QCvBs -25861dd56268dbe16b1139273b1065a35c1fe7a5922a820d8e2dec36d43aaec3 -10347.76210933 <- expected amount RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza -ff8b27a51fab38a48749e59f0313eb4857d733ba04a17827152fe3691762a869 -71712.83911390 <- expected amount RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr -2b49a3430d317a1f09b1105cccc8dd2faf11ee730b4ed247a9ce5ac37a56c64a -26725.50088275 <- expected amount RNszK1KnyyDoU6di3qQgCYvSL3V3ZgGNGY -c0d8d3c2d7a5d8ab8ce3ed91dc97c9d4badb304cbf6c916257a68251ba33171e -16435.34703311 <- expected amount RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr -9e93f9084dd0d77b84c6fe71ec6e84fcb3a417f29b102be7b9bc9513b2212b5e -17137.93285029 <- expected amount RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr -33a8050ebc63e301adfada7a1c86b84d1ac11891f00efe2c1f546a245e6eedfc -1302.29267891 <- expected amount RMKk4K7zC6QrESUxNGRTfqbBnXr2MFYsLV -3d21078ebe08f4860d3e7cfda791ed78eacf13e2da98295f9aa2e02f9b8b50f1 -32805.26183900 <- expected amount RJaaPBFPBTtqzPZ5ZV2uu15urxhiycwg7K -3578e7e457292ab2ba5ab9870eed5d4afd4d8f207d40a5977adc3ac05ae28534 -502854.27827071 <- expected amount R9isnAJ2iyyFq8BMZZJu8PiFLpnXPhXcZ7 -0a6eb401ccd0f546ea6bc8dd0c94ec9815f3f99e5c2d5c6c3ace3d38563491d2 -409543.68954327 <- expected amount RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF -43434a36fa78520ec042e5916662d10ad83f2d1e61014de495943aff647d9137 -8908.50029425 <- expected amount RQWxU8AV5SkKCmz6Q3CecmAtnauESPxDod -2f2395d0eb5a29501c2c63fa70b79cfafb2b521fa5826d7f16e6699ef388aad9 -708.48776076 <- expected amount RMqivy9QZ7ax1UU8ZxqaupLqDqEBAFW6MY -85bae2856dc4a113ca7e852d09a40a5ecaa08604371a94fd3ba7cf9f4e9cd7fd -29057.20400324 <- expected amount RV85Dvvf4fm13xxtjmucYXDAarMcnV8EFq -a841458bbee450c66a706fd65bc6f3085ec3811885e0021307269f35a634c62f -632.08133544 <- expected amount RJzRaaqhT8R7pbVuVeY3C69X9K89UMU55E -b181d7f1e63468885406edfd312013b3341e1d8b20daafee61ed09aa2688a857 -24029.98198519 <- expected amount RCBSjuktzRbsz1UHKjFmTUVG6nDNhd3y2g -a63afab4b50441c2a0d7acf987d806b28ccf7e1a96474bace772fa12abb6f07b -10684.09534584 <- expected amount RKDnex4tqTGA9u2UqEDGS8uTxceqWGwejk -5fbe39fc4f4284b5dee48adba5417360e36b6d6ad3df2f3f57de95c71c9e5258 -302.06577591 <- expected amount RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d -e70bfabab12277e80f6c46dc3afa7612fd2e9232f18d0372e5338da3022c67f6 -9683.15249375 <- expected amount REhPMC2k5XAsiqd3X1afzdT6SzE9vY7MS6 -b552d0a83fad0d9ea90ac807676339a3775ad6135e1626b4283da9b792c629a0 -30407.13753317 <- expected amount RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL -b705ff799a0053b85764aa6a10dc35f4028404c14e1645423a4ca3e66ecbaedc -4647.91319700 <- expected amount RKa3UX7xvQuYhd9LWHFGjQm8EjbLcnLxo1 -292649c59c73458074e05c90be0b98284baf551bd7ea6015dcc329f510eb140b -1914.39627638 <- expected amount RRBhAPHb7WY2XrLSST2oymc4LYtCskzijc -de68a847b4dc4e0d9595dd0ccda713f6c4e40af69a0b0722fb1bf85937019675 -56568.34116197 <- expected amount RQFicXTYo7QzKhFbo3ELuBfo3eyYiUv6o6 -8c8d15cda8840fe62e3f67a6a1a34ec538c8740dacad9d41363252c0be60635d -96831.52493750 <- expected amount RNkRuGR4uFrcMqrPMu8X5Nwvgbc3Jxxkqk diff --git a/src/KMD.batch3 b/src/KMD.batch3 deleted file mode 100755 index 952d83453..000000000 --- a/src/KMD.batch3 +++ /dev/null @@ -1,248 +0,0 @@ -sleep 9999999 -# RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg KMD 5669.98491054, REVS 112.56208000 -# RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg KMD 5669.98491054 -./komodo-cli sendtoaddress RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg 5669.98491054 -sleep 3 -echo "5669.98491054 <- expected amount RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg" - -# RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek KMD 8353.36815152 -./komodo-cli sendtoaddress RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek 8353.36815152 -sleep 3 -echo "8353.36815152 <- expected amount RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek" - -# RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z KMD 9683.15249375 -./komodo-cli sendtoaddress RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z 9683.15249375 -sleep 3 -echo "9683.15249375 <- expected amount RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z" - -# RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W KMD 43088.74729573, REVS 470.87980000 -# RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W KMD 43088.74729573 -./komodo-cli sendtoaddress RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W 43088.74729573 -sleep 3 -echo "43088.74729573 <- expected amount RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W" - -# RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct KMD 50806.03038250 -./komodo-cli sendtoaddress RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct 50806.03038250 -sleep 3 -echo "50806.03038250 <- expected amount RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct" - -# RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ KMD 2015.79933830 -./komodo-cli sendtoaddress RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ 2015.79933830 -sleep 3 -echo "2015.79933830 <- expected amount RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ" - -# RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf KMD 48415.76246875 -./komodo-cli sendtoaddress RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf 48415.76246875 -sleep 3 -echo "48415.76246875 <- expected amount RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf" - -# RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ KMD 7885.04483652 -./komodo-cli sendtoaddress RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ 7885.04483652 -sleep 3 -echo "7885.04483652 <- expected amount RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ" - -# RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb KMD 2076.57141858 -./komodo-cli sendtoaddress RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb 2076.57141858 -sleep 3 -echo "2076.57141858 <- expected amount RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb" - -# RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW KMD 55892.82951156, REVS 1070.41924580 -# RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW KMD 55892.82951156 -./komodo-cli sendtoaddress RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW 55892.82951156 -sleep 3 -echo "55892.82951156 <- expected amount RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW" - -# RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW KMD 110983.78643539 -./komodo-cli sendtoaddress RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW 110983.78643539 -sleep 3 -echo "110983.78643539 <- expected amount RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW" - -# RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z KMD 135104.07865436 -./komodo-cli sendtoaddress RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z 135104.07865436 -sleep 3 -echo "135104.07865436 <- expected amount RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z" - -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 8376.94442691 -./komodo-cli sendtoaddress RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 8376.94442691 -sleep 3 -echo "8376.94442691 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3" - -# RHSA9ocZc77tHiFvVQ2h26AJQFsionWAXK KMD 47849.00411034 -./komodo-cli sendtoaddress RHSA9ocZc77tHiFvVQ2h26AJQFsionWAXK 47849.00411034 -sleep 3 -echo "47849.00411034 <- expected amount RHSA9ocZc77tHiFvVQ2h26AJQFsionWAXK" - -# RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY KMD 15163.82967582 -./komodo-cli sendtoaddress RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY 15163.82967582 -sleep 3 -echo "15163.82967582 <- expected amount RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY" - -# RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc KMD 3002.22564175 -./komodo-cli sendtoaddress RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc 3002.22564175 -sleep 3 -echo "3002.22564175 <- expected amount RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc" - -# RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH KMD 14101.70011189 -./komodo-cli sendtoaddress RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH 14101.70011189 -sleep 3 -echo "14101.70011189 <- expected amount RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH" - -# RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf KMD 5832.55634776 -./komodo-cli sendtoaddress RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf 5832.55634776 -sleep 3 -echo "5832.55634776 <- expected amount RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf" - -# RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ KMD 890.85002942 -./komodo-cli sendtoaddress RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ 890.85002942 -sleep 3 -echo "890.85002942 <- expected amount RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ" - -# RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK KMD 335.54240549, REVS 6.65853993 -# RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK KMD 335.54240549 -./komodo-cli sendtoaddress RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK 335.54240549 -sleep 3 -echo "335.54240549 <- expected amount RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK" - -# RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds KMD 19366.30498750 -./komodo-cli sendtoaddress RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds 19366.30498750 -sleep 3 -echo "19366.30498750 <- expected amount RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds" - -# RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh KMD 163589.49612623, REVS 3245.93000000 -# RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh KMD 163589.49612623 -./komodo-cli sendtoaddress RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh 163589.49612623 -sleep 3 -echo "163589.49612623 <- expected amount RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh" - -# RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus KMD 3873.26099750 -./komodo-cli sendtoaddress RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus 3873.26099750 -sleep 3 -echo "3873.26099750 <- expected amount RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus" - -# RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg KMD 7746.52199500 -./komodo-cli sendtoaddress RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg 7746.52199500 -sleep 3 -echo "7746.52199500 <- expected amount RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg" - -# RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac KMD 16670.51967129 -./komodo-cli sendtoaddress RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac 16670.51967129 -sleep 3 -echo "16670.51967129 <- expected amount RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac" - -# RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK KMD 7746.52199500 -./komodo-cli sendtoaddress RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK 7746.52199500 -sleep 3 -echo "7746.52199500 <- expected amount RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK" - -# RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem KMD 74455.81274009 -./komodo-cli sendtoaddress RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem 74455.81274009 -sleep 3 -echo "74455.81274009 <- expected amount RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem" - -# RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc KMD 98858.55994787, REVS 1384.95819177 -# RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc KMD 98858.55994787 -./komodo-cli sendtoaddress RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc 98858.55994787 -sleep 3 -echo "98858.55994787 <- expected amount RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc" - -# RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 KMD 5226.14889591, REVS 103.72248253 -# RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 KMD 5226.14889591 -./komodo-cli sendtoaddress RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 5226.14889591 -sleep 3 -echo "5226.14889591 <- expected amount RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9" - -# RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK KMD 753.34926401 -./komodo-cli sendtoaddress RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK 753.34926401 -sleep 3 -echo "753.34926401 <- expected amount RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK" - -# RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK KMD 159251.95713851, REVS 3160.13095281 -# RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK KMD 159251.95713851 -./komodo-cli sendtoaddress RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK 159251.95713851 -sleep 3 -echo "159251.95713851 <- expected amount RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK" - -# RAaszCNodXXu9rJL6qqVMZDykXncDecTMS KMD 693.08132289 -./komodo-cli sendtoaddress RAaszCNodXXu9rJL6qqVMZDykXncDecTMS 693.08132289 -sleep 3 -echo "693.08132289 <- expected amount RAaszCNodXXu9rJL6qqVMZDykXncDecTMS" - -# RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5 KMD 2304.59029350 -./komodo-cli sendtoaddress RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5 2304.59029350 -sleep 3 -echo "2304.59029350 <- expected amount RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5" - -# RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym KMD 6506.14889316 -./komodo-cli sendtoaddress RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym 6506.14889316 -sleep 3 -echo "6506.14889316 <- expected amount RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym" - -# RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec KMD 38732.60997500 -./komodo-cli sendtoaddress RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec 38732.60997500 -sleep 3 -echo "38732.60997500 <- expected amount RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec" - -# RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK KMD 916.79536397 -./komodo-cli sendtoaddress RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK 916.79536397 -sleep 3 -echo "916.79536397 <- expected amount RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK" - -# RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb KMD 48415.76246875 -./komodo-cli sendtoaddress RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb 48415.76246875 -sleep 3 -echo "48415.76246875 <- expected amount RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb" - -# RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1 KMD 16542.25810519 -./komodo-cli sendtoaddress RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1 16542.25810519 -sleep 3 -echo "16542.25810519 <- expected amount RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1" - -# RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH KMD 2322923.09575692 -./komodo-cli sendtoaddress RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH 2322923.09575692 -sleep 3 -echo "2322923.09575692 <- expected amount RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH" - -# RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq KMD 28529.48507541, REVS 566.06461415 -# RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq KMD 28529.48507541 -./komodo-cli sendtoaddress RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq 28529.48507541 -sleep 3 -echo "28529.48507541 <- expected amount RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq" - -# RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 KMD 8637.01756743, REVS 171.30000000 -# RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 KMD 8637.01756743 -./komodo-cli sendtoaddress RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 8637.01756743 -sleep 3 -echo "8637.01756743 <- expected amount RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72" - -# RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf KMD 1212.26932063 -./komodo-cli sendtoaddress RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf 1212.26932063 -sleep 3 -echo "1212.26932063 <- expected amount RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf" - -# RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT KMD 32148.06627925 -./komodo-cli sendtoaddress RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT 32148.06627925 -sleep 3 -echo "32148.06627925 <- expected amount RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT" - -# RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB KMD 1924.55258644 -./komodo-cli sendtoaddress RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB 1924.55258644 -sleep 3 -echo "1924.55258644 <- expected amount RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB" - -# RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ KMD 44542.50147125 -./komodo-cli sendtoaddress RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ 44542.50147125 -sleep 3 -echo "44542.50147125 <- expected amount RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ" - -# RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN KMD 49199.88128813 -./komodo-cli sendtoaddress RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN 49199.88128813 -sleep 3 -echo "49199.88128813 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN" - -# RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es KMD 30170.24616125 -./komodo-cli sendtoaddress RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es 30170.24616125 -sleep 3 -echo "30170.24616125 <- expected amount RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es" - - -# total KMD 3766464.62433496 REVS 0.00000000 diff --git a/src/KMD.batch3.utxo b/src/KMD.batch3.utxo deleted file mode 100644 index f6958cb7a..000000000 --- a/src/KMD.batch3.utxo +++ /dev/null @@ -1,94 +0,0 @@ -[{"txid":"8f7d4648657dd7f8aa70d8e83539ae0592cbfafc6a961fe75d7f7f613b4d5737","vout":1,"address":"RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg","account":"RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg","scriptPubKey":"76a914bce62f65cb5f01e0f4c63fc3500d524aa599842e88ac","amount":5669.98491054,"interest":0,"confirmations":5,"spendable":false}] -5669.98491054 <- expected amount RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg -[{"txid":"0f5681bbc1441e39cd3226847e3863489bc3ffe6b00c161e453a897b6a4e1268","vout":1,"address":"RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek","account":"RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek","scriptPubKey":"76a914f4c98e0c09a9f1383baff8ce0480680987598fb588ac","amount":8353.36815152,"interest":0,"confirmations":5,"spendable":false}] -8353.36815152 <- expected amount RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek -[{"txid":"34cfb92756c33c9fc2b0f1126884044711a83a6deb05c8b38cc744b7a87f34f5","vout":1,"address":"RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z","account":"RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z","scriptPubKey":"76a9146cc01b01968437e4ee0929cd0ef1fab0a281fd7588ac","amount":9683.15249375,"interest":0,"confirmations":5,"spendable":false}] -9683.15249375 <- expected amount RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z -[{"txid":"cad96a82897ec8d240bb410a1c1b54922444d7bc6383ef31ae153646d4cb0837","vout":1,"address":"RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W","account":"RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W","scriptPubKey":"76a9147ed5f815cc22ca78fee2667281ca7e5ba14ce1e188ac","amount":43088.74729573,"interest":0,"confirmations":5,"spendable":false}] -43088.74729573 <- expected amount RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W -[{"txid":"ccef457f43908a2f18c86c3c1431a9b3857263413a756ca46117655fae2acec3","vout":1,"address":"RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct","account":"RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct","scriptPubKey":"76a914aeb33755d5b9797988f0ab88e00765521e10bf4388ac","amount":50806.03038250,"interest":0,"confirmations":5,"spendable":false}] -50806.03038250 <- expected amount RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct -[{"txid":"216f60dff778c0701def1ea8eb582959591369c7a67864bf2ef20ca99178138b","vout":1,"address":"RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ","account":"RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ","scriptPubKey":"76a91432004b7f51c97bf9f8de8dfb65a6403f3e7afc4e88ac","amount":2015.79933830,"interest":0,"confirmations":5,"spendable":false}] -2015.79933830 <- expected amount RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ -[{"txid":"96e0916f1598824cfa1e2a590a0dc683be93c6fa8dbffb6153b341906de84398","vout":1,"address":"RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf","account":"RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf","scriptPubKey":"76a91415cfa7431eb88b3caf584f9d3ba0d95672ac8d9588ac","amount":48415.76246875,"interest":0,"confirmations":5,"spendable":false}] -48415.76246875 <- expected amount RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf -[{"txid":"e0b44fb9e74984823a307c82b70ddb7a173976fa43aec61440d9cd53654a8e93","vout":1,"address":"RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ","account":"RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ","scriptPubKey":"76a914ea4036a775293e12177fc8da78018cd96efceee588ac","amount":7885.04483652,"interest":0,"confirmations":5,"spendable":false}] -7885.04483652 <- expected amount RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ -[{"txid":"6bff9d66cafe0f249de24a6be6312f75ea97cce10c40bd2ffd4a785758787782","vout":1,"address":"RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb","account":"RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb","scriptPubKey":"76a914dd8b088a2f59c370cc1c76f1d301b30ddaacd87988ac","amount":2076.57141858,"interest":0,"confirmations":5,"spendable":false}] -2076.57141858 <- expected amount RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb -[{"txid":"d4c509d86d3ddeb3be1ea733e2c79c816c0639f3ba1738d1f50140915292949e","vout":1,"address":"RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW","account":"RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW","scriptPubKey":"76a914fa254e0f7b117ba261287a1fbdbaff863f6c0def88ac","amount":55892.82951156,"interest":0,"confirmations":5,"spendable":false}] -55892.82951156 <- expected amount RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW -[{"txid":"615c5efe7cbddd2e07d2282d215f307cbdc7e102ce4e3c1e134b96086736e459","vout":1,"address":"RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW","account":"RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW","scriptPubKey":"76a91498618b98162f7da185026e19bbb809eaafcae73e88ac","amount":110983.78643539,"interest":0,"confirmations":5,"spendable":false}] -110983.78643539 <- expected amount RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW -[{"txid":"1baad4f5d826832d13b0ddc7379b7235a38caa42b5098f273811109b974a6dbf","vout":1,"address":"RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z","account":"RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z","scriptPubKey":"76a914a1d1ed4034395692262717011245ef6ca4656bff88ac","amount":135104.07865436,"interest":0,"confirmations":5,"spendable":false}] -135104.07865436 <- expected amount RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z -[{"txid":"c70b43c915aac7f917026d6229f5a7ce15184de37ed5f8aa4756d8416a3cde70","vout":1,"address":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","account":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","scriptPubKey":"76a91433dab4ba613013fc625b8a8f13dfa24ac871a57788ac","amount":8376.94442691,"interest":0,"confirmations":5,"spendable":false}, {"txid":"6adda35ccf807130e1e184ec3be431cbca497891cfdaf2413b8f0758cb77a882","vout":1,"address":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","account":"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3","scriptPubKey":"76a91433dab4ba613013fc625b8a8f13dfa24ac871a57788ac","amount":57862.44847739,"interest":22.96128907,"confirmations":4057,"spendable":false}] -8376.94442691 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 -[] -47849.00411034 <- expected amount RHSA9ocZc77tHiFvVQ2h26AJQFsionWAXK -[{"txid":"4b08e4b3ea8608e97d8ccdd30c4785f03c443002127269c1936134c9f2cc717d","vout":1,"address":"RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY","account":"RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY","scriptPubKey":"76a914b8c8de1b8beca01347543b52bd6314323a9c468388ac","amount":15163.82967582,"interest":0,"confirmations":4,"spendable":false}] -15163.82967582 <- expected amount RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY -[{"txid":"d2c320a2fafa054cd166b331937fd5fe005f07ec02f9fd5977ca466ed663d0eb","vout":1,"address":"RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc","account":"RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc","scriptPubKey":"76a9147d7e3a1a75ab78d63ec73d979ab8ca24ff2d5c7a88ac","amount":3002.22564175,"interest":0,"confirmations":4,"spendable":false}] -3002.22564175 <- expected amount RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc -[{"txid":"cf93b70a0ff58ec115c03e0a395a5b413610437f40bd496707ae426df1a46aa8","vout":1,"address":"RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH","account":"RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH","scriptPubKey":"76a91487ad14d2d8541588ad37d918c05d0bdf3fcc407c88ac","amount":14101.70011189,"interest":0,"confirmations":4,"spendable":false}] -14101.70011189 <- expected amount RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH -[{"txid":"6be9eb9a87781ebcbd633946c891b98499001d38c934e827371a7b79d57b0de0","vout":1,"address":"RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf","account":"RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf","scriptPubKey":"76a914cfaaaa3947506b277a17144094d7c4e6f897ab7188ac","amount":5832.55634776,"interest":0,"confirmations":4,"spendable":false}] -5832.55634776 <- expected amount RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf -[{"txid":"e63deddaf983e5cf537f34b9777a65f001f4dda5bb86dc8b1c8f5d0ead105435","vout":1,"address":"RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ","account":"RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ","scriptPubKey":"76a91486f9eac811c22a9a788fd04492410b3c8a92312588ac","amount":890.85002942,"interest":0,"confirmations":4,"spendable":false}] -890.85002942 <- expected amount RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ -[{"txid":"f382d7ec4a9f9cf4283776449521e6c2c73a44863f119a6fa3ddd319c042f08c","vout":1,"address":"RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK","account":"RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK","scriptPubKey":"76a9148af8c680a740a56a5b2d33ab4cef75ee373514cb88ac","amount":335.54240549,"interest":0,"confirmations":4,"spendable":false}] -335.54240549 <- expected amount RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK -[{"txid":"f04aaada09059b8df995cf29c7f6d0c7ca20ed7e70d698bd21df1e61c70d2cca","vout":1,"address":"RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds","account":"RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds","scriptPubKey":"76a914df028b470266daed9d80b585bcfc49799e65d69288ac","amount":19366.30498750,"interest":0,"confirmations":4,"spendable":false}] -19366.30498750 <- expected amount RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds -[{"txid":"8496fcbe66360a2753f1795dc4b0bb1a93fa121de4b521410e046611bc04f2e5","vout":1,"address":"RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh","account":"RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh","scriptPubKey":"76a914926c0b7176412519172564ff1ad129575c55560d88ac","amount":163589.49612623,"interest":0,"confirmations":4,"spendable":false}] -163589.49612623 <- expected amount RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh -[{"txid":"9b3e499b36112979a084534143826776699b2a5def69e656d7aa7dc98a381501","vout":1,"address":"RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus","account":"RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus","scriptPubKey":"76a91413037180179f82080f6aaadaeef8d9292462613988ac","amount":3873.26099750,"interest":0,"confirmations":4,"spendable":false}] -3873.26099750 <- expected amount RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus -[{"txid":"17e55956fe10117b7e65a272fed473efa2dd387ab794932eebb9924e434719f0","vout":1,"address":"RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg","account":"RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg","scriptPubKey":"76a914456ce1134c5d03c560d89e8e3b7793c2aa72de2888ac","amount":7746.52199500,"interest":0,"confirmations":4,"spendable":false}] -7746.52199500 <- expected amount RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg -[{"txid":"4499caf8325016189dc4cbaf102d3c5a358105c135defd90afbc000fbed92795","vout":1,"address":"RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac","account":"RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac","scriptPubKey":"76a91462125d512b346307062b4765c7a31c97a2e5009b88ac","amount":16670.51967129,"interest":0,"confirmations":4,"spendable":false}] -16670.51967129 <- expected amount RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac -[{"txid":"41d0583c6f0720b27976f717d729c7445e10264b0663af6baa43e2ad0fe5fff0","vout":1,"address":"RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK","account":"RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK","scriptPubKey":"76a91475743379e40aef621dd016895b2b6ac6fc0f249e88ac","amount":7746.52199500,"interest":0,"confirmations":4,"spendable":false}] -7746.52199500 <- expected amount RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK -[{"txid":"eb979d5a6d79b6e0466fc3dbdd2a2f73812fb5788bfcad2b160da1e1b96828c5","vout":1,"address":"RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem","account":"RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem","scriptPubKey":"76a914739ba81d02c31e35940325047864f6cdd03949ae88ac","amount":74455.81274009,"interest":0,"confirmations":4,"spendable":false}] -74455.81274009 <- expected amount RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem -[{"txid":"2ec16b1596c2daa8d14642478d0ad6e6fa5d143980794f1c717c4e7ba2765749","vout":1,"address":"RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc","account":"RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc","scriptPubKey":"76a914f3eff889cfe08d87c71c28e3af5ff038a26c6cda88ac","amount":98858.55994787,"interest":0,"confirmations":4,"spendable":false}] -98858.55994787 <- expected amount RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc -[{"txid":"4d59bf3a6dcd11242c3a7c20402c38e41fb8f936d63e0c5b3f6490248fd989ed","vout":1,"address":"RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9","account":"RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9","scriptPubKey":"76a914d2aa464906f8b040486709d266b6ae2d5d6cae4b88ac","amount":5226.14889591,"interest":0,"confirmations":4,"spendable":false}] -5226.14889591 <- expected amount RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 -[{"txid":"505e5b9d3e9ac0ee9a435e7fdb9819b53fd1169fceb9c6e4b3b2173031beac16","vout":1,"address":"RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK","account":"RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK","scriptPubKey":"76a9141ca57ce3280d8ee671d16fd5258dfdc0cab1e4b288ac","amount":753.34926401,"interest":0,"confirmations":4,"spendable":false}] -753.34926401 <- expected amount RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK -[{"txid":"b2243873085e98d346e3f2341a203c3644f1fb78fe60294f5838eff96f2121dd","vout":1,"address":"RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK","account":"RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK","scriptPubKey":"76a9144c8b1ec101418919761e57a213a0f036d4a1cc8588ac","amount":159251.95713851,"interest":0,"confirmations":4,"spendable":false}] -159251.95713851 <- expected amount RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK -[{"txid":"75740f609901350eebc9493aff3dcfb070e107b493a2b51aa1acccfb9dedd88c","vout":1,"address":"RAaszCNodXXu9rJL6qqVMZDykXncDecTMS","account":"RAaszCNodXXu9rJL6qqVMZDykXncDecTMS","scriptPubKey":"76a9140e5082ca36cc024a4dca642c987ac4dd5947800988ac","amount":693.08132289,"interest":0,"confirmations":4,"spendable":false}] -693.08132289 <- expected amount RAaszCNodXXu9rJL6qqVMZDykXncDecTMS -[{"txid":"9beeaaa5dd83e3967f35d60073f88a320276e7a3aa61a4a06b7f8b46079fa4b4","vout":1,"address":"RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5","account":"RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5","scriptPubKey":"76a914c2906ee2992a7faf8071f21e1055fbdff2f0ec1888ac","amount":2304.59029350,"interest":0,"confirmations":4,"spendable":false}] -2304.59029350 <- expected amount RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5 -[{"txid":"b7508390ec18fc559112de1f5ddcd6f27c74f9a41415ae97c89b01c6718afc64","vout":1,"address":"RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym","account":"RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym","scriptPubKey":"76a9144ded37191110ece533642022e4f111704a4b7e2388ac","amount":6506.14889316,"interest":0,"confirmations":4,"spendable":false}] -6506.14889316 <- expected amount RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym -[{"txid":"c6eb29abc0c447043f94cac4df49b3ce640d27be2730d18c7ba3f0fe7d21861b","vout":1,"address":"RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec","account":"RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec","scriptPubKey":"76a914180718a117d700a0a99a7c63f0fb813005707dc388ac","amount":38732.60997500,"interest":0,"confirmations":4,"spendable":false}] -38732.60997500 <- expected amount RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec -[{"txid":"bf0e8dff8de3ce4c07b7cc09703978d7db0dc7660f312186b4c3eff2a97fd638","vout":1,"address":"RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK","account":"RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK","scriptPubKey":"76a914dcc12b611414b821b9c621fff879526d068ec65d88ac","amount":916.79536397,"interest":0,"confirmations":4,"spendable":false}] -916.79536397 <- expected amount RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK -[{"txid":"186e0d779d5a6a644e7d972aecafe4fb1739059933a0e50ad9a82ced1c8974e4","vout":1,"address":"RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb","account":"RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb","scriptPubKey":"76a9145c89652575910848a90b06df692f8b5d9ce4d61f88ac","amount":48415.76246875,"interest":0,"confirmations":4,"spendable":false}] -48415.76246875 <- expected amount RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb -[{"txid":"37ed3649d5e2f83a0c4ee11748b076fffe8a2fb16650cad7fa39cbbe3ddc9246","vout":1,"address":"RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1","account":"RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1","scriptPubKey":"76a914bcf9681ca9cecff0e61db4a57848c03830dd45c888ac","amount":16542.25810519,"interest":0,"confirmations":4,"spendable":false}] -16542.25810519 <- expected amount RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1 -[{"txid":"2dc98a59906d57f9e57b3231d19749eb9979533d3a2c35ec5adb3cb91bfd7c7b","vout":1,"address":"RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH","account":"RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH","scriptPubKey":"76a91442a6c434f7384860d9b89e8e234115f76b8e820b88ac","amount":2322923.09575692,"interest":0,"confirmations":4,"spendable":false}] -2322923.09575692 <- expected amount RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH -[{"txid":"35a28b0551bbe3d3e5cfa989b5a073bea55784a9df162ebcafc61bffb8ff5834","vout":1,"address":"RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq","account":"RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq","scriptPubKey":"76a914a4429dd4986d23a69d0ec24ce3ad0bc87e6338f888ac","amount":28529.48507541,"interest":0,"confirmations":4,"spendable":false}] -28529.48507541 <- expected amount RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq -[{"txid":"3b3aabeb6483d8c37265d24ef76389f96158970485866de1005ba28d8069877b","vout":1,"address":"RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72","account":"RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72","scriptPubKey":"76a91430e6d27986cc9c167eb3349f2fa504ac3a834f2788ac","amount":8637.01756743,"interest":0,"confirmations":4,"spendable":false}] -8637.01756743 <- expected amount RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 -[{"txid":"adf2fd2eee75f5d9fdce44b4fe4d32f62d79f5e1b0362640c76eb109b1ceb30b","vout":1,"address":"RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf","account":"RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf","scriptPubKey":"76a914240f48f11c4b0674afa8b58dab11bdb780a3a47d88ac","amount":1212.14061568,"interest":0.20475348,"confirmations":1721,"spendable":false}, {"txid":"684728bb5ff281762990da11e7463c6e992b5e98cb0cc7965a3470b8a664484a","vout":1,"address":"RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf","account":"RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf","scriptPubKey":"76a914240f48f11c4b0674afa8b58dab11bdb780a3a47d88ac","amount":1212.26932063,"interest":0,"confirmations":4,"spendable":false}] -1212.26932063 <- expected amount RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf -[{"txid":"a021d23ab591ed687f7ba0bccbd98ecbb7d8d1f967176bb2f2e1e6fe1d83af34","vout":1,"address":"RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT","account":"RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT","scriptPubKey":"76a914152a5db1913e3d29ebc1e00039b4c6f2683285b788ac","amount":32148.06627925,"interest":0,"confirmations":4,"spendable":false}] -32148.06627925 <- expected amount RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT -[{"txid":"b9ab02076864711a964c149346141f01f686b50fd345e6eb5bc3f218b40c4c50","vout":1,"address":"RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB","account":"RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB","scriptPubKey":"76a914e03529e8e1369103276ee88e809ed790d5ebc52c88ac","amount":1924.55258644,"interest":0,"confirmations":4,"spendable":false}] -1924.55258644 <- expected amount RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB -[{"txid":"d5760b4049c8818f6486d1b81b0715f6971f88b0f49e8daab4382fe6980ddd85","vout":1,"address":"RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ","account":"RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ","scriptPubKey":"76a914ea79bacc39de430afa5fab1b389e1771e156919288ac","amount":44542.50147125,"interest":0,"confirmations":4,"spendable":false}] -44542.50147125 <- expected amount RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ -[{"txid":"c9bb31764aab4cd631fa733940c0b35470cad48d247ef227372cc84375cd8d8b","vout":1,"address":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","account":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","scriptPubKey":"76a914d749183b4beeae17edc5c89e7c9660ae592712ab88ac","amount":49199.88128813,"interest":0,"confirmations":4,"spendable":false}, {"txid":"585da7006a6572f1c0b7b909060349ad46910deab6915c5f7df48171bf1766d9","vout":1,"address":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","account":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","scriptPubKey":"76a914d749183b4beeae17edc5c89e7c9660ae592712ab88ac","amount":11760.26545254,"interest":4.66677200,"confirmations":4051,"spendable":false}, {"txid":"82fa5756cba3af6b06f1dde3080e3e1eaf67f7fe10b1242f038f9e6780819ff3","vout":1,"address":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","account":"RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN","scriptPubKey":"76a914d749183b4beeae17edc5c89e7c9660ae592712ab88ac","amount":139007.63452726,"interest":23.48101934,"confirmations":1722,"spendable":false}] -49199.88128813 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN -[{"txid":"08075d8b984266c27ed5f029b88b682596ace07cc43b2db50d4491dc810ced04","vout":1,"address":"RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es","account":"RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es","scriptPubKey":"76a914b1818a2b43514d215a43505933b79cd36a91214c88ac","amount":30170.24616125,"interest":0,"confirmations":4,"spendable":false}] -30170.24616125 <- expected amount RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es diff --git a/src/KMD.batch4 b/src/KMD.batch4 deleted file mode 100755 index b5c444cca..000000000 --- a/src/KMD.batch4 +++ /dev/null @@ -1,251 +0,0 @@ -sleep 999999 -# RKmeJpSRwBouZgkTXA1mre8EMNjQ7CawzH KMD 1999.45556678 -./komodo-cli sendtoaddress RKmeJpSRwBouZgkTXA1mre8EMNjQ7CawzH 1999.45556678 -sleep 3 -echo "1999.45556678 <- expected amount RKmeJpSRwBouZgkTXA1mre8EMNjQ7CawzH" - -# RChSVFn3Bi8kW2vRkohcaGw2QEzapdyjA7 KMD 15493.04399000 -./komodo-cli sendtoaddress RChSVFn3Bi8kW2vRkohcaGw2QEzapdyjA7 15493.04399000 -sleep 3 -echo "15493.04399000 <- expected amount RChSVFn3Bi8kW2vRkohcaGw2QEzapdyjA7" - -# RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB KMD 843.49707566, REVS 16.72927581 -# RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB KMD 843.49707566 -./komodo-cli sendtoaddress RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB 843.49707566 -sleep 3 -echo "843.49707566 <- expected amount RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB" - -# RLiYLy1TMui1iVGMhfks6Go1y1mopSkc7T KMD 9678.31091750 -./komodo-cli sendtoaddress RLiYLy1TMui1iVGMhfks6Go1y1mopSkc7T 9678.31091750 -sleep 3 -echo "9678.31091750 <- expected amount RLiYLy1TMui1iVGMhfks6Go1y1mopSkc7T" - -# RRLtUwtSG5oQUL6TPk5gtWPSFa4j1eBDxQ KMD 1219.26382940 -./komodo-cli sendtoaddress RRLtUwtSG5oQUL6TPk5gtWPSFa4j1eBDxQ 1219.26382940 -sleep 3 -echo "1219.26382940 <- expected amount RRLtUwtSG5oQUL6TPk5gtWPSFa4j1eBDxQ" - -# RVT4P7mbHcdRmRHBotapx2BsEC1MMcTCMC KMD 1841.49885836 -./komodo-cli sendtoaddress RVT4P7mbHcdRmRHBotapx2BsEC1MMcTCMC 1841.49885836 -sleep 3 -echo "1841.49885836 <- expected amount RVT4P7mbHcdRmRHBotapx2BsEC1MMcTCMC" - -# RNrQxuKtPSrJg6fcp665Q7j8A7WTDSbwjU KMD 681.69393556 -./komodo-cli sendtoaddress RNrQxuKtPSrJg6fcp665Q7j8A7WTDSbwjU 681.69393556 -sleep 3 -echo "681.69393556 <- expected amount RNrQxuKtPSrJg6fcp665Q7j8A7WTDSbwjU" - -# RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n KMD 3090.02793673, REVS 3.67077856 -# RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n KMD 3090.02793673 -./komodo-cli sendtoaddress RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n 3090.02793673 -sleep 3 -echo "3090.02793673 <- expected amount RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n" - -# RU2MYeg8uicVE28k6iiBXUxbxzeZwULwKi KMD 759.15915551 -./komodo-cli sendtoaddress RU2MYeg8uicVE28k6iiBXUxbxzeZwULwKi 759.15915551 -sleep 3 -echo "759.15915551 <- expected amount RU2MYeg8uicVE28k6iiBXUxbxzeZwULwKi" - -# RL5Mi7TdaXCWpQNtbs4zUBdHQEurPuRYh8 KMD 158029.04869800 -./komodo-cli sendtoaddress RL5Mi7TdaXCWpQNtbs4zUBdHQEurPuRYh8 158029.04869800 -sleep 3 -echo "158029.04869800 <- expected amount RL5Mi7TdaXCWpQNtbs4zUBdHQEurPuRYh8" - -# RGEkGiZQxqTZjsARMzu2exjPkFegXSGT9o KMD 2298.00667939 -./komodo-cli sendtoaddress RGEkGiZQxqTZjsARMzu2exjPkFegXSGT9o 2298.00667939 -sleep 3 -echo "2298.00667939 <- expected amount RGEkGiZQxqTZjsARMzu2exjPkFegXSGT9o" - -# RAYp48ZaMJGmaKCJxeMLzWQXajW7Hd2Yjr KMD 2788.74791820 -./komodo-cli sendtoaddress RAYp48ZaMJGmaKCJxeMLzWQXajW7Hd2Yjr 2788.74791820 -sleep 3 -echo "2788.74791820 <- expected amount RAYp48ZaMJGmaKCJxeMLzWQXajW7Hd2Yjr" - -# RAryshRkyDqKp3cgavp8CD77yS9A4U5jQz KMD 710.78619077 -./komodo-cli sendtoaddress RAryshRkyDqKp3cgavp8CD77yS9A4U5jQz 710.78619077 -sleep 3 -echo "710.78619077 <- expected amount RAryshRkyDqKp3cgavp8CD77yS9A4U5jQz" - -# RRbLh1gaRgxRXMRVwGvNw2yESgRyNzscnd KMD 1118.59777607 -./komodo-cli sendtoaddress RRbLh1gaRgxRXMRVwGvNw2yESgRyNzscnd 1118.59777607 -sleep 3 -echo "1118.59777607 <- expected amount RRbLh1gaRgxRXMRVwGvNw2yESgRyNzscnd" - -# RJtnDNrMY8pzcwwKyUvGLTjDot5jR74FRw KMD 8811.66876930 -./komodo-cli sendtoaddress RJtnDNrMY8pzcwwKyUvGLTjDot5jR74FRw 8811.66876930 -sleep 3 -echo "8811.66876930 <- expected amount RJtnDNrMY8pzcwwKyUvGLTjDot5jR74FRw" - -# RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk KMD 79613.96546024, REVS 1579.43521640 -# RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk KMD 79613.96546024 -./komodo-cli sendtoaddress RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk 79613.96546024 -sleep 3 -echo "79613.96546024 <- expected amount RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk" - -# RHvVq3gKrEhXkXJSfxEzweGXRBjRMX1HwR KMD 854.63736305 -./komodo-cli sendtoaddress RHvVq3gKrEhXkXJSfxEzweGXRBjRMX1HwR 854.63736305 -sleep 3 -echo "854.63736305 <- expected amount RHvVq3gKrEhXkXJSfxEzweGXRBjRMX1HwR" - -# RSqXWQNJTdiiP2L6Q8Pd6nzd3DyN7TzpNF KMD 87148.37244375 -./komodo-cli sendtoaddress RSqXWQNJTdiiP2L6Q8Pd6nzd3DyN7TzpNF 87148.37244375 -sleep 3 -echo "87148.37244375 <- expected amount RSqXWQNJTdiiP2L6Q8Pd6nzd3DyN7TzpNF" - -# RRRWieSx6e2ANSukRrFaRSyF2ikYiqTqbH KMD 96831.52493750 -./komodo-cli sendtoaddress RRRWieSx6e2ANSukRrFaRSyF2ikYiqTqbH 96831.52493750 -sleep 3 -echo "96831.52493750 <- expected amount RRRWieSx6e2ANSukRrFaRSyF2ikYiqTqbH" - -# RBhKUj4dmHDDd8Yhm8npoh9ii5V5ZUjtpu KMD 1935.66218350 -./komodo-cli sendtoaddress RBhKUj4dmHDDd8Yhm8npoh9ii5V5ZUjtpu 1935.66218350 -sleep 3 -echo "1935.66218350 <- expected amount RBhKUj4dmHDDd8Yhm8npoh9ii5V5ZUjtpu" - -# RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct KMD 50303.39904535 -./komodo-cli sendtoaddress RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct 50303.39904535 -sleep 3 -echo "50303.39904535 <- expected amount RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct" - -# RBopZSXfCKrvi6kELKu9Cn3TYDapxpVr8d KMD 106514.67743125 -./komodo-cli sendtoaddress RBopZSXfCKrvi6kELKu9Cn3TYDapxpVr8d 106514.67743125 -sleep 3 -echo "106514.67743125 <- expected amount RBopZSXfCKrvi6kELKu9Cn3TYDapxpVr8d" - -# RFEHFqHrwcwnTBzvYsuEttQ4rQQZw9qQsH KMD 1526.39979262 -./komodo-cli sendtoaddress RFEHFqHrwcwnTBzvYsuEttQ4rQQZw9qQsH 1526.39979262 -sleep 3 -echo "1526.39979262 <- expected amount RFEHFqHrwcwnTBzvYsuEttQ4rQQZw9qQsH" - -# RJzu13gJQjtS6aQdNEaQMrv7TSL4wQBien KMD 2130.29354862 -./komodo-cli sendtoaddress RJzu13gJQjtS6aQdNEaQMrv7TSL4wQBien 2130.29354862 -sleep 3 -echo "2130.29354862 <- expected amount RJzu13gJQjtS6aQdNEaQMrv7TSL4wQBien" - -# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 20106.39865075, REVS 0.09000000 -# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 20106.39865075 -./komodo-cli sendtoaddress RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut 20106.39865075 -sleep 3 -echo "20106.39865075 <- expected amount RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut" - -# RBcmNwoFVZ5kWZB8LMjgGbqvVmByD1DeTJ KMD 12526.83053462 -./komodo-cli sendtoaddress RBcmNwoFVZ5kWZB8LMjgGbqvVmByD1DeTJ 12526.83053462 -sleep 3 -echo "12526.83053462 <- expected amount RBcmNwoFVZ5kWZB8LMjgGbqvVmByD1DeTJ" - -# REwf8D6dyFevVSZc6wjTAwmTgntUM5KWGd KMD 273706.84143501 -./komodo-cli sendtoaddress REwf8D6dyFevVSZc6wjTAwmTgntUM5KWGd 273706.84143501 -sleep 3 -echo "273706.84143501 <- expected amount REwf8D6dyFevVSZc6wjTAwmTgntUM5KWGd" - -# RJQNje5EiBV2C7f28YLcm9LEm8AvrSFtVc KMD 3880.03920424 -./komodo-cli sendtoaddress RJQNje5EiBV2C7f28YLcm9LEm8AvrSFtVc 3880.03920424 -sleep 3 -echo "3880.03920424 <- expected amount RJQNje5EiBV2C7f28YLcm9LEm8AvrSFtVc" - -# RBFuL5swKoyZnLUTVEPjsuwh7pvP5sAz7P KMD 116.48367000 -./komodo-cli sendtoaddress RBFuL5swKoyZnLUTVEPjsuwh7pvP5sAz7P 116.48367000 -sleep 3 -echo "116.48367000 <- expected amount RBFuL5swKoyZnLUTVEPjsuwh7pvP5sAz7P" - -# RJA8Qe3xtpSjXEXeBa8F54fW9HU3ETHCXd KMD 4646.98361435 -./komodo-cli sendtoaddress RJA8Qe3xtpSjXEXeBa8F54fW9HU3ETHCXd 4646.98361435 -sleep 3 -echo "4646.98361435 <- expected amount RJA8Qe3xtpSjXEXeBa8F54fW9HU3ETHCXd" - -# RFVp94ZGAAbFhKZG9BwuCBwEjDG9gCpY1g KMD 4893.17953483 -./komodo-cli sendtoaddress RFVp94ZGAAbFhKZG9BwuCBwEjDG9gCpY1g 4893.17953483 -sleep 3 -echo "4893.17953483 <- expected amount RFVp94ZGAAbFhKZG9BwuCBwEjDG9gCpY1g" - -# RJcBCXAPp8VYuv87Xz9mNuNCBGJmYCKDFw KMD 13750.07654112 -./komodo-cli sendtoaddress RJcBCXAPp8VYuv87Xz9mNuNCBGJmYCKDFw 13750.07654112 -sleep 3 -echo "13750.07654112 <- expected amount RJcBCXAPp8VYuv87Xz9mNuNCBGJmYCKDFw" - -# RKhFZqq9ErJBMH36bSA3sgDfd51nAMdRck KMD 6399.50717276 -./komodo-cli sendtoaddress RKhFZqq9ErJBMH36bSA3sgDfd51nAMdRck 6399.50717276 -sleep 3 -echo "6399.50717276 <- expected amount RKhFZqq9ErJBMH36bSA3sgDfd51nAMdRck" - -# RDEbPLoUKK5sbRmJyhouhk3kx2MzTKt6d4 KMD 740.16851028 -./komodo-cli sendtoaddress RDEbPLoUKK5sbRmJyhouhk3kx2MzTKt6d4 740.16851028 -sleep 3 -echo "740.16851028 <- expected amount RDEbPLoUKK5sbRmJyhouhk3kx2MzTKt6d4" - -# RAaszCNodXXu9rJL6qqVMZDykXncDecTMS KMD 693.08132289 -./komodo-cli sendtoaddress RAaszCNodXXu9rJL6qqVMZDykXncDecTMS 693.08132289 -sleep 3 -echo "693.08132289 <- expected amount RAaszCNodXXu9rJL6qqVMZDykXncDecTMS" - -# RHhBfhEDW88fopZfCasn6omtFr7QKa4wSk KMD 41443.89267324 -./komodo-cli sendtoaddress RHhBfhEDW88fopZfCasn6omtFr7QKa4wSk 41443.89267324 -sleep 3 -echo "41443.89267324 <- expected amount RHhBfhEDW88fopZfCasn6omtFr7QKa4wSk" - -# RMg5XaC6Lsj3YT2FtCtSDCAa5i715NYxrf KMD 16344.19309420 -./komodo-cli sendtoaddress RMg5XaC6Lsj3YT2FtCtSDCAa5i715NYxrf 16344.19309420 -sleep 3 -echo "16344.19309420 <- expected amount RMg5XaC6Lsj3YT2FtCtSDCAa5i715NYxrf" - -# RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw KMD 867960.91662544, REVS 11685.48356181 -# RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw KMD 867960.91662544 -./komodo-cli sendtoaddress RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw 867960.91662544 -sleep 3 -echo "867960.91662544 <- expected amount RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw" - -# RVZEqmLd5e8FBfF9Y6uaKL5hEbdKSaRyCY KMD 1086.09863742 -./komodo-cli sendtoaddress RVZEqmLd5e8FBfF9Y6uaKL5hEbdKSaRyCY 1086.09863742 -sleep 3 -echo "1086.09863742 <- expected amount RVZEqmLd5e8FBfF9Y6uaKL5hEbdKSaRyCY" - -# RMHJhEJau3JWyvsuWSm7MnzxqY4QgEXXQm KMD 4319.91306129 -./komodo-cli sendtoaddress RMHJhEJau3JWyvsuWSm7MnzxqY4QgEXXQm 4319.91306129 -sleep 3 -echo "4319.91306129 <- expected amount RMHJhEJau3JWyvsuWSm7MnzxqY4QgEXXQm" - -# RHfwxdGyRKD1P9ZAY3wPRNErGjuokg5hgi KMD 38732.60997500 -./komodo-cli sendtoaddress RHfwxdGyRKD1P9ZAY3wPRNErGjuokg5hgi 38732.60997500 -sleep 3 -echo "38732.60997500 <- expected amount RHfwxdGyRKD1P9ZAY3wPRNErGjuokg5hgi" - -# RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj KMD 19695.58704144, REVS 390.89494454 -# RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj KMD 19695.58704144 -./komodo-cli sendtoaddress RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj 19695.58704144 -sleep 3 -echo "19695.58704144 <- expected amount RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj" - -# RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo KMD 2981.62619009, REVS 30.35300490 -# RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo KMD 2981.62619009 -./komodo-cli sendtoaddress RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo 2981.62619009 -sleep 3 -echo "2981.62619009 <- expected amount RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo" - -# RXTuSxW7zs1enAXAq3xSaimTR4NYUTQL6Q KMD 968.31524937 -./komodo-cli sendtoaddress RXTuSxW7zs1enAXAq3xSaimTR4NYUTQL6Q 968.31524937 -sleep 3 -echo "968.31524937 <- expected amount RXTuSxW7zs1enAXAq3xSaimTR4NYUTQL6Q" - -# RNg2LQHqauerqtv6yCVXVLug2VFAqc7JaG KMD 3205.27840587 -./komodo-cli sendtoaddress RNg2LQHqauerqtv6yCVXVLug2VFAqc7JaG 3205.27840587 -sleep 3 -echo "3205.27840587 <- expected amount RNg2LQHqauerqtv6yCVXVLug2VFAqc7JaG" - -# RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX KMD 40914.30625015, REVS 476.17156540 -# RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX KMD 40914.30625015 -./komodo-cli sendtoaddress RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX 40914.30625015 -sleep 3 -echo "40914.30625015 <- expected amount RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX" - -# RPUoGZEYGV32m6sU1qYr375mgELoMxVEJu KMD 48415.76246875 -./komodo-cli sendtoaddress RPUoGZEYGV32m6sU1qYr375mgELoMxVEJu 48415.76246875 -sleep 3 -echo "48415.76246875 <- expected amount RPUoGZEYGV32m6sU1qYr375mgELoMxVEJu" - -# RGH3G91bdgu1WrmiN4aBNREpm8EZwddmvw KMD 1363.38787112 -./komodo-cli sendtoaddress RGH3G91bdgu1WrmiN4aBNREpm8EZwddmvw 1363.38787112 -sleep 3 -echo "1363.38787112 <- expected amount RGH3G91bdgu1WrmiN4aBNREpm8EZwddmvw" - - -# total KMD 2065113.21723734 REVS 0.00000000 diff --git a/src/KMD.batch4.txids b/src/KMD.batch4.txids deleted file mode 100644 index cc366c1d0..000000000 --- a/src/KMD.batch4.txids +++ /dev/null @@ -1,97 +0,0 @@ -root@devbox2:~/komodo/src# ./KMD.batch4 -6fad08580a1077f3eefa28fcb30e25c81cfe853b48fa1c4dd180f9844e6ec318 -1999.45556678 <- expected amount RKmeJpSRwBouZgkTXA1mre8EMNjQ7CawzH -4b4965c30015f501b5566ed5635e38ae964aaba8c99af6f56e496111d434d71c -15493.04399000 <- expected amount RChSVFn3Bi8kW2vRkohcaGw2QEzapdyjA7 -735d7f914eb9777fd7c9c44883c876baa53bb58e36a7d89760909ce1e92a706d -843.49707566 <- expected amount RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB -8f4ea67ce7366804fe211f4c11a40bd364f8a6774e99c7d814f3778abf582dfa -9678.31091750 <- expected amount RLiYLy1TMui1iVGMhfks6Go1y1mopSkc7T -35aefffe9854b64ede72955ea546f84de618d5ab67426599e7a92e203a53b0c8 -1219.26382940 <- expected amount RRLtUwtSG5oQUL6TPk5gtWPSFa4j1eBDxQ -77c71b6be1be68661be35b4c41ec43f8e79fa723caf5c4e7c86b9369ee2ebecf -1841.49885836 <- expected amount RVT4P7mbHcdRmRHBotapx2BsEC1MMcTCMC -9d0e39eb0a11d33544e17c607ad1aebcfdba06d214f99bb83464e92ad8cd3eba -681.69393556 <- expected amount RNrQxuKtPSrJg6fcp665Q7j8A7WTDSbwjU -7041e1cc57a518eac2da5381ba3eaf7d5703f2dde1076a5217727aafd58c57e6 -3090.02793673 <- expected amount RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n -aa667173c69495f01b1e065596978f365580ed0303f4daa43dd3efc11345acb4 -759.15915551 <- expected amount RU2MYeg8uicVE28k6iiBXUxbxzeZwULwKi -83ed733e584b29b82ab59aa314dd4692a3e26ee612c209fb83fb3c8ac1832776 -158029.04869800 <- expected amount RL5Mi7TdaXCWpQNtbs4zUBdHQEurPuRYh8 -f7f5190e2f1e33c1c6c3eab6f8ddfaeee289b839f57568f1c690c1ec8a6d59cd -2298.00667939 <- expected amount RGEkGiZQxqTZjsARMzu2exjPkFegXSGT9o -af503537b2d1f590ee60cd7fd4bd20428a5e13c69ce70a4debfb4d4cb4c12bda -2788.74791820 <- expected amount RAYp48ZaMJGmaKCJxeMLzWQXajW7Hd2Yjr -1f9b726760e70c55e0a56b14decda061ee6794951f0515bce5cfeeb52757ed8d -710.78619077 <- expected amount RAryshRkyDqKp3cgavp8CD77yS9A4U5jQz -38a982374bffb59fb7b10cbdd097e9b28b274b8dd54fb1dae396144d8c879e92 -1118.59777607 <- expected amount RRbLh1gaRgxRXMRVwGvNw2yESgRyNzscnd -089bd0a9dd2b712554791a4f575f62f2abda25031382795af1dd5a3f920f4e32 -8811.66876930 <- expected amount RJtnDNrMY8pzcwwKyUvGLTjDot5jR74FRw -8346c1963fd4a5e70d61163bbe44868c12f42fec8c88597a412e960f500d50d9 -79613.96546024 <- expected amount RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk -83f24e4276e6aefce21000c4d444cd0d909f25da717862cb87ed28ef9ffb37c1 -854.63736305 <- expected amount RHvVq3gKrEhXkXJSfxEzweGXRBjRMX1HwR -4dc40c9aeffb9f0732614ebbdde8787e4945b0b017cbc858bdddba195cffdb63 -87148.37244375 <- expected amount RSqXWQNJTdiiP2L6Q8Pd6nzd3DyN7TzpNF -d2de8684bf2cb239f379a0be089c21dda90fc11ac8745275618c08189c3c9bc6 -96831.52493750 <- expected amount RRRWieSx6e2ANSukRrFaRSyF2ikYiqTqbH -f86fbac5375a85a8c2d8651673c339772d98e069a481e2c2e291ed2c06e69b41 -1935.66218350 <- expected amount RBhKUj4dmHDDd8Yhm8npoh9ii5V5ZUjtpu -eb6734a2f9ff4b8297fa91867286264cf8998e33d11474773bfd3fe5e0278d0b -50303.39904535 <- expected amount RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct -0e32fb1cb0887c98da24c5e5ed425f52f542de0c3ee73e73ca3d4416033654a4 -106514.67743125 <- expected amount RBopZSXfCKrvi6kELKu9Cn3TYDapxpVr8d -744aaa9d311c1edbd8f358dd4023a7cc030ad43482a6d5c5c8d53dc42deb7250 -1526.39979262 <- expected amount RFEHFqHrwcwnTBzvYsuEttQ4rQQZw9qQsH -d68213f76d7e6809bcaf0a1c522220ff9457aa9747182396deacb85330c717b3 -2130.29354862 <- expected amount RJzu13gJQjtS6aQdNEaQMrv7TSL4wQBien -acd786f5b7bab14737a25d0ac2eb0e1a61743899f83571a694191a5317cc3c67 -20106.39865075 <- expected amount RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut -0a6832c3878dc82afe539a3a54f56b1a6d02fc21f0b03ca78d48124d3634ded1 -12526.83053462 <- expected amount RBcmNwoFVZ5kWZB8LMjgGbqvVmByD1DeTJ -3872f0a52c4e6c84a0041a09725874517adb3908d48037dce1811197640956d2 -273706.84143501 <- expected amount REwf8D6dyFevVSZc6wjTAwmTgntUM5KWGd -2048f44673413d3a3c36c3f38df77bd1453bc9dd2a93edbaa35ae9c99dd64ee7 -3880.03920424 <- expected amount RJQNje5EiBV2C7f28YLcm9LEm8AvrSFtVc -4698dd7471c0e12421ea777216b66a112c9e1817761e0d801f9e4845c258a3cb -116.48367000 <- expected amount RBFuL5swKoyZnLUTVEPjsuwh7pvP5sAz7P -cc32e43ba80e3895630f99a5b0a8e7183ce74c4aa2a93af8baa76a1d2cc1c15c -4646.98361435 <- expected amount RJA8Qe3xtpSjXEXeBa8F54fW9HU3ETHCXd -4c465385ef27929c1077d4b37a205bec302bea710574453b42792f3c6bc7df7d -4893.17953483 <- expected amount RFVp94ZGAAbFhKZG9BwuCBwEjDG9gCpY1g -8f282eab9df0a277c2b786bfd2f02db951131ecb7423a93c46a323dda8b85ea4 -13750.07654112 <- expected amount RJcBCXAPp8VYuv87Xz9mNuNCBGJmYCKDFw -543851d36fb88fd8c046211dd6e73ea75a8006b7e195812bbacb14a00ab3b266 -6399.50717276 <- expected amount RKhFZqq9ErJBMH36bSA3sgDfd51nAMdRck -7632267444ae27246e0fe876d272b8876b96ec47d2d578e02330cb766793ae0e -740.16851028 <- expected amount RDEbPLoUKK5sbRmJyhouhk3kx2MzTKt6d4 -516cf5887eaa2e024881b27b71a767090e168dea7dfccbbe6cf6bd86741bf200 -693.08132289 <- expected amount RAaszCNodXXu9rJL6qqVMZDykXncDecTMS -23a7f95e28ec90550f5e73fa509e3a7f614801dffe4e1e29aa02c2492c9e6302 -41443.89267324 <- expected amount RHhBfhEDW88fopZfCasn6omtFr7QKa4wSk -cbca63c95d6e016ab816de044d9ef295f630468d1596bb66f3e0dbbfec879168 -16344.19309420 <- expected amount RMg5XaC6Lsj3YT2FtCtSDCAa5i715NYxrf -1dd5519298d6689602e56541dc3dd96a7f6a237b1ebaa67b247fa9ee3f9739b5 -867960.91662544 <- expected amount RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw -065a059be54fe184bfc9d43d7dd5bc6b71d300c7796ca45e70acbb99634ef2e2 -1086.09863742 <- expected amount RVZEqmLd5e8FBfF9Y6uaKL5hEbdKSaRyCY -4d0498e9b38daa2705b35555d95b5cc5addcf8b9915c38f01e7422bb3c1474a5 -4319.91306129 <- expected amount RMHJhEJau3JWyvsuWSm7MnzxqY4QgEXXQm -fb58e59e86673c017a32717d7ff933dd5ebf6275b91bbde46c7ecd9242e2b01a -38732.60997500 <- expected amount RHfwxdGyRKD1P9ZAY3wPRNErGjuokg5hgi -11cb10a33a2a7f028220460a4752c8684a465d1038913f0e31c7e110997c4d37 -19695.58704144 <- expected amount RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj -d785685b205ffd0ab13cf4660be5262b7727228dd3f6e1b8f1bea8b97f800ee0 -2981.62619009 <- expected amount RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo -78cac40448f57823dddbaed6f69eaaa2d7b6cf407d8c5fa90b186fdab7c1d9b8 -968.31524937 <- expected amount RXTuSxW7zs1enAXAq3xSaimTR4NYUTQL6Q -48cae9a4889082a43ea0ee8e481b89a4b35e544070827736336cc860f59b7954 -3205.27840587 <- expected amount RNg2LQHqauerqtv6yCVXVLug2VFAqc7JaG -ba761c5bcab251499de8af6ebca8dd6f71e4697b69ad38a63ac6ed3f51e20705 -40914.30625015 <- expected amount RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX -4540c58133dbc87880e91bb961cb59531778eefeb3de8c1550e3245e973e032b -48415.76246875 <- expected amount RPUoGZEYGV32m6sU1qYr375mgELoMxVEJu -77aee8dc84ddfc55aae94eab7eef3af07adf80079361a9c865424fe913a9f7f2 -1363.38787112 <- expected amount RGH3G91bdgu1WrmiN4aBNREpm8EZwddmvw From 719a8d6f20d0682052fdb8b78236202dda64a0a1 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 23 Oct 2019 06:54:45 -0700 Subject: [PATCH 063/339] More logging for dns seed stuff --- src/net.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/net.cpp b/src/net.cpp index f2e240617..943527f3a 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1319,6 +1319,9 @@ void ThreadDNSAddressSeed() { vAdd.push_back(addr); found++; + LogPrintf("%s: Added node via DNS seed: %s:%d", __FUNCTION__, ip.c_str(), ASSETCHAINS_P2PPORT); + } else { + LogPrintf("%s: Node has incorrect port %s:%d", __FUNCTION__, ip.c_str(), addr.GetPort() ); } } } From e6d09b3defd1f367594942a241908ce19015e3c5 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 23 Oct 2019 07:42:56 -0700 Subject: [PATCH 064/339] Make compiler happy --- src/net.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net.cpp b/src/net.cpp index 943527f3a..efb69bfe9 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1319,9 +1319,9 @@ void ThreadDNSAddressSeed() { vAdd.push_back(addr); found++; - LogPrintf("%s: Added node via DNS seed: %s:%d", __FUNCTION__, ip.c_str(), ASSETCHAINS_P2PPORT); + LogPrintf("%s: Added node via DNS seed: %s:%d", __FUNCTION__, ip.ToString(), ASSETCHAINS_P2PPORT); } else { - LogPrintf("%s: Node has incorrect port %s:%d", __FUNCTION__, ip.c_str(), addr.GetPort() ); + LogPrintf("%s: Node has incorrect port %s:%d", __FUNCTION__, ip.ToString(), addr.GetPort() ); } } } From 3a7db19af45b4acb4ec99cc3d198024dfbd90fa8 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 24 Oct 2019 16:39:43 -0700 Subject: [PATCH 065/339] Add some debug prints --- src/init.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/init.cpp b/src/init.cpp index 88d8f0f51..5257040a6 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1998,6 +1998,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) CValidationState state; if ( !ActivateBestChain(true,state)) strErrors << "Failed to connect best block"; + } else { + fprintf(stderr,"KOMODO_REWIND < 0\n"); } std::vector vImportFiles; if (mapArgs.count("-loadblock")) @@ -2014,6 +2016,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // ********************************************************* Step 11: start node + fprintf(stderr,"Checking disk space...\n"); if (!CheckDiskSpace()) return false; @@ -2038,6 +2041,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (GetBoolArg("-listenonion", DEFAULT_LISTEN_ONION)) StartTorControl(threadGroup, scheduler); + fprintf(stderr,"Starting txnotify thread\n"); StartNode(threadGroup, scheduler); #ifdef ENABLE_MINING @@ -2055,7 +2059,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // ********************************************************* Step 11: finished SetRPCWarmupFinished(); - uiInterface.InitMessage(_("Done loading")); + fprintf(stderr,"RPC warmump finished\n"); + uiInterface.InitMessage(_("Done loading!")); #ifdef ENABLE_WALLET if (pwalletMain) { From b00cda1c09b03cb1fe74a8bb1baad75c998cefd8 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 25 Oct 2019 10:17:30 -0400 Subject: [PATCH 066/339] Fix lots of little things that were undone by migrating Hush to KMD source code --- doc/dnsseed-policy.md | 6 +++--- src/bitcoin-tx-res.rc | 10 +++++----- src/bitcoind.cpp | 36 +++++++++++++++++++++++++++--------- src/httpserver.cpp | 4 ++-- src/init.cpp | 3 +-- src/main.cpp | 11 ++++++++--- src/metrics.cpp | 11 ++++++----- src/util.cpp | 9 +++++---- src/util.h | 2 +- src/wallet/walletdb.cpp | 2 +- 10 files changed, 59 insertions(+), 35 deletions(-) diff --git a/doc/dnsseed-policy.md b/doc/dnsseed-policy.md index 90fead217..a85d047b5 100644 --- a/doc/dnsseed-policy.md +++ b/doc/dnsseed-policy.md @@ -42,13 +42,13 @@ details of their operating practices. related to the DNS seed operation. If these expectations cannot be satisfied the operator should discontinue -providing services and contact the active Zcash development team as well as -creating an issue in the [Zcash repository](https://github.com/zcash/zcash). +providing services and contact the active Hush development team as well as +creating an issue in the [Hush Github repository](https://github.com/MyHush/hush3). Behavior outside of these expectations may be reasonable in some situations but should be discussed in public in advance. See also ---------- -- [zcash-seeder](https://github.com/zcash/zcash-seeder) is a reference +- [hush-seeder](https://github.com/MyHush/hush-seeder) is a reference implementation of a DNS seed. diff --git a/src/bitcoin-tx-res.rc b/src/bitcoin-tx-res.rc index bc8d57134..cb540fdc1 100644 --- a/src/bitcoin-tx-res.rc +++ b/src/bitcoin-tx-res.rc @@ -16,14 +16,14 @@ BEGIN BEGIN BLOCK "040904E4" // U.S. English - multilingual (hex) BEGIN - VALUE "CompanyName", "Zcash" - VALUE "FileDescription", "zcash-tx (CLI Zcash transaction editor utility)" + VALUE "CompanyName", "Hush" + VALUE "FileDescription", "hush-tx (CLI Zcash transaction editor utility)" VALUE "FileVersion", VER_FILEVERSION_STR - VALUE "InternalName", "zcash-tx" + VALUE "InternalName", "hush-tx" VALUE "LegalCopyright", COPYRIGHT_STR VALUE "LegalTrademarks1", "Distributed under the MIT software license, see the accompanying file COPYING or http://www.opensource.org/licenses/mit-license.php." - VALUE "OriginalFilename", "zcash-tx.exe" - VALUE "ProductName", "zcash-tx" + VALUE "OriginalFilename", "hush-tx.exe" + VALUE "ProductName", "hush-tx" VALUE "ProductVersion", VER_PRODUCTVERSION_STR END END diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index bdd368530..80b5c4a53 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2013 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -70,12 +71,17 @@ CBlockIndex *komodo_chainactive(int32_t height); void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; + fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); + // Tell the main threads to shutdown. if (komodo_currentheight()>KOMODO_EARLYTXID_HEIGHT && KOMODO_EARLYTXID!=zeroid && ((height=tx_height(KOMODO_EARLYTXID))==0 || height>KOMODO_EARLYTXID_HEIGHT)) { fprintf(stderr,"error: earlytx must be before block height %d or tx does not exist\n",KOMODO_EARLYTXID_HEIGHT); StartShutdown(); } + + fprintf(stderr,"%s: earlytx height=%d, ASSETCHAINS_CBOPRET=%li\n", __FUNCTION__, height, ASSETCHAINS_CBOPRET); + /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) { if ( pindex->nTime > ADAPTIVEPOW_CHANGETO_DEFAULTON ) @@ -84,11 +90,14 @@ void WaitForShutdown(boost::thread_group* threadGroup) fprintf(stderr,"default activate adaptivepow\n"); } else fprintf(stderr,"height1 time %u vs %u\n",pindex->nTime,ADAPTIVEPOW_CHANGETO_DEFAULTON); } //else fprintf(stderr,"cant find height 1\n");*/ - if ( ASSETCHAINS_CBOPRET != 0 ) + + if ( ASSETCHAINS_CBOPRET != 0 ) { komodo_pricesinit(); + } + while (!fShutdown) { - //fprintf(stderr,"call passport iteration\n"); + fprintf(stderr,"call passport iteration\n"); if ( ASSETCHAINS_SYMBOL[0] == 0 ) { if ( KOMODO_NSPV_FULLNODE ) @@ -100,9 +109,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) break; MilliSleep(1000); } - } - else - { + } else { //komodo_interestsum(); //komodo_longestchain(); if ( ASSETCHAINS_CBOPRET != 0 ) @@ -117,6 +124,8 @@ void WaitForShutdown(boost::thread_group* threadGroup) } fShutdown = ShutdownRequested(); } + fprintf(stderr,"%s: fShutdown=%d\n", __FUNCTION__, fShutdown); + if (threadGroup) { Interrupt(*threadGroup); @@ -141,6 +150,8 @@ bool AppInit(int argc, char* argv[]) bool fRet = false; + + fprintf(stderr, "%s start, argc=%d\n", __FUNCTION__, argc); // // Parameters // @@ -189,6 +200,7 @@ bool AppInit(int argc, char* argv[]) } try { + fprintf(stderr, "%s reading config file\n", __FUNCTION__); ReadConfigFile(mapArgs, mapMultiArgs); } catch (const missing_zcash_conf& e) { fprintf(stderr, @@ -216,9 +228,12 @@ bool AppInit(int argc, char* argv[]) // Command-line RPC bool fCommandLine = false; - for (int i = 1; i < argc; i++) - if (!IsSwitchChar(argv[i][0]) && !boost::algorithm::istarts_with(argv[i], "komodo:")) + for (int i = 1; i < argc; i++) { + //TODO: should this be hush: or komodo: ?? + if (!IsSwitchChar(argv[i][0]) && !boost::algorithm::istarts_with(argv[i], "komodo:")) { fCommandLine = true; + } + } if (fCommandLine) { @@ -252,20 +267,23 @@ bool AppInit(int argc, char* argv[]) #endif SoftSetBoolArg("-server", true); + fprintf(stderr,"%s: Running AppInit2()\n", __FUNCTION__); fRet = AppInit2(threadGroup, scheduler); - } - catch (const std::exception& e) { + fprintf(stderr,"%s: Finished AppInit2(), fRet=%d\n", __FUNCTION__, fRet); + } catch (const std::exception& e) { PrintExceptionContinue(&e, "AppInit()"); } catch (...) { PrintExceptionContinue(NULL, "AppInit()"); } if (!fRet) { + fprintf(stderr,"%s: Interrupting threadGroup\n", __FUNCTION__); Interrupt(threadGroup); // threadGroup.join_all(); was left out intentionally here, because we didn't re-test all of // the startup-failure cases to make sure they don't result in a hang due to some // thread-blocking-waiting-for-another-thread-during-startup case } else { + fprintf(stderr,"%s: Waiting for Shutdown\n", __FUNCTION__); WaitForShutdown(&threadGroup); } Shutdown(); diff --git a/src/httpserver.cpp b/src/httpserver.cpp index 2ee8d178f..e1d235665 100644 --- a/src/httpserver.cpp +++ b/src/httpserver.cpp @@ -306,7 +306,7 @@ static void http_reject_request_cb(struct evhttp_request* req, void*) /** Event dispatcher thread */ static void ThreadHTTP(struct event_base* base, struct evhttp* http) { - RenameThread("zcash-http"); + RenameThread("hush-http"); LogPrint("http", "Entering http event loop\n"); event_base_dispatch(base); // Event loop will be interrupted by InterruptHTTPServer() @@ -355,7 +355,7 @@ static bool HTTPBindAddresses(struct evhttp* http) /** Simple wrapper to set thread name and run work queue */ static void HTTPWorkQueueRun(WorkQueue* queue) { - RenameThread("zcash-httpworker"); + RenameThread("hush-httpworker"); queue->Run(); } diff --git a/src/init.cpp b/src/init.cpp index 5257040a6..c928854e5 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -219,7 +219,6 @@ void Shutdown() /// module was initialized. static char shutoffstr[128]; sprintf(shutoffstr,"%s-shutoff",ASSETCHAINS_SYMBOL); - //RenameThread("verus-shutoff"); RenameThread(shutoffstr); mempool.AddTransactionsUpdated(1); @@ -674,7 +673,7 @@ void CleanupBlockRevFiles() void ThreadImport(std::vector vImportFiles) { - RenameThread("zcash-loadblk"); + RenameThread("hush-loadblk"); // -reindex if (fReindex) { CImportingNow imp; diff --git a/src/main.cpp b/src/main.cpp index 6052839f5..187d201c2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -3352,7 +3353,7 @@ bool FindUndoPos(CValidationState &state, int nFile, CDiskBlockPos &pos, unsigne static CCheckQueue scriptcheckqueue(128); void ThreadScriptCheck() { - RenameThread("zcash-scriptch"); + RenameThread("hush-scriptch"); scriptcheckqueue.Thread(); } @@ -4260,6 +4261,7 @@ static int64_t nTimePostConnect = 0; */ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock *pblock) { + fprintf(stderr, "%s: Start\n", __FUNCTION__); assert(pindexNew->pprev == chainActive.Tip()); // Read block from disk. int64_t nTime1 = GetTimeMicros(); @@ -4270,7 +4272,8 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * pblock = █ } KOMODO_CONNECTING = (int32_t)pindexNew->GetHeight(); - //fprintf(stderr,"%s connecting ht.%d maxsize.%d vs %d\n",ASSETCHAINS_SYMBOL,(int32_t)pindexNew->GetHeight(),MAX_BLOCK_SIZE(pindexNew->GetHeight()),(int32_t)::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION)); + fprintf(stderr,"%s connecting ht.%d maxsize.%d vs %d\n",ASSETCHAINS_SYMBOL,(int32_t)pindexNew->GetHeight(),MAX_BLOCK_SIZE(pindexNew->GetHeight()),(int32_t)::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION)); + // Get the current commitment tree SproutMerkleTree oldSproutTree; SaplingMerkleTree oldSaplingTree; @@ -4348,7 +4351,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * if ( KOMODO_LONGESTCHAIN != 0 && (pindexNew->GetHeight() == KOMODO_LONGESTCHAIN || pindexNew->GetHeight() == KOMODO_LONGESTCHAIN+1) ) KOMODO_INSYNC = (int32_t)pindexNew->GetHeight(); else KOMODO_INSYNC = 0; - //fprintf(stderr,"connect.%d insync.%d ASSETCHAINS_SAPLING.%d\n",(int32_t)pindexNew->GetHeight(),KOMODO_INSYNC,ASSETCHAINS_SAPLING); + fprintf(stderr,"connect.%d insync.%d ASSETCHAINS_SAPLING.%d\n",(int32_t)pindexNew->GetHeight(),KOMODO_INSYNC,ASSETCHAINS_SAPLING); /*if ( KOMODO_INSYNC != 0 ) //ASSETCHAINS_SYMBOL[0] == 0 && komodo_broadcast(pblock,8); else if ( ASSETCHAINS_SYMBOL[0] != 0 ) @@ -4448,6 +4451,7 @@ static void PruneBlockIndexCandidates() { * pblock is either NULL or a pointer to a CBlock corresponding to pindexMostWork. */ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBlockIndex *pindexMostWork, CBlock *pblock) { + fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); AssertLockHeld(cs_main); bool fInvalidFound = false; const CBlockIndex *pindexOldTip = chainActive.Tip(); @@ -4583,6 +4587,7 @@ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBloc * that is already loaded (to avoid loading it again from disk). */ bool ActivateBestChain(bool fSkipdpow, CValidationState &state, CBlock *pblock) { + fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); CBlockIndex *pindexNewTip = NULL; CBlockIndex *pindexMostWork = NULL; const CChainParams& chainParams = Params(); diff --git a/src/metrics.cpp b/src/metrics.cpp index 1fa8ebfb5..7a46a6dfd 100644 --- a/src/metrics.cpp +++ b/src/metrics.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2016 The Zcash developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -298,7 +299,7 @@ int printMiningStatus(bool mining) lines++; } else { std::cout << _("You are currently not mining.") << std::endl; - std::cout << _("To enable mining, add 'gen=1' to your zcash.conf and restart.") << std::endl; + std::cout << _("To enable mining, add 'gen=1' to your HUSH3.conf and restart.") << std::endl; lines += 2; } std::cout << std::endl; @@ -479,7 +480,7 @@ bool enableVTMode() void ThreadShowMetricsScreen() { // Make this thread recognisable as the metrics screen thread - RenameThread("zcash-metrics-screen"); + RenameThread("hush-metrics-screen"); // Determine whether we should render a persistent UI or rolling metrics bool isTTY = isatty(STDOUT_FILENO); @@ -499,8 +500,8 @@ void ThreadShowMetricsScreen() std::cout << std::endl; // Thank you text - std::cout << _("Thank you for running a Zcash node!") << std::endl; - std::cout << _("You're helping to strengthen the network and contributing to a social good :)") << std::endl; + std::cout << _("Thank you for running a Hush node!") << std::endl; + std::cout << _("You are helping secure the network and others Speak And Transact Freely!") << std::endl; // Privacy notice text std::cout << PrivacyInfo(); @@ -552,7 +553,7 @@ void ThreadShowMetricsScreen() // Explain how to exit std::cout << "["; #ifdef WIN32 - std::cout << _("'zcash-cli.exe stop' to exit"); + std::cout << _("'hush-cli.exe stop' to exit"); #else std::cout << _("Press Ctrl+C to exit"); #endif diff --git a/src/util.cpp b/src/util.cpp index b6e868489..cc66822ad 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -539,10 +539,10 @@ boost::filesystem::path GetDefaultDataDir() if ( ASSETCHAINS_SYMBOL[0] != 0 ) strcpy(symbol,ASSETCHAINS_SYMBOL); else symbol[0] = 0; - // Windows < Vista: C:\Documents and Settings\Username\Application Data\Zcash - // Windows >= Vista: C:\Users\Username\AppData\Roaming\Zcash - // Mac: ~/Library/Application Support/Zcash - // Unix: ~/.zcash + // Windows < Vista: C:\Documents and Settings\Username\Application Data\Komodo + // Windows >= Vista: C:\Users\Username\AppData\Roaming\Komodo + // Mac: ~/Library/Application Support/Komodo + // Unix: ~/.komodo #ifdef _WIN32 // Windows if ( symbol[0] == 0 ) @@ -589,6 +589,7 @@ static boost::filesystem::path ZC_GetBaseParamsDir() // Windows >= Vista: C:\Users\Username\AppData\Roaming\ZcashParams // Mac: ~/Library/Application Support/ZcashParams // Unix: ~/.zcash-params + // Debian packages: /usr/share/hush fs::path pathRet; #ifdef _WIN32 return GetSpecialFolderPath(CSIDL_APPDATA) / "ZcashParams"; diff --git a/src/util.h b/src/util.h index 17bf19952..b0c0b32ea 100644 --- a/src/util.h +++ b/src/util.h @@ -264,7 +264,7 @@ void RenameThread(const char* name); */ template void TraceThread(const char* name, Callable func) { - std::string s = strprintf("zcash-%s", name); + std::string s = strprintf("hush-%s", name); RenameThread(s.c_str()); try { diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index d2d90a85f..c451e02e1 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -1115,7 +1115,7 @@ DBErrors CWalletDB::ZapWalletTx(CWallet* pwallet, vector& vWtx) void ThreadFlushWalletDB(const string& strFile) { // Make this thread recognisable as the wallet flushing thread - RenameThread("zcash-wallet"); + RenameThread("hush-wallet"); static bool fOneThread; if (fOneThread) From 02a8da21046910b294fa3ffae639068fb8c673aa Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 25 Oct 2019 17:40:47 -0400 Subject: [PATCH 067/339] yep --- src/bitcoind.cpp | 11 ++++++-- src/init.cpp | 73 +++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 80b5c4a53..c327def68 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -72,14 +72,21 @@ void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); + fprintf(stderr,"%s: earlytxid=%s, tx_height=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex(), tx_height(KOMODO_EARLYTXID) ); + height=tx_height(KOMODO_EARLYTXID); // Tell the main threads to shutdown. + StartShutdown(); + /* if (komodo_currentheight()>KOMODO_EARLYTXID_HEIGHT && KOMODO_EARLYTXID!=zeroid && ((height=tx_height(KOMODO_EARLYTXID))==0 || height>KOMODO_EARLYTXID_HEIGHT)) { fprintf(stderr,"error: earlytx must be before block height %d or tx does not exist\n",KOMODO_EARLYTXID_HEIGHT); StartShutdown(); - } - + } else { + fprintf(stderr,"%s: Not true\n", __FUNCTION__); + } + */ + fprintf(stderr,"%s: komodo_currentheight=%d\n", __FUNCTION__, komodo_currentheight() ); fprintf(stderr,"%s: earlytx height=%d, ASSETCHAINS_CBOPRET=%li\n", __FUNCTION__, height, ASSETCHAINS_CBOPRET); /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) diff --git a/src/init.cpp b/src/init.cpp index c928854e5..f90e0d6f8 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -207,6 +207,7 @@ void Interrupt(boost::thread_group& threadGroup) void Shutdown() { + fprintf(stderr,"%s: start\n", __FUNCTION__); LogPrintf("%s: In progress...\n", __func__); static CCriticalSection cs_Shutdown; TRY_LOCK(cs_Shutdown, lockShutdown); @@ -218,10 +219,11 @@ void Shutdown() /// Be sure that anything that writes files or flushes caches only does this if the respective /// module was initialized. static char shutoffstr[128]; - sprintf(shutoffstr,"%s-shutoff",ASSETCHAINS_SYMBOL); + sprintf(shutoffstr,"%s-shutoff","hush"); RenameThread(shutoffstr); mempool.AddTransactionsUpdated(1); + fprintf(stderr,"%s: stopping HTTP/REST/RPC\n", __FUNCTION__); StopHTTPRPC(); StopREST(); StopRPC(); @@ -237,6 +239,7 @@ void Shutdown() GenerateBitcoins(false, 0); #endif #endif + fprintf(stderr,"%s: stopping node\n", __FUNCTION__); StopNode(); StopTorControl(); UnregisterNodeSignals(GetNodeSignals()); @@ -747,17 +750,20 @@ void ThreadNotifyRecentlyAdded() } /** Sanity checks - * Ensure that Bitcoin is running in a usable environment with all + * Ensure that Hush is running in a usable environment with all * necessary library support. */ bool InitSanityCheck(void) { if(!ECC_InitSanityCheck()) { InitError("Elliptic curve cryptography sanity check failure. Aborting."); + fprintf(stderr,"%s: ECC insanity!\n", __FUNCTION__); return false; } - if (!glibc_sanity_test() || !glibcxx_sanity_test()) + if (!glibc_sanity_test() || !glibcxx_sanity_test()) { + fprintf(stderr,"%s: glibc insanity!\n", __FUNCTION__); return false; + } return true; } @@ -894,6 +900,7 @@ extern int32_t KOMODO_REWIND; bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) { + fprintf(stderr,"%s start\n", __FUNCTION__); // ********************************************************* Step 1: setup #ifdef _MSC_VER // Turn off Microsoft heap dump noise @@ -920,6 +927,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (!SetupNetworking()) return InitError("Error: Initializing networking failed"); + fprintf(stderr,"%s networking setup\n", __FUNCTION__); #ifndef _WIN32 if (GetBoolArg("-sysperms", false)) { @@ -928,9 +936,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError("Error: -sysperms is not allowed in combination with enabled wallet functionality"); #endif } else { + fprintf(stderr,"%s setting umask\n", __FUNCTION__); umask(077); } + fprintf(stderr,"%s tik1\n", __FUNCTION__); // Clean shutdown on SIGTERM struct sigaction sa; sa.sa_handler = HandleSIGTERM; @@ -952,31 +962,42 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) std::set_new_handler(new_handler_terminate); + fprintf(stderr,"%s: set signal handlers\n", __FUNCTION__); + // ********************************************************* Step 2: parameter interactions const CChainParams& chainparams = Params(); + fprintf(stderr,"%s: got chain params\n", __FUNCTION__); + // Set this early so that experimental features are correctly enabled/disabled fExperimentalMode = GetBoolArg("-experimentalfeatures", true); + fprintf(stderr,"%s: fExperimentalMode=%d\n", __FUNCTION__, fExperimentalMode); + // Fail early if user has set experimental options without the global flag if (!fExperimentalMode) { if (mapArgs.count("-developerencryptwallet")) { + fprintf(stderr,"%s wallet encryption error\n", __FUNCTION__); return InitError(_("Wallet encryption requires -experimentalfeatures.")); } else if (mapArgs.count("-paymentdisclosure")) { + fprintf(stderr,"%s payment disclosure error\n", __FUNCTION__); return InitError(_("Payment disclosure requires -experimentalfeatures.")); } else if (mapArgs.count("-zmergetoaddress")) { + fprintf(stderr,"%s zmerge error\n", __FUNCTION__); return InitError(_("RPC method z_mergetoaddress requires -experimentalfeatures.")); } - } + } + fprintf(stderr,"%s tik2\n", __FUNCTION__); // Set this early so that parameter interactions go to console fPrintToConsole = GetBoolArg("-printtoconsole", false); - fLogTimestamps = GetBoolArg("-logtimestamps", true); - fLogIPs = GetBoolArg("-logips", false); + fLogTimestamps = GetBoolArg("-logtimestamps", true); + fLogIPs = GetBoolArg("-logips", false); + LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); - LogPrintf("Zcash version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); + LogPrintf("Hush version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); // when specifying an explicit binding address, you want to listen on it // even when -connect or -proxy is specified @@ -989,6 +1010,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__); } + fprintf(stderr,"%s tik3\n", __FUNCTION__); if (mapArgs.count("-connect") && mapMultiArgs["-connect"].size() > 0) { // when only connecting to trusted nodes, do not seed via DNS, or listen by default if (SoftSetBoolArg("-dnsseed", false)) @@ -1031,6 +1053,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (SoftSetBoolArg("-rescan", true)) LogPrintf("%s: parameter interaction: -zapwallettxes= -> setting -rescan=1\n", __func__); } + fprintf(stderr,"%s tik4\n", __FUNCTION__); // Make sure enough file descriptors are available int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1); @@ -1038,7 +1061,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) //fprintf(stderr,"nMaxConnections %d\n",nMaxConnections); nMaxConnections = std::max(std::min(nMaxConnections, (int)(FD_SETSIZE - nBind - MIN_CORE_FILEDESCRIPTORS)), 0); int nFD = RaiseFileDescriptorLimit(nMaxConnections + MIN_CORE_FILEDESCRIPTORS); - //fprintf(stderr,"nMaxConnections %d FD_SETSIZE.%d nBind.%d expr.%d \n",nMaxConnections,FD_SETSIZE,nBind,(int)(FD_SETSIZE - nBind - MIN_CORE_FILEDESCRIPTORS)); + fprintf(stderr,"nMaxConnections %d FD_SETSIZE.%d nBind.%d expr.%d \n",nMaxConnections,FD_SETSIZE,nBind,(int)(FD_SETSIZE - nBind - MIN_CORE_FILEDESCRIPTORS)); if (nFD < MIN_CORE_FILEDESCRIPTORS) return InitError(_("Not enough file descriptors available.")); if (nFD - MIN_CORE_FILEDESCRIPTORS < nMaxConnections) @@ -1076,6 +1099,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } + fprintf(stderr,"%s tik5\n", __FUNCTION__); // Check for -debugnet if (GetBoolArg("-debugnet", false)) InitWarning(_("Warning: Unsupported argument -debugnet ignored, use -debug=net.")); @@ -1107,6 +1131,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) nScriptCheckThreads = MAX_SCRIPTCHECK_THREADS; fServer = GetBoolArg("-server", false); + fprintf(stderr,"%s tik6\n", __FUNCTION__); // block pruning; get the amount of disk space (in MB) to allot for block & undo files int64_t nSignedPruneTarget = GetArg("-prune", 0) * 1024 * 1024; @@ -1194,6 +1219,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) expiryDelta = GetArg("-txexpirydelta", DEFAULT_TX_EXPIRY_DELTA); bSpendZeroConfChange = GetBoolArg("-spendzeroconfchange", true); fSendFreeTransactions = GetBoolArg("-sendfreetransactions", false); + fprintf(stderr,"%s tik7\n", __FUNCTION__); std::string strWalletFile = GetArg("-wallet", "wallet.dat"); #endif // ENABLE_WALLET @@ -1212,6 +1238,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) nLocalServices |= NODE_BLOOM; } nMaxTipAge = GetArg("-maxtipage", DEFAULT_MAX_TIP_AGE); + fprintf(stderr,"%s tik8\n", __FUNCTION__); #ifdef ENABLE_MINING if (mapArgs.count("-mineraddress")) { @@ -1234,6 +1261,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } + fprintf(stderr,"%s tik9\n", __FUNCTION__); if (!mapMultiArgs["-nuparams"].empty()) { // Allow overriding network upgrade parameters for testing if (Params().NetworkIDString() != "regtest") { @@ -1271,6 +1299,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // Initialize libsodium if (init_and_check_sodium() == -1) { + fprintf(stderr,"%s: libsodium init failed!\n", __FUNCTION__); return false; } @@ -1278,6 +1307,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ECC_Start(); globalVerifyHandle.reset(new ECCVerifyHandle()); + /* // set the hash algorithm to use for this chain // Again likely better solution here, than using long IF ELSE. extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1; @@ -1293,7 +1323,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // initialize VerusHashV2 CBlockHeader::SetVerusHashV2(); } + */ + fprintf(stderr,"%s tik10\n", __FUNCTION__); // Sanity check if (!InitSanityCheck()) return InitError(_("Initialization sanity check failed. Please check for insanity. Hush is shutting down!")); @@ -1310,6 +1342,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (file) fclose(file); + fprintf(stderr,"%s tik11\n", __FUNCTION__); fprintf(stderr,"Attempting to obtain lock %s\n", pathLockFile.string().c_str()); try { static boost::interprocess::file_lock lock(pathLockFile.string().c_str()); @@ -1324,6 +1357,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #endif if (GetBoolArg("-shrinkdebugfile", !fDebug)) ShrinkDebugFile(); + + fprintf(stderr,"%s tik12\n", __FUNCTION__); + LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); LogPrintf("Hush version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); @@ -1347,12 +1383,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) threadGroup.create_thread(&ThreadScriptCheck); } + fprintf(stderr,"%s tik13\n", __FUNCTION__); + // Start the lightweight task scheduler thread CScheduler::Function serviceLoop = boost::bind(&CScheduler::serviceQueue, &scheduler); threadGroup.create_thread(boost::bind(&TraceThread, "scheduler", serviceLoop)); // Count uptime MarkStartTime(); + fprintf(stderr,"%s tik14\n", __FUNCTION__); if ((chainparams.NetworkIDString() != "regtest") && GetBoolArg("-showmetrics", 0) && @@ -1362,6 +1401,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) threadGroup.create_thread(&ThreadShowMetricsScreen); } + fprintf(stderr,"%s tik15\n", __FUNCTION__); // These must be disabled for now, they are buggy and we probably don't // want any of libsnark's profiling in production anyway. libsnark::inhibit_profiling_info = true; @@ -1383,6 +1423,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (!AppInitServers(threadGroup)) return InitError(_("Unable to start HTTP server. See debug log for details.")); } + fprintf(stderr,"%s tik16\n", __FUNCTION__); int64_t nStart; @@ -1407,6 +1448,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #endif // ENABLE_WALLET // ********************************************************* Step 6: network initialization + fprintf(stderr,"%s tik17\n", __FUNCTION__); RegisterNodeSignals(GetNodeSignals()); // sanitize comments per BIP-0014, format user agent and check total size @@ -1422,6 +1464,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError(strprintf("Total length of network version string %i exceeds maximum of %i characters. Reduce the number and/or size of uacomments.", strSubVersion.size(), MAX_SUBVERSION_LENGTH)); } + fprintf(stderr,"%s tik18\n", __FUNCTION__); if (mapArgs.count("-onlynet")) { std::set nets; @@ -1438,6 +1481,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } + fprintf(stderr,"%s tik19\n", __FUNCTION__); if (mapArgs.count("-whitelist")) { BOOST_FOREACH(const std::string& net, mapMultiArgs["-whitelist"]) { CSubNet subnet(net); @@ -1463,6 +1507,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) SetNameProxy(addrProxy); SetLimited(NET_TOR, false); // by default, -proxy sets onion as reachable, unless -noonion later } + fprintf(stderr,"%s tik20\n", __FUNCTION__); // -onion can be used to set only a proxy for .onion, or override normal proxy for .onion addresses // -noonion (or -onion=0) disables connecting to .onion entirely @@ -1481,10 +1526,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } // see Step 2: parameter interactions for more information about these - fListen = GetBoolArg("-listen", DEFAULT_LISTEN); - fDiscover = GetBoolArg("-discover", true); + fListen = GetBoolArg("-listen", DEFAULT_LISTEN); + fDiscover = GetBoolArg("-discover", true); fNameLookup = GetBoolArg("-dns", true); + fprintf(stderr,"%s tik22\n", __FUNCTION__); bool fBound = false; if (fListen) { if (mapArgs.count("-bind") || mapArgs.count("-whitebind")) { @@ -1522,6 +1568,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } + fprintf(stderr,"%s tik23\n", __FUNCTION__); + BOOST_FOREACH(const std::string& strDest, mapMultiArgs["-seednode"]) AddOneShot(strDest); @@ -1561,6 +1609,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return !fRequestShutdown; } // ********************************************************* Step 7: load block chain + fprintf(stderr,"%s tik24\n", __FUNCTION__); fReindex = GetBoolArg("-reindex", false); @@ -1791,6 +1840,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) mempool.ReadFeeEstimates(est_filein); fFeeEstimatesInitialized = true; + fprintf(stderr,"%s tik25\n", __FUNCTION__); // ********************************************************* Step 8: load wallet #ifdef ENABLE_WALLET @@ -2063,9 +2113,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #ifdef ENABLE_WALLET if (pwalletMain) { + fprintf(stderr,"%s reaccepting wallet xtns\n", __FUNCTION__); // Add wallet transactions that aren't already in a block to mapTransactions pwalletMain->ReacceptWalletTransactions(); + fprintf(stderr,"%s starting wallet flusher thread\n", __FUNCTION__); // Run a thread to flush wallet periodically threadGroup.create_thread(boost::bind(&ThreadFlushWalletDB, boost::ref(pwalletMain->strWalletFile))); } @@ -2074,5 +2126,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // SENDALERT threadGroup.create_thread(boost::bind(ThreadSendAlert)); + fprintf(stderr,"%s end\n", __FUNCTION__); return !fRequestShutdown; } From 1f1428257edb26823b0d546965643d73e0430843 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 25 Oct 2019 17:42:55 -0400 Subject: [PATCH 068/339] Remove blockindex changes from zindex that should not be in this branch --- src/chain.h | 107 +--------------------------------------------------- 1 file changed, 1 insertion(+), 106 deletions(-) diff --git a/src/chain.h b/src/chain.h index 167e69af7..787c339fd 100644 --- a/src/chain.h +++ b/src/chain.h @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -260,103 +261,12 @@ public: //! Note: in a potential headers-first mode, this number cannot be relied upon unsigned int nTx; - //! Number of notarization transactions in this block. - unsigned int nNotarizations; - - //! (memory only) Number of payments (shielded or transparent) in the block - //! up to and including this block. One transaction can contain one or more - //! payments. This stat allows us to calculate ratios of shielded/transparent - //! when combined with shielded payment stats - unsigned int nPayments; - - //! (memory only) Number of shielded transactions (of any kind) in the block up to and including this block. - //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes - //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as - //! inputs and outputs. - unsigned int nShieldedTx; - - //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined - //! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent - // inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc... - unsigned int nFullyShieldedTx; - - //! (memory only) Number of shielding payments. A shielding payment is defined - //! as having a shielded output but transparent input: t->z - unsigned int nShieldingPayments; - - //! (memory only) Number of shielded payments. A shielded payment is defined - //! as having a shielded input or output: t->z or z->t - unsigned int nShieldedPayments; - - //! (memory only) Number of fully shielded payments. A fully shielded payment is defined - //! as having a shielded input and shielded output: z->z - unsigned int nFullyShieldedPayments; - - //! (memory only) Number of deshielding transactions. A deshielding transaction is defined - //! as a transaction containing JoinSplits and at least one transparent output. - unsigned int nDeshieldingTx; - - //! (memory only) Number of deshielding payments. A deshielding payment is defined - //! as one transparent input and one shielded output: z->t - unsigned int nDeshieldingPayments; - - //! (memory only) Number of shielding transactions. A shielding transaction is defined - //! as a transaction containing JoinSplits and at least one transparent input - // i.e. t->z or t->(z,t) or z->(z,z,t) - unsigned int nShieldingTx; - // chain stats //! (memory only) Number of transactions in the chain up to and including this block. //! This value will be non-zero only if and only if transactions for this block and all its parents are available. //! Change to 64-bit type when necessary; won't happen before 2030 unsigned int nChainTx; - //! Number of notarization transactions in this chain - int64_t nChainNotarizations; - - //! (memory only) Number of payments (shielded or transparent) in the chain - //! up to and including this block. One transaction can contain one or more - //! payments. This stat allows us to calculate ratios of shielded/transparent - //! when combined with shielded payment stats - int64_t nChainPayments; - - //! (memory only) Number of shielded transactions (of any kind) in the chain up to and including this block. - //! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes - //! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as - //! inputs and outputs. - int64_t nChainShieldedTx; - - //! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined - //! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent - // inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc... - int64_t nChainFullyShieldedTx; - - //! (memory only) Number of shielding payments. A shielding payment is defined - //! as having a shielded output but transparent input: t->z - int64_t nChainShieldingPayments; - - //! (memory only) Number of shielded payments. A shielded payment is defined - //! as having a shielded input or output: t->z or z->t - int64_t nChainShieldedPayments; - - //! (memory only) Number of fully shielded payments. A fully shielded payment is defined - //! as having a shielded input and shielded output: z->z - int64_t nChainFullyShieldedPayments; - - //! (memory only) Number of deshielding transactions. A deshielding transaction is defined - //! as a transaction containing JoinSplits and at least one transparent output. - int64_t nChainDeshieldingTx; - - //! (memory only) Number of deshielding payments. A deshielding payment is defined - //! as one transparent input and one shielded output: z->t - int64_t nChainDeshieldingPayments; - - //! (memory only) Number of shielding transactions. A shielding transaction is defined - //! as a transaction containing JoinSplits and at least one transparent input - // i.e. t->z or t->(z,t) or z->(z,z,t) - int64_t nChainShieldingTx; - - //! Verification status of this block. See enum BlockStatus unsigned int nStatus; @@ -619,21 +529,6 @@ public: READWRITE(VARINT(nStatus)); READWRITE(VARINT(nTx)); - // These values only serialized when -zindex enabled - if((s.GetType() & SER_DISK) && fZindex) { - READWRITE(VARINT(nShieldedTx)); - READWRITE(VARINT(nShieldingTx)); - READWRITE(VARINT(nDeshieldingTx)); - READWRITE(VARINT(nFullyShieldedTx)); - - READWRITE(VARINT(nShieldedPayments)); - READWRITE(VARINT(nShieldingPayments)); - READWRITE(VARINT(nDeshieldingPayments)); - READWRITE(VARINT(nFullyShieldedPayments)); - - READWRITE(VARINT(nNotarizations)); - } - if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT(nFile)); if (nStatus & BLOCK_HAVE_DATA) From a4f827faeb49adad78b0e68df2a78084d201b201 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 25 Oct 2019 18:23:15 -0400 Subject: [PATCH 069/339] remove zindex stuff that should not be on this branch --- src/chain.h | 17 ---- src/main.cpp | 136 +------------------------------- src/rpc/blockchain.cpp | 172 ----------------------------------------- src/txdb.cpp | 8 -- 4 files changed, 1 insertion(+), 332 deletions(-) diff --git a/src/chain.h b/src/chain.h index 787c339fd..9a29026f4 100644 --- a/src/chain.h +++ b/src/chain.h @@ -326,23 +326,6 @@ public: nTx = 0; nChainTx = 0; - nChainShieldedTx = 0; - nChainShieldingTx = 0; - nChainDeshieldingTx = 0; - nChainFullyShieldedTx = 0; - nChainShieldedPayments = 0; - nChainShieldingPayments = 0; - nChainDeshieldingPayments = 0; - nChainFullyShieldedPayments = 0; - nShieldedTx = 0; - nShieldingTx = 0; - nDeshieldingTx = 0; - nFullyShieldedTx = 0; - nShieldedPayments = 0; - nShieldingPayments = 0; - nDeshieldingPayments = 0; - nFullyShieldedPayments = 0; - nStatus = 0; nCachedBranchId = boost::none; hashSproutAnchor = uint256(); diff --git a/src/main.cpp b/src/main.cpp index 187d201c2..88f9f1de4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4781,14 +4781,9 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl { pindexNew->nTx = block.vtx.size(); pindexNew->nChainTx = 0; - pindexNew->nChainPayments = 0; CAmount sproutValue = 0; CAmount saplingValue = 0; bool isShieldedTx = false; - int64_t nShieldedSpends=0,nShieldedOutputs=0,nPayments=0; - int64_t nShieldedTx=0,nFullyShieldedTx=0,nDeshieldingTx=0,nShieldingTx=0; - int64_t nShieldedPayments=0,nFullyShieldedPayments=0,nShieldingPayments=0,nDeshieldingPayments=0; - int64_t nNotarizations=0; for (auto tx : block.vtx) { // Negative valueBalance "takes" money from the transparent value pool @@ -4801,70 +4796,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue += js.vpub_old; sproutValue -= js.vpub_new; } - - // Ignore following stats unless -zindex - if (!fZindex) - continue; - - nShieldedSpends = tx.vShieldedSpend.size(); - nShieldedOutputs = tx.vShieldedOutput.size(); - isShieldedTx = (nShieldedSpends + nShieldedOutputs) > 0 ? true : false; - - // We want to avoid full verification with a low false-positive rate - if(tx.vin.size()==13 && tx.vout.size()==2 && tx.vout[1].scriptPubKey.IsOpReturn() && tx.vout[1].nValue==0) { - nNotarizations++; - } - - if(isShieldedTx) { - nShieldedTx++; - if(tx.vin.size()==0 && tx.vout.size()==0) { - nFullyShieldedTx++; - } else if(tx.vin.size()>0) { - nShieldingTx++; - } else if(tx.vout.size()>0) { - nDeshieldingTx++; - } - //NOTE: These are at best heuristics. Improve them as much as possible. - // You cannot compare stats generated from different sets of heuristics, so - // if you change this code, you must delete and resync from scratch, or you - // will be mixing together data from two set of heuristics. - - if (nShieldedOutputs >= 1) { - // If there are shielded outputs, count each as a payment - // By default, if there is more than 1 output, we assume 1 change output which is not a payment. - // In the case of multiple outputs which spend inputs exactly, there is no change output and this - // heuristic will undercount payments. Since this edge case is rare, this seems acceptable. - // t->(t,t,z) = 1 shielded payment - // z->(z,z) = 1 shielded payment + shielded change - // t->(z,z) = 1 shielded payment + shielded change - // t->(t,z) = 1 shielded payment + transparent change - // (z,z)->z = 1 shielded payment (has this xtn ever occurred?) - // z->(z,z,z) = 2 shielded payments + shielded change - // Assume that there is always 1 change output when there are more than one - nShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; - - // Fully shielded do not count toward shielding/deshielding - if(tx.vin.size()==0 && tx.vout.size()==0) { - nFullyShieldedPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; - } else { - nShieldingPayments += nShieldedOutputs > 1 ? (nShieldedOutputs-1) : 1; - } - } else if (nShieldedSpends >=1) { - // Shielded inputs with no shielded outputs. We know none are change output because - // change would flow back to the zaddr - // z->t = 1 shielded payment - // z->(t,t) = 2 shielded payments - // z->(t,t,t) = 3 shielded payments - nShieldedPayments += tx.vout.size(); - nDeshieldingPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); - } - //TODO: correctly add shielded payments to total chain payments - nPayments += nShieldedPayments; - } else { - // No shielded payments, add transparent payments minus a change address - nPayments += tx.vout.size() > 1 ? tx.vout.size()-1 : tx.vout.size(); - } - } + } pindexNew->nSproutValue = sproutValue; pindexNew->nChainSproutValue = boost::none; @@ -4876,19 +4808,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nStatus |= BLOCK_HAVE_DATA; pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS); - if (fZindex) { - pindexNew->nPayments = nPayments; - pindexNew->nShieldedTx = nShieldedTx; - pindexNew->nFullyShieldedTx = nFullyShieldedTx; - pindexNew->nDeshieldingTx = nDeshieldingTx; - pindexNew->nShieldingTx = nShieldingTx; - pindexNew->nShieldedPayments = nShieldedPayments; - pindexNew->nFullyShieldedPayments = nFullyShieldedPayments; - pindexNew->nDeshieldingPayments = nDeshieldingPayments; - pindexNew->nShieldingPayments = nShieldingPayments; - pindexNew->nNotarizations = nNotarizations; - } - setDirtyBlockIndex.insert(pindexNew); if (pindexNew->pprev == NULL || pindexNew->pprev->nChainTx) { @@ -4901,21 +4820,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl CBlockIndex *pindex = queue.front(); queue.pop_front(); - if (fZindex) { - pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; - pindex->nChainNotarizations = (pindex->pprev ? pindex->pprev->nChainNotarizations : 0) + pindex->nNotarizations; - pindex->nChainShieldedTx = (pindex->pprev ? pindex->pprev->nChainShieldedTx : 0) + pindex->nShieldedTx; - pindex->nChainFullyShieldedTx = (pindex->pprev ? pindex->pprev->nChainFullyShieldedTx : 0) + pindex->nFullyShieldedTx; - pindex->nChainShieldingTx = (pindex->pprev ? pindex->pprev->nChainShieldingTx : 0) + pindex->nShieldingTx; - pindex->nChainDeshieldingTx = (pindex->pprev ? pindex->pprev->nChainDeshieldingTx : 0) + pindex->nDeshieldingTx; - - pindex->nChainPayments = (pindex->pprev ? pindex->pprev->nChainPayments : 0) + pindex->nPayments; - pindex->nChainShieldedPayments = (pindex->pprev ? pindex->pprev->nChainShieldedPayments : 0) + pindex->nShieldedPayments; - pindex->nChainFullyShieldedPayments = (pindex->pprev ? pindex->pprev->nChainFullyShieldedPayments : 0) + pindex->nFullyShieldedPayments; - pindex->nChainShieldingPayments = (pindex->pprev ? pindex->pprev->nChainShieldingPayments : 0) + pindex->nShieldingPayments; - pindex->nChainDeshieldingPayments = (pindex->pprev ? pindex->pprev->nChainDeshieldingPayments : 0) + pindex->nDeshieldingPayments; - } - if (pindex->pprev) { if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; @@ -4952,10 +4856,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl } } - if (fZindex) - fprintf(stderr, "ht.%d, ShieldedPayments=%d, ShieldedTx=%d, FullyShieldedTx=%d, ntz=%d\n", - pindexNew->GetHeight(), nShieldedPayments, nShieldedTx, nFullyShieldedTx, nNotarizations ); - return true; } @@ -6187,19 +6087,6 @@ bool static LoadBlockIndexDB() if (pindex->pprev) { if (pindex->pprev->nChainTx) { - if (fZindex) { - pindex->nChainNotarizations = pindex->pprev->nChainNotarizations + pindex->nNotarizations; - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; - pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; - pindex->nChainShieldingTx = pindex->pprev->nChainShieldingTx + pindex->nShieldingTx; - pindex->nChainShieldingPayments = pindex->pprev->nChainShieldingPayments + pindex->nShieldingPayments; - pindex->nChainDeshieldingTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainDeshieldingPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; - pindex->nChainFullyShieldedTx = pindex->pprev->nChainFullyShieldedTx + pindex->nFullyShieldedTx; - pindex->nChainFullyShieldedPayments = pindex->pprev->nChainFullyShieldedPayments + pindex->nFullyShieldedPayments; - } - if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; } else { @@ -6212,17 +6099,6 @@ bool static LoadBlockIndexDB() } } else { pindex->nChainTx = 0; - if (fZindex) { - pindex->nChainNotarizations = 0; - pindex->nChainShieldedTx = 0; - pindex->nChainFullyShieldedTx = 0; - pindex->nChainShieldedPayments = 0; - pindex->nChainShieldingPayments = 0; - pindex->nChainDeshieldingTx = 0; - pindex->nChainDeshieldingPayments = 0; - pindex->nChainFullyShieldedTx = 0; - pindex->nChainFullyShieldedPayments = 0; - } pindex->nChainSproutValue = boost::none; pindex->nChainSaplingValue = boost::none; mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex)); @@ -6231,16 +6107,6 @@ bool static LoadBlockIndexDB() pindex->nChainTx = pindex->nTx; pindex->nChainSproutValue = pindex->nSproutValue; pindex->nChainSaplingValue = pindex->nSaplingValue; - if (fZindex) { - pindex->nChainNotarizations = pindex->nNotarizations; - pindex->nChainShieldedTx = pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->nShieldedPayments; - pindex->nChainShieldingTx = pindex->nShieldingTx; - pindex->nChainShieldingPayments = pindex->nShieldingPayments; - pindex->nChainDeshieldingTx = pindex->nDeshieldingTx; - pindex->nChainDeshieldingPayments = pindex->nDeshieldingPayments; - pindex->nChainFullyShieldedPayments = pindex->nFullyShieldedPayments; - } } } // Construct in-memory chain of branch IDs. diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 8c355981b..4f7374767 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1944,177 +1944,6 @@ inline CBlockIndex* LookupBlockIndex(const uint256& hash) #define ORG(X) (X - blockcount - nNotarizationsDiff) -UniValue getchaintxstats(const UniValue& params, bool fHelp) -{ - if (fHelp || params.size() > 2) - throw runtime_error( - "getchaintxstats\n" - "\nCompute statistics about the total number and rate of transactions in the chain.\n" - "\nThis RPC will return extra data about shielded transactions, payments and notarizations if the zindex is enabled .\n" - "\nArguments:\n" - "1. nblocks (numeric, optional) Number of blocks in averaging window.\n" - "2. blockhash (string, optional) The hash of the block which ends the window.\n" - "\nResult:\n" - "{\n" - " \"time\": xxxxx, (numeric) The timestamp for the final block in the window in UNIX format.\n" - " \"notarizations\": xxxxx, (optional, numeric) The number of notarizations in the chain.\n" - " \"txcount\": xxxxx, (numeric) The total number of transactions in the chain up to that point.\n" - " \"window_final_block_hash\": \"...\", (string) The hash of the final block in the window.\n" - " \"window_block_count\": xxxxx, (numeric) Size of the window in number of blocks.\n" - " \"window_notarizations\": xxxxx, (optional, numeric) Number of notarization transactions in window.\n" - " \"window_tx_count\": xxxxx, (numeric) The number of transactions in the window. Only returned if \"window_block_count\" is > 0.\n" - " \"window_interval\": xxxxx, (numeric) The elapsed time in the window in seconds. Only returned if \"window_block_count\" is > 0.\n" - " \"txrate\": x.xx, (numeric) The average rate of transactions per second in the window. Only returned if \"window_interval\" is > 0.\n" - "}\n" - "\nExamples:\n" - + HelpExampleCli("getchaintxstats", "") - + HelpExampleRpc("getchaintxstats", "2016") - ); - - const CBlockIndex* pindex; - int blockcount = 30 * 24 * 60 * 60 / Params().GetConsensus().nPowTargetSpacing; // By default: 1 month - - if (params[1].isNull()) { - LOCK(cs_main); - pindex = chainActive.Tip(); - } else { - uint256 hash(ParseHashV(params[1], "blockhash")); - LOCK(cs_main); - pindex = LookupBlockIndex(hash); - if (!pindex) { - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found"); - } - if (!chainActive.Contains(pindex)) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "Block is not in main chain"); - } - } - - assert(pindex != nullptr); - - if (params[0].isNull()) { - blockcount = std::max(0, std::min(blockcount, pindex->GetHeight() - 1)); - } else { - blockcount = params[0].get_int(); - - if (blockcount < 0 || (blockcount > 0 && blockcount >= pindex->GetHeight())) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid block count: should be between 0 and the block's height - 1"); - } - } - - const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); - int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); - int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; - - UniValue ret(UniValue::VOBJ); - ret.pushKV("time", (int64_t)pindex->nTime); - ret.pushKV("txcount", (int64_t)pindex->nChainTx); - - if (fZindex) { - ret.pushKV("notarizations", (int64_t)pindex->nChainNotarizations); - ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx); - ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx); - ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx); - ret.pushKV("shielding_txcount", (int64_t)pindex->nChainShieldingTx); - ret.pushKV("shielded_payments", (int64_t)pindex->nChainShieldedPayments); - ret.pushKV("fully_shielded_payments",(int64_t)pindex->nChainFullyShieldedPayments); - ret.pushKV("deshielding_payments", (int64_t)pindex->nChainDeshieldingPayments); - ret.pushKV("shielding_payments", (int64_t)pindex->nChainShieldingPayments); - } - - ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); - ret.pushKV("window_final_block_height", pindex->GetHeight()); - ret.pushKV("window_block_count", blockcount); - - if (blockcount > 0) { - int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments; - int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx; - int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx; - int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx; - int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx; - int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments; - int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments; - int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments; - int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments; - unsigned int nNotarizationsDiff = pindex->nChainNotarizations - pindexPast->nChainNotarizations; - - ret.pushKV("window_interval", nTimeDiff); - ret.pushKV("window_txcount", nTxDiff); - ret.pushKV("window_payments", nPaymentsDiff); - ret.pushKV("window_notarizations", (int) nNotarizationsDiff); - - if (nTimeDiff > 0) { - ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); - if (fZindex) { - ret.pushKV("notarization_txrate", ((double)nNotarizationsDiff) / nTimeDiff); - ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff); - ret.pushKV("shielding_txrate", ((double)nShieldingTxDiff) / nTimeDiff); - ret.pushKV("deshielding_txrate", ((double)nDeshieldingTxDiff) / nTimeDiff); - ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff); - ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff); - ret.pushKV("shielded_paymentrate", ((double)nShieldedPaymentsDiff) / nTimeDiff); - ret.pushKV("fully_shielded_paymentrate", ((double)nFullyShieldedPaymentsDiff) / nTimeDiff); - } - } - - if (fZindex) { - ret.pushKV("window_fully_shielded_payments", nFullyShieldedPaymentsDiff); - ret.pushKV("window_shielded_payments", nShieldedPaymentsDiff); - ret.pushKV("window_shielding_payments", nShieldingPaymentsDiff); - ret.pushKV("window_deshielding_payments", nDeshieldingPaymentsDiff); - ret.pushKV("window_shielded_txcount", nShieldedTxDiff); - - if (nTxDiff > 0) { - ret.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / nTxDiff); - ret.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nTxDiff); - ret.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nTxDiff); - ret.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nTxDiff); - } - if (nPaymentsDiff > 0) { - ret.pushKV("shielded_payments_percent", ((double)nShieldedPaymentsDiff) / nPaymentsDiff); - ret.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nPaymentsDiff); - ret.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nPaymentsDiff); - ret.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nPaymentsDiff); - } - - // Shielded-only statistics - UniValue shielded(UniValue::VOBJ); - if (nShieldedTxDiff > 0) { - shielded.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / nShieldedTxDiff ); - shielded.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / nShieldedTxDiff ); - shielded.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / nShieldedTxDiff ); - } - if (nShieldedPaymentsDiff > 0) { - shielded.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / nShieldedPaymentsDiff ); - shielded.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / nShieldedPaymentsDiff ); - shielded.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / nShieldedPaymentsDiff ); - } - if(nShieldedTxDiff+nShieldedPaymentsDiff > 0) - ret.pushKV("shielded", shielded); - - // Organic tx stats = Raw - Coinbase - DPoW - if (nTxDiff > 0) { - UniValue organic(UniValue::VOBJ); - - organic.pushKV("shielded_tx_percent", ((double)nShieldedTxDiff) / ORG(nTxDiff)); - organic.pushKV("fully_shielded_tx_percent", ((double)nFullyShieldedTxDiff) / ORG(nTxDiff)); - organic.pushKV("shielding_tx_percent", ((double)nShieldingTxDiff) / ORG(nTxDiff)); - organic.pushKV("deshielding_tx_percent", ((double)nDeshieldingTxDiff) / ORG(nTxDiff)); - organic.pushKV("shielded_payments_percent", ((double)nShieldedPaymentsDiff) / ORG(nPaymentsDiff)); - organic.pushKV("fully_shielded_payments_percent", ((double)nFullyShieldedPaymentsDiff) / ORG(nPaymentsDiff)); - organic.pushKV("shielding_payments_percent", ((double)nShieldingPaymentsDiff) / ORG(nPaymentsDiff)); - organic.pushKV("deshielding_payments_percent", ((double)nDeshieldingPaymentsDiff) / ORG(nPaymentsDiff)); - organic.pushKV("paymentrate", ((double)ORG(nPaymentsDiff)) / nTimeDiff); - organic.pushKV("txrate", ((double)ORG(nTxDiff)) / nTimeDiff); - organic.pushKV("txcount", (int) ORG(nTxDiff)); - organic.pushKV("payments", (int) ORG(nPaymentsDiff)); - ret.pushKV("organic", organic); - } - } - } - - return ret; -} - UniValue invalidateblock(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 1) @@ -2202,7 +2031,6 @@ static const CRPCCommand commands[] = { "blockchain", "getblockhash", &getblockhash, true }, { "blockchain", "getblockheader", &getblockheader, true }, { "blockchain", "getchaintips", &getchaintips, true }, - { "blockchain", "getchaintxstats", &getchaintxstats, true }, { "blockchain", "getdifficulty", &getdifficulty, true }, { "blockchain", "getmempoolinfo", &getmempoolinfo, true }, { "blockchain", "getrawmempool", &getrawmempool, true }, diff --git a/src/txdb.cpp b/src/txdb.cpp index a462061a1..a2ae3fb21 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -716,14 +716,6 @@ bool CBlockTreeDB::LoadBlockIndexGuts() pindexNew->nStatus = diskindex.nStatus; pindexNew->nCachedBranchId = diskindex.nCachedBranchId; pindexNew->nTx = diskindex.nTx; - pindexNew->nShieldedTx = diskindex.nShieldedTx; - pindexNew->nShieldedPayments = diskindex.nShieldedPayments; - pindexNew->nShieldingTx = diskindex.nShieldingTx; - pindexNew->nShieldingPayments = diskindex.nShieldingPayments; - pindexNew->nDeshieldingTx = diskindex.nDeshieldingTx; - pindexNew->nDeshieldingPayments = diskindex.nDeshieldingPayments; - pindexNew->nFullyShieldedTx = diskindex.nFullyShieldedTx; - pindexNew->nFullyShieldedPayments = diskindex.nFullyShieldedPayments; pindexNew->nSproutValue = diskindex.nSproutValue; pindexNew->nSaplingValue = diskindex.nSaplingValue; pindexNew->segid = diskindex.segid; From 36cb2d26c2289fae2fb374b7bd493d58e5b6b238 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 26 Oct 2019 06:50:56 -0400 Subject: [PATCH 070/339] fixes --- src/init.cpp | 4 ++++ src/main.cpp | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index f90e0d6f8..b96324981 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -164,6 +164,7 @@ std::atomic fRequestShutdown(false); void StartShutdown() { + fprintf(stderr,"fRequestShudown=true\n"); fRequestShutdown = true; } bool ShutdownRequested() @@ -314,11 +315,13 @@ void Shutdown() */ void HandleSIGTERM(int) { + fprintf(stderr,"%s\n",__FUNCTION__); fRequestShutdown = true; } void HandleSIGHUP(int) { + fprintf(stderr,"%s\n",__FUNCTION__); fReopenDebugLog = true; } @@ -1806,6 +1809,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (!fLoaded) { // first suggest a reindex if (!fReset) { + fprintf(stderr,"%s error in hd data\n", __FUNCTION__); bool fRet = uiInterface.ThreadSafeMessageBox( strLoadError + ".\n\n" + _("error in HDD data, might just need to update to latest, if that doesnt work, then you need to resync"), "", CClientUIInterface::MSG_ERROR | CClientUIInterface::BTN_ABORT); diff --git a/src/main.cpp b/src/main.cpp index 88f9f1de4..2dc174380 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4819,8 +4819,11 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl while (!queue.empty()) { CBlockIndex *pindex = queue.front(); queue.pop_front(); + pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; if (pindex->pprev) { + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; } else { From 7b8fa48dbadde7ab948debaf1d9035729c9b37f6 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 26 Oct 2019 07:52:24 -0400 Subject: [PATCH 071/339] meh --- src/bitcoind.cpp | 4 ++-- src/init.cpp | 7 +++---- src/main.cpp | 3 +++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index c327def68..ea82a9861 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -72,7 +72,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); - fprintf(stderr,"%s: earlytxid=%s, tx_height=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex(), tx_height(KOMODO_EARLYTXID) ); + //fprintf(stderr,"%s: earlytxid=%s, tx_height=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex(), tx_height(KOMODO_EARLYTXID) ); height=tx_height(KOMODO_EARLYTXID); // Tell the main threads to shutdown. @@ -87,7 +87,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) } */ fprintf(stderr,"%s: komodo_currentheight=%d\n", __FUNCTION__, komodo_currentheight() ); - fprintf(stderr,"%s: earlytx height=%d, ASSETCHAINS_CBOPRET=%li\n", __FUNCTION__, height, ASSETCHAINS_CBOPRET); + //fprintf(stderr,"%s: earlytx height=%d, ASSETCHAINS_CBOPRET=%li\n", __FUNCTION__, height, ASSETCHAINS_CBOPRET); /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) { diff --git a/src/init.cpp b/src/init.cpp index b96324981..0f17098e3 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -835,14 +835,13 @@ static void ZC_LoadParams( } else { fprintf(stderr,"Found sapling params in PWD\n"); } - } else { - fprintf(stderr,"Found sapling params in /usr/share/hush\n"); - } + } else { + fprintf(stderr,"Found sapling params in /usr/share/hush\n"); + } } else { fprintf(stderr,"Found sapling params in %s\n", ZC_GetParamsDir().string().c_str() ); } - //LogPrintf("Loading verifying key from %s\n", vk_path.string().c_str()); gettimeofday(&tv_start, 0); diff --git a/src/main.cpp b/src/main.cpp index 2dc174380..be0da83fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2089,6 +2089,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } } } + //SyncWithWallets(tx,NULL); return true; } @@ -4358,6 +4359,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * komodo_broadcast(pblock,4);*/ if ( KOMODO_NSPV_FULLNODE ) { + fprintf(stderr,"%s: KOMODO_NSPV_FULLNODE\n", __FUNCTION__); if ( ASSETCHAINS_CBOPRET != 0 ) komodo_pricesupdate(pindexNew->GetHeight(),pblock); if ( ASSETCHAINS_SAPLING <= 0 && pindexNew->nTime > KOMODO_SAPLING_ACTIVATION - 24*3600 ) @@ -4373,6 +4375,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * fprintf(stderr, "snapshot completed in: %d seconds\n", (int32_t)(time(NULL)-start)); } } + fprintf(stderr,"%s: returning true\n", __FUNCTION__); return true; } From 2c42908ae19d7958938083310d10bac9ff299c9c Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sat, 26 Oct 2019 09:29:34 -0400 Subject: [PATCH 072/339] Rewrite sapling param detection to be less horrific --- src/init.cpp | 104 +++++++++++++++++++++++++++++---------------------- 1 file changed, 60 insertions(+), 44 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 0f17098e3..7f78a4ee9 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -785,6 +785,10 @@ void NoParamsShutdown(void) return; } +bool files_exist(boost::filesystem::path file1, boost::filesystem::path file2) { + return boost::filesystem::exists(file1) && boost::filesystem::exists(file2); +} + static void ZC_LoadParams( const CChainParams& chainparams ) @@ -792,56 +796,68 @@ static void ZC_LoadParams( namespace fs = boost::filesystem; struct timeval tv_start, tv_end; float elapsed; + bool found = false; - // First check the per-user installation location - boost::filesystem::path sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; - boost::filesystem::path sapling_output = ZC_GetParamsDir() / "sapling-output.params"; + // Some people have previous partial downloads of zcash params, so check that last + // Sapling Param Search path: . /usr/share/hush .. ../hush3 ~/.zcash-params - // Debian packages install globally into /usr/share/hush - if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - boost::filesystem::path sapling_spend = fs::path("/usr/share/hush") / "sapling-spend.params"; - boost::filesystem::path sapling_output = fs::path("/usr/share/hush") / "sapling-output.params"; + // PWD + boost::filesystem::path sapling_spend = "sapling-spend.params"; + boost::filesystem::path sapling_output = "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in .\n"); + found = true; + } - // NOTE: This means that sapling params do not need to be installed, just findable - if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not globally installed, use local copies if they exist - // First check ., then .., then ../hush3 - sapling_spend = "sapling-spend.params"; - sapling_output = "sapling-output.params"; - - // This is the most common case, for binaries distributed with params - if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not in PWD, try .. - sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; - sapling_output = boost::filesystem::path("..") / "sapling-output.params"; - - // Try .. in case this binary has no params - if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // Not in .., try ../hush3 (the case of SilentDragon installed in same directory as hush3) - sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; - sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; - - // This will catch the case of any external software (i.e. GUI wallets) needing params and installed in same dir as hush3.git - if (!( boost::filesystem::exists(sapling_spend) && boost::filesystem::exists(sapling_output))) { - // No Sapling params, at least we tried - NoParamsShutdown(); - return; - } else { - fprintf(stderr,"Found sapling params in ../hush3\n"); - } - } else { - fprintf(stderr,"Found sapling params in ..\n"); - } - } else { - fprintf(stderr,"Found sapling params in PWD\n"); - } - } else { + if (!found) { + // Debian global install dir: /usr/share/hush + sapling_spend = fs::path("/usr/share/hush") / "sapling-spend.params"; + sapling_output = fs::path("/usr/share/hush") / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { fprintf(stderr,"Found sapling params in /usr/share/hush\n"); - } - } else { - fprintf(stderr,"Found sapling params in %s\n", ZC_GetParamsDir().string().c_str() ); + found=true; + } } + if (!found) { + // Try .. + sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; + sapling_output = boost::filesystem::path("..") / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in ..\n"); + found = true; + } + } + + if (!found) { + // This will catch the case of any external software (i.e. GUI wallets) needing params and installed in same dir as hush3.git + sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; + sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in ../hush3\n"); + found = true; + } + } + + if (!found) { + // The traditional place Zcash params are stored, should not hit this case in normal circumstances, + // as Hush packages sapling params now + sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; + sapling_output = ZC_GetParamsDir() / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in ~/.zcash\n"); + found = true; + } + } + + if (!found) { + // No Sapling params, at least we tried + NoParamsShutdown(); + return; + } + + + //LogPrintf("Loading verifying key from %s\n", vk_path.string().c_str()); gettimeofday(&tv_start, 0); From 8041d38c6fbf148f342f7e8a9ed77b352cf35cc4 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Oct 2019 05:47:25 -0400 Subject: [PATCH 073/339] meh --- src/init.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 7f78a4ee9..6ca43baad 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -97,6 +97,9 @@ using namespace std; extern void ThreadSendAlert(); extern bool komodo_dailysnapshot(int32_t height); extern int32_t KOMODO_LOADINGBLOCKS; +extern char ASSETCHAINS_SYMBOL[]; +extern int32_t KOMODO_SNAPSHOT_INTERVAL; + extern void komodo_init(int32_t height); ZCJoinSplit* pzcashParams = NULL; @@ -164,7 +167,7 @@ std::atomic fRequestShutdown(false); void StartShutdown() { - fprintf(stderr,"fRequestShudown=true\n"); + fprintf(stderr,"%s: fRequestShudown=true\n", __FUNCTION__); fRequestShutdown = true; } bool ShutdownRequested() @@ -774,6 +777,7 @@ bool InitSanityCheck(void) void NoParamsShutdown(void) { //TODO: error message incorrect about location + fprintf(stderr,"%s: no params!\n", __FUNCTION__); LogPrintf("Could not find Sapling params anywhere! Exiting..."); uiInterface.ThreadSafeMessageBox(strprintf( _("Cannot find the Sapling network parameters in the following directory:\n" @@ -1325,7 +1329,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ECC_Start(); globalVerifyHandle.reset(new ECCVerifyHandle()); - /* // set the hash algorithm to use for this chain // Again likely better solution here, than using long IF ELSE. extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1; @@ -1341,7 +1344,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // initialize VerusHashV2 CBlockHeader::SetVerusHashV2(); } - */ fprintf(stderr,"%s tik10\n", __FUNCTION__); // Sanity check @@ -2082,6 +2084,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) MilliSleep(10); } + fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); + // ********************************************************* Step 11: start node fprintf(stderr,"Checking disk space...\n"); @@ -2102,6 +2106,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("mapAddressBook.size() = %u\n", pwalletMain ? pwalletMain->mapAddressBook.size() : 0); #endif + fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); // Start the thread that notifies listeners of transactions that have been // recently added to the mempool. threadGroup.create_thread(boost::bind(&TraceThread, "txnotify", &ThreadNotifyRecentlyAdded)); @@ -2115,7 +2120,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #ifdef ENABLE_MINING // Generate coins in the background #ifdef ENABLE_WALLET - VERUS_MINTBLOCKS = GetBoolArg("-mint", false); if (pwalletMain || !GetArg("-mineraddress", "").empty()) GenerateBitcoins(GetBoolArg("-gen", false), pwalletMain, GetArg("-genproclimit", -1)); @@ -2129,6 +2133,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) SetRPCWarmupFinished(); fprintf(stderr,"RPC warmump finished\n"); uiInterface.InitMessage(_("Done loading!")); + fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); #ifdef ENABLE_WALLET if (pwalletMain) { @@ -2145,6 +2150,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // SENDALERT threadGroup.create_thread(boost::bind(ThreadSendAlert)); - fprintf(stderr,"%s end\n", __FUNCTION__); + fprintf(stderr,"%s end fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); return !fRequestShutdown; } From 1274fe5b1d4ec998415c1a60264feeff029c71f0 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Oct 2019 07:11:21 -0400 Subject: [PATCH 074/339] Fix WaitForShutdown, which was broken by earlytxid stuff --- src/bitcoind.cpp | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index ea82a9861..5cd8f795a 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -71,32 +71,9 @@ CBlockIndex *komodo_chainactive(int32_t height); void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; - fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); + //fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); //fprintf(stderr,"%s: earlytxid=%s, tx_height=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex(), tx_height(KOMODO_EARLYTXID) ); - - height=tx_height(KOMODO_EARLYTXID); - // Tell the main threads to shutdown. - StartShutdown(); - /* - if (komodo_currentheight()>KOMODO_EARLYTXID_HEIGHT && KOMODO_EARLYTXID!=zeroid && ((height=tx_height(KOMODO_EARLYTXID))==0 || height>KOMODO_EARLYTXID_HEIGHT)) - { - fprintf(stderr,"error: earlytx must be before block height %d or tx does not exist\n",KOMODO_EARLYTXID_HEIGHT); - StartShutdown(); - } else { - fprintf(stderr,"%s: Not true\n", __FUNCTION__); - } - */ - fprintf(stderr,"%s: komodo_currentheight=%d\n", __FUNCTION__, komodo_currentheight() ); - //fprintf(stderr,"%s: earlytx height=%d, ASSETCHAINS_CBOPRET=%li\n", __FUNCTION__, height, ASSETCHAINS_CBOPRET); - - /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) - { - if ( pindex->nTime > ADAPTIVEPOW_CHANGETO_DEFAULTON ) - { - ASSETCHAINS_ADAPTIVEPOW = 1; - fprintf(stderr,"default activate adaptivepow\n"); - } else fprintf(stderr,"height1 time %u vs %u\n",pindex->nTime,ADAPTIVEPOW_CHANGETO_DEFAULTON); - } //else fprintf(stderr,"cant find height 1\n");*/ + //fprintf(stderr,"%s: komodo_currentheight=%d\n", __FUNCTION__, komodo_currentheight() ); if ( ASSETCHAINS_CBOPRET != 0 ) { komodo_pricesinit(); From 4c0ac5734a97482c720b9e68ad22a5df05f8c1fa Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Oct 2019 10:18:06 -0400 Subject: [PATCH 075/339] Unbreak things by undoing a line accidentally deleted from LoadBlockIndex, derp --- src/bitcoind.cpp | 14 ++++++------- src/init.cpp | 54 +++++++++++++++++++++++++----------------------- src/main.cpp | 22 +++++++++++++------- 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 5cd8f795a..ac4b661cf 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -81,7 +81,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) while (!fShutdown) { - fprintf(stderr,"call passport iteration\n"); + //fprintf(stderr,"call passport iteration\n"); if ( ASSETCHAINS_SYMBOL[0] == 0 ) { if ( KOMODO_NSPV_FULLNODE ) @@ -108,7 +108,7 @@ void WaitForShutdown(boost::thread_group* threadGroup) } fShutdown = ShutdownRequested(); } - fprintf(stderr,"%s: fShutdown=%d\n", __FUNCTION__, fShutdown); + //fprintf(stderr,"%s: fShutdown=%d\n", __FUNCTION__, fShutdown); if (threadGroup) { @@ -135,7 +135,7 @@ bool AppInit(int argc, char* argv[]) bool fRet = false; - fprintf(stderr, "%s start, argc=%d\n", __FUNCTION__, argc); + //fprintf(stderr, "%s start, argc=%d\n", __FUNCTION__, argc); // // Parameters // @@ -251,9 +251,9 @@ bool AppInit(int argc, char* argv[]) #endif SoftSetBoolArg("-server", true); - fprintf(stderr,"%s: Running AppInit2()\n", __FUNCTION__); + //fprintf(stderr,"%s: Running AppInit2()\n", __FUNCTION__); fRet = AppInit2(threadGroup, scheduler); - fprintf(stderr,"%s: Finished AppInit2(), fRet=%d\n", __FUNCTION__, fRet); + //fprintf(stderr,"%s: Finished AppInit2(), fRet=%d\n", __FUNCTION__, fRet); } catch (const std::exception& e) { PrintExceptionContinue(&e, "AppInit()"); } catch (...) { @@ -261,13 +261,13 @@ bool AppInit(int argc, char* argv[]) } if (!fRet) { - fprintf(stderr,"%s: Interrupting threadGroup\n", __FUNCTION__); + //fprintf(stderr,"%s: Interrupting threadGroup\n", __FUNCTION__); Interrupt(threadGroup); // threadGroup.join_all(); was left out intentionally here, because we didn't re-test all of // the startup-failure cases to make sure they don't result in a hang due to some // thread-blocking-waiting-for-another-thread-during-startup case } else { - fprintf(stderr,"%s: Waiting for Shutdown\n", __FUNCTION__); + //fprintf(stderr,"%s: Waiting for Shutdown\n", __FUNCTION__); WaitForShutdown(&threadGroup); } Shutdown(); diff --git a/src/init.cpp b/src/init.cpp index 6ca43baad..823867585 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -958,11 +958,11 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError("Error: -sysperms is not allowed in combination with enabled wallet functionality"); #endif } else { - fprintf(stderr,"%s setting umask\n", __FUNCTION__); + //fprintf(stderr,"%s setting umask\n", __FUNCTION__); umask(077); } - fprintf(stderr,"%s tik1\n", __FUNCTION__); + //fprintf(stderr,"%s tik1\n", __FUNCTION__); // Clean shutdown on SIGTERM struct sigaction sa; sa.sa_handler = HandleSIGTERM; @@ -1010,7 +1010,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError(_("RPC method z_mergetoaddress requires -experimentalfeatures.")); } } - fprintf(stderr,"%s tik2\n", __FUNCTION__); + //fprintf(stderr,"%s tik2\n", __FUNCTION__); // Set this early so that parameter interactions go to console fPrintToConsole = GetBoolArg("-printtoconsole", false); @@ -1032,7 +1032,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__); } - fprintf(stderr,"%s tik3\n", __FUNCTION__); + //fprintf(stderr,"%s tik3\n", __FUNCTION__); if (mapArgs.count("-connect") && mapMultiArgs["-connect"].size() > 0) { // when only connecting to trusted nodes, do not seed via DNS, or listen by default if (SoftSetBoolArg("-dnsseed", false)) @@ -1075,7 +1075,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (SoftSetBoolArg("-rescan", true)) LogPrintf("%s: parameter interaction: -zapwallettxes= -> setting -rescan=1\n", __func__); } - fprintf(stderr,"%s tik4\n", __FUNCTION__); + //fprintf(stderr,"%s tik4\n", __FUNCTION__); // Make sure enough file descriptors are available int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1); @@ -1088,7 +1088,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError(_("Not enough file descriptors available.")); if (nFD - MIN_CORE_FILEDESCRIPTORS < nMaxConnections) nMaxConnections = nFD - MIN_CORE_FILEDESCRIPTORS; - fprintf(stderr,"nMaxConnections %d\n",nMaxConnections); + //fprintf(stderr,"nMaxConnections %d\n",nMaxConnections); // if using block pruning, then disable txindex // also disable the wallet (for now, until SPV support is implemented in wallet) if (GetArg("-prune", 0)) { @@ -1121,7 +1121,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - fprintf(stderr,"%s tik5\n", __FUNCTION__); + //fprintf(stderr,"%s tik5\n", __FUNCTION__); // Check for -debugnet if (GetBoolArg("-debugnet", false)) InitWarning(_("Warning: Unsupported argument -debugnet ignored, use -debug=net.")); @@ -1153,7 +1153,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) nScriptCheckThreads = MAX_SCRIPTCHECK_THREADS; fServer = GetBoolArg("-server", false); - fprintf(stderr,"%s tik6\n", __FUNCTION__); + //fprintf(stderr,"%s tik6\n", __FUNCTION__); // block pruning; get the amount of disk space (in MB) to allot for block & undo files int64_t nSignedPruneTarget = GetArg("-prune", 0) * 1024 * 1024; @@ -1241,7 +1241,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) expiryDelta = GetArg("-txexpirydelta", DEFAULT_TX_EXPIRY_DELTA); bSpendZeroConfChange = GetBoolArg("-spendzeroconfchange", true); fSendFreeTransactions = GetBoolArg("-sendfreetransactions", false); - fprintf(stderr,"%s tik7\n", __FUNCTION__); + //fprintf(stderr,"%s tik7\n", __FUNCTION__); std::string strWalletFile = GetArg("-wallet", "wallet.dat"); #endif // ENABLE_WALLET @@ -1260,7 +1260,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) nLocalServices |= NODE_BLOOM; } nMaxTipAge = GetArg("-maxtipage", DEFAULT_MAX_TIP_AGE); - fprintf(stderr,"%s tik8\n", __FUNCTION__); + //fprintf(stderr,"%s tik8\n", __FUNCTION__); #ifdef ENABLE_MINING if (mapArgs.count("-mineraddress")) { @@ -1283,7 +1283,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - fprintf(stderr,"%s tik9\n", __FUNCTION__); + //fprintf(stderr,"%s tik9\n", __FUNCTION__); if (!mapMultiArgs["-nuparams"].empty()) { // Allow overriding network upgrade parameters for testing if (Params().NetworkIDString() != "regtest") { @@ -1329,6 +1329,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ECC_Start(); globalVerifyHandle.reset(new ECCVerifyHandle()); + /* // set the hash algorithm to use for this chain // Again likely better solution here, than using long IF ELSE. extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1; @@ -1344,8 +1345,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // initialize VerusHashV2 CBlockHeader::SetVerusHashV2(); } + */ - fprintf(stderr,"%s tik10\n", __FUNCTION__); + //fprintf(stderr,"%s tik10\n", __FUNCTION__); // Sanity check if (!InitSanityCheck()) return InitError(_("Initialization sanity check failed. Please check for insanity. Hush is shutting down!")); @@ -1362,7 +1364,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (file) fclose(file); - fprintf(stderr,"%s tik11\n", __FUNCTION__); + //fprintf(stderr,"%s tik11\n", __FUNCTION__); fprintf(stderr,"Attempting to obtain lock %s\n", pathLockFile.string().c_str()); try { static boost::interprocess::file_lock lock(pathLockFile.string().c_str()); @@ -1378,7 +1380,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (GetBoolArg("-shrinkdebugfile", !fDebug)) ShrinkDebugFile(); - fprintf(stderr,"%s tik12\n", __FUNCTION__); + //fprintf(stderr,"%s tik12\n", __FUNCTION__); LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); LogPrintf("Hush version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); @@ -1403,7 +1405,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) threadGroup.create_thread(&ThreadScriptCheck); } - fprintf(stderr,"%s tik13\n", __FUNCTION__); + //fprintf(stderr,"%s tik13\n", __FUNCTION__); // Start the lightweight task scheduler thread CScheduler::Function serviceLoop = boost::bind(&CScheduler::serviceQueue, &scheduler); @@ -1411,7 +1413,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) // Count uptime MarkStartTime(); - fprintf(stderr,"%s tik14\n", __FUNCTION__); + //fprintf(stderr,"%s tik14\n", __FUNCTION__); if ((chainparams.NetworkIDString() != "regtest") && GetBoolArg("-showmetrics", 0) && @@ -1421,7 +1423,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) threadGroup.create_thread(&ThreadShowMetricsScreen); } - fprintf(stderr,"%s tik15\n", __FUNCTION__); + //fprintf(stderr,"%s tik15\n", __FUNCTION__); // These must be disabled for now, they are buggy and we probably don't // want any of libsnark's profiling in production anyway. libsnark::inhibit_profiling_info = true; @@ -1443,7 +1445,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) if (!AppInitServers(threadGroup)) return InitError(_("Unable to start HTTP server. See debug log for details.")); } - fprintf(stderr,"%s tik16\n", __FUNCTION__); + //fprintf(stderr,"%s tik16\n", __FUNCTION__); int64_t nStart; @@ -1468,7 +1470,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) #endif // ENABLE_WALLET // ********************************************************* Step 6: network initialization - fprintf(stderr,"%s tik17\n", __FUNCTION__); + //fprintf(stderr,"%s tik17\n", __FUNCTION__); RegisterNodeSignals(GetNodeSignals()); // sanitize comments per BIP-0014, format user agent and check total size @@ -1484,7 +1486,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return InitError(strprintf("Total length of network version string %i exceeds maximum of %i characters. Reduce the number and/or size of uacomments.", strSubVersion.size(), MAX_SUBVERSION_LENGTH)); } - fprintf(stderr,"%s tik18\n", __FUNCTION__); + //fprintf(stderr,"%s tik18\n", __FUNCTION__); if (mapArgs.count("-onlynet")) { std::set nets; @@ -1501,7 +1503,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - fprintf(stderr,"%s tik19\n", __FUNCTION__); + //fprintf(stderr,"%s tik19\n", __FUNCTION__); if (mapArgs.count("-whitelist")) { BOOST_FOREACH(const std::string& net, mapMultiArgs["-whitelist"]) { CSubNet subnet(net); @@ -1527,7 +1529,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) SetNameProxy(addrProxy); SetLimited(NET_TOR, false); // by default, -proxy sets onion as reachable, unless -noonion later } - fprintf(stderr,"%s tik20\n", __FUNCTION__); + //fprintf(stderr,"%s tik20\n", __FUNCTION__); // -onion can be used to set only a proxy for .onion, or override normal proxy for .onion addresses // -noonion (or -onion=0) disables connecting to .onion entirely @@ -1550,7 +1552,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) fDiscover = GetBoolArg("-discover", true); fNameLookup = GetBoolArg("-dns", true); - fprintf(stderr,"%s tik22\n", __FUNCTION__); + //fprintf(stderr,"%s tik22\n", __FUNCTION__); bool fBound = false; if (fListen) { if (mapArgs.count("-bind") || mapArgs.count("-whitebind")) { @@ -1588,7 +1590,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) } } - fprintf(stderr,"%s tik23\n", __FUNCTION__); + //fprintf(stderr,"%s tik23\n", __FUNCTION__); BOOST_FOREACH(const std::string& strDest, mapMultiArgs["-seednode"]) AddOneShot(strDest); @@ -1629,7 +1631,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) return !fRequestShutdown; } // ********************************************************* Step 7: load block chain - fprintf(stderr,"%s tik24\n", __FUNCTION__); + //fprintf(stderr,"%s tik24\n", __FUNCTION__); fReindex = GetBoolArg("-reindex", false); @@ -1861,7 +1863,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) mempool.ReadFeeEstimates(est_filein); fFeeEstimatesInitialized = true; - fprintf(stderr,"%s tik25\n", __FUNCTION__); + //fprintf(stderr,"%s tik25\n", __FUNCTION__); // ********************************************************* Step 8: load wallet #ifdef ENABLE_WALLET diff --git a/src/main.cpp b/src/main.cpp index be0da83fe..462eb113b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4262,7 +4262,7 @@ static int64_t nTimePostConnect = 0; */ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock *pblock) { - fprintf(stderr, "%s: Start\n", __FUNCTION__); + //fprintf(stderr, "%s: Start\n", __FUNCTION__); assert(pindexNew->pprev == chainActive.Tip()); // Read block from disk. int64_t nTime1 = GetTimeMicros(); @@ -4352,14 +4352,14 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * if ( KOMODO_LONGESTCHAIN != 0 && (pindexNew->GetHeight() == KOMODO_LONGESTCHAIN || pindexNew->GetHeight() == KOMODO_LONGESTCHAIN+1) ) KOMODO_INSYNC = (int32_t)pindexNew->GetHeight(); else KOMODO_INSYNC = 0; - fprintf(stderr,"connect.%d insync.%d ASSETCHAINS_SAPLING.%d\n",(int32_t)pindexNew->GetHeight(),KOMODO_INSYNC,ASSETCHAINS_SAPLING); + //fprintf(stderr,"connect.%d insync.%d ASSETCHAINS_SAPLING.%d\n",(int32_t)pindexNew->GetHeight(),KOMODO_INSYNC,ASSETCHAINS_SAPLING); /*if ( KOMODO_INSYNC != 0 ) //ASSETCHAINS_SYMBOL[0] == 0 && komodo_broadcast(pblock,8); else if ( ASSETCHAINS_SYMBOL[0] != 0 ) komodo_broadcast(pblock,4);*/ if ( KOMODO_NSPV_FULLNODE ) { - fprintf(stderr,"%s: KOMODO_NSPV_FULLNODE\n", __FUNCTION__); + //fprintf(stderr,"%s: KOMODO_NSPV_FULLNODE\n", __FUNCTION__); if ( ASSETCHAINS_CBOPRET != 0 ) komodo_pricesupdate(pindexNew->GetHeight(),pblock); if ( ASSETCHAINS_SAPLING <= 0 && pindexNew->nTime > KOMODO_SAPLING_ACTIVATION - 24*3600 ) @@ -4375,7 +4375,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * fprintf(stderr, "snapshot completed in: %d seconds\n", (int32_t)(time(NULL)-start)); } } - fprintf(stderr,"%s: returning true\n", __FUNCTION__); + //fprintf(stderr,"%s: returning true\n", __FUNCTION__); return true; } @@ -4439,12 +4439,16 @@ static CBlockIndex* FindMostWorkChain() { /** Delete all entries in setBlockIndexCandidates that are worse than the current tip. */ static void PruneBlockIndexCandidates() { + fprintf(stderr,"%s:, setBlockIndexCandidates.size=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); // Note that we can't delete the current block itself, as we may need to return to it later in case a // reorganization to a better block fails. std::set::iterator it = setBlockIndexCandidates.begin(); while (it != setBlockIndexCandidates.end() && setBlockIndexCandidates.value_comp()(*it, chainActive.LastTip())) { + fprintf(stderr,"%s:, erasing blockindexcandidate element height=%d, time=%d\n", __FUNCTION__, (*it)->GetHeight(), (*it)->GetBlockTime() ); setBlockIndexCandidates.erase(it++); + //fprintf(stderr,"%s:, erased element\n", __FUNCTION__); } + fprintf(stderr,"%s:, setBlockIndexCandidates.size()=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); // Either the current tip or a successor of it we're working towards is left in setBlockIndexCandidates. assert(!setBlockIndexCandidates.empty()); } @@ -6080,9 +6084,9 @@ bool static LoadBlockIndexDB() vSortedByHeight.push_back(make_pair(pindex->GetHeight(), pindex)); //komodo_pindex_init(pindex,(int32_t)pindex->GetHeight()); } - //fprintf(stderr,"load blockindexDB paired %u\n",(uint32_t)time(NULL)); + fprintf(stderr,"load blockindexDB paired %u\n",(uint32_t)time(NULL)); sort(vSortedByHeight.begin(), vSortedByHeight.end()); - //fprintf(stderr,"load blockindexDB sorted %u\n",(uint32_t)time(NULL)); + fprintf(stderr,"load blockindexDB sorted %u\n",(uint32_t)time(NULL)); BOOST_FOREACH(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight) { CBlockIndex* pindex = item.second; @@ -6092,7 +6096,7 @@ bool static LoadBlockIndexDB() if (pindex->nTx > 0) { if (pindex->pprev) { if (pindex->pprev->nChainTx) { - + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; } else { @@ -6138,7 +6142,7 @@ bool static LoadBlockIndexDB() pindexBestHeader = pindex; //komodo_pindex_init(pindex,(int32_t)pindex->GetHeight()); } - //fprintf(stderr,"load blockindexDB chained %u\n",(uint32_t)time(NULL)); + fprintf(stderr,"load blockindexDB chained %u\n",(uint32_t)time(NULL)); // Load block file info pblocktree->ReadLastBlockFile(nLastBlockFile); @@ -6232,6 +6236,8 @@ bool static LoadBlockIndexDB() // Set hashFinalSproutRoot for the end of best chain it->second->hashFinalSproutRoot = pcoinsTip->GetBestAnchor(SPROUT); + fprintf(stderr,"about to prune block index\n"); + PruneBlockIndexCandidates(); double progress; From 659ebb148dc0cc932d81ef7268e14c34e27255f8 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Oct 2019 16:33:19 -0400 Subject: [PATCH 076/339] Less noise and bump version --- configure.ac | 2 +- src/clientversion.h | 2 +- src/main.cpp | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac index f38ff8c30..6a3e0534f 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) define(_CLIENT_VERSION_MINOR, 2) -define(_CLIENT_VERSION_REVISION, 0) +define(_CLIENT_VERSION_REVISION, 1) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) diff --git a/src/clientversion.h b/src/clientversion.h index 75504940a..2cb13cb2e 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -34,7 +34,7 @@ // Must be kept in sync with configure.ac ! #define CLIENT_VERSION_MAJOR 3 #define CLIENT_VERSION_MINOR 2 -#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_REVISION 1 #define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build diff --git a/src/main.cpp b/src/main.cpp index 462eb113b..4a677204e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4439,16 +4439,16 @@ static CBlockIndex* FindMostWorkChain() { /** Delete all entries in setBlockIndexCandidates that are worse than the current tip. */ static void PruneBlockIndexCandidates() { - fprintf(stderr,"%s:, setBlockIndexCandidates.size=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); + //fprintf(stderr,"%s:, setBlockIndexCandidates.size=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); // Note that we can't delete the current block itself, as we may need to return to it later in case a // reorganization to a better block fails. std::set::iterator it = setBlockIndexCandidates.begin(); while (it != setBlockIndexCandidates.end() && setBlockIndexCandidates.value_comp()(*it, chainActive.LastTip())) { - fprintf(stderr,"%s:, erasing blockindexcandidate element height=%d, time=%d\n", __FUNCTION__, (*it)->GetHeight(), (*it)->GetBlockTime() ); + //fprintf(stderr,"%s:, erasing blockindexcandidate element height=%d, time=%d\n", __FUNCTION__, (*it)->GetHeight(), (*it)->GetBlockTime() ); setBlockIndexCandidates.erase(it++); //fprintf(stderr,"%s:, erased element\n", __FUNCTION__); } - fprintf(stderr,"%s:, setBlockIndexCandidates.size()=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); + //fprintf(stderr,"%s:, setBlockIndexCandidates.size()=%d\n", __FUNCTION__, setBlockIndexCandidates.size() ); // Either the current tip or a successor of it we're working towards is left in setBlockIndexCandidates. assert(!setBlockIndexCandidates.empty()); } @@ -4458,7 +4458,7 @@ static void PruneBlockIndexCandidates() { * pblock is either NULL or a pointer to a CBlock corresponding to pindexMostWork. */ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBlockIndex *pindexMostWork, CBlock *pblock) { - fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); + //fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); AssertLockHeld(cs_main); bool fInvalidFound = false; const CBlockIndex *pindexOldTip = chainActive.Tip(); From 1071e3c7c53de0437aa6b5540f93577e8d9c10b9 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Oct 2019 17:36:19 -0400 Subject: [PATCH 077/339] update manpages --- contrib/devtools/gen-manpages.sh | 6 +++--- doc/man/komodo-cli.1 | 8 ++++---- doc/man/komodo-tx.1 | 8 ++++---- doc/man/komodod.1 | 15 ++++++++++----- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/contrib/devtools/gen-manpages.sh b/contrib/devtools/gen-manpages.sh index b604a4c28..9a5027422 100755 --- a/contrib/devtools/gen-manpages.sh +++ b/contrib/devtools/gen-manpages.sh @@ -11,7 +11,7 @@ KOMODOTX=${KOMODOTX:-$SRCDIR/komodo-tx} [ ! -x $KOMODOD ] && echo "$KOMODOD not found or not executable." && exit 1 # The autodetected version git tag can screw up manpage output a little bit -KMDVER=($($KOMODOCLI --version | head -n1 | awk -F'[ -]' '{ print $5, $6 }')) +KMDVER="v3.2.1" # Create a footer file with copyright content. # This gets autodetected fine for komodod if --version-string is not set, @@ -21,8 +21,8 @@ $KOMODOD --version | sed -n '1!p' >> footer.h2m for cmd in $KOMODOD $KOMODOCLI $KOMODOTX; do cmdname="${cmd##*/}" - help2man -N --version-string=${KMDVER[0]} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd} - sed -i "s/\\\-${KMDVER[1]}//g" ${MANDIR}/${cmdname}.1 + help2man -N --version-string=${KMDVER} --include=footer.h2m -o ${MANDIR}/${cmdname}.1 ${cmd} + #sed -i "s/\\\-${KMDVER[1]}//g" ${MANDIR}/${cmdname}.1 done rm -f footer.h2m diff --git a/doc/man/komodo-cli.1 b/doc/man/komodo-cli.1 index c8e0052ff..8297286ed 100644 --- a/doc/man/komodo-cli.1 +++ b/doc/man/komodo-cli.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODO-CLI "1" "October 2019" "komodo-cli v3.2.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. +.TH KOMODO-CLI "1" "October 2019" "komodo-cli v3.2.1" "User Commands" .SH NAME -komodo-cli \- manual page for komodo-cli v3.2.0 +komodo-cli \- manual page for komodo-cli v3.2.1 .SH DESCRIPTION -Komodo RPC client version v3.2.0\-61917057d\-dirty +Komodo RPC client version v3.2.1\-659ebb148 .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . diff --git a/doc/man/komodo-tx.1 b/doc/man/komodo-tx.1 index 6a98d0604..df0808515 100644 --- a/doc/man/komodo-tx.1 +++ b/doc/man/komodo-tx.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODO-TX "1" "October 2019" "komodo-tx v3.2.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. +.TH KOMODO-TX "1" "October 2019" "komodo-tx v3.2.1" "User Commands" .SH NAME -komodo-tx \- manual page for komodo-tx v3.2.0 +komodo-tx \- manual page for komodo-tx v3.2.1 .SH DESCRIPTION -Hush komodo\-tx utility version v3.2.0\-61917057d\-dirty +Hush komodo\-tx utility version v3.2.1\-659ebb148 .SS "Usage:" .TP komodo\-tx [options] [commands] diff --git a/doc/man/komodod.1 b/doc/man/komodod.1 index 0c298cd46..0caab5b23 100644 --- a/doc/man/komodod.1 +++ b/doc/man/komodod.1 @@ -1,16 +1,16 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.6. -.TH KOMODOD "1" "October 2019" "komodod v3.2.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. +.TH KOMODOD "1" "October 2019" "komodod v3.2.1" "User Commands" .SH NAME -komodod \- manual page for komodod v3.2.0 +komodod \- manual page for komodod v3.2.1 .SH DESCRIPTION -Komodo Daemon version v3.2.0\-61917057d\-dirty +Hush Daemon version v3.2.1\-659ebb148 .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . .SS "Usage:" .TP komodod [options] -Start Komodo Daemon +Start Hush\-flavored Komodo Daemon .SH OPTIONS .HP \-? @@ -122,6 +122,11 @@ by a range of timestamps (default: 0) .IP Maintain a full spent index, used to query the spending txid and input index for an outpoint (default: 0) +.HP +\fB\-zindex\fR +.IP +Maintain extra statistics about shielded transactions and payments +(default: 0) .PP Connection options: .HP From ec3c6eaca76a3ca33ebe9d38e4b88046f228989c Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Oct 2019 07:58:51 -0400 Subject: [PATCH 078/339] Less noise and put back earlytxid stuff which was not the core issue --- src/bitcoind.cpp | 18 +++++++++++++++--- src/init.cpp | 12 ++++-------- src/main.cpp | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index ac4b661cf..6bcd3a70b 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -71,9 +71,21 @@ CBlockIndex *komodo_chainactive(int32_t height); void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; - //fprintf(stderr,"%s: fShutdown=%d, KOMODO_EARLYTXID_HEIGHT=%d\n", __FUNCTION__, fShutdown, KOMODO_EARLYTXID_HEIGHT); - //fprintf(stderr,"%s: earlytxid=%s, tx_height=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex(), tx_height(KOMODO_EARLYTXID) ); - //fprintf(stderr,"%s: komodo_currentheight=%d\n", __FUNCTION__, komodo_currentheight() ); + // Tell the main threads to shutdown. + if (komodo_currentheight()>KOMODO_EARLYTXID_HEIGHT && KOMODO_EARLYTXID!=zeroid && ((height=tx_height(KOMODO_EARLYTXID))==0 || height>KOMODO_EARLYTXID_HEIGHT)) + { + fprintf(stderr,"%s: error: earlytx must be before block height %d or tx does not exist\n",__FUNCTION__, KOMODO_EARLYTXID_HEIGHT); + fprintf(stderr,"%s: earlytxid=%s, tx_height=%d, komodo_currentheight=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex().c_str(), tx_height(KOMODO_EARLYTXID), komodo_currentheight() ); + StartShutdown(); + } + /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) + { + if ( pindex->nTime > ADAPTIVEPOW_CHANGETO_DEFAULTON ) + { + ASSETCHAINS_ADAPTIVEPOW = 1; + fprintf(stderr,"default activate adaptivepow\n"); + } else fprintf(stderr,"height1 time %u vs %u\n",pindex->nTime,ADAPTIVEPOW_CHANGETO_DEFAULTON); + } //else fprintf(stderr,"cant find height 1\n");*/ if ( ASSETCHAINS_CBOPRET != 0 ) { komodo_pricesinit(); diff --git a/src/init.cpp b/src/init.cpp index 823867585..e1cf892c6 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -984,12 +984,12 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) std::set_new_handler(new_handler_terminate); - fprintf(stderr,"%s: set signal handlers\n", __FUNCTION__); + //fprintf(stderr,"%s: set signal handlers\n", __FUNCTION__); // ********************************************************* Step 2: parameter interactions const CChainParams& chainparams = Params(); - fprintf(stderr,"%s: got chain params\n", __FUNCTION__); + //fprintf(stderr,"%s: got chain params\n", __FUNCTION__); // Set this early so that experimental features are correctly enabled/disabled fExperimentalMode = GetBoolArg("-experimentalfeatures", true); @@ -2086,8 +2086,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) MilliSleep(10); } - fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); - // ********************************************************* Step 11: start node fprintf(stderr,"Checking disk space...\n"); @@ -2108,7 +2106,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) LogPrintf("mapAddressBook.size() = %u\n", pwalletMain ? pwalletMain->mapAddressBook.size() : 0); #endif - fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); // Start the thread that notifies listeners of transactions that have been // recently added to the mempool. threadGroup.create_thread(boost::bind(&TraceThread, "txnotify", &ThreadNotifyRecentlyAdded)); @@ -2135,15 +2132,14 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) SetRPCWarmupFinished(); fprintf(stderr,"RPC warmump finished\n"); uiInterface.InitMessage(_("Done loading!")); - fprintf(stderr,"%s fRequestShutdown=%d\n", __FUNCTION__, !!fRequestShutdown); #ifdef ENABLE_WALLET if (pwalletMain) { - fprintf(stderr,"%s reaccepting wallet xtns\n", __FUNCTION__); + fprintf(stderr,"%s Reaccepting wallet xtns\n", __FUNCTION__); // Add wallet transactions that aren't already in a block to mapTransactions pwalletMain->ReacceptWalletTransactions(); - fprintf(stderr,"%s starting wallet flusher thread\n", __FUNCTION__); + fprintf(stderr,"%s Starting wallet flusher thread\n", __FUNCTION__); // Run a thread to flush wallet periodically threadGroup.create_thread(boost::bind(&ThreadFlushWalletDB, boost::ref(pwalletMain->strWalletFile))); } diff --git a/src/main.cpp b/src/main.cpp index 4a677204e..264cb0643 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4594,7 +4594,7 @@ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBloc * that is already loaded (to avoid loading it again from disk). */ bool ActivateBestChain(bool fSkipdpow, CValidationState &state, CBlock *pblock) { - fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); + //fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); CBlockIndex *pindexNewTip = NULL; CBlockIndex *pindexMostWork = NULL; const CChainParams& chainParams = Params(); From 10ccae0d160724623bb3482e8619aec6eb4235b7 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Oct 2019 08:14:19 -0400 Subject: [PATCH 079/339] We do not use earlytxid so no reason to run this code --- src/bitcoind.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index 6bcd3a70b..f8dac619b 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -72,12 +72,14 @@ void WaitForShutdown(boost::thread_group* threadGroup) { int32_t i,height; CBlockIndex *pindex; bool fShutdown = ShutdownRequested(); const uint256 zeroid; // Tell the main threads to shutdown. + /* if (komodo_currentheight()>KOMODO_EARLYTXID_HEIGHT && KOMODO_EARLYTXID!=zeroid && ((height=tx_height(KOMODO_EARLYTXID))==0 || height>KOMODO_EARLYTXID_HEIGHT)) { fprintf(stderr,"%s: error: earlytx must be before block height %d or tx does not exist\n",__FUNCTION__, KOMODO_EARLYTXID_HEIGHT); fprintf(stderr,"%s: earlytxid=%s, tx_height=%d, komodo_currentheight=%d\n", __FUNCTION__, KOMODO_EARLYTXID.GetHex().c_str(), tx_height(KOMODO_EARLYTXID), komodo_currentheight() ); StartShutdown(); } + */ /*if ( ASSETCHAINS_STAKED == 0 && ASSETCHAINS_ADAPTIVEPOW == 0 && (pindex= komodo_chainactive(1)) != 0 ) { if ( pindex->nTime > ADAPTIVEPOW_CHANGETO_DEFAULTON ) From cb47f78d4c7e5d2f78e2ac205dc05fd40a83f731 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Oct 2019 08:19:06 -0400 Subject: [PATCH 080/339] update wallet-utility help --- src/wallet-utility.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wallet-utility.cpp b/src/wallet-utility.cpp index 0b664ecb3..06eee1f2a 100644 --- a/src/wallet-utility.cpp +++ b/src/wallet-utility.cpp @@ -31,7 +31,7 @@ unsigned int MAX_BLOCK_SIGOPS = 20000; void show_help() { std::cout << - "This program outputs Bitcoin addresses and private keys from a wallet.dat file" << std::endl + "This program outputs Hush addresses and private keys from a wallet.dat file" << std::endl << std::endl << "Usage and options: " << std::endl From 50826f7ca399f7464b6e0f8988f750f06d4a1db2 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 31 Oct 2019 05:45:29 -0700 Subject: [PATCH 081/339] Update windows bat addnodes --- src/hushd.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hushd.bat b/src/hushd.bat index 12291f131..b2580ffaf 100644 --- a/src/hushd.bat +++ b/src/hushd.bat @@ -1,6 +1,6 @@ @call :GET_CURRENT_DIR @cd %THIS_DIR% -komodod.exe -ac_name=HUSH3 -ac_sapling=1 -ac_reward=0,1125000000,562500000 -ac_halving=129,340000,840000 -ac_end=128,340000,5422111 -ac_eras=3 -ac_blocktime=150 -ac_cc=2 -ac_ccenable=228,234,235,236,241 -ac_founders=1 -ac_supply=6178674 -ac_perc=11111111 -clientname=GoldenSandtrout -addnode=188.165.212.101 -ac_cclib=hush3 -ac_script=76a9145eb10cf64f2bab1b457f1f25e658526155928fac88ac -daemon %1 %2 %3 %4 %5 %6 %7 %8 %9 +komodod.exe -ac_name=HUSH3 -ac_sapling=1 -ac_reward=0,1125000000,562500000 -ac_halving=129,340000,840000 -ac_end=128,340000,5422111 -ac_eras=3 -ac_blocktime=150 -ac_cc=2 -ac_ccenable=228,234,235,236,241 -ac_founders=1 -ac_supply=6178674 -ac_perc=11111111 -clientname=GoldenSandtrout -addnode=64.120.113.130 -addnode=209.58.144.205 -addnode=94.130.35.94 -addnode=188.165.212.101 -ac_cclib=hush3 -ac_script=76a9145eb10cf64f2bab1b457f1f25e658526155928fac88ac -daemon %1 %2 %3 %4 %5 %6 %7 %8 %9 @goto :EOF :GET_CURRENT_DIR From 4d927680e06c2fdff684c3504d92ee8af44a45e2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 3 Nov 2019 09:09:37 -0500 Subject: [PATCH 082/339] remove unnecessary file --- src/zcsymbols.txt | 3285 --------------------------------------------- 1 file changed, 3285 deletions(-) delete mode 100644 src/zcsymbols.txt diff --git a/src/zcsymbols.txt b/src/zcsymbols.txt deleted file mode 100644 index 1332245e9..000000000 --- a/src/zcsymbols.txt +++ /dev/null @@ -1,3285 +0,0 @@ - -libzcash_a-IncrementalMerkleTree.o: - U __assert_fail - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_rethrow - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -0000000000000157 t _GLOBAL__sub_I__ZN8libzcash12PedersenHash7combineERKS0_S2_m - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000013 r .LC1 -0000000000000130 r .LC10 -0000000000000168 r .LC11 -0000000000000089 r .LC12 -000000000000009e r .LC13 -0000000000000000 r .LC2 -0000000000000030 r .LC3 -0000000000000070 r .LC4 -000000000000002d r .LC5 -0000000000000049 r .LC6 -00000000000000b8 r .LC7 -0000000000000056 r .LC8 -000000000000006d r .LC9 - U librustzcash_merkle_hash - U librustzcash_tree_uncommitted - U memmove - U __stack_chk_fail - U _Unwind_Resume - U convertBytesVectorToVector(std::vector > const&) - U operator delete(void*) -0000000000000000 u guard variable for libzcash::PathFiller<29ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 u guard variable for libzcash::PathFiller<32ul, libzcash::PedersenHash>::emptyroots -0000000000000000 u guard variable for libzcash::PathFiller<4ul, libzcash::PedersenHash>::emptyroots -0000000000000000 u guard variable for libzcash::PathFiller<4ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 u guard variable for libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 u guard variable for libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::emptyroots -0000000000000000 u guard variable for libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::emptyroots -0000000000000000 u guard variable for libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() - U CSHA256::FinalizeNoPadding(unsigned char*, bool) - U CSHA256::Write(unsigned char const*, unsigned long) - U CSHA256::CSHA256() -0000000000000000 u libzcash::PathFiller<29ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 W libzcash::PathFiller<29ul, libzcash::SHA256Compress>::next(unsigned long) -0000000000000000 u libzcash::PathFiller<32ul, libzcash::PedersenHash>::emptyroots -0000000000000000 W libzcash::PathFiller<32ul, libzcash::PedersenHash>::next(unsigned long) -0000000000000000 u libzcash::PathFiller<4ul, libzcash::PedersenHash>::emptyroots -0000000000000000 W libzcash::PathFiller<4ul, libzcash::PedersenHash>::next(unsigned long) -0000000000000000 u libzcash::PathFiller<4ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 W libzcash::PathFiller<4ul, libzcash::SHA256Compress>::next(unsigned long) -0000000000000060 T libzcash::PedersenHash::uncommitted() -0000000000000000 T libzcash::PedersenHash::combine(libzcash::PedersenHash const&, libzcash::PedersenHash const&, unsigned long) -00000000000000ba T libzcash::SHA256Compress::combine(libzcash::SHA256Compress const&, libzcash::SHA256Compress const&, unsigned long) -0000000000000000 W libzcash::EmptyMerkleRoots<29ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<29ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 n libzcash::EmptyMerkleRoots<29ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<32ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<32ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 n libzcash::EmptyMerkleRoots<32ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<4ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<4ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 n libzcash::EmptyMerkleRoots<4ul, libzcash::PedersenHash>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<4ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 W libzcash::EmptyMerkleRoots<4ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 n libzcash::EmptyMerkleRoots<4ul, libzcash::SHA256Compress>::EmptyMerkleRoots() -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::append(libzcash::SHA256Compress) -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>) -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>) -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 n libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>) -0000000000000000 n libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::append(libzcash::PedersenHash) -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>) -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>) -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 n libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>) -0000000000000000 n libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::append(libzcash::PedersenHash) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 n libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>) -0000000000000000 n libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::append(libzcash::SHA256Compress) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>) -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 n libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness(libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>) -0000000000000000 n libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::IncrementalWitness() -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::empty_root() -0000000000000000 u libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::append(libzcash::SHA256Compress) -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 n libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::empty_root() -0000000000000000 u libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::emptyroots -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::append(libzcash::PedersenHash) -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 n libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::empty_root() -0000000000000000 u libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::emptyroots -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::append(libzcash::PedersenHash) -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 n libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::empty_root() -0000000000000000 u libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::emptyroots -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::append(libzcash::SHA256Compress) -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 n libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::IncrementalMerkleTree() -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::partial_path() const -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::path() const -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::root() const -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::element() const -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::position() const -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::partial_path() const -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::path() const -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::root() const -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::element() const -0000000000000000 W libzcash::IncrementalWitness<32ul, libzcash::PedersenHash>::position() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::partial_path() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::path() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::root() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::element() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::PedersenHash>::position() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::partial_path() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::path() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::root() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::element() const -0000000000000000 W libzcash::IncrementalWitness<4ul, libzcash::SHA256Compress>::position() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::next_depth(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::is_complete(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::DynamicMemoryUsage() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::last() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::path(std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::root(unsigned long, std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::root() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::size() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::wfcheck() const -0000000000000000 W libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::witness() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::next_depth(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::is_complete(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::DynamicMemoryUsage() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::last() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::path(std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::root(unsigned long, std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::root() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::size() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::wfcheck() const -0000000000000000 W libzcash::IncrementalMerkleTree<32ul, libzcash::PedersenHash>::witness() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::next_depth(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::is_complete(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::DynamicMemoryUsage() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::last() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::path(std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::root(unsigned long, std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::root() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::size() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::wfcheck() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::PedersenHash>::witness() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::next_depth(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::is_complete(unsigned long) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::DynamicMemoryUsage() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::last() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::path(std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::root(unsigned long, std::deque >) const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::root() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::size() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::wfcheck() const -0000000000000000 W libzcash::IncrementalMerkleTree<4ul, libzcash::SHA256Compress>::witness() const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const -0000000000000000 W std::_Deque_base >::_M_initialize_map(unsigned long) -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 n std::_Deque_base >::~_Deque_base() -0000000000000000 W std::_Deque_base >::_M_initialize_map(unsigned long) -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 n std::_Deque_base >::~_Deque_base() -0000000000000000 W std::_Bvector_base >::_M_deallocate() - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::~runtime_error() - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W void std::deque >::emplace_back(libzcash::PedersenHash&&) -0000000000000000 W void std::deque >::emplace_back(libzcash::PedersenHash&&) -0000000000000000 W std::deque >::_M_pop_front_aux() -0000000000000000 W void std::deque >::_M_push_back_aux(libzcash::PedersenHash&&) -0000000000000000 W void std::deque >::_M_push_back_aux(libzcash::PedersenHash&&) -0000000000000000 W void std::deque >::_M_range_initialize<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag) -0000000000000000 W std::deque >::deque(std::deque > const&) -0000000000000000 W std::deque >::deque(std::deque > const&) -0000000000000000 n std::deque >::deque(std::deque > const&) -0000000000000000 W void std::deque >::emplace_back(libzcash::SHA256Compress&&) -0000000000000000 W void std::deque >::emplace_back(libzcash::SHA256Compress&&) -0000000000000000 W std::deque >::_M_pop_front_aux() -0000000000000000 W void std::deque >::_M_push_back_aux(libzcash::SHA256Compress&&) -0000000000000000 W void std::deque >::_M_push_back_aux(libzcash::SHA256Compress&&) -0000000000000000 W void std::deque >::_M_range_initialize<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag) -0000000000000000 W std::deque >::deque(std::deque > const&) -0000000000000000 W std::deque >::deque(std::deque > const&) -0000000000000000 n std::deque >::deque(std::deque > const&) -0000000000000000 W std::vector >::_M_insert_aux(std::_Bit_iterator, bool) -0000000000000000 W std::vector >::vector(std::vector > const&) -0000000000000000 W std::vector >::vector(std::vector > const&) -0000000000000000 n std::vector >::vector(std::vector > const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(boost::optional const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(boost::optional const&) -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 n std::vector, std::allocator > >::~vector() -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(boost::optional const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(boost::optional const&) -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 n std::vector, std::allocator > >::~vector() -0000000000000000 W void std::vector >::emplace_back(libzcash::PedersenHash&&) -0000000000000000 W void std::vector >::emplace_back(libzcash::PedersenHash&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::PedersenHash const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::PedersenHash&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::PedersenHash const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::PedersenHash&&) -0000000000000000 W void std::vector >::emplace_back(libzcash::SHA256Compress&&) -0000000000000000 W void std::vector >::emplace_back(libzcash::SHA256Compress&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::SHA256Compress const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::SHA256Compress&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::SHA256Compress const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libzcash::SHA256Compress&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(std::vector >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(std::vector >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(std::vector >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(std::vector >&&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) - U std::ios_base::failure[abi:cxx11]::~failure() - U operator new(unsigned long) - U std::iostream_category() - U std::__throw_bad_alloc() - U std::__throw_length_error(char const*) - U std::__throw_out_of_range_fmt(char const*, ...) -0000000000000000 W void std::__reverse<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, std::random_access_iterator_tag) -0000000000000000 W void std::__reverse(std::_Bit_iterator, std::_Bit_iterator, std::random_access_iterator_tag) -0000000000000000 b std::__ioinit -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category - U typeinfo for std::_V2::error_category - U typeinfo for std::ios_base::failure[abi:cxx11] - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category - U vtable for __cxxabiv1::__si_class_type_info -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000500 r boost::optional::get()::__PRETTY_FUNCTION__ -0000000000000aa0 r boost::optional::get()::__PRETTY_FUNCTION__ -00000000000008e0 r boost::optional >::operator->()::__PRETTY_FUNCTION__ -0000000000000340 r boost::optional >::operator->()::__PRETTY_FUNCTION__ -0000000000000120 r boost::optional >::operator->()::__PRETTY_FUNCTION__ -00000000000006c0 r boost::optional >::operator->()::__PRETTY_FUNCTION__ -0000000000000440 r boost::optional::get() const::__PRETTY_FUNCTION__ -00000000000009e0 r boost::optional::get() const::__PRETTY_FUNCTION__ -00000000000007c0 r boost::optional >::operator->() const::__PRETTY_FUNCTION__ -0000000000000220 r boost::optional >::operator->() const::__PRETTY_FUNCTION__ -0000000000000000 r boost::optional >::operator->() const::__PRETTY_FUNCTION__ -00000000000005a0 r boost::optional >::operator->() const::__PRETTY_FUNCTION__ - -libzcash_a-NoteEncryption.o: - U crypto_aead_chacha20poly1305_ietf_decrypt - U crypto_aead_chacha20poly1305_ietf_encrypt - U crypto_generichash_blake2b_salt_personal - U crypto_scalarmult - U crypto_scalarmult_base - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -0000000000000d0e t _GLOBAL__sub_I__Z16clamp_curve25519Ph - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000015 r .LC1 -0000000000000018 r .LC2 -0000000000000000 r .LC3 -0000000000000028 r .LC4 -0000000000000060 r .LC5 -000000000000002e r .LC6 -0000000000000049 r .LC7 -0000000000000065 r .LC8 - U librustzcash_sapling_generate_r - U librustzcash_sapling_ka_agree - U librustzcash_sapling_ka_derivepublic - U randombytes_buf - U __stack_chk_fail - U _Unwind_Resume -00000000000001a1 T KDF_Sapling(unsigned char*, uint256 const&, uint256 const&) - U PRF_addr_sk_enc(uint252 const&) -0000000000000000 T clamp_curve25519(unsigned char*) -00000000000002a9 T KDF(unsigned char*, uint256 const&, uint256 const&, uint256 const&, uint256 const&, unsigned char) -000000000000003e T PRF_ock(unsigned char*, uint256 const&, uint256 const&, uint256 const&, uint256 const&) - U operator delete(void*) -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() -0000000000000000 W libzcash::NoteDecryption<585ul>::NoteDecryption(uint256) -0000000000000000 W libzcash::NoteDecryption<585ul>::NoteDecryption() -0000000000000000 W libzcash::NoteDecryption<585ul>::NoteDecryption(uint256) -0000000000000000 W libzcash::NoteDecryption<585ul>::NoteDecryption() -0000000000000000 n libzcash::NoteDecryption<585ul>::NoteDecryption(uint256) -0000000000000000 n libzcash::NoteDecryption<585ul>::NoteDecryption() -0000000000000000 W libzcash::NoteEncryption<585ul>::generate_pubkey(uint256 const&) -0000000000000000 W libzcash::NoteEncryption<585ul>::generate_privkey(uint252 const&) -0000000000000000 W libzcash::NoteEncryption<585ul>::encrypt(uint256 const&, std::array const&) -0000000000000000 W libzcash::NoteEncryption<585ul>::get_epk() -0000000000000000 W libzcash::NoteEncryption<585ul>::get_esk() -0000000000000000 W libzcash::NoteEncryption<585ul>::NoteEncryption(uint256) -0000000000000000 W libzcash::NoteEncryption<585ul>::NoteEncryption(uint256) -0000000000000000 n libzcash::NoteEncryption<585ul>::NoteEncryption(uint256) -0000000000000c5f T libzcash::random_uint252() -0000000000000c00 T libzcash::random_uint256() -0000000000000448 T libzcash::SaplingNoteEncryption::FromDiversifier(std::array) -0000000000000a16 T libzcash::SaplingNoteEncryption::encrypt_to_ourselves(uint256 const&, uint256 const&, uint256 const&, std::array const&) -00000000000005fa T libzcash::SaplingNoteEncryption::encrypt_to_recipient(uint256 const&, std::array const&) -0000000000000000 W libzcash::note_decryption_failed::~note_decryption_failed() -0000000000000000 W libzcash::note_decryption_failed::~note_decryption_failed() -0000000000000000 W libzcash::note_decryption_failed::~note_decryption_failed() -0000000000000000 n libzcash::note_decryption_failed::~note_decryption_failed() -0000000000000789 T libzcash::AttemptSaplingEncDecryption(std::array const&, uint256 const&, uint256 const&) -00000000000008cf T libzcash::AttemptSaplingEncDecryption(std::array const&, uint256 const&, uint256 const&, uint256 const&) -0000000000000b09 T libzcash::AttemptSaplingOutDecryption(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&) -0000000000000000 W libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption(uint256) -0000000000000000 W libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption() -0000000000000000 W libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption(uint256) -0000000000000000 W libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption() -0000000000000000 n libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption(uint256) -0000000000000000 n libzcash::PaymentDisclosureNoteDecryption<585ul>::PaymentDisclosureNoteDecryption() -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -0000000000000000 W libzcash::NoteDecryption<585ul>::decrypt(std::array const&, uint256 const&, uint256 const&, unsigned char) const -0000000000000000 W libzcash::PaymentDisclosureNoteDecryption<585ul>::decryptWithEsk(std::array const&, uint256 const&, uint256 const&, uint256 const&, unsigned char) const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const - U std::logic_error::logic_error(char const*) - U std::logic_error::~logic_error() - U std::domain_error::domain_error(char const*) - U std::domain_error::~domain_error() - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::__throw_length_error(char const*) -0000000000000000 b std::__ioinit -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category -0000000000000000 V typeinfo for libzcash::note_decryption_failed - U typeinfo for std::_V2::error_category - U typeinfo for std::logic_error - U typeinfo for std::domain_error - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category -0000000000000000 V typeinfo name for libzcash::note_decryption_failed - U vtable for __cxxabiv1::__si_class_type_info -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 V vtable for libzcash::note_decryption_failed - -libzcash_a-Address.o: - U __assert_fail - U crypto_generichash_blake2b_final - U crypto_generichash_blake2b_init_salt_personal - U crypto_generichash_blake2b_update - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_pure_virtual - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -0000000000000fa0 t _GLOBAL__sub_I__ZNK8libzcash20SproutPaymentAddress7GetHashEv - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000000 r .LC1 -0000000000000009 r .LC2 -000000000000001b r .LC3 -0000000000000032 r .LC4 -000000000000004a r .LC5 -000000000000005f r .LC6 - U librustzcash_ask_to_ak - U librustzcash_check_diversifier - U librustzcash_crh_ivk - U librustzcash_ivk_to_pkd - U librustzcash_nsk_to_nk - U memmove - U __stack_chk_fail - U _Unwind_Resume - U PRF_addr_a_pk(uint252 const&) - U memory_cleanse(void*, unsigned long) -0000000000000a82 T IsValidViewingKey(boost::variant const&) -0000000000000a82 T IsValidViewingKey(boost::variant const&) - U default_diversifier(uint256 const&) -0000000000000a4c T IsValidPaymentAddress(boost::variant const&) -0000000000000a4c T IsValidPaymentAddress(boost::variant const&) - U PRF_ask(uint256 const&) - U PRF_nsk(uint256 const&) - U PRF_ovk(uint256 const&) - U operator delete(void*) -00000000000000a0 r ZCASH_SAPLING_FVFP_PERSONALIZATION -0000000000000000 W void boost::throw_exception(boost::bad_optional_access const&) -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 n boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 n boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::bad_optional_access::~bad_optional_access() -0000000000000000 W boost::bad_optional_access::~bad_optional_access() -0000000000000000 W boost::bad_optional_access::~bad_optional_access() -0000000000000000 n boost::bad_optional_access::~bad_optional_access() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() - U CSHA256::Reset() - U CSHA256::Write(unsigned char const*, unsigned long) - U CSHA256::Finalize(unsigned char*) - U CSHA256::CSHA256() - U libzcash::NoteEncryption<585ul>::generate_pubkey(uint256 const&) - U libzcash::NoteEncryption<585ul>::generate_privkey(uint252 const&) - U libzcash::random_uint252() - U libzcash::random_uint256() -000000000000022c T libzcash::SproutSpendingKey::random() -0000000000000826 T libzcash::SaplingSpendingKey::random() -0000000000000000 W boost::exception_detail::clone_impl >::clone() const -0000000000000000 W boost::exception_detail::clone_impl >::rethrow() const -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -0000000000000000 T libzcash::ReceivingKey::pk_enc() const -000000000000003c T libzcash::SproutViewingKey::address() const -0000000000000162 T libzcash::SproutSpendingKey::viewing_key() const -00000000000000ee T libzcash::SproutSpendingKey::receiving_key() const -00000000000002a0 T libzcash::SproutSpendingKey::address() const -0000000000000ab8 T libzcash::SaplingSpendingKey::default_address() const -0000000000000580 T libzcash::SaplingSpendingKey::full_viewing_key() const -0000000000000450 T libzcash::SaplingSpendingKey::expanded_spending_key() const -0000000000000bb0 T libzcash::SproutPaymentAddress::GetHash() const -00000000000006fe T libzcash::SaplingFullViewingKey::GetFingerprint() const -00000000000005cc T libzcash::SaplingFullViewingKey::in_viewing_key() const -000000000000066a T libzcash::SaplingFullViewingKey::is_valid() const -0000000000000d80 T libzcash::SaplingPaymentAddress::GetHash() const -00000000000008fc T libzcash::SaplingIncomingViewingKey::address(std::array) const -00000000000002ec T libzcash::SaplingExpandedSpendingKey::full_viewing_key() const - U std::logic_error::what() const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const - U std::logic_error::logic_error(std::logic_error const&) - U std::logic_error::~logic_error() - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W void std::vector >::_M_range_insert(__gnu_cxx::__normal_iterator > >, char const*, char const*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U operator new(unsigned long) - U std::__throw_length_error(char const*) -0000000000000000 b std::__ioinit -000000000000007c W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000074 W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000071 W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000069 W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 V typeinfo for boost::exception_detail::clone_base -0000000000000000 V typeinfo for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo for boost::bad_optional_access -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category -0000000000000000 V typeinfo for boost::exception - U typeinfo for std::_V2::error_category - U typeinfo for std::logic_error - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::exception_detail::clone_base -0000000000000000 V typeinfo name for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo name for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo name for boost::bad_optional_access -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category -0000000000000000 V typeinfo name for boost::exception -0000000000000000 V VTT for boost::exception_detail::clone_impl > -00000000000001e6 W virtual thunk to boost::exception_detail::clone_impl >::clone() const -0000000000000085 W virtual thunk to boost::exception_detail::clone_impl >::rethrow() const -0000000000000085 W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -000000000000007a W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() - U vtable for __cxxabiv1::__class_type_info - U vtable for __cxxabiv1::__si_class_type_info - U vtable for __cxxabiv1::__vmi_class_type_info -0000000000000000 V vtable for boost::exception_detail::clone_base -0000000000000000 V vtable for boost::exception_detail::clone_impl > -0000000000000000 V vtable for boost::exception_detail::error_info_injector -0000000000000000 V vtable for boost::bad_optional_access -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 V vtable for boost::exception -0000000000000000 u uint256 Hash<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >)::pblank -0000000000000060 r CBLAKE2bWriter::CBLAKE2bWriter(int, int, unsigned char const*)::__PRETTY_FUNCTION__ -0000000000000000 r libzcash::SaplingSpendingKey::default_address() const::__PRETTY_FUNCTION__ - -libzcash_a-JoinSplit.o: -00000000000029d8 r ._171 -0000000000002920 r ._172 - U __assert_fail - U crypto_generichash_blake2b_salt_personal - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_pure_virtual - U __cxa_rethrow - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U fflush - U _GLOBAL_OFFSET_TABLE_ -0000000000001578 t _GLOBAL__sub_I__ZN8libzcash11trailing252ESt6vectorIbSaIbEE - U __gmpn_addmul_1 - U __gmpn_add_n - U __gmpn_copyi - U __gmpn_gcdext - U __gmpn_mul_n - U __gmpn_rshift - U __gmpn_sub_n - U __gmpn_tdiv_qr - U __gmpn_zero - U GOMP_parallel - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000060 r .LC1 -000000000000002d r .LC10 -00000000000003ac r .LC100 -00000000000003ba r .LC101 -00000000000003cc r .LC102 -00000000000003d1 r .LC103 -0000000000000aa0 r .LC104 -00000000000003e3 r .LC105 -00000000000003fb r .LC106 -000000000000040a r .LC107 -000000000000041b r .LC108 -000000000000042e r .LC109 -0000000000000258 r .LC11 -000000000000043a r .LC110 -0000000000000455 r .LC111 -0000000000000469 r .LC112 -0000000000000af0 r .LC113 -0000000000000b28 r .LC114 -0000000000000b68 r .LC115 -0000000000000b98 r .LC116 -0000000000000be0 r .LC117 -0000000000000c40 r .LC118 -0000000000000c98 r .LC119 -0000000000000047 r .LC12 -0000000000000ce8 r .LC120 -0000000000000d10 r .LC121 -0000000000000d58 r .LC122 -0000000000000d78 r .LC123 -0000000000000db0 r .LC124 -0000000000000de0 r .LC125 -0000000000000e10 r .LC126 -0000000000000e38 r .LC127 -0000000000000485 r .LC128 -0000000000000e60 r .LC129 -0000000000000280 r .LC13 -0000000000000e90 r .LC130 -0000000000000ec0 r .LC131 -0000000000000ef0 r .LC132 -0000000000000f20 r .LC133 -0000000000000f48 r .LC134 -0000000000000496 r .LC135 -0000000000000f78 r .LC136 -00000000000004ab r .LC137 -0000000000000fa0 r .LC138 -0000000000000fe0 r .LC139 -00000000000002b0 r .LC14 -00000000000004c9 r .LC140 -00000000000004e3 r .LC141 -0000000000001038 r .LC142 -00000000000004f9 r .LC143 -0000000000000512 r .LC144 -0000000000000524 r .LC145 -000000000000053e r .LC146 -0000000000000558 r .LC147 -0000000000000572 r .LC148 -000000000000058c r .LC149 -00000000000002d8 r .LC15 -0000000000001060 r .LC150 -0000000000001080 r .LC151 -00000000000005a6 r .LC152 -00000000000005c1 r .LC153 -00000000000010b0 r .LC154 -00000000000010e0 r .LC155 -0000000000001110 r .LC156 -00000000000005dc r .LC157 -0000000000001148 r .LC158 -00000000000005f9 r .LC159 -0000000000000320 r .LC16 -0000000000001178 r .LC160 -0000000000000612 r .LC161 -000000000000062c r .LC162 -0000000000000640 r .LC163 -0000000000000652 r .LC164 -0000000000000667 r .LC165 -0000000000000348 r .LC17 -0000000000000390 r .LC18 -00000000000003d8 r .LC19 -0000000000000000 r .LC2 -0000000000000065 r .LC20 -000000000000007d r .LC21 -0000000000000408 r .LC22 -0000000000000093 r .LC23 -0000000000000440 r .LC24 -0000000000000468 r .LC25 -00000000000000a6 r .LC26 -0000000000000490 r .LC27 -00000000000000b7 r .LC28 -00000000000000c7 r .LC29 -00000000000000e8 r .LC3 -00000000000000cf r .LC30 -00000000000000d1 r .LC31 -00000000000000d2 r .LC32 -00000000000000ea r .LC33 -0000000000000104 r .LC34 -00000000000004b8 r .LC35 -00000000000004f0 r .LC36 -0000000000000120 r .LC37 -0000000000000518 r .LC38 -0000000000000548 r .LC39 -0000000000000128 r .LC4 -0000000000000568 r .LC40 -0000000000000122 r .LC41 -000000000000013d r .LC42 -0000000000000598 r .LC43 -0000000000000159 r .LC44 -00000000000005c8 r .LC45 -00000000000005f0 r .LC46 -0000000000000618 r .LC47 -0000000000000174 r .LC48 -0000000000000638 r .LC49 -0000000000000160 r .LC5 -0000000000000670 r .LC50 -0000000000000000 r .LC51 -0000000000000698 r .LC52 -00000000000006c8 r .LC53 -00000000000006f0 r .LC54 -000000000000018b r .LC55 -00000000000001a2 r .LC56 -0000000000000710 r .LC57 -00000000000001b5 r .LC58 -0000000000000738 r .LC59 -00000000000001a0 r .LC6 -00000000000001cd r .LC60 -0000000000000788 r .LC61 -00000000000001eb r .LC62 -00000000000001fd r .LC63 -000000000000020f r .LC64 -000000000000022c r .LC65 -0000000000000249 r .LC66 -00000000000007b8 r .LC67 -0000000000000263 r .LC68 -0000000000000277 r .LC69 -00000000000001e0 r .LC7 -000000000000028b r .LC70 -000000000000029f r .LC71 -00000000000002b3 r .LC72 -00000000000007d8 r .LC73 -00000000000007f8 r .LC74 -00000000000002c7 r .LC75 -0000000000000828 r .LC76 -00000000000002e1 r .LC77 -0000000000000850 r .LC78 -00000000000002fb r .LC79 -0000000000000210 r .LC8 -0000000000000313 r .LC80 -000000000000032d r .LC81 -0000000000000347 r .LC82 -0000000000000878 r .LC83 -000000000000035f r .LC84 -0000000000000369 r .LC85 -0000000000000898 r .LC86 -00000000000008e0 r .LC87 -0000000000000908 r .LC88 -0000000000000930 r .LC89 -000000000000001b r .LC9 -0000000000000374 r .LC90 -0000000000000988 r .LC91 -00000000000009b0 r .LC92 -00000000000009e8 r .LC93 -0000000000000383 r .LC94 -0000000000000a10 r .LC95 -0000000000000388 r .LC96 -0000000000000a38 r .LC97 -00000000000003a3 r .LC98 -0000000000000a70 r .LC99 - U librustzcash_sprout_prove - U MAX_MONEY - U memcmp - U memcpy - U memmove - U memset - U omp_get_max_threads - U omp_get_num_threads - U omp_get_thread_num - U __printf_chk - w __pthread_key_create - U pthread_mutexattr_destroy - U pthread_mutexattr_init - U pthread_mutexattr_settype - U pthread_mutex_destroy - U pthread_mutex_init - U pthread_mutex_lock - U pthread_mutex_unlock - U randombytes_buf - U __stack_chk_fail - U stdout - U _Unwind_Resume -0000000000000000 W assert_except(bool) - U memory_cleanse(void*, unsigned long) -0000000000000000 W void WriteCompactSize > > >(CBaseDataStream > >&, unsigned long) - U convertVectorToInt(std::vector > const&) - U convertIntToVectorLE(unsigned long) - U convertBytesVectorToVector(std::vector > const&) - U PRF_pk(uint252 const&, unsigned long, uint256 const&) - U PRF_rho(uint252 const&, unsigned long, uint256 const&) - U operator delete(void*) -0000000000000000 u guard variable for libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::root_of_unity -0000000000000000 u guard variable for libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::multiplicative_generator -0000000000000000 W tinyformat::detail::formatImpl(std::ostream&, char const*, tinyformat::detail::FormatArg const*, int) -0000000000000000 W void tinyformat::detail::formatTruncated, std::allocator > >(std::ostream&, std::__cxx11::basic_string, std::allocator > const&, int) -0000000000000000 W tinyformat::detail::streamStateFromFormat(std::ostream&, bool&, int&, char const*, tinyformat::detail::FormatArg const*, int&, int) -0000000000000000 W void tinyformat::detail::FormatArg::formatImpl, std::allocator > >(std::ostream&, char const*, char const*, int, void const*) -0000000000000000 W int tinyformat::detail::FormatArg::toIntImpl, std::allocator > >(void const*) -0000000000000000 W std::__cxx11::basic_string, std::allocator > tinyformat::format, std::allocator > >(char const*, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W std::__cxx11::basic_string, std::allocator > tinyformat::format, std::allocator > >(char const*, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W AnnotatedMixin::~AnnotatedMixin() -0000000000000000 W AnnotatedMixin::~AnnotatedMixin() -0000000000000000 n AnnotatedMixin::~AnnotatedMixin() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 n boost::lock_error::~lock_error() -0000000000000000 W boost::recursive_mutex::unlock() -0000000000000000 W boost::recursive_mutex::recursive_mutex() -0000000000000000 W boost::recursive_mutex::recursive_mutex() -0000000000000000 n boost::recursive_mutex::recursive_mutex() -0000000000000000 W void boost::throw_exception(boost::lock_error const&) -0000000000000000 W void boost::throw_exception(boost::thread_resource_error const&) -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 n boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 n boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 n boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 n boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::copy_boost_exception(boost::exception*, boost::exception const*) -0000000000000000 W boost::thread_exception::thread_exception(int, char const*) -0000000000000000 W boost::thread_exception::thread_exception(int, char const*) -0000000000000000 n boost::thread_exception::thread_exception(int, char const*) -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 n boost::thread_exception::~thread_exception() -0000000000000000 W boost::thread_resource_error::~thread_resource_error() -0000000000000000 W boost::thread_resource_error::~thread_resource_error() -0000000000000000 W boost::thread_resource_error::~thread_resource_error() -0000000000000000 n boost::thread_resource_error::~thread_resource_error() -0000000000000000 W boost::system::system_error::system_error(boost::system::system_error const&) -0000000000000000 W boost::system::system_error::system_error(boost::system::system_error const&) -0000000000000000 n boost::system::system_error::system_error(boost::system::system_error const&) -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() - U libsnark::bitreverse(unsigned long, unsigned long) -0000000000000000 W libsnark::protoboard >::add_r1cs_constraint(libsnark::r1cs_constraint > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::protoboard >::add_r1cs_constraint(libsnark::r1cs_constraint > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::protoboard >::val(libsnark::pb_variable > const&) -0000000000000000 W libsnark::protoboard >::val(libsnark::pb_variable > const&) -0000000000000000 W libsnark::protoboard >::lc_val(libsnark::pb_linear_combination > const&) -0000000000000000 W libsnark::protoboard >::lc_val(libsnark::pb_linear_combination > const&) -0000000000000000 W libsnark::protoboard >::protoboard() -0000000000000000 W libsnark::protoboard >::protoboard() -0000000000000000 W libsnark::protoboard >::protoboard() -0000000000000000 W libsnark::protoboard >::protoboard() -0000000000000000 n libsnark::protoboard >::protoboard() -0000000000000000 W libsnark::protoboard >::~protoboard() -0000000000000000 W libsnark::protoboard >::~protoboard() -0000000000000000 W libsnark::protoboard >::~protoboard() -0000000000000000 W libsnark::protoboard >::~protoboard() -0000000000000000 n libsnark::protoboard >::~protoboard() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::scalar_mul(libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&) -0000000000000000 W libsnark::alt_bn128_G2 libsnark::scalar_mul(libsnark::alt_bn128_G2 const&, libsnark::bigint<4l> const&) - U libsnark::enter_block(std::__cxx11::basic_string, std::allocator > const&, bool) - U libsnark::leave_block(std::__cxx11::basic_string, std::allocator > const&, bool) -0000000000000000 W libsnark::pb_variable >::allocate(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::pb_variable >::allocate(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::XOR3_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::XOR3_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::XOR3_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::XOR3_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::XOR3_gadget >::XOR3_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, bool, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::XOR3_gadget >::XOR3_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, bool, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::XOR3_gadget >::XOR3_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, bool, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::XOR3_gadget >::XOR3_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, bool, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::XOR3_gadget >::XOR3_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, libsnark::pb_linear_combination > const&, bool, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::XOR3_gadget >::~XOR3_gadget() -0000000000000000 W libsnark::XOR3_gadget >::~XOR3_gadget() -0000000000000000 W libsnark::XOR3_gadget >::~XOR3_gadget() -0000000000000000 W libsnark::XOR3_gadget >::~XOR3_gadget() -0000000000000000 n libsnark::XOR3_gadget >::~XOR3_gadget() - U libsnark::alt_bn128_G1::wnaf_window_table - U libsnark::alt_bn128_G1::fixed_base_exp_window_table - U libsnark::alt_bn128_G1::one() - U libsnark::alt_bn128_G1::zero() - U libsnark::alt_bn128_G1::alt_bn128_G1() - U libsnark::alt_bn128_G2::wnaf_window_table - U libsnark::alt_bn128_G2::fixed_base_exp_window_table - U libsnark::alt_bn128_G2::one() - U libsnark::alt_bn128_G2::zero() - U libsnark::alt_bn128_G2::alt_bn128_G2() - U libsnark::alt_bn128_pp::precompute_G1(libsnark::alt_bn128_G1 const&) - U libsnark::alt_bn128_pp::precompute_G2(libsnark::alt_bn128_G2 const&) -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) -0000000000000000 t libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) [clone ._omp_fn.4] -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) -0000000000000000 t libsnark::sparse_vector > libsnark::kc_batch_exp >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long) [clone ._omp_fn.3] - U libsnark::print_indent() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::windowed_exp >(unsigned long, unsigned long, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::windowed_exp >(unsigned long, unsigned long, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::choice_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::choice_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::choice_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::choice_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::choice_gadget >::choice_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::choice_gadget >::choice_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::choice_gadget >::choice_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::choice_gadget >::choice_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::choice_gadget >::choice_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sparse_vector::~sparse_vector() -0000000000000000 W libsnark::sparse_vector::~sparse_vector() -0000000000000000 n libsnark::sparse_vector::~sparse_vector() -0000000000000000 W libsnark::sparse_vector >::~sparse_vector() -0000000000000000 W libsnark::sparse_vector >::~sparse_vector() -0000000000000000 n libsnark::sparse_vector >::~sparse_vector() -0000000000000000 W libsnark::sparse_vector >::~sparse_vector() -0000000000000000 W libsnark::sparse_vector >::~sparse_vector() -0000000000000000 n libsnark::sparse_vector >::~sparse_vector() -0000000000000000 W libsnark::block_variable >::block_variable(libsnark::protoboard >&, std::vector >, std::allocator > > > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::block_variable >::block_variable(libsnark::protoboard >&, std::vector >, std::allocator > > > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::block_variable >::block_variable(libsnark::protoboard >&, std::vector >, std::allocator > > > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::block_variable >::block_variable(libsnark::protoboard >&, std::vector >, std::allocator > > > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::block_variable >::block_variable(libsnark::protoboard >&, std::vector >, std::allocator > > > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::block_variable >::~block_variable() -0000000000000000 W libsnark::block_variable >::~block_variable() -0000000000000000 W libsnark::block_variable >::~block_variable() -0000000000000000 W libsnark::block_variable >::~block_variable() -0000000000000000 n libsnark::block_variable >::~block_variable() -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_constraints(bool) -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_constraints(bool) -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_witness_from_bits() -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_witness_from_bits() -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_witness_from_packed() -0000000000000000 W libsnark::packing_gadget >::generate_r1cs_witness_from_packed() -0000000000000000 W libsnark::packing_gadget >::packing_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::packing_gadget >::packing_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::packing_gadget >::packing_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::packing_gadget >::packing_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::packing_gadget >::packing_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::packing_gadget >::~packing_gadget() -0000000000000000 W libsnark::packing_gadget >::~packing_gadget() -0000000000000000 W libsnark::packing_gadget >::~packing_gadget() -0000000000000000 W libsnark::packing_gadget >::~packing_gadget() -0000000000000000 n libsnark::packing_gadget >::~packing_gadget() -0000000000000000 W libsnark::linear_combination > libsnark::pb_packing_sum >(libsnark::pb_linear_combination_array > const&) -0000000000000000 W libsnark::linear_combination > libsnark::pb_packing_sum >(libsnark::pb_linear_combination_array > const&) -0000000000000000 W libsnark::digest_variable >::generate_r1cs_constraints() -0000000000000000 W libsnark::digest_variable >::generate_r1cs_constraints() -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::digest_variable > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::digest_variable > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::digest_variable > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::digest_variable > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::digest_variable >::digest_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::digest_variable >::digest_variable(libsnark::digest_variable > const&) -0000000000000000 n libsnark::digest_variable >::digest_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::digest_variable >::~digest_variable() -0000000000000000 W libsnark::digest_variable >::~digest_variable() -0000000000000000 W libsnark::digest_variable >::~digest_variable() -0000000000000000 W libsnark::digest_variable >::~digest_variable() -0000000000000000 n libsnark::digest_variable >::~digest_variable() -0000000000000000 W libsnark::lastbits_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::lastbits_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::lastbits_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::lastbits_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::lastbits_gadget >::lastbits_gadget(libsnark::protoboard >&, libsnark::pb_variable > const&, unsigned long, libsnark::pb_variable > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::lastbits_gadget >::lastbits_gadget(libsnark::protoboard >&, libsnark::pb_variable > const&, unsigned long, libsnark::pb_variable > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::lastbits_gadget >::lastbits_gadget(libsnark::protoboard >&, libsnark::pb_variable > const&, unsigned long, libsnark::pb_variable > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::lastbits_gadget >::lastbits_gadget(libsnark::protoboard >&, libsnark::pb_variable > const&, unsigned long, libsnark::pb_variable > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::lastbits_gadget >::lastbits_gadget(libsnark::protoboard >&, libsnark::pb_variable > const&, unsigned long, libsnark::pb_variable > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::lastbits_gadget >::~lastbits_gadget() -0000000000000000 W libsnark::lastbits_gadget >::~lastbits_gadget() -0000000000000000 W libsnark::lastbits_gadget >::~lastbits_gadget() -0000000000000000 W libsnark::lastbits_gadget >::~lastbits_gadget() -0000000000000000 n libsnark::lastbits_gadget >::~lastbits_gadget() -0000000000000000 W libsnark::majority_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::majority_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::majority_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::majority_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::majority_gadget >::majority_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::majority_gadget >::majority_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::majority_gadget >::majority_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::majority_gadget >::majority_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::majority_gadget >::majority_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_inner >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_inner >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp_inner, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp_inner, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp_inner, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp_inner, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::r1cs_constraint >::r1cs_constraint(libsnark::linear_combination > const&, libsnark::linear_combination > const&, libsnark::linear_combination > const&) -0000000000000000 W libsnark::r1cs_constraint >::r1cs_constraint(libsnark::linear_combination > const&, libsnark::linear_combination > const&, libsnark::linear_combination > const&) -0000000000000000 W libsnark::r1cs_constraint >::r1cs_constraint(libsnark::linear_combination > const&, libsnark::linear_combination > const&, libsnark::linear_combination > const&) -0000000000000000 W libsnark::r1cs_constraint >::r1cs_constraint(libsnark::linear_combination > const&, libsnark::linear_combination > const&, libsnark::linear_combination > const&) -0000000000000000 n libsnark::r1cs_constraint >::r1cs_constraint(libsnark::linear_combination > const&, libsnark::linear_combination > const&, libsnark::linear_combination > const&) -0000000000000000 W libsnark::r1cs_constraint >::~r1cs_constraint() -0000000000000000 W libsnark::r1cs_constraint >::~r1cs_constraint() -0000000000000000 W libsnark::r1cs_constraint >::~r1cs_constraint() -0000000000000000 W libsnark::r1cs_constraint >::~r1cs_constraint() -0000000000000000 n libsnark::r1cs_constraint >::~r1cs_constraint() -0000000000000000 W libsnark::big_sigma_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::big_sigma_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::big_sigma_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::big_sigma_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::big_sigma_gadget >::big_sigma_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::big_sigma_gadget >::big_sigma_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::big_sigma_gadget >::big_sigma_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::big_sigma_gadget >::big_sigma_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::big_sigma_gadget >::big_sigma_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::big_sigma_gadget >::~big_sigma_gadget() -0000000000000000 W libsnark::big_sigma_gadget >::~big_sigma_gadget() -0000000000000000 W libsnark::big_sigma_gadget >::~big_sigma_gadget() -0000000000000000 W libsnark::big_sigma_gadget >::~big_sigma_gadget() -0000000000000000 n libsnark::big_sigma_gadget >::~big_sigma_gadget() -0000000000000000 W std::vector >, std::allocator > > > libsnark::get_window_table(unsigned long, unsigned long, libsnark::alt_bn128_G1 const&) -0000000000000000 W std::vector >, std::allocator > > > libsnark::get_window_table(unsigned long, unsigned long, libsnark::alt_bn128_G2 const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> libsnark::get_root_of_unity >(unsigned long) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> libsnark::get_root_of_unity >(unsigned long) -0000000000000000 W libsnark::pb_variable_array >::allocate(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::pb_variable_array >::allocate(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::pb_linear_combination_array > libsnark::SHA256_default_IV >(libsnark::protoboard >&) -0000000000000000 W libsnark::pb_linear_combination_array > libsnark::SHA256_default_IV >(libsnark::protoboard >&) -0000000000000000 W libsnark::linear_combination >::add_term(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::add_term(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(long) -0000000000000000 W libsnark::linear_combination >::linear_combination(long) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::linear_term > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::linear_term > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(std::vector >, std::allocator > > > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(std::vector >, std::allocator > > > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(long) -0000000000000000 W libsnark::linear_combination >::linear_combination(long) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::linear_term > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::linear_term > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(libsnark::variable > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(std::vector >, std::allocator > > > const&) -0000000000000000 W libsnark::linear_combination >::linear_combination(std::vector >, std::allocator > > > const&) -0000000000000000 n libsnark::linear_combination >::linear_combination(long) -0000000000000000 n libsnark::linear_combination >::linear_combination(libsnark::linear_term > const&) -0000000000000000 n libsnark::linear_combination >::linear_combination(libsnark::variable > const&) -0000000000000000 n libsnark::linear_combination >::linear_combination(std::vector >, std::allocator > > > const&) -0000000000000000 W void libsnark::_multiply_by_coset >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void libsnark::_multiply_by_coset >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::small_sigma_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::small_sigma_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::small_sigma_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::small_sigma_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::small_sigma_gadget >::small_sigma_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::small_sigma_gadget >::small_sigma_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::small_sigma_gadget >::small_sigma_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::small_sigma_gadget >::small_sigma_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::small_sigma_gadget >::small_sigma_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable > const&, unsigned long, unsigned long, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::small_sigma_gadget >::~small_sigma_gadget() -0000000000000000 W libsnark::small_sigma_gadget >::~small_sigma_gadget() -0000000000000000 W libsnark::small_sigma_gadget >::~small_sigma_gadget() -0000000000000000 W libsnark::small_sigma_gadget >::~small_sigma_gadget() -0000000000000000 n libsnark::small_sigma_gadget >::~small_sigma_gadget() - U libsnark::alt_bn128_modulus_r -0000000000000000 W libsnark::basic_radix2_domain >::add_poly_Z(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::add_poly_Z(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::get_element(unsigned long) -0000000000000000 W libsnark::basic_radix2_domain >::get_element(unsigned long) -0000000000000000 W libsnark::basic_radix2_domain >::lagrange_coeffs(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::lagrange_coeffs(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::divide_by_Z_on_coset(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::divide_by_Z_on_coset(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::FFT(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::FFT(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::iFFT(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::iFFT(std::vector, std::allocator > >&) -0000000000000000 W libsnark::basic_radix2_domain >::cosetFFT(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::cosetFFT(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::compute_Z(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::compute_Z(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::icosetFFT(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::icosetFFT(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::basic_radix2_domain >::basic_radix2_domain(unsigned long) -0000000000000000 W libsnark::basic_radix2_domain >::basic_radix2_domain(unsigned long) -0000000000000000 W libsnark::basic_radix2_domain >::basic_radix2_domain(unsigned long) -0000000000000000 W libsnark::basic_radix2_domain >::basic_radix2_domain(unsigned long) -0000000000000000 n libsnark::basic_radix2_domain >::basic_radix2_domain(unsigned long) -0000000000000000 W libsnark::multipacking_gadget >::generate_r1cs_constraints(bool) -0000000000000000 W libsnark::multipacking_gadget >::generate_r1cs_constraints(bool) -0000000000000000 W libsnark::multipacking_gadget >::generate_r1cs_witness_from_bits() -0000000000000000 W libsnark::multipacking_gadget >::generate_r1cs_witness_from_bits() -0000000000000000 W libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::multipacking_gadget >::~multipacking_gadget() -0000000000000000 W libsnark::multipacking_gadget >::~multipacking_gadget() -0000000000000000 W libsnark::multipacking_gadget >::~multipacking_gadget() -0000000000000000 W libsnark::multipacking_gadget >::~multipacking_gadget() -0000000000000000 n libsnark::multipacking_gadget >::~multipacking_gadget() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::opt_window_wnaf_exp(libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&, unsigned long) -0000000000000000 W libsnark::knowledge_commitment libsnark::opt_window_wnaf_exp(libsnark::knowledge_commitment const&, libsnark::bigint<4l> const&, unsigned long) -0000000000000000 W libsnark::knowledge_commitment libsnark::opt_window_wnaf_exp(libsnark::knowledge_commitment const&, libsnark::bigint<4l> const&, unsigned long) -0000000000000000 W libsnark::knowledge_commitment::zero() -0000000000000000 W libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G1 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G1 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 n libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G1 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::knowledge_commitment::zero() -0000000000000000 W libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G2 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G2 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 n libsnark::knowledge_commitment::knowledge_commitment(libsnark::alt_bn128_G2 const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::fixed_window_wnaf_exp(unsigned long, libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&) -0000000000000000 W libsnark::alt_bn128_G2 libsnark::fixed_window_wnaf_exp(unsigned long, libsnark::alt_bn128_G2 const&, libsnark::bigint<4l> const&) -0000000000000000 W std::shared_ptr > > libsnark::get_evaluation_domain >(unsigned long) -0000000000000000 W std::shared_ptr > > libsnark::get_evaluation_domain >(unsigned long) -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp_internal >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long, unsigned long, unsigned long) -0000000000000000 W libsnark::sparse_vector > libsnark::kc_batch_exp_internal >(unsigned long, unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector >, std::allocator > > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::vector, std::allocator > > const&, unsigned long, unsigned long, unsigned long) -0000000000000000 W libsnark::pb_linear_combination >::pb_linear_combination(libsnark::pb_variable > const&) -0000000000000000 W libsnark::pb_linear_combination >::pb_linear_combination(libsnark::pb_variable > const&) -0000000000000000 W libsnark::pb_linear_combination >::pb_linear_combination(libsnark::pb_variable > const&) -0000000000000000 W libsnark::pb_linear_combination >::pb_linear_combination(libsnark::pb_variable > const&) -0000000000000000 n libsnark::pb_linear_combination >::pb_linear_combination(libsnark::pb_variable > const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::r1cs_compute_proof_kc(libsnark::qap_witness const&, libsnark::sparse_vector > const&, libsnark::alt_bn128_pp::Fp_type const&) -0000000000000000 W libsnark::bit_vector_copy_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::bit_vector_copy_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::bit_vector_copy_gadget >::~bit_vector_copy_gadget() -0000000000000000 W libsnark::bit_vector_copy_gadget >::~bit_vector_copy_gadget() -0000000000000000 W libsnark::bit_vector_copy_gadget >::~bit_vector_copy_gadget() -0000000000000000 W libsnark::bit_vector_copy_gadget >::~bit_vector_copy_gadget() -0000000000000000 n libsnark::bit_vector_copy_gadget >::~bit_vector_copy_gadget() -0000000000000000 W libsnark::digest_selector_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::digest_selector_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::digest_selector_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::digest_selector_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::digest_selector_gadget >::~digest_selector_gadget() -0000000000000000 W libsnark::digest_selector_gadget >::~digest_selector_gadget() -0000000000000000 W libsnark::digest_selector_gadget >::~digest_selector_gadget() -0000000000000000 W libsnark::digest_selector_gadget >::~digest_selector_gadget() -0000000000000000 n libsnark::digest_selector_gadget >::~digest_selector_gadget() - U libsnark::inhibit_profiling_info -0000000000000000 W libsnark::r1cs_constraint_system >::swap_AB_if_beneficial() -0000000000000000 W libsnark::r1cs_constraint_system >::swap_AB_if_beneficial() -0000000000000000 W libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 t libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) [clone ._omp_fn.6] -0000000000000000 t libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) [clone ._omp_fn.7] -0000000000000000 t libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) [clone ._omp_fn.8] -0000000000000000 t libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) [clone ._omp_fn.9] -0000000000000000 W void libsnark::_basic_serial_radix2_FFT >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void libsnark::_basic_serial_radix2_FFT >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::field_vector_copy_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::field_vector_copy_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::r1cs_ppzksnark_keypair libsnark::r1cs_ppzksnark_generator(libsnark::r1cs_constraint_system const&) -0000000000000000 W libsnark::r1cs_ppzksnark_keypair libsnark::r1cs_ppzksnark_generator(libsnark::r1cs_constraint_system const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&) -0000000000000000 W void libsnark::_basic_parallel_radix2_FFT >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void libsnark::_basic_parallel_radix2_FFT >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::r1cs_ppzksnark_proving_key::~r1cs_ppzksnark_proving_key() -0000000000000000 W libsnark::r1cs_ppzksnark_proving_key::~r1cs_ppzksnark_proving_key() -0000000000000000 n libsnark::r1cs_ppzksnark_proving_key::~r1cs_ppzksnark_proving_key() -0000000000000000 W libsnark::pb_linear_combination_array >::pb_linear_combination_array(libsnark::pb_variable_array > const&) -0000000000000000 W libsnark::pb_linear_combination_array >::pb_linear_combination_array(libsnark::pb_variable_array > const&) -0000000000000000 W libsnark::pb_linear_combination_array >::pb_linear_combination_array(libsnark::pb_variable_array > const&) -0000000000000000 W libsnark::pb_linear_combination_array >::pb_linear_combination_array(libsnark::pb_variable_array > const&) -0000000000000000 n libsnark::pb_linear_combination_array >::pb_linear_combination_array(libsnark::pb_variable_array > const&) -0000000000000000 W libsnark::sha256_round_function_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_round_function_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_round_function_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_round_function_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_round_function_gadget >::sha256_round_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned int const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_round_function_gadget >::sha256_round_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned int const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_round_function_gadget >::sha256_round_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned int const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_round_function_gadget >::sha256_round_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned int const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::sha256_round_function_gadget >::sha256_round_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable > const&, unsigned int const&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_round_function_gadget >::~sha256_round_function_gadget() -0000000000000000 W libsnark::sha256_round_function_gadget >::~sha256_round_function_gadget() -0000000000000000 W libsnark::sha256_round_function_gadget >::~sha256_round_function_gadget() -0000000000000000 W libsnark::sha256_round_function_gadget >::~sha256_round_function_gadget() -0000000000000000 n libsnark::sha256_round_function_gadget >::~sha256_round_function_gadget() -0000000000000000 W std::vector, std::allocator > > libsnark::_basic_radix2_lagrange_coeffs >(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W std::vector, std::allocator > > libsnark::_basic_radix2_lagrange_coeffs >(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_tree_check_read_gadget() -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_tree_check_read_gadget() -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_tree_check_read_gadget() -0000000000000000 W libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_tree_check_read_gadget() -0000000000000000 n libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_tree_check_read_gadget() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_with_mixed_addition >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_with_mixed_addition >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::~sha256_two_to_one_hash_gadget() -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::~sha256_two_to_one_hash_gadget() -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::~sha256_two_to_one_hash_gadget() -0000000000000000 W libsnark::sha256_two_to_one_hash_gadget >::~sha256_two_to_one_hash_gadget() -0000000000000000 n libsnark::sha256_two_to_one_hash_gadget >::~sha256_two_to_one_hash_gadget() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::sha256_message_schedule_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_message_schedule_gadget >::sha256_message_schedule_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_message_schedule_gadget >::sha256_message_schedule_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_message_schedule_gadget >::sha256_message_schedule_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::sha256_message_schedule_gadget >::sha256_message_schedule_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_message_schedule_gadget >::~sha256_message_schedule_gadget() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::~sha256_message_schedule_gadget() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::~sha256_message_schedule_gadget() -0000000000000000 W libsnark::sha256_message_schedule_gadget >::~sha256_message_schedule_gadget() -0000000000000000 n libsnark::sha256_message_schedule_gadget >::~sha256_message_schedule_gadget() -0000000000000000 W libsnark::r1cs_ppzksnark_proof libsnark::r1cs_ppzksnark_prover_streaming(std::basic_ifstream >&, std::vector > const&, std::vector > const&, libsnark::r1cs_constraint_system const&) -0000000000000000 W void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long) -0000000000000000 W void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long) -0000000000000000 t void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long) [clone ._omp_fn.0] -0000000000000000 t void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long) [clone ._omp_fn.1] -0000000000000000 t void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long) [clone ._omp_fn.2] -0000000000000000 W void libsnark::generate_boolean_r1cs_constraint >(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W void libsnark::generate_boolean_r1cs_constraint >(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::kc_multi_exp_with_mixed_addition >(libsnark::sparse_vector > const&, unsigned long, unsigned long, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::knowledge_commitment libsnark::kc_multi_exp_with_mixed_addition >(libsnark::sparse_vector > const&, unsigned long, unsigned long, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::knowledge_commitment libsnark::kc_multi_exp_with_mixed_addition >(libsnark::sparse_vector > const&, unsigned long, unsigned long, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::knowledge_commitment libsnark::kc_multi_exp_with_mixed_addition >(libsnark::sparse_vector > const&, unsigned long, unsigned long, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::r1cs_ppzksnark_processed_verification_key libsnark::r1cs_ppzksnark_verifier_process_vk(libsnark::r1cs_ppzksnark_verification_key const&) -0000000000000000 W libsnark::sha256_compression_function_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_compression_function_gadget >::generate_r1cs_witness() -0000000000000000 W libsnark::sha256_compression_function_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_compression_function_gadget >::generate_r1cs_constraints() -0000000000000000 W libsnark::sha256_compression_function_gadget >::sha256_compression_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable_array > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_compression_function_gadget >::sha256_compression_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable_array > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_compression_function_gadget >::sha256_compression_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable_array > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_compression_function_gadget >::sha256_compression_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable_array > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::sha256_compression_function_gadget >::sha256_compression_function_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_variable_array > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::sha256_compression_function_gadget >::~sha256_compression_function_gadget() -0000000000000000 W libsnark::sha256_compression_function_gadget >::~sha256_compression_function_gadget() -0000000000000000 W libsnark::sha256_compression_function_gadget >::~sha256_compression_function_gadget() -0000000000000000 W libsnark::sha256_compression_function_gadget >::~sha256_compression_function_gadget() -0000000000000000 n libsnark::sha256_compression_function_gadget >::~sha256_compression_function_gadget() -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::merkle_authentication_path_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::merkle_authentication_path_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::merkle_authentication_path_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::merkle_authentication_path_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::merkle_authentication_path_variable(libsnark::protoboard >&, unsigned long, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_authentication_path_variable() -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_authentication_path_variable() -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_authentication_path_variable() -0000000000000000 W libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_authentication_path_variable() -0000000000000000 n libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::~merkle_authentication_path_variable() -0000000000000000 W void libsnark::generate_r1cs_equals_const_constraint >(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W void libsnark::generate_r1cs_equals_const_constraint >(libsnark::protoboard >&, libsnark::pb_linear_combination > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::qap_instance_evaluation > libsnark::r1cs_to_qap_instance_map_with_evaluation >(libsnark::r1cs_constraint_system > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::qap_instance_evaluation > libsnark::r1cs_to_qap_instance_map_with_evaluation >(libsnark::r1cs_constraint_system > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W std::vector, std::allocator > > libsnark::pack_bit_vector_into_field_element_vector >(std::vector > const&, unsigned long) -0000000000000000 W std::vector, std::allocator > > libsnark::pack_bit_vector_into_field_element_vector >(std::vector > const&, unsigned long) -0000000000000000 W libsnark::r1cs_ppzksnark_processed_verification_key::r1cs_ppzksnark_processed_verification_key() -0000000000000000 W libsnark::r1cs_ppzksnark_processed_verification_key::r1cs_ppzksnark_processed_verification_key() -0000000000000000 n libsnark::r1cs_ppzksnark_processed_verification_key::r1cs_ppzksnark_processed_verification_key() -0000000000000000 W libsnark::r1cs_ppzksnark_processed_verification_key::~r1cs_ppzksnark_processed_verification_key() -0000000000000000 W libsnark::r1cs_ppzksnark_processed_verification_key::~r1cs_ppzksnark_processed_verification_key() -0000000000000000 n libsnark::r1cs_ppzksnark_processed_verification_key::~r1cs_ppzksnark_processed_verification_key() - U libsnark::log2(unsigned long) -0000000000000000 W libsnark::gadget >::gadget(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::gadget >::gadget(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::gadget >::gadget(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 W libsnark::gadget >::gadget(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) -0000000000000000 n libsnark::gadget >::gadget(libsnark::protoboard >&, std::__cxx11::basic_string, std::allocator > const&) - U libsnark::div_ceil(long, long) -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::num_bits -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::num_bits -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::root_of_unity -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::root_of_unity -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::random_element() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::random_element() -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::s -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::s -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::multiplicative_generator -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::multiplicative_generator -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inv -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inv -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::one() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::one() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::zero() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::zero() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::invert() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::invert() -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Rcubed -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Rcubed -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::num_bits -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::num_bits -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Rsquared -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Rsquared -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Fp_model(long, bool) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Fp_model(long, bool) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Fp_model(long, bool) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Fp_model(long, bool) -0000000000000000 n libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::Fp_model(long, bool) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator^=(unsigned long) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator^=(unsigned long) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator-=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator-=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator+=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator+=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W std::vector > libsnark::batch_exp >(unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector, std::allocator > > const&) -0000000000000000 W std::vector > libsnark::batch_exp >(unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector, std::allocator > > const&) -0000000000000000 t std::vector > libsnark::batch_exp >(unsigned long, unsigned long, std::vector >, std::allocator > > > const&, std::vector, std::allocator > > const&) [clone ._omp_fn.5] -0000000000000000 W std::vector > libsnark::find_wnaf<4l>(unsigned long, libsnark::bigint<4l> const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 t libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.14] -0000000000000000 t libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.15] -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 t libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.12] -0000000000000000 t libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.13] -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 t libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.10] -0000000000000000 t libsnark::knowledge_commitment libsnark::multi_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.11] -0000000000000000 W libsnark::alt_bn128_G1 libsnark::naive_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::naive_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::naive_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::naive_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::naive_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::knowledge_commitment libsnark::naive_exp, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> >(std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -00000000000029e0 r libsnark::SHA256_H -0000000000002a00 r libsnark::SHA256_K - U libsnark::operator<<(std::ostream&, libsnark::alt_bn128_G1 const&) - U libsnark::operator<<(std::ostream&, libsnark::alt_bn128_G2 const&) - U libsnark::operator<<(std::ostream&, std::vector > const&) -0000000000000000 W std::ostream& libsnark::operator<< (std::ostream&, libsnark::sparse_vector const&) -0000000000000000 W std::ostream& libsnark::operator<< (std::ostream&, libsnark::r1cs_ppzksnark_verification_key const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::sparse_vector > const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::sparse_vector > const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::linear_combination > const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::linear_combination > const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::r1cs_constraint_system > const&) -0000000000000000 W std::ostream& libsnark::operator<< >(std::ostream&, libsnark::r1cs_constraint_system > const&) -0000000000000000 W libsnark::linear_combination > libsnark::operator- >(long, libsnark::linear_combination > const&) -0000000000000000 W libsnark::linear_combination > libsnark::operator- >(long, libsnark::linear_combination > const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::operator*<4l, libsnark::alt_bn128_modulus_r>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::operator*<4l, libsnark::alt_bn128_modulus_r>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::alt_bn128_G1 const&) -0000000000000000 W libsnark::alt_bn128_G2 libsnark::operator*<4l, libsnark::alt_bn128_modulus_r>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::alt_bn128_G2 const&) -0000000000000000 W libsnark::alt_bn128_G2 libsnark::operator*<4l, libsnark::alt_bn128_modulus_r>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::alt_bn128_G2 const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::knowledge_commitment const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::knowledge_commitment const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::knowledge_commitment const&) -0000000000000000 W libsnark::knowledge_commitment libsnark::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::knowledge_commitment const&) - U libsnark::operator>>(std::istream&, libsnark::alt_bn128_G1&) - U libsnark::operator>>(std::istream&, libsnark::alt_bn128_G2&) - U libsnark::operator>>(std::istream&, std::vector >&) -0000000000000000 W std::istream& libsnark::operator>>(std::istream&, libsnark::sparse_vector&) -0000000000000000 W std::istream& libsnark::operator>> >(std::istream&, libsnark::sparse_vector >&) -0000000000000000 W std::istream& libsnark::operator>> >(std::istream&, libsnark::sparse_vector >&) -0000000000000000 W void libzcash::MerklePath::SerializationOp > >, CSerActionSerialize>(CBaseDataStream > >&, CSerActionSerialize) -0000000000000000 W libzcash::PRF_gadget >::PRF_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, bool, bool, bool, bool, libsnark::pb_variable_array >, libsnark::pb_variable_array >, std::shared_ptr > >) -0000000000000000 W libzcash::PRF_gadget >::PRF_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, bool, bool, bool, bool, libsnark::pb_variable_array >, libsnark::pb_variable_array >, std::shared_ptr > >) -0000000000000000 W libzcash::PRF_gadget >::PRF_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, bool, bool, bool, bool, libsnark::pb_variable_array >, libsnark::pb_variable_array >, std::shared_ptr > >) -0000000000000000 W libzcash::PRF_gadget >::PRF_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, bool, bool, bool, bool, libsnark::pb_variable_array >, libsnark::pb_variable_array >, std::shared_ptr > >) -0000000000000000 n libzcash::PRF_gadget >::PRF_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, bool, bool, bool, bool, libsnark::pb_variable_array >, libsnark::pb_variable_array >, std::shared_ptr > >) -0000000000000000 W libzcash::PRF_gadget >::~PRF_gadget() -0000000000000000 W libzcash::PRF_gadget >::~PRF_gadget() -0000000000000000 W libzcash::PRF_gadget >::~PRF_gadget() -0000000000000000 W libzcash::PRF_gadget >::~PRF_gadget() -0000000000000000 n libzcash::PRF_gadget >::~PRF_gadget() -0000000000000000 W void libzcash::saveToFile > >(std::__cxx11::basic_string, std::allocator >, libsnark::r1cs_constraint_system >&) -0000000000000000 W void libzcash::saveToFile > >(std::__cxx11::basic_string, std::allocator >, libsnark::r1cs_constraint_system >&) -0000000000000000 W void libzcash::saveToFile >(std::__cxx11::basic_string, std::allocator >, libsnark::r1cs_ppzksnark_proving_key&) -0000000000000000 W void libzcash::saveToFile >(std::__cxx11::basic_string, std::allocator >, libsnark::r1cs_ppzksnark_verification_key&) - U libzcash::SproutNote::SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 n libzcash::SproutNote::~SproutNote() -0000000000000000 W libzcash::note_gadget >::note_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::note_gadget >::note_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::note_gadget >::note_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::note_gadget >::note_gadget(libsnark::protoboard >&) -0000000000000000 n libzcash::note_gadget >::note_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::note_gadget >::~note_gadget() -0000000000000000 W libzcash::note_gadget >::~note_gadget() -0000000000000000 W libzcash::note_gadget >::~note_gadget() -0000000000000000 W libzcash::note_gadget >::~note_gadget() -0000000000000000 n libzcash::note_gadget >::~note_gadget() -000000000000109d T libzcash::trailing252(std::vector >) -0000000000000000 W void libzcash::loadFromFile >(std::__cxx11::basic_string, std::allocator >, libsnark::r1cs_ppzksnark_verification_key&) -00000000000014ce T libzcash::insert_uint64(std::vector >&, unsigned long) - U bool libzcash::ProofVerifier::check, libsnark::r1cs_ppzksnark_processed_verification_key, std::vector, std::allocator > >, libsnark::r1cs_ppzksnark_proof >(libsnark::r1cs_ppzksnark_verification_key const&, libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector, std::allocator > > const&, libsnark::r1cs_ppzksnark_proof const&) -00000000000013f7 T libzcash::insert_uint256(std::vector >&, uint256) - U libzcash::NoteEncryption<585ul>::NoteEncryption(uint256) - U libzcash::random_uint252() - U libzcash::random_uint256() -0000000000000000 W libsnark::linear_combination > libzcash::packed_addition >(libsnark::pb_variable_array >) -0000000000000000 W libsnark::linear_combination > libzcash::packed_addition >(libsnark::pb_variable_array >) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::prove(bool, std::array const&, std::array const&, std::array&, std::array, 2ul>&, uint256&, uint256 const&, uint256&, std::array&, std::array&, std::array&, unsigned long, unsigned long, uint256 const&, bool, uint256*) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::verify(libzcash::PHGRProof const&, libzcash::ProofVerifier&, uint256 const&, uint256 const&, std::array const&, std::array const&, std::array const&, unsigned long, unsigned long, uint256 const&) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::generate(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::JoinSplitCircuit(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::JoinSplitCircuit(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 n libzcash::JoinSplitCircuit<2ul, 2ul>::JoinSplitCircuit(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::~JoinSplitCircuit() -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::~JoinSplitCircuit() -0000000000000000 W libzcash::JoinSplitCircuit<2ul, 2ul>::~JoinSplitCircuit() -0000000000000000 n libzcash::JoinSplitCircuit<2ul, 2ul>::~JoinSplitCircuit() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::alloc_uint256(libsnark::pb_variable_array >&, std::shared_ptr > >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::alloc_uint256(libsnark::pb_variable_array >&, std::shared_ptr > >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::generate_r1cs_witness(uint252 const&, uint256 const&, uint256 const&, std::array const&, std::array const&, unsigned long, unsigned long) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::generate_r1cs_witness(uint252 const&, uint256 const&, uint256 const&, std::array const&, std::array const&, unsigned long, unsigned long) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::generate_r1cs_constraints() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::generate_r1cs_constraints() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&) -0000000000000000 n libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&) -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::~joinsplit_gadget() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::~joinsplit_gadget() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::~joinsplit_gadget() -0000000000000000 W libzcash::joinsplit_gadget, 2ul, 2ul>::~joinsplit_gadget() -0000000000000000 n libzcash::joinsplit_gadget, 2ul, 2ul>::~joinsplit_gadget() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 n libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 W libzcash::input_note_gadget >::generate_r1cs_constraints() -0000000000000000 W libzcash::input_note_gadget >::generate_r1cs_constraints() -0000000000000000 W libzcash::input_note_gadget >::input_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, std::shared_ptr > >, libsnark::digest_variable >) -0000000000000000 W libzcash::input_note_gadget >::input_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, std::shared_ptr > >, libsnark::digest_variable >) -0000000000000000 W libzcash::input_note_gadget >::input_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, std::shared_ptr > >, libsnark::digest_variable >) -0000000000000000 W libzcash::input_note_gadget >::input_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, std::shared_ptr > >, libsnark::digest_variable >) -0000000000000000 n libzcash::input_note_gadget >::input_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, std::shared_ptr > >, libsnark::digest_variable >) -0000000000000000 W libzcash::input_note_gadget >::~input_note_gadget() -0000000000000000 W libzcash::input_note_gadget >::~input_note_gadget() -0000000000000000 W libzcash::input_note_gadget >::~input_note_gadget() -0000000000000000 W libzcash::input_note_gadget >::~input_note_gadget() -0000000000000000 n libzcash::input_note_gadget >::~input_note_gadget() - U libzcash::SproutSpendingKey::random() -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::~IncrementalWitness() -0000000000000000 W libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::~IncrementalWitness() -0000000000000000 n libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::~IncrementalWitness() -0000000000000000 W libzcash::merkle_tree_gadget >::merkle_tree_gadget(libsnark::protoboard >&, libsnark::digest_variable >, libsnark::digest_variable >, libsnark::pb_variable >&) -0000000000000000 W libzcash::merkle_tree_gadget >::merkle_tree_gadget(libsnark::protoboard >&, libsnark::digest_variable >, libsnark::digest_variable >, libsnark::pb_variable >&) -0000000000000000 W libzcash::merkle_tree_gadget >::merkle_tree_gadget(libsnark::protoboard >&, libsnark::digest_variable >, libsnark::digest_variable >, libsnark::pb_variable >&) -0000000000000000 W libzcash::merkle_tree_gadget >::merkle_tree_gadget(libsnark::protoboard >&, libsnark::digest_variable >, libsnark::digest_variable >, libsnark::pb_variable >&) -0000000000000000 n libzcash::merkle_tree_gadget >::merkle_tree_gadget(libsnark::protoboard >&, libsnark::digest_variable >, libsnark::digest_variable >, libsnark::pb_variable >&) -0000000000000000 W libzcash::output_note_gadget >::output_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, bool, std::shared_ptr > >) -0000000000000000 W libzcash::output_note_gadget >::output_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, bool, std::shared_ptr > >) -0000000000000000 W libzcash::output_note_gadget >::output_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, bool, std::shared_ptr > >) -0000000000000000 W libzcash::output_note_gadget >::output_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, bool, std::shared_ptr > >) -0000000000000000 n libzcash::output_note_gadget >::output_note_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, bool, std::shared_ptr > >) - U libzcash::SproutNotePlaintext::SproutNotePlaintext(libzcash::SproutNote const&, std::array) -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 n libzcash::SproutNotePlaintext::~SproutNotePlaintext() - U libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::append(libzcash::SHA256Compress) -000000000000012c T libzcash::uint64_to_bool_vector(unsigned long) -0000000000000000 W libzcash::note_commitment_gadget >::note_commitment_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, std::shared_ptr > >) -0000000000000000 W libzcash::note_commitment_gadget >::note_commitment_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, std::shared_ptr > >) -0000000000000000 W libzcash::note_commitment_gadget >::note_commitment_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, std::shared_ptr > >) -0000000000000000 W libzcash::note_commitment_gadget >::note_commitment_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, std::shared_ptr > >) -0000000000000000 n libzcash::note_commitment_gadget >::note_commitment_gadget(libsnark::protoboard >&, libsnark::pb_variable >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, libsnark::pb_variable_array >&, std::shared_ptr > >) -0000000000000000 W libzcash::note_commitment_gadget >::~note_commitment_gadget() -0000000000000000 W libzcash::note_commitment_gadget >::~note_commitment_gadget() -0000000000000000 W libzcash::note_commitment_gadget >::~note_commitment_gadget() -0000000000000000 W libzcash::note_commitment_gadget >::~note_commitment_gadget() -0000000000000000 n libzcash::note_commitment_gadget >::~note_commitment_gadget() -000000000000127e T libzcash::uint252_to_bool_vector(uint252) -0000000000000000 T libzcash::uint256_to_bool_vector(uint256) - U libzcash::initialize_curve_params() -0000000000000444 T libzcash::JSInput::JSInput() -0000000000000444 T libzcash::JSInput::JSInput() -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 n libzcash::BaseNote::~BaseNote() -00000000000002c0 T libzcash::JSOutput::JSOutput() -00000000000002c0 T libzcash::JSOutput::JSOutput() -0000000000000000 W libsnark::pb_variable_array > libzcash::from_bits >(std::vector >, libsnark::pb_variable >&) -0000000000000000 W libsnark::pb_variable_array > libzcash::from_bits >(std::vector >, libsnark::pb_variable >&) -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::h_sig(uint256 const&, std::array const&, uint256 const&) -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::Generate(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::Prepared(std::__cxx11::basic_string, std::allocator >, std::__cxx11::basic_string, std::allocator >) -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::JoinSplit() -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::JoinSplit() -0000000000000000 n libzcash::JoinSplit<2ul, 2ul>::JoinSplit() -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::~JoinSplit() -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::~JoinSplit() -0000000000000000 W libzcash::JoinSplit<2ul, 2ul>::~JoinSplit() -0000000000000000 n libzcash::JoinSplit<2ul, 2ul>::~JoinSplit() - U libzcash::PHGRProof::PHGRProof >(libsnark::r1cs_ppzksnark_proof const&) -0000000000000000 b libzcash::cs_ParamsIO -0000000000000000 W boost::exception_detail::clone_impl >::clone() const -0000000000000000 W boost::exception_detail::clone_impl >::rethrow() const -0000000000000000 W boost::exception_detail::clone_impl >::clone() const -0000000000000000 W boost::exception_detail::clone_impl >::rethrow() const -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -0000000000000000 W libsnark::protoboard >::is_satisfied() const -0000000000000000 W libsnark::protoboard >::is_satisfied() const -0000000000000000 W libsnark::protoboard >::primary_input() const -0000000000000000 W libsnark::protoboard >::primary_input() const -0000000000000000 W libsnark::protoboard >::auxiliary_input() const -0000000000000000 W libsnark::protoboard >::auxiliary_input() const -0000000000000000 W libsnark::protoboard >::get_constraint_system() const -0000000000000000 W libsnark::protoboard >::get_constraint_system() const - U libsnark::alt_bn128_G1::dbl() const - U libsnark::alt_bn128_G1::operator-(libsnark::alt_bn128_G1 const&) const - U libsnark::alt_bn128_G1::operator+(libsnark::alt_bn128_G1 const&) const - U libsnark::alt_bn128_G2::dbl() const - U libsnark::alt_bn128_G2::operator-(libsnark::alt_bn128_G2 const&) const - U libsnark::alt_bn128_G2::operator+(libsnark::alt_bn128_G2 const&) const -0000000000000000 W libsnark::sparse_vector >::operator[](unsigned long) const -0000000000000000 W libsnark::sparse_vector >::operator[](unsigned long) const -0000000000000000 W libsnark::pb_variable_array >::fill_with_bits(libsnark::protoboard >&, std::vector > const&) const -0000000000000000 W libsnark::pb_variable_array >::fill_with_bits(libsnark::protoboard >&, std::vector > const&) const -0000000000000000 W libsnark::pb_variable_array >::fill_with_bits_of_uint64(libsnark::protoboard >&, unsigned long) const -0000000000000000 W libsnark::pb_variable_array >::fill_with_bits_of_uint64(libsnark::protoboard >&, unsigned long) const -0000000000000000 W libsnark::linear_combination >::evaluate(std::vector, std::allocator > > const&) const -0000000000000000 W libsnark::linear_combination >::evaluate(std::vector, std::allocator > > const&) const -0000000000000000 W libsnark::linear_combination >::operator-(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::linear_combination >::operator-(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::linear_combination >::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::linear_combination >::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::linear_combination >::operator-() const -0000000000000000 W libsnark::linear_combination >::operator-() const -0000000000000000 W libsnark::linear_combination >::operator+(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::linear_combination >::operator+(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::knowledge_commitment::operator+(libsnark::knowledge_commitment const&) const -0000000000000000 W libsnark::knowledge_commitment::operator+(libsnark::knowledge_commitment const&) const -0000000000000000 W libsnark::pb_linear_combination >::evaluate(libsnark::protoboard >&) const -0000000000000000 W libsnark::pb_linear_combination >::evaluate(libsnark::protoboard >&) const -0000000000000000 W libsnark::r1cs_constraint_system >::is_satisfied(std::vector, std::allocator > > const&, std::vector, std::allocator > > const&) const -0000000000000000 W libsnark::r1cs_constraint_system >::is_satisfied(std::vector, std::allocator > > const&, std::vector, std::allocator > > const&) const -0000000000000000 W libsnark::pb_linear_combination_array >::get_field_element_from_bits(libsnark::protoboard > const&) const -0000000000000000 W libsnark::pb_linear_combination_array >::get_field_element_from_bits(libsnark::protoboard > const&) const -0000000000000000 W libsnark::bigint<4l>::is_zero() const -0000000000000000 W libsnark::bigint<4l>::num_bits() const -0000000000000000 W libsnark::bigint<4l>::test_bit(unsigned long) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inverse() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inverse() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::as_bigint() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::as_bigint() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator^(unsigned long) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator^(unsigned long) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator==(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator==(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator-(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator-(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator+(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::operator+(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) const -0000000000000000 W libsnark::variable >::operator-(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::variable >::operator-(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::variable >::operator+(libsnark::linear_combination > const&) const -0000000000000000 W libsnark::variable >::operator+(libsnark::linear_combination > const&) const - U libzcash::SproutNote::cm() const - U libzcash::SproutNote::nullifier(libzcash::SproutSpendingKey const&) const - U libzcash::SproutSpendingKey::address() const - U libzcash::IncrementalWitness<29ul, libzcash::SHA256Compress>::partial_path() const - U libzcash::SproutNotePlaintext::encrypt(libzcash::NoteEncryption<585ul>&, uint256 const&) const - U libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::last() const - U libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::path(std::deque >) const - U libzcash::IncrementalMerkleTree<29ul, libzcash::SHA256Compress>::root(unsigned long, std::deque >) const -00000000000001a0 T libzcash::JSOutput::note(uint252 const&, uint256 const&, unsigned long, uint256 const&) const - U libsnark::r1cs_ppzksnark_proof libzcash::PHGRProof::to_libsnark_proof >() const - U std::__basic_file::is_open() const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const - U std::ctype::_M_widen_init() const - U std::__cxx11::basic_stringbuf, std::allocator >::str() const - U std::basic_ios >::fill() const - U std::istream& std::istream::_M_extract(unsigned long&) - U std::istream::read(char*, long) - U std::ostream::flush() - U std::ostream::write(char const*, long) - U std::ostream& std::ostream::_M_insert(unsigned long) - U std::ostream::operator<<(std::basic_streambuf >*) -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 W std::_Deque_base >::~_Deque_base() -0000000000000000 n std::_Deque_base >::~_Deque_base() - U std::logic_error::logic_error(char const*) - U std::logic_error::~logic_error() - U std::__basic_file::~__basic_file() - U std::length_error::length_error(char const*) - U std::length_error::~length_error() -0000000000000000 W void std::__shared_ptr >, (__gnu_cxx::_Lock_policy)2>::reset > >(libsnark::packing_gadget >*) -0000000000000000 W void std::__shared_ptr >, (__gnu_cxx::_Lock_policy)2>::reset > >(libsnark::packing_gadget >*) -0000000000000000 W void std::__shared_ptr >, (__gnu_cxx::_Lock_policy)2>::reset > >(libsnark::digest_variable >*) -0000000000000000 W void std::__shared_ptr >, (__gnu_cxx::_Lock_policy)2>::reset > >(libsnark::digest_variable >*) - U std::basic_filebuf >::open(char const*, std::_Ios_Openmode) - U std::basic_filebuf >::close() - U std::basic_filebuf >::basic_filebuf() - U std::basic_filebuf >::~basic_filebuf() -0000000000000000 W std::_Bvector_base >::_M_deallocate() - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::runtime_error(std::__cxx11::basic_string, std::allocator > const&) - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::runtime_error(std::runtime_error const&) - U std::runtime_error::~runtime_error() - U std::runtime_error::~runtime_error() - U std::basic_ifstream >::basic_ifstream(std::__cxx11::basic_string, std::allocator > const&, std::_Ios_Openmode) - U std::basic_ifstream >::~basic_ifstream() - U std::basic_ofstream >::basic_ofstream() - U std::basic_ofstream >::~basic_ofstream() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&) -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 W std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() -0000000000000000 n std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr() - U std::invalid_argument::invalid_argument(char const*) - U std::invalid_argument::~invalid_argument() -0000000000000000 W std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_destroy() -0000000000000000 W std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() -0000000000000000 W libsnark::pb_linear_combination >* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, libsnark::pb_linear_combination >*>(__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, libsnark::pb_linear_combination >*) -0000000000000000 W libsnark::pb_linear_combination >* std::__uninitialized_copy::__uninit_copy<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, libsnark::pb_linear_combination >*>(__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, libsnark::pb_linear_combination >*) - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 n std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 n std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 n std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 W std::array > >, 2ul>::~array() -0000000000000000 n std::array > >, 2ul>::~array() - U std::locale::locale() - U std::locale::~locale() -0000000000000000 W void std::vector >::_M_insert_range(std::_Bit_iterator, std::_Bit_iterator, std::_Bit_iterator, std::forward_iterator_tag) -0000000000000000 W void std::vector >::_M_range_insert(__gnu_cxx::__normal_iterator > >, char const*, char const*, std::forward_iterator_tag) -0000000000000000 W void std::vector >::_M_range_insert(__gnu_cxx::__normal_iterator > >, unsigned char const*, unsigned char const*, std::forward_iterator_tag) -0000000000000000 W std::vector >::_M_default_append(unsigned long) -0000000000000000 W void std::vector >::emplace_back(unsigned long&) -0000000000000000 W void std::vector >::emplace_back(unsigned long&) -0000000000000000 W void std::vector >::_M_range_insert<__gnu_cxx::__normal_iterator > > >(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, std::forward_iterator_tag) -0000000000000000 W std::vector >::_M_default_append(unsigned long) -0000000000000000 W void std::vector >::_M_emplace_back_aux(unsigned long&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(unsigned long&) -0000000000000000 W std::vector >::reserve(unsigned long) -0000000000000000 W std::vector >::operator=(std::vector > const&) -0000000000000000 W std::vector >::vector(std::vector > const&) -0000000000000000 W std::vector >::vector(std::vector > const&) -0000000000000000 n std::vector >::vector(std::vector > const&) -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 W std::vector, std::allocator > >::~vector() -0000000000000000 n std::vector, std::allocator > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > const&>(libsnark::linear_term > const&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::linear_term >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > const&>(libsnark::linear_term > const&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::linear_term >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::linear_term > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::linear_term >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::linear_term > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::linear_term >&&) -0000000000000000 W std::vector >, std::allocator > > >::reserve(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::reserve(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::operator=(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::operator=(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector >, std::allocator > > >::_M_range_insert<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > > >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, std::forward_iterator_tag) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_variable >&&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W void std::vector >::emplace_back(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::emplace_back(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&&) -0000000000000000 W std::vector >::reserve(unsigned long) -0000000000000000 W std::vector >::operator=(std::vector > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::block_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::block_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::packing_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::packing_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::digest_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::digest_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::digest_variable >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::digest_variable >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::lastbits_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::lastbits_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::lastbits_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::lastbits_gadget >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::r1cs_constraint > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::r1cs_constraint > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::knowledge_commitment&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::knowledge_commitment&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::knowledge_commitment&&) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::knowledge_commitment&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::knowledge_commitment&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::knowledge_commitment const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::knowledge_commitment&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::knowledge_commitment&&) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_linear_combination >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_linear_combination >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_linear_combination >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_linear_combination >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_linear_combination >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_linear_combination >&&) -0000000000000000 W std::vector >, std::allocator > > >::operator=(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::operator=(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector > const*, std::vector >, std::allocator > > > > >, void>(std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::allocator > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector > const*, std::vector >, std::allocator > > > > >, void>(std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::allocator > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector > const*, std::vector >, std::allocator > > > > >, void>(std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::allocator > > const&) -0000000000000000 W std::vector >, std::allocator > > >::vector > const*, std::vector >, std::allocator > > > > >, void>(std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::allocator > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector(std::vector >, std::allocator > > > const&) -0000000000000000 n std::vector >, std::allocator > > >::vector > const*, std::vector >, std::allocator > > > > >, void>(std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::reverse_iterator<__gnu_cxx::__normal_iterator > const*, std::vector >, std::allocator > > > > >, std::allocator > > const&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::digest_selector_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::digest_selector_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::digest_selector_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::digest_selector_gadget >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back >&>(libsnark::pb_variable_array >&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_linear_combination_array >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back >&>(libsnark::pb_variable_array >&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::pb_linear_combination_array >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::pb_linear_combination_array > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable_array >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_linear_combination_array >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > const&>(libsnark::pb_linear_combination_array > const&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux >&>(libsnark::pb_variable_array >&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::pb_linear_combination_array >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::sha256_round_function_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::emplace_back > >(libsnark::sha256_round_function_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::sha256_round_function_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::sha256_round_function_gadget >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::sha256_two_to_one_hash_gadget >&&) -0000000000000000 W void std::vector >, std::allocator > > >::_M_emplace_back_aux > >(libsnark::sha256_two_to_one_hash_gadget >&&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back const&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&&) -0000000000000000 W std::vector, std::allocator > >::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W std::vector, std::allocator > >::_M_fill_insert(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector, std::allocator > >::_M_range_insert<__gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > > >(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator const*, std::vector, std::allocator > > >, std::forward_iterator_tag) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux const&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux&>(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>&&) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) -0000000000000000 W std::vector, std::allocator > >::vector(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::allocator > const&) -0000000000000000 W std::vector, std::allocator > >::vector(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::allocator > const&) -0000000000000000 W std::vector, std::allocator > >::vector(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::allocator > const&) -0000000000000000 W std::vector, std::allocator > >::vector(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::allocator > const&) -0000000000000000 n std::vector, std::allocator > >::vector(unsigned long, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, std::allocator > const&) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector >, std::allocator > > >::~vector() -0000000000000000 n std::vector >, std::allocator > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 n std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 n std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 n std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::_M_default_append(unsigned long) -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 W std::vector > >, std::allocator > > > >::~vector() -0000000000000000 n std::vector > >, std::allocator > > > >::~vector() - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) -0000000000000000 W void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) -0000000000000000 W void std::__cxx11::basic_string, std::allocator >::_M_construct(char const*, char const*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::swap(std::__cxx11::basic_string, std::allocator >&) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_assign(std::__cxx11::basic_string, std::allocator > const&) - U std::__cxx11::basic_string, std::allocator >::_M_create(unsigned long&, unsigned long) - U std::__cxx11::basic_string, std::allocator >::basic_string(char const*, std::allocator const&) -0000000000000000 W std::__cxx11::basic_stringbuf, std::allocator >::~basic_stringbuf() -0000000000000000 W std::__cxx11::basic_stringbuf, std::allocator >::~basic_stringbuf() -0000000000000000 W std::__cxx11::basic_stringbuf, std::allocator >::~basic_stringbuf() -0000000000000000 n std::__cxx11::basic_stringbuf, std::allocator >::~basic_stringbuf() - U std::__cxx11::basic_stringstream, std::allocator >::basic_stringstream(std::_Ios_Openmode) - U std::__cxx11::basic_stringstream, std::allocator >::~basic_stringstream() - U std::__cxx11::basic_ostringstream, std::allocator >::basic_ostringstream(std::_Ios_Openmode) - U std::__cxx11::basic_ostringstream, std::allocator >::~basic_ostringstream() - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::ios_base::ios_base() - U std::ios_base::~ios_base() - U std::basic_ios >::init(std::basic_streambuf >*) - U std::basic_ios >::clear(std::_Ios_Iostate) - U std::basic_ios >::copyfmt(std::basic_ios > const&) - U operator new(unsigned long) -0000000000000000 W void std::__make_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__ops::_Iter_less_iter>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, __gnu_cxx::__ops::_Iter_less_iter) -0000000000000000 W void std::__adjust_heap<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, libsnark::linear_term >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, libsnark::linear_term >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__adjust_heap<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, libsnark::linear_term >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, __gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, libsnark::linear_term >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, long, libsnark::ordered_exponent<4l>, __gnu_cxx::__ops::_Iter_less_iter>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, long, long, libsnark::ordered_exponent<4l>, __gnu_cxx::__ops::_Iter_less_iter) -0000000000000000 W void std::__heap_select<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__heap_select<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W __gnu_cxx::__normal_iterator > > std::__lower_bound<__gnu_cxx::__normal_iterator > >, unsigned long, __gnu_cxx::__ops::_Iter_less_val>(__gnu_cxx::__normal_iterator > >, __gnu_cxx::__normal_iterator > >, unsigned long const&, __gnu_cxx::__ops::_Iter_less_val) -0000000000000000 W void std::__insertion_sort<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__insertion_sort<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__introsort_loop<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, long, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__introsort_loop<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, long, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>, long, __gnu_cxx::__ops::_Iter_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) - U std::basic_ostream >& std::__ostream_insert >(std::basic_ostream >&, char const*, long) - U std::__throw_bad_cast() - U std::__throw_bad_alloc() - U std::__throw_logic_error(char const*) - U std::__throw_length_error(char const*) -0000000000000000 W void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Val_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Val_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Val_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}> >(__gnu_cxx::__normal_iterator >*, std::vector >, std::allocator > > > >, __gnu_cxx::__ops::_Val_comp_iter >::linear_combination(std::vector >, std::allocator > > > const&)::{lambda(libsnark::linear_term >, libsnark::linear_term >)#1}>) -0000000000000000 W void std::swap > >(libsnark::linear_term >&, libsnark::linear_term >&) -0000000000000000 W void std::swap > >(libsnark::linear_term >&, libsnark::linear_term >&) - U std::terminate() -0000000000000028 b std::__ioinit -000000000000008e W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000086 W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -000000000000008e W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000086 W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000083 W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -000000000000007b W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000083 W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -000000000000007b W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 V typeinfo for boost::lock_error -0000000000000000 V typeinfo for boost::exception_detail::clone_base -0000000000000000 V typeinfo for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo for boost::thread_exception -0000000000000000 V typeinfo for boost::thread_resource_error -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category -0000000000000000 V typeinfo for boost::exception -0000000000000000 V typeinfo for libsnark::evaluation_domain > -0000000000000000 V typeinfo for libsnark::basic_radix2_domain > -0000000000000000 V typeinfo for libzcash::SproutNote -0000000000000000 V typeinfo for libzcash::JoinSplitCircuit<2ul, 2ul> -0000000000000000 V typeinfo for libzcash::BaseNote -0000000000000000 V typeinfo for libzcash::JoinSplit<2ul, 2ul> - U typeinfo for std::_V2::error_category - U typeinfo for std::logic_error -0000000000000000 V typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2> - U typeinfo for std::length_error - U typeinfo for std::runtime_error -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> - U typeinfo for std::invalid_argument -0000000000000000 V typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for boost::lock_error -0000000000000000 V typeinfo name for boost::exception_detail::clone_base -0000000000000000 V typeinfo name for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo name for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo name for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo name for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo name for boost::thread_exception -0000000000000000 V typeinfo name for boost::thread_resource_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category -0000000000000000 V typeinfo name for boost::exception -0000000000000000 V typeinfo name for libsnark::evaluation_domain > -0000000000000000 V typeinfo name for libsnark::basic_radix2_domain > -0000000000000000 V typeinfo name for libzcash::SproutNote -0000000000000000 V typeinfo name for libzcash::JoinSplitCircuit<2ul, 2ul> -0000000000000000 V typeinfo name for libzcash::BaseNote -0000000000000000 V typeinfo name for libzcash::JoinSplit<2ul, 2ul> -0000000000000000 V typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2> -0000000000000000 V VTT for boost::exception_detail::clone_impl > -0000000000000000 V VTT for boost::exception_detail::clone_impl > - U VTT for std::__cxx11::basic_ostringstream, std::allocator > - U VTT for std::basic_ifstream > - U VTT for std::basic_ofstream > -0000000000000162 W virtual thunk to boost::exception_detail::clone_impl >::clone() const -0000000000000162 W virtual thunk to boost::exception_detail::clone_impl >::clone() const -0000000000000085 W virtual thunk to boost::exception_detail::clone_impl >::rethrow() const -0000000000000085 W virtual thunk to boost::exception_detail::clone_impl >::rethrow() const -0000000000000097 W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -000000000000008f W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000097 W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -000000000000008f W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() - U vtable for __cxxabiv1::__class_type_info - U vtable for __cxxabiv1::__si_class_type_info - U vtable for __cxxabiv1::__vmi_class_type_info -0000000000000000 V vtable for boost::lock_error -0000000000000000 V vtable for boost::exception_detail::clone_base -0000000000000000 V vtable for boost::exception_detail::clone_impl > -0000000000000000 V vtable for boost::exception_detail::clone_impl > -0000000000000000 V vtable for boost::exception_detail::error_info_injector -0000000000000000 V vtable for boost::exception_detail::error_info_injector -0000000000000000 V vtable for boost::thread_exception -0000000000000000 V vtable for boost::thread_resource_error -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 V vtable for boost::exception -0000000000000000 V vtable for libsnark::basic_radix2_domain > -0000000000000000 V vtable for libzcash::SproutNote -0000000000000000 V vtable for libzcash::JoinSplitCircuit<2ul, 2ul> -0000000000000000 V vtable for libzcash::JoinSplit<2ul, 2ul> - U vtable for std::__cxx11::basic_stringbuf, std::allocator > - U vtable for std::__cxx11::basic_ostringstream, std::allocator > - U vtable for std::basic_filebuf > - U vtable for std::basic_ifstream > - U vtable for std::basic_ofstream > - U vtable for std::basic_streambuf > -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr, libsnark::sha256_two_to_one_hash_gadget > >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> -0000000000000000 V vtable for std::_Sp_counted_ptr >*, (__gnu_cxx::_Lock_policy)2> - U vtable for std::basic_ios > -0000000000001980 r boost::recursive_mutex::lock()::__PRETTY_FUNCTION__ -0000000000001940 r boost::recursive_mutex::unlock()::__PRETTY_FUNCTION__ -0000000000000000 r boost::recursive_mutex::recursive_mutex()::__PRETTY_FUNCTION__ -0000000000000040 r boost::recursive_mutex::~recursive_mutex()::__PRETTY_FUNCTION__ -0000000000002740 r libsnark::protoboard >::set_input_sizes(unsigned long)::__PRETTY_FUNCTION__ -00000000000023e0 r libsnark::protoboard >::val(libsnark::pb_variable > const&)::__PRETTY_FUNCTION__ -0000000000002300 r libsnark::protoboard >::lc_val(libsnark::pb_linear_combination > const&)::__PRETTY_FUNCTION__ -0000000000001ec0 r libsnark::block_variable >::block_variable(libsnark::protoboard >&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -0000000000000b60 r libsnark::packing_gadget >::generate_r1cs_witness_from_packed()::__PRETTY_FUNCTION__ -00000000000025a0 r libsnark::multipacking_gadget >::multipacking_gadget(libsnark::protoboard >&, libsnark::pb_linear_combination_array > const&, libsnark::pb_linear_combination_array > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -00000000000024a0 r libsnark::pb_linear_combination >::assign(libsnark::protoboard >&, libsnark::linear_combination > const&)::__PRETTY_FUNCTION__ -0000000000000800 r libsnark::bit_vector_copy_gadget >::generate_r1cs_witness()::__PRETTY_FUNCTION__ -0000000000001b60 r libsnark::bit_vector_copy_gadget >::bit_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, unsigned long, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -00000000000008c0 r libsnark::digest_selector_gadget >::generate_r1cs_witness()::__PRETTY_FUNCTION__ -0000000000000080 r libsnark::qap_witness > libsnark::r1cs_to_qap_witness_map >(libsnark::r1cs_constraint_system > const&, std::vector, std::allocator > > const&, std::vector, std::allocator > > const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&)::__PRETTY_FUNCTION__ -00000000000019c0 r libsnark::field_vector_copy_gadget >::field_vector_copy_gadget(libsnark::protoboard >&, libsnark::pb_variable_array > const&, libsnark::pb_variable_array > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -0000000000001640 r libsnark::r1cs_ppzksnark_keypair libsnark::r1cs_ppzksnark_generator(libsnark::r1cs_constraint_system const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&, libsnark::alt_bn128_pp::Fp_type const&)::__PRETTY_FUNCTION__ -0000000000002020 r libsnark::merkle_tree_check_read_gadget, libsnark::sha256_two_to_one_hash_gadget > >::merkle_tree_check_read_gadget(libsnark::protoboard >&, unsigned long, libsnark::pb_linear_combination_array > const&, libsnark::digest_variable > const&, libsnark::digest_variable > const&, libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > > const&, libsnark::pb_linear_combination > const&, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -0000000000001d20 r libsnark::sha256_two_to_one_hash_gadget >::sha256_two_to_one_hash_gadget(libsnark::protoboard >&, unsigned long, libsnark::block_variable > const&, libsnark::digest_variable > const&, std::__cxx11::basic_string, std::allocator > const&)::__PRETTY_FUNCTION__ -0000000000001540 r void libsnark::_basic_parallel_radix2_FFT_inner >(std::vector, std::allocator > >&, libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r> const&, unsigned long)::__PRETTY_FUNCTION__ -0000000000000980 r libsnark::merkle_authentication_path_variable, libsnark::sha256_two_to_one_hash_gadget > >::generate_r1cs_witness(unsigned long, std::vector >, std::allocator > > > const&)::__PRETTY_FUNCTION__ -0000000000000ec0 r void libzcash::MerklePath::SerializationOp > >, CSerActionSerialize>(CBaseDataStream > >&, CSerActionSerialize)::__PRETTY_FUNCTION__ -0000000000000f80 r libzcash::JoinSplitCircuit<2ul, 2ul>::prove(bool, std::array const&, std::array const&, std::array&, std::array, 2ul>&, uint256&, uint256 const&, uint256&, std::array&, std::array&, std::array&, unsigned long, unsigned long, uint256 const&, bool, uint256*)::__PRETTY_FUNCTION__ -0000000000001240 r libzcash::joinsplit_gadget, 2ul, 2ul>::witness_map(uint256 const&, uint256 const&, std::array const&, std::array const&, std::array const&, unsigned long, unsigned long)::__PRETTY_FUNCTION__ -0000000000002800 r libzcash::joinsplit_gadget, 2ul, 2ul>::joinsplit_gadget(libsnark::protoboard >&)::__PRETTY_FUNCTION__ -0000000000000c20 r libsnark::protoboard >::val(libsnark::pb_variable > const&) const::__PRETTY_FUNCTION__ -0000000000000ce0 r libsnark::protoboard >::lc_val(libsnark::pb_linear_combination > const&) const::__PRETTY_FUNCTION__ -00000000000006e0 r libsnark::pb_variable_array >::fill_with_bits(libsnark::protoboard >&, std::vector > const&) const::__PRETTY_FUNCTION__ -00000000000003e0 r libsnark::r1cs_constraint_system >::is_satisfied(std::vector, std::allocator > > const&, std::vector, std::allocator > > const&) const::__PRETTY_FUNCTION__ -0000000000000dc0 r libsnark::pb_linear_combination_array >::get_field_element_from_bits(libsnark::protoboard > const&) const::__PRETTY_FUNCTION__ - -libzcash_a-Proof.o: - U __assert_fail - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_rethrow - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -00000000000026db t _GLOBAL__sub_I__ZN8libzcash13fq2_to_bigintERKN8libsnark9Fp2_modelILl4EL_ZNS0_19alt_bn128_modulus_qEEEE - U __gmpn_addmul_1 - U __gmpn_add_n - U __gmpn_copyi - U __gmpn_mul - U __gmpn_mul_n - U __gmpn_rshift - U __gmpn_sub_n - U __gmpn_tdiv_qr - U __gmpn_zero - U GOMP_parallel - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000012 r .LC1 -0000000000000030 r .LC10 -0000000000000080 r .LC11 -00000000000000c0 r .LC12 -00000000000000f8 r .LC13 -00000000000000b3 r .LC14 -00000000000000c8 r .LC15 -0000000000000026 r .LC2 -000000000000003b r .LC3 -0000000000000000 r .LC4 -0000000000000051 r .LC5 -0000000000000061 r .LC6 -0000000000000074 r .LC7 -0000000000000087 r .LC8 -00000000000000a3 r .LC9 - U memcpy - U memmove - U omp_get_num_threads - U omp_get_thread_num - U __once_proxy - U __printf_chk - w __pthread_key_create - w pthread_once - U __stack_chk_fail - U _Unwind_Resume - U operator delete(void*) -0000000000000000 u guard variable for libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 u guard variable for libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 u guard variable for libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 u guard variable for libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 u guard variable for libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::scalar_mul(libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&) - U libsnark::enter_block(std::__cxx11::basic_string, std::allocator > const&, bool) - U libsnark::leave_block(std::__cxx11::basic_string, std::allocator > const&, bool) - U libsnark::alt_bn128_G1::random_element() - U libsnark::alt_bn128_G1::wnaf_window_table - U libsnark::alt_bn128_G1::to_affine_coordinates() - U libsnark::alt_bn128_G1::one() - U libsnark::alt_bn128_G1::zero() - U libsnark::alt_bn128_G1::alt_bn128_G1() - U libsnark::alt_bn128_G2::random_element() - U libsnark::alt_bn128_G2::to_affine_coordinates() - U libsnark::alt_bn128_G2::one() - U libsnark::alt_bn128_G2::zero() - U libsnark::alt_bn128_G2::alt_bn128_G2() - U libsnark::alt_bn128_pp::miller_loop(libsnark::alt_bn128_ate_G1_precomp const&, libsnark::alt_bn128_ate_G2_precomp const&) - U libsnark::alt_bn128_pp::precompute_G1(libsnark::alt_bn128_G1 const&) - U libsnark::alt_bn128_pp::precompute_G2(libsnark::alt_bn128_G2 const&) - U libsnark::alt_bn128_pp::double_miller_loop(libsnark::alt_bn128_ate_G1_precomp const&, libsnark::alt_bn128_ate_G2_precomp const&, libsnark::alt_bn128_ate_G1_precomp const&, libsnark::alt_bn128_ate_G2_precomp const&) - U libsnark::alt_bn128_pp::init_public_params() - U libsnark::alt_bn128_pp::final_exponentiation(libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) - U libsnark::print_indent() -0000000000000000 W libsnark::sparse_vector::~sparse_vector() -0000000000000000 W libsnark::sparse_vector::~sparse_vector() -0000000000000000 n libsnark::sparse_vector::~sparse_vector() -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_inner >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp_inner >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 u libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 V libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue - U libsnark::alt_bn128_coeff_b - U libsnark::alt_bn128_modulus_q - U libsnark::alt_bn128_modulus_r -0000000000000000 W libsnark::alt_bn128_G1 libsnark::opt_window_wnaf_exp(libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&, unsigned long) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::fixed_window_wnaf_exp(unsigned long, libsnark::alt_bn128_G1 const&, libsnark::bigint<4l> const&) -0000000000000000 u libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 V libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::one() -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::one() - U libsnark::alt_bn128_twist_coeff_b -0000000000000000 W bool libsnark::r1cs_ppzksnark_online_verifier_weak_IC(libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector > const&, libsnark::r1cs_ppzksnark_proof const&) -0000000000000000 W bool libsnark::r1cs_ppzksnark_online_verifier_strong_IC(libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector > const&, libsnark::r1cs_ppzksnark_proof const&) -0000000000000000 W libsnark::bigint<4l>::clear() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::t_minus_1_over_2 -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::t_minus_1_over_2 -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::s -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::s -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::inv -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::inv -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::one() -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::one() -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Rsquared -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Rsquared -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Fp_model(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Fp_model(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Fp_model(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Fp_model(libsnark::bigint<4l> const&) -0000000000000000 n libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::Fp_model(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator+=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator+=(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::mul_reduce(libsnark::bigint<4l> const&) -0000000000000000 u libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inv -0000000000000000 V libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::inv -0000000000000000 W std::vector > libsnark::find_wnaf<4l>(unsigned long, libsnark::bigint<4l> const&) -0000000000000000 u libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 V libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::non_residue -0000000000000000 u libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::t_minus_1_over_2 -0000000000000000 V libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::t_minus_1_over_2 -0000000000000000 u libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::s -0000000000000000 V libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::s -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::one() -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::one() -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::zero() -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::zero() -0000000000000000 u libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 V libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::nqr_to_t -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) -0000000000000000 t libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.0] -0000000000000000 t libsnark::alt_bn128_G1 libsnark::multi_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator, unsigned long, bool) [clone ._omp_fn.1] -0000000000000000 W libsnark::alt_bn128_G1 libsnark::naive_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -0000000000000000 W libsnark::alt_bn128_G1 libsnark::naive_exp >(std::vector >::const_iterator, std::vector >::const_iterator, std::vector, std::allocator > >::const_iterator, std::vector, std::allocator > >::const_iterator) -00000000000003b8 T libzcash::CompressedG1::CompressedG1(libsnark::alt_bn128_G1) -00000000000003b8 T libzcash::CompressedG1::CompressedG1(libsnark::alt_bn128_G1) -00000000000009f8 T libzcash::CompressedG2::CompressedG2(libsnark::alt_bn128_G2) -00000000000009f8 T libzcash::CompressedG2::CompressedG2(libsnark::alt_bn128_G2) -0000000000000102 T libzcash::fq2_to_bigint(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000000102 T libzcash::fq2_to_bigint(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) -0000000000002692 T bool libzcash::ProofVerifier::check, libsnark::r1cs_ppzksnark_processed_verification_key, std::vector, std::allocator > >, libsnark::r1cs_ppzksnark_proof >(libsnark::r1cs_ppzksnark_verification_key const&, libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector, std::allocator > > const&, libsnark::r1cs_ppzksnark_proof const&) -0000000000002692 T bool libzcash::ProofVerifier::check, libsnark::r1cs_ppzksnark_processed_verification_key, std::vector, std::allocator > >, libsnark::r1cs_ppzksnark_proof >(libsnark::r1cs_ppzksnark_verification_key const&, libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector, std::allocator > > const&, libsnark::r1cs_ppzksnark_proof const&) -0000000000000086 T libzcash::ProofVerifier::Strict() -00000000000000c4 T libzcash::ProofVerifier::Disabled() -0000000000000000 T libzcash::initialize_curve_params() -0000000000000314 T libzcash::Fq::Fq >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>) -0000000000000314 T libzcash::Fq::Fq >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>) -0000000000000314 T libzcash::Fq::Fq >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>) -0000000000000314 T libzcash::Fq::Fq >(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>) -000000000000020c T libzcash::Fq2::Fq2 >(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>) -000000000000020c T libzcash::Fq2::Fq2 >(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>) -000000000000020c T libzcash::Fq2::Fq2 >(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>) -000000000000020c T libzcash::Fq2::Fq2 >(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>) -00000000000011d0 T libzcash::PHGRProof::random_invalid() -0000000000000bdc T libzcash::PHGRProof::PHGRProof >(libsnark::r1cs_ppzksnark_proof const&) -0000000000000bdc T libzcash::PHGRProof::PHGRProof >(libsnark::r1cs_ppzksnark_proof const&) -0000000000000000 b libzcash::init_public_params_once_flag -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const - U libsnark::alt_bn128_G1::is_well_formed() const - U libsnark::alt_bn128_G1::dbl() const - U libsnark::alt_bn128_G1::is_zero() const - U libsnark::alt_bn128_G1::operator-(libsnark::alt_bn128_G1 const&) const - U libsnark::alt_bn128_G1::operator+(libsnark::alt_bn128_G1 const&) const - U libsnark::alt_bn128_G2::is_well_formed() const - U libsnark::alt_bn128_G2::dbl() const - U libsnark::alt_bn128_G2::is_zero() const - U libsnark::alt_bn128_G2::operator!=(libsnark::alt_bn128_G2 const&) const - U libsnark::alt_bn128_G2::operator+(libsnark::alt_bn128_G2 const&) const -0000000000000000 W std::pair > libsnark::sparse_vector::accumulate >(std::vector, std::allocator > >::const_iterator const&, std::vector, std::allocator > >::const_iterator const&, unsigned long) const -0000000000000000 W std::pair > libsnark::sparse_vector::accumulate >(std::vector, std::allocator > >::const_iterator const&, std::vector, std::allocator > >::const_iterator const&, unsigned long) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator==(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator==(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp6_3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::unitary_inverse() const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::unitary_inverse() const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator!=(libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q>::operator!=(libsnark::Fp12_2over3over2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::bigint<4l>::is_zero() const -0000000000000000 W libsnark::bigint<4l>::num_bits() const -0000000000000000 W libsnark::bigint<4l>::test_bit(unsigned long) const -0000000000000000 W libsnark::bigint<4l>::operator==(libsnark::bigint<4l> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::sqrt() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::sqrt() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::squared() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::squared() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::as_bigint() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::as_bigint() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator-() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::as_bigint() const -0000000000000000 W libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_r>::as_bigint() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::squared_complex() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::squared_complex() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::sqrt() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::sqrt() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator==(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator==(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator-(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator*(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator-() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator-() const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000000000 W libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q>::operator+(libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> const&) const -0000000000001ba8 T libsnark::alt_bn128_G1 libzcash::CompressedG1::to_libsnark_g1() const -000000000000178c T libsnark::alt_bn128_G2 libzcash::CompressedG2::to_libsnark_g2() const -000000000000057e T libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> libzcash::Fq::to_libsnark_fq >() const -000000000000057e T libsnark::Fp_model<4l, libsnark::alt_bn128_modulus_q> libzcash::Fq::to_libsnark_fq >() const -00000000000006b8 T libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> libzcash::Fq2::to_libsnark_fq2 >() const -00000000000006b8 T libsnark::Fp2_model<4l, libsnark::alt_bn128_modulus_q> libzcash::Fq2::to_libsnark_fq2 >() const -0000000000001d56 T libsnark::r1cs_ppzksnark_proof libzcash::PHGRProof::to_libsnark_proof >() const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const - U std::domain_error::domain_error(char const*) - U std::domain_error::~domain_error() - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::~runtime_error() - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W void std::vector >::_M_emplace_back_aux(unsigned long const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(unsigned long const&) -0000000000000000 W void std::vector >::emplace_back(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::emplace_back(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1 const&) -0000000000000000 W void std::vector >::_M_emplace_back_aux(libsnark::alt_bn128_G1&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::emplace_back >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W void std::vector, std::allocator > >::_M_emplace_back_aux >(libsnark::ordered_exponent<4l>&&) -0000000000000000 W std::vector, std::allocator > >::reserve(unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) -0000000000000000 W void std::__cxx11::basic_string, std::allocator >::_M_construct(char const*, char const*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_create(unsigned long&, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U operator new(unsigned long) - U std::__once_call -0000000000000000 W void std::__adjust_heap<__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, long, libsnark::ordered_exponent<4l>, __gnu_cxx::__ops::_Iter_less_iter>(__gnu_cxx::__normal_iterator*, std::vector, std::allocator > > >, long, long, libsnark::ordered_exponent<4l>, __gnu_cxx::__ops::_Iter_less_iter) - U std::__once_callable -0000000000000000 W void std::__once_call_impl >() - U std::__throw_bad_alloc() - U std::__throw_logic_error(char const*) - U std::__throw_length_error(char const*) - U std::__throw_system_error(int) -0000000000000004 b std::__ioinit -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category - U typeinfo for std::_V2::error_category - U typeinfo for std::domain_error - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category - U vtable for __cxxabiv1::__si_class_type_info -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 r bool libsnark::r1cs_ppzksnark_online_verifier_weak_IC(libsnark::r1cs_ppzksnark_processed_verification_key const&, std::vector > const&, libsnark::r1cs_ppzksnark_proof const&)::__PRETTY_FUNCTION__ -0000000000000300 r libsnark::alt_bn128_G1 libzcash::CompressedG1::to_libsnark_g1() const::__PRETTY_FUNCTION__ -0000000000000280 r libsnark::alt_bn128_G2 libzcash::CompressedG2::to_libsnark_g2() const::__PRETTY_FUNCTION__ - -libzcash_a-Note.o: - U __assert_fail - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -000000000000270d t _GLOBAL__sub_I__ZN8libzcash10SproutNoteC2Ev - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000000 r .LC1 -0000000000000028 r .LC2 -0000000000000060 r .LC3 -0000000000000018 r .LC4 -0000000000000027 r .LC5 -0000000000000098 r .LC6 -0000000000000036 r .LC7 -000000000000004d r .LC8 -0000000000000062 r .LC9 - U librustzcash_ivk_to_pkd - U librustzcash_sapling_compute_cm - U librustzcash_sapling_compute_nf - U librustzcash_sapling_generate_r - U memcmp - U memmove - U __stack_chk_fail - U _Unwind_Resume -0000000000000000 W void Unserialize > >, unsigned char, 11ul>(CBaseDataStream > >&, std::array&) -0000000000000000 W void Unserialize > >, unsigned char, 512ul>(CBaseDataStream > >&, std::array&) - U memory_cleanse(void*, unsigned long) - U convertIntToVectorLE(unsigned long) - U PRF_nf(uint252 const&, uint256 const&) -0000000000000000 W void Serialize > >, unsigned char, 512ul>(CBaseDataStream > >&, std::array const&) -0000000000000000 W void Serialize > >, unsigned char, 564ul>(CBaseDataStream > >&, std::array const&) - U operator delete(void*) -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() - U CSHA256::Write(unsigned char const*, unsigned long) - U CSHA256::Finalize(unsigned char*) - U CSHA256::CSHA256() -0000000000000000 T libzcash::SproutNote::SproutNote() -0000000000000000 T libzcash::SproutNote::SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 W libzcash::SproutNote::~SproutNote() -0000000000000000 n libzcash::SproutNote::~SproutNote() -000000000000028e T libzcash::SaplingNote::SaplingNote(libzcash::SaplingPaymentAddress const&, unsigned long) -000000000000028e T libzcash::SaplingNote::SaplingNote(libzcash::SaplingPaymentAddress const&, unsigned long) -0000000000000000 W libzcash::SaplingNote::~SaplingNote() -0000000000000000 W libzcash::SaplingNote::~SaplingNote() -0000000000000000 W libzcash::SaplingNote::~SaplingNote() -0000000000000000 n libzcash::SaplingNote::~SaplingNote() - U libzcash::NoteEncryption<585ul>::encrypt(uint256 const&, std::array const&) - U libzcash::random_uint256() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 W libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000000 n libzcash::BaseNotePlaintext::~BaseNotePlaintext() -0000000000000a0e T libzcash::SproutNotePlaintext::decrypt(libzcash::NoteDecryption<585ul> const&, std::array const&, uint256 const&, uint256 const&, unsigned char) -0000000000000502 T libzcash::SproutNotePlaintext::SproutNotePlaintext(libzcash::SproutNote const&, std::array) -0000000000000502 T libzcash::SproutNotePlaintext::SproutNotePlaintext(libzcash::SproutNote const&, std::array) -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 W libzcash::SproutNotePlaintext::~SproutNotePlaintext() -0000000000000000 n libzcash::SproutNotePlaintext::~SproutNotePlaintext() -000000000000149c T libzcash::SaplingNotePlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&) -0000000000001a12 T libzcash::SaplingNotePlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&) -0000000000000752 T libzcash::SaplingNotePlaintext::SaplingNotePlaintext(libzcash::SaplingNote const&, std::array) -0000000000000752 T libzcash::SaplingNotePlaintext::SaplingNotePlaintext(libzcash::SaplingNote const&, std::array) -0000000000000000 W libzcash::SaplingNotePlaintext::~SaplingNotePlaintext() -0000000000000000 W libzcash::SaplingNotePlaintext::~SaplingNotePlaintext() -0000000000000000 W libzcash::SaplingNotePlaintext::~SaplingNotePlaintext() -0000000000000000 n libzcash::SaplingNotePlaintext::~SaplingNotePlaintext() - U libzcash::SaplingNoteEncryption::FromDiversifier(std::array) - U libzcash::SaplingNoteEncryption::encrypt_to_ourselves(uint256 const&, uint256 const&, uint256 const&, std::array const&) - U libzcash::SaplingNoteEncryption::encrypt_to_recipient(uint256 const&, std::array const&) -00000000000010a2 T libzcash::SaplingOutgoingPlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&) - U libzcash::AttemptSaplingEncDecryption(std::array const&, uint256 const&, uint256 const&) - U libzcash::AttemptSaplingEncDecryption(std::array const&, uint256 const&, uint256 const&, uint256 const&) - U libzcash::AttemptSaplingOutDecryption(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&) -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 W libzcash::BaseNote::~BaseNote() -0000000000000000 n libzcash::BaseNote::~BaseNote() -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -0000000000000128 T libzcash::SproutNote::cm() const -0000000000000248 T libzcash::SproutNote::nullifier(libzcash::SproutSpendingKey const&) const -000000000000034c T libzcash::SaplingNote::cm() const -00000000000003f8 T libzcash::SaplingNote::nullifier(libzcash::SaplingFullViewingKey const&, unsigned long) const - U libzcash::NoteDecryption<585ul>::decrypt(std::array const&, uint256 const&, uint256 const&, unsigned char) const -0000000000000648 T libzcash::SproutNotePlaintext::note(libzcash::SproutPaymentAddress const&) const -0000000000001f38 T libzcash::SproutNotePlaintext::encrypt(libzcash::NoteEncryption<585ul>&, uint256 const&) const -0000000000000860 T libzcash::SaplingNotePlaintext::note(libzcash::SaplingIncomingViewingKey const&) const -0000000000002138 T libzcash::SaplingNotePlaintext::encrypt(uint256 const&) const -0000000000002538 T libzcash::SaplingOutgoingPlaintext::encrypt(uint256 const&, uint256 const&, uint256 const&, libzcash::SaplingNoteEncryption&) const - U libzcash::SaplingIncomingViewingKey::address(std::array) const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const -0000000000000000 W std::_Vector_base >::_M_deallocate(char*, unsigned long) - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W void std::vector >::_M_range_insert(__gnu_cxx::__normal_iterator > >, char const*, char const*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) - U std::ios_base::failure[abi:cxx11]::~failure() - U operator new(unsigned long) - U std::iostream_category() - U std::__throw_length_error(char const*) -0000000000000000 b std::__ioinit -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category -0000000000000000 V typeinfo for libzcash::SproutNote -0000000000000000 V typeinfo for libzcash::SaplingNote -0000000000000000 V typeinfo for libzcash::BaseNotePlaintext -0000000000000000 V typeinfo for libzcash::SproutNotePlaintext -0000000000000000 V typeinfo for libzcash::SaplingNotePlaintext -0000000000000000 V typeinfo for libzcash::BaseNote - U typeinfo for std::_V2::error_category - U typeinfo for std::ios_base::failure[abi:cxx11] - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category -0000000000000000 V typeinfo name for libzcash::SproutNote -0000000000000000 V typeinfo name for libzcash::SaplingNote -0000000000000000 V typeinfo name for libzcash::BaseNotePlaintext -0000000000000000 V typeinfo name for libzcash::SproutNotePlaintext -0000000000000000 V typeinfo name for libzcash::SaplingNotePlaintext -0000000000000000 V typeinfo name for libzcash::BaseNote - U vtable for __cxxabiv1::__class_type_info - U vtable for __cxxabiv1::__si_class_type_info -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 V vtable for libzcash::SproutNote -0000000000000000 V vtable for libzcash::SaplingNote -0000000000000000 V vtable for libzcash::BaseNotePlaintext -0000000000000000 V vtable for libzcash::SproutNotePlaintext -0000000000000000 V vtable for libzcash::SaplingNotePlaintext -0000000000000440 r libzcash::SproutNotePlaintext::decrypt(libzcash::NoteDecryption<585ul> const&, std::array const&, uint256 const&, uint256 const&, unsigned char)::__PRETTY_FUNCTION__ -0000000000000220 r libzcash::SaplingNotePlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&)::__PRETTY_FUNCTION__ -0000000000000160 r libzcash::SaplingNotePlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&)::__PRETTY_FUNCTION__ -00000000000002e0 r libzcash::SaplingOutgoingPlaintext::decrypt(std::array const&, uint256 const&, uint256 const&, uint256 const&, uint256 const&)::__PRETTY_FUNCTION__ -00000000000003c0 r libzcash::SproutNotePlaintext::encrypt(libzcash::NoteEncryption<585ul>&, uint256 const&) const::__PRETTY_FUNCTION__ -00000000000000c0 r libzcash::SaplingNotePlaintext::encrypt(uint256 const&) const::__PRETTY_FUNCTION__ -0000000000000000 r libzcash::SaplingOutgoingPlaintext::encrypt(uint256 const&, uint256 const&, uint256 const&, libzcash::SaplingNoteEncryption&) const::__PRETTY_FUNCTION__ - -libzcash_a-prf.o: - U crypto_generichash_blake2b_final - U crypto_generichash_blake2b_init_salt_personal - U crypto_generichash_blake2b_update - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -000000000000076c t _GLOBAL__sub_I__Z10PRF_expandRK7uint256h - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000040 r .LC1 -0000000000000068 r .LC2 -0000000000000000 r .LC3 -0000000000000015 r .LC4 - U librustzcash_check_diversifier - U librustzcash_to_scalar - U __stack_chk_fail - U _Unwind_Resume -0000000000000000 T PRF_expand(uint256 const&, unsigned char) -0000000000000536 T PRF_addr_a_pk(uint252 const&) -0000000000000576 T PRF_addr_sk_enc(uint252 const&) -0000000000000210 T default_diversifier(uint256 const&) -0000000000000385 T PRF(bool, bool, bool, bool, uint252 const&, uint256 const&) -00000000000005b6 T PRF_nf(uint252 const&, uint256 const&) -000000000000060e T PRF_pk(uint252 const&, unsigned long, uint256 const&) -00000000000000cd T PRF_ask(uint256 const&) -000000000000013c T PRF_nsk(uint256 const&) -00000000000001ab T PRF_ovk(uint256 const&) -00000000000006bd T PRF_rho(uint252 const&, unsigned long, uint256 const&) -00000000000004b1 T PRF_addr(uint252 const&, unsigned char) - U operator delete(void*) -0000000000000000 r ZCASH_EXPANDSEED_PERSONALIZATION -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() - U CSHA256::FinalizeNoPadding(unsigned char*, bool) - U CSHA256::Write(unsigned char const*, unsigned long) - U CSHA256::CSHA256() -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const - U std::domain_error::domain_error(char const*) - U std::domain_error::~domain_error() - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::~runtime_error() - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::__throw_length_error(char const*) -0000000000000000 b std::__ioinit -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category - U typeinfo for std::_V2::error_category - U typeinfo for std::domain_error - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category - U vtable for __cxxabiv1::__si_class_type_info -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category - -libzcash_a-util.o: - U __cxa_allocate_exception - U __cxa_free_exception - U __cxa_throw -0000000000000000 V DW.ref.__gxx_personality_v0 - U _GLOBAL_OFFSET_TABLE_ - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000000 r .LC1 -000000000000001c r .LC2 -0000000000000030 r .LC3 - U memmove - U __stack_chk_fail - U _Unwind_Resume -0000000000000000 T convertVectorToInt(std::vector > const&) -00000000000000fb T convertIntToVectorLE(unsigned long) -0000000000000199 T convertBytesVectorToVector(std::vector > const&) - U operator delete(void*) - U std::length_error::length_error(char const*) - U std::length_error::~length_error() -0000000000000000 W std::vector >::_M_fill_insert(std::_Bit_iterator, unsigned long, bool) -0000000000000000 W void std::vector >::emplace_back(unsigned char&&) -0000000000000000 W void std::vector >::emplace_back(unsigned char&&) - U operator new(unsigned long) - U std::__throw_length_error(char const*) - U std::__throw_out_of_range_fmt(char const*, ...) - U typeinfo for std::length_error - -libzcash_a-zip32.o: - U __assert_fail - U crypto_generichash_blake2b_final - U crypto_generichash_blake2b_init_salt_personal - U crypto_generichash_blake2b_update - U __cxa_allocate_exception - U __cxa_atexit - U __cxa_begin_catch - U __cxa_end_catch - U __cxa_free_exception - U __cxa_guard_abort - U __cxa_guard_acquire - U __cxa_guard_release - U __cxa_pure_virtual - U __cxa_rethrow - U __cxa_throw - U __dso_handle -0000000000000000 V DW.ref.__gxx_personality_v0 - U __dynamic_cast - U _GLOBAL_OFFSET_TABLE_ -0000000000003a47 t _GLOBAL__sub_I__ZN6HDSeed6RandomEm - U __gxx_personality_v0 -0000000000000000 r .LC0 -0000000000000000 r .LC1 -000000000000002e r .LC10 -0000000000000044 r .LC11 -0000000000000054 r .LC12 -000000000000005e r .LC13 -0000000000000180 r .LC14 -0000000000000076 r .LC15 -000000000000008b r .LC16 -0000000000000009 r .LC2 -0000000000000078 r .LC3 -000000000000000e r .LC4 -00000000000000a8 r .LC5 -0000000000000108 r .LC6 -0000000000000130 r .LC7 -0000000000000150 r .LC8 -0000000000000017 r .LC9 - U librustzcash_zip32_xfvk_address - U librustzcash_zip32_xfvk_derive - U librustzcash_zip32_xsk_derive - U librustzcash_zip32_xsk_master - U memcpy - U memmove - U pthread_mutex_destroy - U pthread_mutex_lock - U pthread_mutex_unlock - U __stack_chk_fail - U _Unwind_Resume -0000000000000000 W void Unserialize > >, unsigned char, 11ul>(CBaseDataStream > >&, std::array&) - U GetRandBytes(unsigned char*, unsigned long) - U memory_cleanse(void*, unsigned long) -0000000000000000 W void WriteCompactSize(CBLAKE2bWriter&, unsigned long) -00000000000000b1 T IsValidSpendingKey(boost::variant const&) -00000000000000b1 T IsValidSpendingKey(boost::variant const&) - U operator delete(void*) -0000000000000000 u guard variable for LockedPageManager::CreateInstance()::instance -0000000000000130 r ZCASH_HD_SEED_FP_PERSONAL - U MemoryPageLocker::Lock(void const*, unsigned long) - U MemoryPageLocker::Unlock(void const*, unsigned long) -0000000000000000 W secure_allocator::deallocate(unsigned char*, unsigned long) -0000000000000000 W LockedPageManager::CreateInstance() - U LockedPageManager::init_flag - U LockedPageManager::_instance - U LockedPageManager::LockedPageManager() -0000000000000000 W LockedPageManager::~LockedPageManager() -0000000000000000 W LockedPageManager::~LockedPageManager() -0000000000000000 n LockedPageManager::~LockedPageManager() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 W boost::lock_error::~lock_error() -0000000000000000 n boost::lock_error::~lock_error() - U boost::thread_detail::enter_once_region(boost::once_flag&) - U boost::thread_detail::commit_once_region(boost::once_flag&) - U boost::thread_detail::rollback_once_region(boost::once_flag&) -0000000000000000 W void boost::throw_exception(boost::lock_error const&) -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::clone_impl >::~clone_impl() -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 n boost::exception_detail::error_info_injector::error_info_injector(boost::exception_detail::error_info_injector const&) -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 n boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 W boost::thread_exception::thread_exception(int, char const*) -0000000000000000 W boost::thread_exception::thread_exception(int, char const*) -0000000000000000 n boost::thread_exception::thread_exception(int, char const*) -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 W boost::thread_exception::~thread_exception() -0000000000000000 n boost::thread_exception::~thread_exception() -0000000000000000 W boost::mutex::unlock() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 W boost::system::system_error::~system_error() -0000000000000000 n boost::system::system_error::~system_error() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 W boost::system::error_category::std_category::~std_category() -0000000000000000 n boost::system::error_category::std_category::~std_category() - U boost::system::generic_category() -0000000000001098 T HDSeed::Random(unsigned long) -0000000000000208 T libzcash::SaplingExtendedSpendingKey::Master(HDSeed const&) -0000000000000000 W boost::exception_detail::clone_impl >::clone() const -0000000000000000 W boost::exception_detail::clone_impl >::rethrow() const -0000000000000000 W boost::system::system_error::what() const -0000000000000000 W boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const -0000000000000000 W boost::system::error_category::std_category::equivalent(std::error_code const&, int) const -0000000000000000 W boost::system::error_category::std_category::default_error_condition(int) const -0000000000000000 W boost::system::error_category::std_category::name() const -0000000000000000 W boost::system::error_category::std_category::message[abi:cxx11](int) const -00000000000000e8 T HDSeed::Fingerprint() const - U libzcash::SaplingExpandedSpendingKey::full_viewing_key() const -000000000000214a T libzcash::SaplingExtendedSpendingKey::DefaultAddress() const -00000000000021a2 T libzcash::SaplingExtendedSpendingKey::Derive(unsigned int) const -0000000000000000 T libzcash::SaplingExtendedSpendingKey::ToXFVK() const -000000000000206a T libzcash::SaplingExtendedFullViewingKey::DefaultAddress() const -0000000000002d5c T libzcash::SaplingExtendedFullViewingKey::Derive(unsigned int) const -00000000000018fa T libzcash::SaplingExtendedFullViewingKey::Address(blob88) const - U std::runtime_error::what() const - U std::_V2::error_category::_M_message[abi:cxx11](int) const -0000000000000000 W std::_Vector_base >::_M_deallocate(char*, unsigned long) - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::runtime_error(char const*) - U std::runtime_error::runtime_error(std::runtime_error const&) - U std::runtime_error::~runtime_error() - U std::runtime_error::~runtime_error() - U std::_V2::error_category::~error_category() - U std::_V2::generic_category() -0000000000000000 W void std::vector >::_M_range_insert(__gnu_cxx::__normal_iterator > >, char const*, char const*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::_M_replace(unsigned long, unsigned long, char const*, unsigned long) -0000000000000000 W void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) - U std::__cxx11::basic_string, std::allocator >::_M_append(char const*, unsigned long) - U std::__cxx11::basic_string, std::allocator >::_M_create(unsigned long&, unsigned long) - U std::ios_base::Init::Init() - U std::ios_base::Init::~Init() - U std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&) - U std::ios_base::failure[abi:cxx11]::~failure() -0000000000000000 W std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase_aux(std::_Rb_tree_const_iterator >) -0000000000000000 W std::pair >, bool> std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_insert_unique >(std::pair&&) -0000000000000000 W std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::find(unsigned long const&) -0000000000000000 W std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_erase(std::_Rb_tree_node >*) - U operator new(unsigned long) - U std::iostream_category() - U std::_Rb_tree_decrement(std::_Rb_tree_node_base*) - U std::__throw_logic_error(char const*) - U std::__throw_length_error(char const*) - U std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) - U std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&) - U std::terminate() -0000000000000000 b std::__ioinit -000000000000008e W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000086 W non-virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -0000000000000083 W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -000000000000007b W non-virtual thunk to boost::exception_detail::error_info_injector::~error_info_injector() -0000000000000000 V typeinfo for boost::lock_error -0000000000000000 V typeinfo for boost::exception_detail::clone_base -0000000000000000 V typeinfo for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo for boost::thread_exception -0000000000000000 V typeinfo for boost::system::system_error -0000000000000000 V typeinfo for boost::system::error_category::std_category -0000000000000000 V typeinfo for boost::exception - U typeinfo for std::_V2::error_category - U typeinfo for std::ios_base::failure[abi:cxx11] - U typeinfo for std::runtime_error -0000000000000000 V typeinfo name for boost::lock_error -0000000000000000 V typeinfo name for boost::exception_detail::clone_base -0000000000000000 V typeinfo name for boost::exception_detail::clone_impl > -0000000000000000 V typeinfo name for boost::exception_detail::error_info_injector -0000000000000000 V typeinfo name for boost::thread_exception -0000000000000000 V typeinfo name for boost::system::system_error -0000000000000000 V typeinfo name for boost::system::error_category::std_category -0000000000000000 V typeinfo name for boost::exception -0000000000000000 V VTT for boost::exception_detail::clone_impl > -000000000000024f W virtual thunk to boost::exception_detail::clone_impl >::clone() const -0000000000000085 W virtual thunk to boost::exception_detail::clone_impl >::rethrow() const -0000000000000097 W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() -000000000000008f W virtual thunk to boost::exception_detail::clone_impl >::~clone_impl() - U vtable for __cxxabiv1::__class_type_info - U vtable for __cxxabiv1::__si_class_type_info - U vtable for __cxxabiv1::__vmi_class_type_info -0000000000000000 V vtable for boost::lock_error -0000000000000000 V vtable for boost::exception_detail::clone_base -0000000000000000 V vtable for boost::exception_detail::clone_impl > -0000000000000000 V vtable for boost::exception_detail::error_info_injector -0000000000000000 V vtable for boost::thread_exception -0000000000000000 V vtable for boost::system::system_error -0000000000000000 V vtable for boost::system::error_category::std_category -0000000000000000 V vtable for boost::exception -0000000000000000 r CBLAKE2bWriter::CBLAKE2bWriter(int, int, unsigned char const*)::__PRETTY_FUNCTION__ -0000000000000000 u LockedPageManager::CreateInstance()::instance -0000000000000040 r LockedPageManagerBase::UnlockRange(void*, unsigned long)::__PRETTY_FUNCTION__ -00000000000000c0 r boost::mutex::unlock()::__PRETTY_FUNCTION__ -00000000000000e0 r boost::mutex::~mutex()::__PRETTY_FUNCTION__ -0000000000000100 r HDSeed::Random(unsigned long)::__PRETTY_FUNCTION__ From a918948401e8add8599084b30087ff4a14728d65 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 3 Nov 2019 09:17:14 -0500 Subject: [PATCH 083/339] clean up some junk in COPYING --- COPYING | 67 ++++----------------------------------------------------- 1 file changed, 4 insertions(+), 63 deletions(-) diff --git a/COPYING b/COPYING index 587a47035..7a9767ad0 100644 --- a/COPYING +++ b/COPYING @@ -2,6 +2,7 @@ Copyright (c) 2009-2017 The Bitcoin Core developers Copyright (c) 2009-2018 Bitcoin Developers Copyright (c) 2016-2017 The Zcash developers Copyright (c) 2016-2019 The Komodo developers +Copyright (c) 2018-2019 The Hush developers Copyright (c) 2018 The VerusCoin developers Permission is hereby granted, free of charge, to any person obtaining a copy @@ -34,10 +35,10 @@ OpenSSL Toolkit (https://www.openssl.org/). This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). -Although almost all of the Zcash/Komodo/VerusCoin code is licensed under "permissive" open source +Although almost all of this code is licensed under open source licenses, users and distributors should note that when built using the default -build options, Zcash depends on Oracle Berkeley DB 6.2.x, which is licensed -under the GNU Affero General Public License. +build options, it depends on Oracle Berkeley DB 6.2.x, which is licensed +under the GNU Affero General Public License. Free Software, Fuck Yeah!!! SuperNET COPYING terms: GNU GENERAL PUBLIC LICENSE @@ -320,63 +321,3 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. - From f39cd2a4738da7423b31037686b817e5836198f6 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 4 Nov 2019 08:17:27 -0500 Subject: [PATCH 084/339] Delete Verus junk, which breaks ARMv8/aarch64 builds --- DEVELOPING.md | 5 + src/Makefile.am | 43 +-- src/chain.h | 11 - src/hash.h | 91 +------ src/init.cpp | 19 -- src/komodo_bitcoind.h | 176 +------------ src/komodo_utils.h | 51 +--- src/main.cpp | 2 +- src/miner.cpp | 490 +---------------------------------- src/pow.cpp | 8 +- src/primitives/block.cpp | 84 ------ src/primitives/block.h | 48 +--- src/primitives/nonce.cpp | 63 ----- src/primitives/nonce.h | 52 +--- src/primitives/transaction.h | 36 --- src/rpc/blockchain.cpp | 2 +- src/wallet/rpcwallet.cpp | 6 - src/wallet/wallet.cpp | 114 -------- src/wallet/wallet.h | 3 - 19 files changed, 43 insertions(+), 1261 deletions(-) diff --git a/DEVELOPING.md b/DEVELOPING.md index a6b1d3a89..15942011d 100644 --- a/DEVELOPING.md +++ b/DEVELOPING.md @@ -29,6 +29,11 @@ When in doubt, if you run into a compile error, especially if it mentions `OCTET_STRING`, run `build.sh` again. Running `make clean` before switching branches can often prevent those problems. +``` +cryptoconditions/src/asn/SimpleSha256Condition.h:14:10: fatal error: OCTET_STRING.h: No such file or directory +``` + + ## Partial compiles At any point, you can modify hush source code and then use `make` or `build.sh` diff --git a/src/Makefile.am b/src/Makefile.am index a7dd21be8..30ecd9ff5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -46,8 +46,6 @@ LIBBITCOIN_COMMON=libbitcoin_common.a LIBBITCOIN_CLI=libbitcoin_cli.a LIBBITCOIN_UTIL=libbitcoin_util.a LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a -LIBVERUS_CRYPTO=crypto/libverus_crypto.a -LIBVERUS_PORTABLE_CRYPTO=crypto/libverus_portable_crypto.a LIBSECP256K1=secp256k1/libsecp256k1.la LIBCRYPTOCONDITIONS=cryptoconditions/libcryptoconditions_core.la LIBSNARK=snark/libsnark.a @@ -95,8 +93,6 @@ $(LIBCRYPTOCONDITIONS): $(wildcard cryptoconditions/src/*) $(wildcard cryptocond # But to build the less dependent modules first, we manually select their order here: EXTRA_LIBRARIES += \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBBITCOIN_UTIL) \ $(LIBBITCOIN_COMMON) \ $(LIBBITCOIN_SERVER) \ @@ -183,9 +179,6 @@ BITCOIN_CORE_H = \ consensus/validation.h \ core_io.h \ core_memusage.h \ - crypto/haraka.h \ - crypto/haraka_portable.h \ - crypto/verus_hash.h \ deprecation.h \ hash.h \ httprpc.h \ @@ -316,8 +309,6 @@ libbitcoin_server_a_SOURCES = \ crosschain_authority.cpp \ crypto/haraka.h \ crypto/haraka_portable.h \ - crypto/verus_hash.h \ - crypto/verus_hash.cpp \ deprecation.cpp \ httprpc.cpp \ httpserver.cpp \ @@ -420,11 +411,7 @@ crypto_libbitcoin_crypto_a_SOURCES = \ crypto/sha256.cpp \ crypto/sha256.h \ crypto/sha512.cpp \ - crypto/sha512.h \ - crypto/haraka.h \ - crypto/haraka_portable.h \ - crypto/verus_hash.h \ - crypto/verus_hash.cpp + crypto/sha512.h if ENABLE_MINING EQUIHASH_TROMP_SOURCES = \ @@ -438,20 +425,6 @@ crypto_libbitcoin_crypto_a_SOURCES += \ ${EQUIHASH_TROMP_SOURCES} endif -# Verus hash specific library - optimized -crypto_libverus_crypto_a_CPPFLAGS = -O3 -Wint-conversion -march=x86-64 -msse4 -msse4.1 -msse4.2 -mssse3 -mavx -maes -g -funroll-loops -fomit-frame-pointer -fPIC $(AM_CPPFLAGS) -crypto_libverus_crypto_a_CXXFLAGS = -O3 -Wint-conversion -march=x86-64 -msse4 -msse4.1 -msse4.2 -mssse3 -mavx -maes -g -funroll-loops -fomit-frame-pointer -fPIC $(AM_CXXFLAGS) -crypto_libverus_crypto_a_SOURCES = \ - crypto/haraka.h \ - crypto/haraka.c - -# Verus hash specific library - portable -crypto_libverus_portable_crypto_a_CPPFLAGS = -O3 -Wint-conversion -march=x86-64 -g -funroll-loops -fomit-frame-pointer -fPIC $(AM_CPPFLAGS) -crypto_libverus_portable_crypto_a_CXXFLAGS = -O3 -Wint-conversion -march=x86-64 -g -funroll-loops -fomit-frame-pointer -fPIC $(AM_CXXFLAGS) -crypto_libverus_portable_crypto_a_SOURCES = \ - crypto/haraka_portable.h \ - crypto/haraka_portable.c - # common: shared between zcashd and non-server tools libbitcoin_common_a_CPPFLAGS = -fPIC $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) libbitcoin_common_a_CXXFLAGS = -fPIC $(AM_CXXFLAGS) $(PIE_FLAGS) @@ -468,8 +441,6 @@ libbitcoin_common_a_SOURCES = \ core_write.cpp \ crypto/haraka.h \ crypto/haraka_portable.h \ - crypto/verus_hash.h \ - crypto/verus_hash.cpp \ hash.cpp \ importcoin.cpp \ key.cpp \ @@ -558,8 +529,6 @@ komodod_LDADD = \ $(LIBBITCOIN_ZMQ) \ $(LIBBITCOIN_PROTON) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBZCASH) \ $(LIBSNARK) \ $(LIBLEVELDB) \ @@ -581,8 +550,6 @@ komodod_LDADD += \ $(ZMQ_LIBS) \ $(PROTON_LIBS) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBZCASH_LIBS) if TARGET_DARWIN @@ -635,8 +602,6 @@ komodo_cli_LDADD = \ $(EVENT_LIBS) \ $(LIBZCASH) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBZCASH_LIBS) if ENABLE_WALLET @@ -644,8 +609,6 @@ wallet_utility_LDADD = \ libbitcoin_wallet.a \ $(LIBBITCOIN_COMMON) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBSECP256K1) \ $(LIBBITCOIN_UTIL) \ $(BOOST_LIBS) \ @@ -667,7 +630,7 @@ if TARGET_WINDOWS komodo_tx_SOURCES += bitcoin-tx-res.rc endif -# FIXME: Is libzcash needed for zcash_tx? +# FIXME: Is libzcash needed for hush-tx ? komodo_tx_LDADD = \ $(LIBUNIVALUE) \ $(LIBBITCOIN_COMMON) \ @@ -676,8 +639,6 @@ komodo_tx_LDADD = \ $(LIBZCASH) \ $(LIBSNARK) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ - $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBZCASH_LIBS) \ $(LIBCRYPTOCONDITIONS) diff --git a/src/chain.h b/src/chain.h index 9a29026f4..c58127c42 100644 --- a/src/chain.h +++ b/src/chain.h @@ -470,17 +470,6 @@ public: CBlockIndex* GetAncestor(int height); const CBlockIndex* GetAncestor(int height) const; - int32_t GetVerusPOSTarget() const - { - return GetBlockHeader().GetVerusPOSTarget(); - } - - bool IsVerusPOSBlock() const - { - if ( ASSETCHAINS_LWMAPOS != 0 ) - return GetBlockHeader().IsVerusPOSBlock(); - else return(0); - } }; /** Used to marshal pointers into hashes for db storage. */ diff --git a/src/hash.h b/src/hash.h index 9a8edc72c..143516d89 100644 --- a/src/hash.h +++ b/src/hash.h @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2013 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -221,78 +222,6 @@ public: } }; -/** A writer stream (for serialization) that computes a 256-bit Verus hash. */ -class CVerusHashWriter -{ -private: - CVerusHash state; - -public: - int nType; - int nVersion; - - CVerusHashWriter(int nTypeIn, int nVersionIn) : nType(nTypeIn), nVersion(nVersionIn), state() { } - void Reset() { state.Reset(); } - - CVerusHashWriter& write(const char *pch, size_t size) { - state.Write((const unsigned char*)pch, size); - return (*this); - } - - // invalidates the object for further writing - uint256 GetHash() { - uint256 result; - state.Finalize((unsigned char*)&result); - return result; - } - - int64_t *xI64p() { return state.ExtraI64Ptr(); } - CVerusHash &GetState() { return state; } - - template - CVerusHashWriter& operator<<(const T& obj) { - // Serialize to this stream - ::Serialize(*this, obj); - return (*this); - } -}; - -/** A writer stream (for serialization) that computes a 256-bit Verus hash with key initialized to Haraka standard. */ -class CVerusHashV2Writer -{ -private: - CVerusHashV2 state; - -public: - int nType; - int nVersion; - - CVerusHashV2Writer(int nTypeIn, int nVersionIn) : nType(nTypeIn), nVersion(nVersionIn), state() {} - void Reset() { state.Reset(); } - - CVerusHashV2Writer& write(const char *pch, size_t size) { - state.Write((const unsigned char*)pch, size); - return (*this); - } - - // invalidates the object for further writing - uint256 GetHash() { - uint256 result; - state.Finalize((unsigned char*)&result); - return result; - } - - int64_t *xI64p() { return state.ExtraI64Ptr(); } - CVerusHashV2 &GetState() { return state; } - - template - CVerusHashV2Writer& operator<<(const T& obj) { - // Serialize to this stream - ::Serialize(*this, obj); - return (*this); - } -}; - /** Compute the 256-bit hash of an object's serialization. */ template uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION) @@ -302,24 +231,6 @@ uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL return ss.GetHash(); } -/** Compute the 256-bit Verus hash of an object's serialization. */ -template -uint256 SerializeVerusHash(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION) -{ - CVerusHashWriter ss(nType, nVersion); - ss << obj; - return ss.GetHash(); -} - -/** Compute the 256-bit Verus hash of an object's serialization. */ -template -uint256 SerializeVerusHashV2(const T& obj, int nType=SER_GETHASH, int nVersion=PROTOCOL_VERSION) -{ - CVerusHashV2Writer ss(nType, nVersion); - ss << obj; - return ss.GetHash(); -} - unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector& vDataToHash); void BIP32Hash(const ChainCode &chainCode, unsigned int nChild, unsigned char header, const unsigned char data[32], unsigned char output[64]); diff --git a/src/init.cpp b/src/init.cpp index e1cf892c6..3b6065e37 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -608,7 +608,6 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-ac_timelockgte", _("Timelocked coinbase minimum amount to be locked")); strUsage += HelpMessageOpt("-ac_timelockto", _("Timelocked coinbase stop height")); strUsage += HelpMessageOpt("-ac_txpow", _("Enforce transaction-rate limit, default 0")); - strUsage += HelpMessageOpt("-ac_veruspos", _("Use Verus Proof-Of-Stake (-ac_veruspos=50) default 0")); return strUsage; } @@ -1329,24 +1328,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ECC_Start(); globalVerifyHandle.reset(new ECCVerifyHandle()); - /* - // set the hash algorithm to use for this chain - // Again likely better solution here, than using long IF ELSE. - extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1; - CVerusHash::init(); - CVerusHashV2::init(); - if (ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH) - { - // initialize VerusHash - CBlockHeader::SetVerusHash(); - } - else if (ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1) - { - // initialize VerusHashV2 - CBlockHeader::SetVerusHashV2(); - } - */ - //fprintf(stderr,"%s tik10\n", __FUNCTION__); // Sanity check if (!InitSanityCheck()) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index c0850006b..924b44fae 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -17,8 +17,8 @@ #include #include -#include "primitives/nonce.h" #include "consensus/params.h" +#include "primitives/nonce.h" #include "komodo_defs.h" #include "script/standard.h" #include "cc/CCinclude.h" @@ -1755,177 +1755,7 @@ bool ValidateMatchingStake(const CTransaction &ccTx, uint32_t voutNum, const CTr // for now, we will ignore slowFlag in the interest of keeping success/fail simpler for security purposes bool verusCheckPOSBlock(int32_t slowflag, CBlock *pblock, int32_t height) { - CBlockIndex *pastBlockIndex; - uint256 txid, blkHash; - int32_t txn_count; - uint32_t voutNum; - CAmount value; - bool isPOS = false; - CTxDestination voutaddress, destaddress, cbaddress; - arith_uint256 target, hash; - CTransaction tx; - - if (!pblock->IsVerusPOSBlock()) - { - printf("%s, height %d not POS block\n", pblock->nNonce.GetHex().c_str(), height); - //pblock->nNonce.SetPOSTarget(pblock->nNonce.GetPOSTarget()); - //printf("%s after setting POS target\n", pblock->nNonce.GetHex().c_str()); - return false; - } - - char voutaddr[64], destaddr[64], cbaddr[64]; - - txn_count = pblock->vtx.size(); - - if ( txn_count > 1 ) - { - target.SetCompact(pblock->GetVerusPOSTarget()); - txid = pblock->vtx[txn_count-1].vin[0].prevout.hash; - voutNum = pblock->vtx[txn_count-1].vin[0].prevout.n; - value = pblock->vtx[txn_count-1].vout[0].nValue; - - { - bool validHash = (value != 0); - bool enablePOSNonce = CPOSNonce::NewPOSActive(height); - uint256 rawHash; - arith_uint256 posHash; - - if (validHash && enablePOSNonce) - { - validHash = pblock->GetRawVerusPOSHash(rawHash, height); - posHash = UintToArith256(rawHash) / value; - if (!validHash || posHash > target) - { - validHash = false; - printf("ERROR: invalid nonce value for PoS block\nnNonce: %s\nrawHash: %s\nposHash: %s\nvalue: %lu\n", - pblock->nNonce.GetHex().c_str(), rawHash.GetHex().c_str(), posHash.GetHex().c_str(), value); - } - } - if (validHash) - { - if (slowflag == 0) - { - isPOS = true; - } - else if (!(pastBlockIndex = komodo_chainactive(height - 100))) - { - fprintf(stderr,"ERROR: chain not fully loaded or invalid PoS block %s - no past block found\n",blkHash.ToString().c_str()); - } - else -#ifndef KOMODO_ZCASH - if (!GetTransaction(txid, tx, Params().GetConsensus(), blkHash, true)) -#else - if (!GetTransaction(txid, tx, blkHash, true)) -#endif - { - fprintf(stderr,"ERROR: invalid PoS block %s - no source transaction\n",blkHash.ToString().c_str()); - } - else - { - CBlockHeader bh = pastBlockIndex->GetBlockHeader(); - uint256 pastHash = bh.GetVerusEntropyHash(height - 100); - - // if height is over when Nonce is required to be the new format, we check that the new format is correct - // if over when we have the new POS hash function, we validate that as well - // they are 100 blocks apart - CPOSNonce nonce = pblock->nNonce; - - //printf("before nNonce: %s, height: %d\n", pblock->nNonce.GetHex().c_str(), height); - //validHash = pblock->GetRawVerusPOSHash(rawHash, height); - //hash = UintToArith256(rawHash) / tx.vout[voutNum].nValue; - //printf("Raw POShash: %s\n", hash.GetHex().c_str()); - - hash = UintToArith256(tx.GetVerusPOSHash(&nonce, voutNum, height, pastHash)); - - //printf("after nNonce: %s, height: %d\n", nonce.GetHex().c_str(), height); - //printf("POShash: %s\n\n", hash.GetHex().c_str()); - - if (posHash == hash && hash <= target) - { - BlockMap::const_iterator it = mapBlockIndex.find(blkHash); - if ((it == mapBlockIndex.end()) || - !(pastBlockIndex = it->second) || - (height - pastBlockIndex->GetHeight()) < VERUS_MIN_STAKEAGE) - { - fprintf(stderr,"ERROR: invalid PoS block %s - stake source too new or not found\n",blkHash.ToString().c_str()); - } - else - { - // make sure we have the right target - CBlockIndex *previndex; - it = mapBlockIndex.find(pblock->hashPrevBlock); - if (it == mapBlockIndex.end() || !(previndex = it->second)) - { - fprintf(stderr,"ERROR: invalid PoS block %s - no prev block found\n",blkHash.ToString().c_str()); - } - else - { - arith_uint256 cTarget; - uint32_t nBits = lwmaGetNextPOSRequired(previndex, Params().GetConsensus()); - cTarget.SetCompact(nBits); - bool nonceOK = true; - - // check to see how many fail - //if (nonce != pblock->nNonce) - // printf("Mismatched nNonce: %s\nblkHash: %s, height: %d\n", nonce.GetHex().c_str(), pblock->GetHash().GetHex().c_str(), height); - - if (CPOSNonce::NewNonceActive(height) && !nonce.CheckPOSEntropy(pastHash, txid, voutNum)) - { - fprintf(stderr,"ERROR: invalid PoS block %s - nonce entropy corrupted or forged\n",blkHash.ToString().c_str()); - nonceOK = false; - } - else - { - if (cTarget != target) - { - fprintf(stderr,"ERROR: invalid PoS block %s - invalid diff target\n",blkHash.ToString().c_str()); - nonceOK = false; - } - } - if ( nonceOK && ExtractDestination(pblock->vtx[txn_count-1].vout[0].scriptPubKey, voutaddress) && - ExtractDestination(tx.vout[voutNum].scriptPubKey, destaddress) ) - { - strcpy(voutaddr, CBitcoinAddress(voutaddress).ToString().c_str()); - strcpy(destaddr, CBitcoinAddress(destaddress).ToString().c_str()); - if ( !strcmp(destaddr,voutaddr) ) - { - isPOS = true; - CTransaction &cbtx = pblock->vtx[0]; - for (int i = 0; i < cbtx.vout.size(); i++) - { - if (CScriptExt::ExtractVoutDestination(cbtx, i, cbaddress)) - { - strcpy(cbaddr, CBitcoinAddress(cbaddress).ToString().c_str()); - if (!strcmp(destaddr,cbaddr)) - continue; - } - else - { - if (cbtx.vout[i].scriptPubKey.IsOpReturn()) - continue; - isPOS = false; - break; - } - } - } - else - { - fprintf(stderr,"ERROR: invalid PoS block %s - invalid stake or coinbase destination\n",blkHash.ToString().c_str()); - } - } - } - } - } - else - { - printf("ERROR: malformed nonce value for PoS block\nnNonce: %s\nrawHash: %s\nposHash: %s\nvalue: %lu\n", - pblock->nNonce.GetHex().c_str(), rawHash.GetHex().c_str(), posHash.GetHex().c_str(), value); - } - } - } - } - } - return(isPOS); + return false; } uint64_t komodo_notarypayamount(int32_t nHeight, int64_t notarycount) @@ -2290,11 +2120,13 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) // bnTarget = komodo_adaptivepow_target(height,bnTarget,pblock->nTime); if ( ASSETCHAINS_LWMAPOS != 0 && bhash > bnTarget ) { + /* // if proof of stake is active, check if this is a valid PoS block before we fail if (verusCheckPOSBlock(slowflag, pblock, height)) { return(0); } + */ } if ( (ASSETCHAINS_SYMBOL[0] != 0 || height > 792000) && bhash > bnTarget ) { diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 31e87d82b..01a046f62 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -30,8 +30,6 @@ #define portable_mutex_lock pthread_mutex_lock #define portable_mutex_unlock pthread_mutex_unlock -extern void verus_hash(void *result, const void *data, size_t len); - struct allocitem { uint32_t allocsize,type; }; struct queueitem { struct queueitem *next,*prev; uint32_t allocsize,type; }; @@ -1026,45 +1024,24 @@ int32_t komodo_opreturnscript(uint8_t *script,uint8_t type,uint8_t *opret,int32_ // from all other blocks. the sequence is extremely likely, but not guaranteed to be unique for each block chain uint64_t komodo_block_prg(uint32_t nHeight) { - if (strcmp(ASSETCHAINS_SYMBOL, "VRSC") != 0 || nHeight >= 12800) + int i; + uint8_t hashSrc[8]; + uint64_t result=0, hashSrc64 = (uint64_t)ASSETCHAINS_MAGIC << 32 + nHeight; + bits256 hashResult; + + for ( i = 0; i < sizeof(hashSrc); i++ ) { - uint64_t i, result = 0, hashSrc64 = ((uint64_t)ASSETCHAINS_MAGIC << 32) | (uint64_t)nHeight; - uint8_t hashSrc[8]; - bits256 hashResult; - - for ( i = 0; i < sizeof(hashSrc); i++ ) - { - uint64_t x = hashSrc64 >> (i * 8); - hashSrc[i] = (uint8_t)(x & 0xff); - } - verus_hash(hashResult.bytes, hashSrc, sizeof(hashSrc)); - for ( i = 0; i < 8; i++ ) - { - result = (result << 8) | hashResult.bytes[i]; - } - return result; + hashSrc[i] = hashSrc64 & 0xff; + hashSrc64 >>= 8; + int8_t b = hashSrc[i]; } - else + + vcalc_sha256(0, hashResult.bytes, hashSrc, sizeof(hashSrc)); + for ( i = 0; i < 8; i++ ) { - int i; - uint8_t hashSrc[8]; - uint64_t result=0, hashSrc64 = (uint64_t)ASSETCHAINS_MAGIC << 32 + nHeight; - bits256 hashResult; - - for ( i = 0; i < sizeof(hashSrc); i++ ) - { - hashSrc[i] = hashSrc64 & 0xff; - hashSrc64 >>= 8; - int8_t b = hashSrc[i]; - } - - vcalc_sha256(0, hashResult.bytes, hashSrc, sizeof(hashSrc)); - for ( i = 0; i < 8; i++ ) - { - result = (result << 8) + hashResult.bytes[i]; - } - return result; + result = (result << 8) + hashResult.bytes[i]; } + return result; } // given a block height, this returns the unlock time for that block height, derived from diff --git a/src/main.cpp b/src/main.cpp index 264cb0643..63f062c65 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5229,7 +5229,7 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C //LogPrintf("Rejected by mempool, reason: .%s.\n", state.GetRejectReason().c_str()); // take advantage of other checks, but if we were only rejected because it is a valid staking // transaction, sync with wallets and don't mark as a reject - if (i == (block.vtx.size() - 1) && ASSETCHAINS_LWMAPOS && block.IsVerusPOSBlock() && state.GetRejectReason() == "staking") + if (i == (block.vtx.size() - 1) && ASSETCHAINS_LWMAPOS && state.GetRejectReason() == "staking") { sTx = Tx; ptx = &sTx; diff --git a/src/miner.cpp b/src/miner.cpp index e3c88afb7..5f72ebfd2 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -32,7 +33,6 @@ #include "consensus/validation.h" #ifdef ENABLE_MINING #include "crypto/equihash.h" -#include "crypto/verus_hash.h" #endif #include "hash.h" #include "key_io.h" @@ -149,7 +149,6 @@ int32_t komodo_validate_interest(const CTransaction &tx,int32_t txheight,uint32_ int64_t komodo_block_unlocktime(uint32_t nHeight); uint64_t komodo_commission(const CBlock *block,int32_t height); int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blocktimep,uint32_t *txtimep,uint256 *utxotxidp,int32_t *utxovoutp,uint64_t *utxovaluep,uint8_t *utxosig); -int32_t verus_staked(CBlock *pBlock, CMutableTransaction &txNew, uint32_t &nBits, arith_uint256 &hashResult, uint8_t *utxosig, CPubKey &pk); int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33); int32_t decode_hex(uint8_t *bytes,int32_t n,char *hex); int32_t komodo_is_notarytx(const CTransaction& tx); @@ -588,15 +587,6 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 if (ASSETCHAINS_LWMAPOS != 0) { - uint32_t nBitsPOS; - arith_uint256 posHash; - - siglen = verus_staked(pblock, txStaked, nBitsPOS, posHash, utxosig, pk); - blocktime = GetAdjustedTime(); - - // change the scriptPubKeyIn to the same output script exactly as the staking transaction - if (siglen > 0) - scriptPubKeyIn = CScript(txStaked.vout[0].scriptPubKey); } else { @@ -1135,477 +1125,8 @@ CBlockIndex *get_chainactive(int32_t height) return(0); } -/* - * A separate thread to stake, while the miner threads mine. - */ -void static VerusStaker(CWallet *pwallet) -{ - LogPrintf("Verus staker thread started\n"); - RenameThread("verus-staker"); - const CChainParams& chainparams = Params(); - auto consensusParams = chainparams.GetConsensus(); - - // Each thread has its own key - CReserveKey reservekey(pwallet); - - // Each thread has its own counter - unsigned int nExtraNonce = 0; - std::vector solnPlaceholder = std::vector(); - solnPlaceholder.resize(Eh200_9.SolutionWidth); - uint8_t *script; uint64_t total,checktoshis; int32_t i,j; - - while ( (ASSETCHAIN_INIT == 0 || KOMODO_INITDONE == 0) ) //chainActive.Tip()->GetHeight() != 235300 && - { - sleep(1); - if ( komodo_baseid(ASSETCHAINS_SYMBOL) < 0 ) - break; - } - - // try a nice clean peer connection to start - CBlockIndex *pindexPrev, *pindexCur; - do { - pindexPrev = chainActive.LastTip(); - MilliSleep(5000 + rand() % 5000); - waitForPeers(chainparams); - pindexCur = chainActive.LastTip(); - } while (pindexPrev != pindexCur); - - try { - while (true) - { - waitForPeers(chainparams); - CBlockIndex* pindexPrev = chainActive.LastTip(); - printf("Staking height %d for %s\n", pindexPrev->GetHeight() + 1, ASSETCHAINS_SYMBOL); - - // Create new block - unsigned int nTransactionsUpdatedLast = mempool.GetTransactionsUpdated(); - if ( Mining_height != pindexPrev->GetHeight()+1 ) - { - Mining_height = pindexPrev->GetHeight()+1; - Mining_start = (uint32_t)time(NULL); - } - - // Check for stop or if block needs to be rebuilt - boost::this_thread::interruption_point(); - - // try to stake a block - CBlockTemplate *ptr = NULL; - if (Mining_height > VERUS_MIN_STAKEAGE) - ptr = CreateNewBlockWithKey(reservekey, Mining_height, 0, true); - - if ( ptr == 0 ) - { - // wait to try another staking block until after the tip moves again - while ( chainActive.LastTip() == pindexPrev ) - sleep(1); - continue; - } - - unique_ptr pblocktemplate(ptr); - if (!pblocktemplate.get()) - { - if (GetArg("-mineraddress", "").empty()) { - LogPrintf("Error in %s staker: Keypool ran out, please call keypoolrefill before restarting the mining thread\n", - ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - } else { - // Should never reach here, because -mineraddress validity is checked in init.cpp - LogPrintf("Error in %s staker: Invalid %s -mineraddress\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO], ASSETCHAINS_SYMBOL); - } - return; - } - - CBlock *pblock = &pblocktemplate->block; - LogPrintf("Staking with %u transactions in block (%u bytes)\n", pblock->vtx.size(),::GetSerializeSize(*pblock,SER_NETWORK,PROTOCOL_VERSION)); - // - // Search - // - int64_t nStart = GetTime(); - - // take up the necessary space for alignment - pblock->nSolution = solnPlaceholder; - - // we don't use this, but IncrementExtraNonce is the function that builds the merkle tree - unsigned int nExtraNonce = 0; - IncrementExtraNonce(pblock, pindexPrev, nExtraNonce); - - if (vNodes.empty() && chainparams.MiningRequiresPeers()) - { - if ( Mining_height > ASSETCHAINS_MINHEIGHT ) - { - fprintf(stderr,"no nodes, attempting reconnect\n"); - continue; - } - } - - if (mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 60) - { - fprintf(stderr,"timeout, retrying\n"); - continue; - } - - if ( pindexPrev != chainActive.LastTip() ) - { - printf("Block %d added to chain\n", chainActive.LastTip()->GetHeight()); - MilliSleep(250); - continue; - } - - int32_t unlockTime = komodo_block_unlocktime(Mining_height); - int64_t subsidy = (int64_t)(pblock->vtx[0].vout[0].nValue); - - uint256 hashTarget = ArithToUint256(arith_uint256().SetCompact(pblock->nBits)); - - pblock->nBits = GetNextWorkRequired(pindexPrev, pblock, consensusParams); - - UpdateTime(pblock, consensusParams, pindexPrev); - - ProcessBlockFound(pblock, *pwallet, reservekey); - - LogPrintf("Using %s algorithm:\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - LogPrintf("Staked block found \n hash: %s \ntarget: %s\n", pblock->GetHash().GetHex(), hashTarget.GetHex()); - printf("Found block %d \n", Mining_height ); - printf("staking reward %.8f %s!\n", (double)subsidy / (double)COIN, ASSETCHAINS_SYMBOL); - arith_uint256 post; - post.SetCompact(pblock->GetVerusPOSTarget()); - pindexPrev = get_chainactive(Mining_height - 100); - CTransaction &sTx = pblock->vtx[pblock->vtx.size()-1]; - printf("POS hash: %s \ntarget: %s\n", - CTransaction::_GetVerusPOSHash(&(pblock->nNonce), sTx.vin[0].prevout.hash, sTx.vin[0].prevout.n, Mining_height, pindexPrev->GetBlockHeader().GetVerusEntropyHash(Mining_height - 100), sTx.vout[0].nValue).GetHex().c_str(), ArithToUint256(post).GetHex().c_str()); - if (unlockTime > Mining_height && subsidy >= ASSETCHAINS_TIMELOCKGTE) - printf("- timelocked until block %i\n", unlockTime); - else - printf("\n"); - - // Check for stop or if block needs to be rebuilt - boost::this_thread::interruption_point(); - - sleep(3); - - // In regression test mode, stop mining after a block is found. - if (chainparams.MineBlocksOnDemand()) { - throw boost::thread_interrupted(); - } - } - } - catch (const boost::thread_interrupted&) - { - LogPrintf("VerusStaker terminated\n"); - throw; - } - catch (const std::runtime_error &e) - { - LogPrintf("VerusStaker runtime error: %s\n", e.what()); - return; - } -} - -void static BitcoinMiner_noeq(CWallet *pwallet) -#else -void static BitcoinMiner_noeq() #endif -{ - LogPrintf("%s miner started\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - RenameThread("verushash-miner"); - -#ifdef ENABLE_WALLET - // Each thread has its own key - CReserveKey reservekey(pwallet); -#endif - - const CChainParams& chainparams = Params(); - // Each thread has its own counter - unsigned int nExtraNonce = 0; - std::vector solnPlaceholder = std::vector(); - solnPlaceholder.resize(Eh200_9.SolutionWidth); - uint8_t *script; uint64_t total,checktoshis; int32_t i,j; - - while ( (ASSETCHAIN_INIT == 0 || KOMODO_INITDONE == 0) ) //chainActive.Tip()->GetHeight() != 235300 && - { - sleep(1); - if ( komodo_baseid(ASSETCHAINS_SYMBOL) < 0 ) - break; - } - - SetThreadPriority(THREAD_PRIORITY_LOWEST); - - // try a nice clean peer connection to start - CBlockIndex *pindexPrev, *pindexCur; - do { - pindexPrev = chainActive.LastTip(); - MilliSleep(5000 + rand() % 5000); - waitForPeers(chainparams); - pindexCur = chainActive.LastTip(); - } while (pindexPrev != pindexCur); - - // this will not stop printing more than once in all cases, but it will allow us to print in all cases - // and print duplicates rarely without having to synchronize - static CBlockIndex *lastChainTipPrinted; - - miningTimer.start(); - - try { - printf("Mining %s with %s\n", ASSETCHAINS_SYMBOL, ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - while (true) - { - miningTimer.stop(); - waitForPeers(chainparams); - - pindexPrev = chainActive.LastTip(); - sleep(1); - - // prevent forking on startup before the diff algorithm kicks in - if (pindexPrev->GetHeight() < 50 || pindexPrev != chainActive.LastTip()) - { - do { - pindexPrev = chainActive.LastTip(); - MilliSleep(5000 + rand() % 5000); - } while (pindexPrev != chainActive.LastTip()); - } - - // Create new block - unsigned int nTransactionsUpdatedLast = mempool.GetTransactionsUpdated(); - if ( Mining_height != pindexPrev->GetHeight()+1 ) - { - Mining_height = pindexPrev->GetHeight()+1; - Mining_start = (uint32_t)time(NULL); - } - - if (lastChainTipPrinted != pindexPrev) - { - printf("Mining height %d\n", Mining_height); - lastChainTipPrinted = pindexPrev; - } - - miningTimer.start(); - -#ifdef ENABLE_WALLET - CBlockTemplate *ptr = CreateNewBlockWithKey(reservekey, Mining_height, 0, ASSETCHAINS_STAKED != 0 && KOMODO_MININGTHREADS == 0); -#else - CBlockTemplate *ptr = CreateNewBlockWithKey(); -#endif - if ( ptr == 0 ) - { - static uint32_t counter; - if ( ASSETCHAINS_STAKED == 0 && counter++ < 10 ) - fprintf(stderr,"created illegal block, retry\n"); - continue; - } - - unique_ptr pblocktemplate(ptr); - if (!pblocktemplate.get()) - { - if (GetArg("-mineraddress", "").empty()) { - LogPrintf("Error in %s miner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n", - ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - } else { - // Should never reach here, because -mineraddress validity is checked in init.cpp - LogPrintf("Error in %s miner: Invalid %s -mineraddress\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO], ASSETCHAINS_SYMBOL); - } - return; - } - CBlock *pblock = &pblocktemplate->block; - if ( ASSETCHAINS_SYMBOL[0] != 0 ) - { - if ( ASSETCHAINS_REWARD[0] == 0 && !ASSETCHAINS_LASTERA ) - { - if ( pblock->vtx.size() == 1 && pblock->vtx[0].vout.size() == 1 && Mining_height > ASSETCHAINS_MINHEIGHT ) - { - static uint32_t counter; - if ( counter++ < 10 ) - fprintf(stderr,"skip generating %s on-demand block, no tx avail\n",ASSETCHAINS_SYMBOL); - sleep(10); - continue; - } else fprintf(stderr,"%s vouts.%d mining.%d vs %d\n",ASSETCHAINS_SYMBOL,(int32_t)pblock->vtx[0].vout.size(),Mining_height,ASSETCHAINS_MINHEIGHT); - } - } - IncrementExtraNonce(pblock, pindexPrev, nExtraNonce); - LogPrintf("Running %s miner with %u transactions in block (%u bytes)\n",ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO], - pblock->vtx.size(),::GetSerializeSize(*pblock,SER_NETWORK,PROTOCOL_VERSION)); - // - // Search - // - uint32_t savebits; int64_t nStart = GetTime(); - - pblock->nSolution = solnPlaceholder; - savebits = pblock->nBits; - arith_uint256 hashTarget = arith_uint256().SetCompact(pblock->nBits); - HASHTarget = arith_uint256().SetCompact(savebits); - arith_uint256 mask(ASSETCHAINS_NONCEMASK[ASSETCHAINS_ALGO]); - - Mining_start = 0; - - if ( pindexPrev != chainActive.LastTip() ) - { - if (lastChainTipPrinted != chainActive.LastTip()) - { - lastChainTipPrinted = chainActive.LastTip(); - printf("Block %d added to chain\n", lastChainTipPrinted->GetHeight()); - } - MilliSleep(250); - continue; - } - - if ( ASSETCHAINS_STAKED != 0 ) - { - int32_t percPoS,z; bool fNegative,fOverflow; - HASHTarget_POW = komodo_PoWtarget(&percPoS,HASHTarget,Mining_height,ASSETCHAINS_STAKED); - HASHTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); - LogPrintf("Block %d : PoS %d%% vs target %d%%\n", Mining_height, percPoS, (int32_t)ASSETCHAINS_STAKED); - } - //else if ( ASSETCHAINS_ADAPTIVEPOW > 0 && ASSETCHAINS_STAKED == 0 ) - // HASHTarget_POW = komodo_adaptivepow_target(Mining_height,HASHTarget,pblock->nTime); - - while (true) - { - arith_uint256 arNonce = UintToArith256(pblock->nNonce); - int64_t *extraPtr; - - // This seems to be a really bad way to do this, but its better than copy pasting the entire miner function at this stage. - CVerusHashWriter ss = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - ss << *((CBlockHeader *)pblock); - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH ) - extraPtr = ss.xI64p(); - CVerusHash &vh = ss.GetState(); - uint256 hashResult = uint256(); - vh.ClearExtra(); - - CVerusHashV2Writer ss2 = CVerusHashV2Writer(SER_GETHASH, PROTOCOL_VERSION); - ss2 << *((CBlockHeader *)pblock); - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1 ) - extraPtr = ss2.xI64p(); - CVerusHashV2 &vh2 = ss2.GetState(); - vh2.ClearExtra(); - - int64_t i, count = ASSETCHAINS_NONCEMASK[ASSETCHAINS_ALGO] + 1; - int64_t hashesToGo = ASSETCHAINS_HASHESPERROUND[ASSETCHAINS_ALGO]; - if ( ASSETCHAINS_STAKED > 0 && ASSETCHAINS_STAKED < 100 ) - { - if ( KOMODO_MININGTHREADS > 0 ) - hashTarget = HASHTarget_POW; - else - hashTarget = HASHTarget; - } - else if ( ASSETCHAINS_STAKED == 100 && Mining_height > 100 ) - hashTarget = HASHTarget; - //else if ( ASSETCHAINS_ADAPTIVEPOW > 0 && ASSETCHAINS_STAKED == 0 ) - // hashTarget = HASHTarget_POW; - - // for speed check NONCEMASK at a time - for (i = 0; i < count; i++) - { - *extraPtr = i; - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH ) - vh.ExtraHash((unsigned char *)&hashResult); - else if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1 ) - vh2.ExtraHash((unsigned char *)&hashResult); - - if ( UintToArith256(hashResult) <= hashTarget ) - { - if (pblock->nSolution.size() != 1344) - { - LogPrintf("ERROR: Block solution is not 1344 bytes as it should be"); - sleep(5); - break; - } - - SetThreadPriority(THREAD_PRIORITY_NORMAL); - - *((int64_t *)&(pblock->nSolution.data()[pblock->nSolution.size() - 15])) = i; - - int32_t unlockTime = komodo_block_unlocktime(Mining_height); - int64_t subsidy = (int64_t)(pblock->vtx[0].vout[0].nValue); - - LogPrintf("Using %s algorithm:\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - LogPrintf("proof-of-work found \n hash: %s \ntarget: %s\n", pblock->GetHash().GetHex(), hashTarget.GetHex()); - printf("Found block %d \n", Mining_height ); - printf("mining reward %.8f %s!\n", (double)subsidy / (double)COIN, ASSETCHAINS_SYMBOL); - printf(" hash: %s \ntarget: %s\n", pblock->GetHash().GetHex().c_str(), hashTarget.GetHex().c_str()); - if (unlockTime > Mining_height && subsidy >= ASSETCHAINS_TIMELOCKGTE) - printf("- timelocked until block %i\n", unlockTime); - else - printf("\n"); -#ifdef ENABLE_WALLET - ProcessBlockFound(pblock, *pwallet, reservekey); -#else - ProcessBlockFound(pblock)); -#endif - SetThreadPriority(THREAD_PRIORITY_LOWEST); - break; - } - // check periodically if we're stale - if (!--hashesToGo) - { - if ( pindexPrev != chainActive.LastTip() ) - { - if (lastChainTipPrinted != chainActive.LastTip()) - { - lastChainTipPrinted = chainActive.LastTip(); - printf("Block %d added to chain\n", lastChainTipPrinted->GetHeight()); - } - break; - } - hashesToGo = ASSETCHAINS_HASHESPERROUND[ASSETCHAINS_ALGO]; - } - } - - { - LOCK(cs_metrics); - nHashCount += i; - } - - // Check for stop or if block needs to be rebuilt - boost::this_thread::interruption_point(); - - if (vNodes.empty() && chainparams.MiningRequiresPeers()) - { - if ( Mining_height > ASSETCHAINS_MINHEIGHT ) - { - fprintf(stderr,"no nodes, attempting reconnect\n"); - break; - } - } - - if (mempool.GetTransactionsUpdated() != nTransactionsUpdatedLast && GetTime() - nStart > 60) - { - fprintf(stderr,"timeout, retrying\n"); - break; - } - - if ( pindexPrev != chainActive.LastTip() ) - { - if (lastChainTipPrinted != chainActive.LastTip()) - { - lastChainTipPrinted = chainActive.LastTip(); - printf("Block %d added to chain\n", lastChainTipPrinted->GetHeight()); - } - break; - } - -#ifdef _WIN32 - printf("%llu mega hashes complete - working\n", (ASSETCHAINS_NONCEMASK[ASSETCHAINS_ALGO] + 1) / 1048576); -#else - printf("%lu mega hashes complete - working\n", (ASSETCHAINS_NONCEMASK[ASSETCHAINS_ALGO] + 1) / 1048576); -#endif - pblock->nBits = savebits; - break; - } - } - } - catch (const boost::thread_interrupted&) - { - miningTimer.stop(); - LogPrintf("%s miner terminated\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO]); - throw; - } - catch (const std::runtime_error &e) - { - miningTimer.stop(); - LogPrintf("%s miner runtime error: %s\n", ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO], e.what()); - return; - } - miningTimer.stop(); -} int32_t gotinvalid; @@ -1617,7 +1138,7 @@ void static BitcoinMiner() { LogPrintf("HushMiner started\n"); SetThreadPriority(THREAD_PRIORITY_LOWEST); - RenameThread("komodo-miner"); + RenameThread("hush-miner"); const CChainParams& chainparams = Params(); #ifdef ENABLE_WALLET @@ -2119,9 +1640,8 @@ void static BitcoinMiner() minerThreads = new boost::thread_group(); #ifdef ENABLE_WALLET - if (ASSETCHAINS_LWMAPOS != 0 && VERUS_MINTBLOCKS) + if (ASSETCHAINS_LWMAPOS != 0) { - minerThreads->create_thread(boost::bind(&VerusStaker, pwallet)); } #endif @@ -2130,13 +1650,9 @@ void static BitcoinMiner() #ifdef ENABLE_WALLET if ( ASSETCHAINS_ALGO == ASSETCHAINS_EQUIHASH ) minerThreads->create_thread(boost::bind(&BitcoinMiner, pwallet)); - else - minerThreads->create_thread(boost::bind(&BitcoinMiner_noeq, pwallet)); #else if (ASSETCHAINS_ALGO == ASSETCHAINS_EQUIHASH ) minerThreads->create_thread(&BitcoinMiner); - else - minerThreads->create_thread(&BitcoinMiner_noeq); #endif } } diff --git a/src/pow.cpp b/src/pow.cpp index 95cda4443..b552df5db 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -650,11 +651,13 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: CBlockHeader hdr = pindexFirst->GetBlockHeader(); + /* if (hdr.IsVerusPOSBlock()) { nBits = hdr.GetVerusPOSTarget(); break; } + */ pindexFirst = pindexFirst->pprev; } @@ -675,11 +678,13 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: return nProofOfStakeLimit; CBlockHeader hdr = pindexFirst->GetBlockHeader(); + /* if (hdr.IsVerusPOSBlock()) { nBits = hdr.GetVerusPOSTarget(); break; } + */ } if (x) @@ -870,7 +875,8 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t //else if ( ASSETCHAINS_ADAPTIVEPOW > 0 && ASSETCHAINS_STAKED == 0 ) // bnTarget = komodo_adaptivepow_target(height,bnTarget,blkHeader.nTime); // Check proof of work matches claimed amount - if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget && !blkHeader.IsVerusPOSBlock() ) + //if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget && !blkHeader.IsVerusPOSBlock() ) + if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget ) { if ( KOMODO_LOADINGBLOCKS != 0 ) return true; diff --git a/src/primitives/block.cpp b/src/primitives/block.cpp index a7ec8d162..3243b4564 100644 --- a/src/primitives/block.cpp +++ b/src/primitives/block.cpp @@ -35,96 +35,12 @@ uint256 CBlockHeader::GetSHA256DHash() const return SerializeHash(*this); } -uint256 CBlockHeader::GetVerusHash() const -{ - if (hashPrevBlock.IsNull()) - // always use SHA256D for genesis block - return SerializeHash(*this); - else - return SerializeVerusHash(*this); -} - -uint256 CBlockHeader::GetVerusV2Hash() const -{ - if (hashPrevBlock.IsNull()) - // always use SHA256D for genesis block - return SerializeHash(*this); - else - return SerializeVerusHashV2(*this); -} void CBlockHeader::SetSHA256DHash() { CBlockHeader::hashFunction = &CBlockHeader::GetSHA256DHash; } -void CBlockHeader::SetVerusHash() -{ - CBlockHeader::hashFunction = &CBlockHeader::GetVerusHash; -} - -void CBlockHeader::SetVerusHashV2() -{ - CBlockHeader::hashFunction = &CBlockHeader::GetVerusV2Hash; -} - -// returns false if unable to fast calculate the VerusPOSHash from the header. -// if it returns false, value is set to 0, but it can still be calculated from the full block -// in that case. the only difference between this and the POS hash for the contest is that it is not divided by the value out -// this is used as a source of entropy -bool CBlockHeader::GetRawVerusPOSHash(uint256 &ret, int32_t nHeight) const -{ - // if below the required height or no storage space in the solution, we can't get - // a cached txid value to calculate the POSHash from the header - if (!(CPOSNonce::NewNonceActive(nHeight) && IsVerusPOSBlock())) - { - ret = uint256(); - return false; - } - - // if we can calculate, this assumes the protocol that the POSHash calculation is: - // hashWriter << ASSETCHAINS_MAGIC; - // hashWriter << nNonce; (nNonce is: - // (high 128 bits == low 128 bits of verus hash of low 128 bits of nonce) - // (low 32 bits == compact PoS difficult) - // (mid 96 bits == low 96 bits of HASH(pastHash, txid, voutnum) - // pastHash is hash of height - 100, either PoW hash of block or PoS hash, if new PoS - // ) - // hashWriter << height; - // return hashWriter.GetHash(); - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hashWriter << ASSETCHAINS_MAGIC; - hashWriter << nNonce; - hashWriter << nHeight; - ret = hashWriter.GetHash(); - return true; -} - -bool CBlockHeader::GetVerusPOSHash(arith_uint256 &ret, int32_t nHeight, CAmount value) const -{ - uint256 raw; - if (GetRawVerusPOSHash(raw, nHeight)) - { - ret = UintToArith256(raw) / value; - return true; - } - return false; -} - -// depending on the height of the block and its type, this returns the POS hash or the POW hash -uint256 CBlockHeader::GetVerusEntropyHash(int32_t height) const -{ - uint256 retVal; - // if we qualify as PoW, use PoW hash, regardless of PoS state - if (GetRawVerusPOSHash(retVal, height)) - { - // POS hash - return retVal; - } - return GetHash(); -} - uint256 BuildMerkleTree(bool* fMutated, const std::vector leaves, std::vector &vMerkleTree) { diff --git a/src/primitives/block.h b/src/primitives/block.h index 6ef8e0633..41e7e3715 100644 --- a/src/primitives/block.h +++ b/src/primitives/block.h @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2013 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -51,7 +52,9 @@ public: uint256 hashFinalSaplingRoot; uint32_t nTime; uint32_t nBits; - CPOSNonce nNonce; + //CPOSNonce nNonce; + uint256 nNonce; + std::vector nSolution; CBlockHeader() @@ -98,57 +101,14 @@ public: uint256 GetSHA256DHash() const; static void SetSHA256DHash(); - uint256 GetVerusHash() const; - static void SetVerusHash(); - bool GetRawVerusPOSHash(uint256 &ret, int32_t nHeight) const; - bool GetVerusPOSHash(arith_uint256 &ret, int32_t nHeight, CAmount value) const; // value is amount of stake tx - uint256 GetVerusEntropyHash(int32_t nHeight) const; - uint256 GetVerusV2Hash() const; - static void SetVerusHashV2(); int64_t GetBlockTime() const { return (int64_t)nTime; } - uint32_t GetVerusPOSTarget() const - { - uint32_t nBits = 0; - - for (const unsigned char *p = nNonce.begin() + 3; p >= nNonce.begin(); p--) - { - nBits <<= 8; - nBits += *p; - } - return nBits; - } - - bool IsVerusPOSBlock() const - { - if ( ASSETCHAINS_LWMAPOS != 0 ) - return nNonce.IsPOSNonce(); - else return(0); - } - - void SetVerusPOSTarget(uint32_t nBits) - { - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - arith_uint256 arNonce = UintToArith256(nNonce); - - // printf("before svpt: %s\n", ArithToUint256(arNonce).GetHex().c_str()); - - arNonce = (arNonce & CPOSNonce::entropyMask) | nBits; - - // printf("after clear: %s\n", ArithToUint256(arNonce).GetHex().c_str()); - - hashWriter << ArithToUint256(arNonce); - nNonce = CPOSNonce(ArithToUint256(UintToArith256(hashWriter.GetHash()) << 128 | arNonce)); - - // printf(" after svpt: %s\n", nNonce.GetHex().c_str()); - } }; // this class is used to address the type mismatch that existed between nodes, where block headers diff --git a/src/primitives/nonce.cpp b/src/primitives/nonce.cpp index d90a4d78c..a512b757d 100644 --- a/src/primitives/nonce.cpp +++ b/src/primitives/nonce.cpp @@ -21,66 +21,3 @@ #include "nonce.h" #include -extern char ASSETCHAINS_SYMBOL[65]; - -arith_uint256 CPOSNonce::entropyMask = UintToArith256(uint256S("00000000000000000000000000000000ffffffffffffffffffffffff00000000")); -arith_uint256 CPOSNonce::posDiffMask = UintToArith256(uint256S("00000000000000000000000000000000000000000000000000000000ffffffff")); - -bool CPOSNonce::NewPOSActive(int32_t height) -{ - if ((strcmp(ASSETCHAINS_SYMBOL, "VRSC") == 0) && (height < (96480 + 100))) - return false; - else - return true; -} - -bool CPOSNonce::NewNonceActive(int32_t height) -{ - if ((strcmp(ASSETCHAINS_SYMBOL, "VRSC") == 0) && (height < 96480)) - return false; - else - return true; -} - -void CPOSNonce::SetPOSEntropy(const uint256 &pastHash, uint256 txid, int32_t voutNum) -{ - // get low 96 bits of past hash and put it in top 96 bits of low 128 bits of nonce - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - // first hash the pastHash, txid, and voutNum, to create a combined 96 bits, which will be used in the nonce - hashWriter << pastHash; - hashWriter << txid; - hashWriter << voutNum; - - arith_uint256 arNonce = (UintToArith256(*this) & posDiffMask) | - (UintToArith256(hashWriter.GetHash()) & entropyMask); - - // printf("before %s\n", ArithToUint256(arNonce).GetHex().c_str()); - - hashWriter.Reset(); - hashWriter << ArithToUint256(arNonce); - - *this = CPOSNonce(ArithToUint256((UintToArith256(hashWriter.GetHash()) << 128) | arNonce)); - - // printf("after %s\n", this->GetHex().c_str()); -} - -bool CPOSNonce::CheckPOSEntropy(const uint256 &pastHash, uint256 txid, int32_t voutNum) -{ - // get low 96 bits of past hash and put it in top 96 bits of low 128 bits of nonce - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - // first hash the pastHash, txid, and voutNum, to create a combined 96 bits, which will be used in the nonce - hashWriter << pastHash; - hashWriter << txid; - hashWriter << voutNum; - - arith_uint256 arNonce = (UintToArith256(*this) & posDiffMask) | - (UintToArith256(hashWriter.GetHash()) & entropyMask); - - hashWriter.Reset(); - hashWriter << ArithToUint256(arNonce); - - return UintToArith256(*this) == (UintToArith256(hashWriter.GetHash()) << 128 | arNonce); -} - diff --git a/src/primitives/nonce.h b/src/primitives/nonce.h index 605564671..b17a9f01b 100644 --- a/src/primitives/nonce.h +++ b/src/primitives/nonce.h @@ -1,3 +1,4 @@ +// Copyright (c) 2019 Hush Developers // Copyright (c) 2018 Michael Toutonghi // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -25,55 +26,4 @@ #include "arith_uint256.h" -/** For POS blocks, the nNonce of a block header holds the entropy source for the POS contest - * in the latest VerusHash protocol - * */ -class CPOSNonce : public uint256 -{ -public: - static bool NewPOSActive(int32_t height); - static bool NewNonceActive(int32_t height); - - static arith_uint256 entropyMask; - static arith_uint256 posDiffMask; - - CPOSNonce() : uint256() { } - CPOSNonce(const base_blob<256> &b) : uint256(b) { } - CPOSNonce(const std::vector &vch) : uint256(vch) { } - - int32_t GetPOSTarget() const - { - uint32_t nBits = 0; - - for (const unsigned char *p = begin() + 3; p >= begin(); p--) - { - nBits <<= 8; - nBits += *p; - } - return nBits; - } - - bool IsPOSNonce() const - { - arith_uint256 arNonce = UintToArith256(*this); - arith_uint256 tmpNonce = ((arNonce << 128) >> 128); - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - hashWriter << ArithToUint256(tmpNonce); - return (*this == ArithToUint256(UintToArith256(hashWriter.GetHash()) << 128 | tmpNonce)); - } - - void SetPOSTarget(uint32_t nBits) - { - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - arith_uint256 arNonce = (UintToArith256(*this) & entropyMask) | nBits; - hashWriter << ArithToUint256(arNonce); - - (uint256 &)(*this) = ArithToUint256(UintToArith256(hashWriter.GetHash()) << 128 | arNonce); - } - - void SetPOSEntropy(const uint256 &pastHash, uint256 txid, int32_t voutNum); - bool CheckPOSEntropy(const uint256 &pastHash, uint256 txid, int32_t voutNum); -}; - #endif // BITCOIN_PRIMITIVES_NONCE_H diff --git a/src/primitives/transaction.h b/src/primitives/transaction.h index 0c20908b0..e83a519b1 100644 --- a/src/primitives/transaction.h +++ b/src/primitives/transaction.h @@ -30,7 +30,6 @@ #include "arith_uint256.h" #include "consensus/consensus.h" #include "hash.h" -#include "nonce.h" #ifndef __APPLE__ #include @@ -727,41 +726,6 @@ public: return a.hash != b.hash; } - // verus hash will be the same for a given txid, output number, block height, and blockhash of 100 blocks past - static uint256 _GetVerusPOSHash(CPOSNonce *pNonce, const uint256 &txid, int32_t voutNum, int32_t height, const uint256 &pastHash, int64_t value) - { - pNonce->SetPOSEntropy(pastHash, txid, voutNum); - CVerusHashWriter hashWriter = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hashWriter << ASSETCHAINS_MAGIC; - - // we only use the new style of POS hash after changeover and 100 blocks of enforced proper nonce updating - if (CPOSNonce::NewPOSActive(height)) - { - hashWriter << *pNonce; - hashWriter << height; - return ArithToUint256(UintToArith256(hashWriter.GetHash()) / value); - } - else - { - hashWriter << pastHash; - hashWriter << height; - hashWriter << txid; - hashWriter << voutNum; - return ArithToUint256(UintToArith256(hashWriter.GetHash()) / value); - } - } - - // Nonce is modified to include the transaction information - uint256 GetVerusPOSHash(CPOSNonce *pNonce, int32_t voutNum, int32_t height, const uint256 &pastHash) const - { - uint256 txid = GetHash(); - - if (voutNum >= vout.size()) - return uint256S("ff0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); - - return _GetVerusPOSHash(pNonce, txid, voutNum, height, pastHash, (uint64_t)vout[voutNum].nValue); - } std::string ToString() const; }; diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 4f7374767..be87c16d9 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -326,7 +326,7 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool tx result.push_back(Pair("difficulty", GetDifficulty(blockindex))); result.push_back(Pair("chainwork", blockindex->chainPower.chainWork.GetHex())); result.push_back(Pair("anchor", blockindex->hashFinalSproutRoot.GetHex())); - result.push_back(Pair("blocktype", block.IsVerusPOSBlock() ? "minted" : "mined")); + result.push_back(Pair("blocktype", "mined")); UniValue valuePools(UniValue::VARR); valuePools.push_back(ValuePoolDesc("sprout", blockindex->nChainSproutValue, blockindex->nSproutValue)); diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index a93e6b4d8..c2935c0c0 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -5464,12 +5464,6 @@ int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33) return(siglen); } -int32_t verus_staked(CBlock *pBlock, CMutableTransaction &txNew, uint32_t &nBits, arith_uint256 &hashResult, uint8_t *utxosig, CPubKey &pk) -{ - return pwalletMain->VerusStakeTransaction(pBlock, txNew, nBits, hashResult, utxosig, pk); -} - - #include "../cc/CCfaucet.h" #include "../cc/CCassets.h" #include "../cc/CCrewards.h" diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 8f33f8d6d..1744ef0b6 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1338,120 +1338,6 @@ CWallet::TxItems CWallet::OrderedTxItems(std::list& acentries, return txOrdered; } -// looks through all wallet UTXOs and checks to see if any qualify to stake the block at the current height. it always returns the qualified -// UTXO with the smallest coin age if there is more than one, as larger coin age will win more often and is worth saving -// each attempt consists of taking a VerusHash of the following values: -// ASSETCHAINS_MAGIC, nHeight, txid, voutNum -bool CWallet::VerusSelectStakeOutput(CBlock *pBlock, arith_uint256 &hashResult, CTransaction &stakeSource, int32_t &voutNum, int32_t nHeight, uint32_t &bnTarget) const -{ - arith_uint256 target; - arith_uint256 curHash; - vector vecOutputs; - COutput *pwinner = NULL; - CBlockIndex *pastBlockIndex; - txnouttype whichType; - std:vector> vSolutions; - - pBlock->nNonce.SetPOSTarget(bnTarget); - target.SetCompact(bnTarget); - - pwalletMain->AvailableCoins(vecOutputs, true, NULL, false, false); - - if (pastBlockIndex = komodo_chainactive(nHeight - 100)) - { - CBlockHeader bh = pastBlockIndex->GetBlockHeader(); - uint256 pastHash = bh.GetVerusEntropyHash(nHeight - 100); - CPOSNonce curNonce; - - BOOST_FOREACH(COutput &txout, vecOutputs) - { - if (txout.fSpendable && (UintToArith256(txout.tx->GetVerusPOSHash(&(pBlock->nNonce), txout.i, nHeight, pastHash)) <= target) && (txout.nDepth >= VERUS_MIN_STAKEAGE)) - { - if ((!pwinner || UintToArith256(curNonce) > UintToArith256(pBlock->nNonce)) && - (Solver(txout.tx->vout[txout.i].scriptPubKey, whichType, vSolutions) && (whichType == TX_PUBKEY || whichType == TX_PUBKEYHASH))) - { - //printf("Found PoS block\nnNonce: %s\n", pBlock->nNonce.GetHex().c_str()); - pwinner = &txout; - curNonce = pBlock->nNonce; - } - } - } - if (pwinner) - { - stakeSource = *(pwinner->tx); - voutNum = pwinner->i; - pBlock->nNonce = curNonce; - return true; - } - } - return false; -} - -int32_t CWallet::VerusStakeTransaction(CBlock *pBlock, CMutableTransaction &txNew, uint32_t &bnTarget, arith_uint256 &hashResult, uint8_t *utxosig, CPubKey pk) const -{ - CTransaction stakeSource; - int32_t voutNum, siglen = 0; - int64_t nValue; - txnouttype whichType; - std::vector> vSolutions; - - CBlockIndex *tipindex = chainActive.LastTip(); - uint32_t stakeHeight = tipindex->GetHeight() + 1; - - pk = CPubKey(); - - bnTarget = lwmaGetNextPOSRequired(tipindex, Params().GetConsensus()); - - if (!VerusSelectStakeOutput(pBlock, hashResult, stakeSource, voutNum, tipindex->GetHeight() + 1, bnTarget) || - !Solver(stakeSource.vout[voutNum].scriptPubKey, whichType, vSolutions)) - { - LogPrintf("Searched for eligible staking transactions, no winners found\n"); - return 0; - } - - bool signSuccess; - SignatureData sigdata; - uint64_t txfee; - auto consensusBranchId = CurrentEpochBranchId(stakeHeight, Params().GetConsensus()); - - const CKeyStore& keystore = *pwalletMain; - txNew.vin.resize(1); - txNew.vout.resize(1); - txfee = 0; - txNew.vin[0].prevout.hash = stakeSource.GetHash(); - txNew.vin[0].prevout.n = voutNum; - - if (whichType == TX_PUBKEY) - { - txNew.vout[0].scriptPubKey << ToByteVector(vSolutions[0]) << OP_CHECKSIG; - if (!pk.IsValid()) - pk = CPubKey(vSolutions[0]); - } - else if (whichType == TX_PUBKEYHASH) - { - txNew.vout[0].scriptPubKey << OP_DUP << OP_HASH160 << ToByteVector(vSolutions[0]) << OP_EQUALVERIFY << OP_CHECKSIG; - } - else - return 0; - - nValue = txNew.vout[0].nValue = stakeSource.vout[voutNum].nValue - txfee; - - txNew.nLockTime = 0; - CTransaction txNewConst(txNew); - signSuccess = ProduceSignature(TransactionSignatureCreator(&keystore, &txNewConst, 0, nValue, SIGHASH_ALL), stakeSource.vout[voutNum].scriptPubKey, sigdata, consensusBranchId); - if (!signSuccess) - fprintf(stderr,"failed to create signature\n"); - else - { - uint8_t *ptr; - UpdateTransaction(txNew,0,sigdata); - ptr = (uint8_t *)&sigdata.scriptSig[0]; - siglen = sigdata.scriptSig.size(); - for (int i=0; i Date: Mon, 4 Nov 2019 08:25:13 -0500 Subject: [PATCH 085/339] I think he does not like it, Mikey --- src/crypto/verus_hash.cpp | 180 -------------------------------------- src/crypto/verus_hash.h | 134 ---------------------------- 2 files changed, 314 deletions(-) delete mode 100644 src/crypto/verus_hash.cpp delete mode 100644 src/crypto/verus_hash.h diff --git a/src/crypto/verus_hash.cpp b/src/crypto/verus_hash.cpp deleted file mode 100644 index f5cb1c9f3..000000000 --- a/src/crypto/verus_hash.cpp +++ /dev/null @@ -1,180 +0,0 @@ -// (C) 2018 The Verus Developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -/* -This provides the PoW hash function for Verus, a CPU-optimized hash -function with a Haraka V2 core. Unlike Haraka, which is made for short -inputs only, Verus Hash takes any length of input and produces a 256 -bit output. -*/ -#include -#include "crypto/common.h" -#include "crypto/verus_hash.h" - -void (*CVerusHash::haraka512Function)(unsigned char *out, const unsigned char *in); - -void CVerusHash::Hash(void *result, const void *data, size_t _len) -{ - unsigned char buf[128]; - unsigned char *bufPtr = buf; - int nextOffset = 64; - uint32_t pos = 0, len = _len; - unsigned char *bufPtr2 = bufPtr + nextOffset; - unsigned char *ptr = (unsigned char *)data; - - // put our last result or zero at beginning of buffer each time - memset(bufPtr, 0, 32); - - // digest up to 32 bytes at a time - for ( ; pos < len; pos += 32) - { - if (len - pos >= 32) - { - memcpy(bufPtr + 32, ptr + pos, 32); - } - else - { - int i = (int)(len - pos); - memcpy(bufPtr + 32, ptr + pos, i); - memset(bufPtr + 32 + i, 0, 32 - i); - } - (*haraka512Function)(bufPtr2, bufPtr); - bufPtr2 = bufPtr; - bufPtr += nextOffset; - nextOffset *= -1; - } - memcpy(result, bufPtr, 32); -}; - -void CVerusHash::init() -{ - if (IsCPUVerusOptimized()) - { - haraka512Function = &haraka512_zero; - } - else - { - haraka512Function = &haraka512_port_zero; - } -} - -CVerusHash &CVerusHash::Write(const unsigned char *data, size_t _len) -{ - unsigned char *tmp; - uint32_t pos, len = _len; - - // digest up to 32 bytes at a time - for ( pos = 0; pos < len; ) - { - uint32_t room = 32 - curPos; - - if (len - pos >= room) - { - memcpy(curBuf + 32 + curPos, data + pos, room); - (*haraka512Function)(result, curBuf); - tmp = curBuf; - curBuf = result; - result = tmp; - pos += room; - curPos = 0; - } - else - { - memcpy(curBuf + 32 + curPos, data + pos, len - pos); - curPos += len - pos; - pos = len; - } - } - return *this; -} - -// to be declared and accessed from C -void verus_hash(void *result, const void *data, size_t len) -{ - return CVerusHash::Hash(result, data, len); -} - -void (*CVerusHashV2::haraka512Function)(unsigned char *out, const unsigned char *in); - -void CVerusHashV2::init() -{ - if (IsCPUVerusOptimized()) - { - load_constants(); - haraka512Function = &haraka512; - } - else - { - // load and tweak the haraka constants - load_constants_port(); - haraka512Function = &haraka512_port; - } -} - -void CVerusHashV2::Hash(void *result, const void *data, size_t len) -{ - unsigned char buf[128]; - unsigned char *bufPtr = buf; - int pos = 0, nextOffset = 64; - unsigned char *bufPtr2 = bufPtr + nextOffset; - unsigned char *ptr = (unsigned char *)data; - - // put our last result or zero at beginning of buffer each time - memset(bufPtr, 0, 32); - - // digest up to 32 bytes at a time - for ( ; pos < len; pos += 32) - { - if (len - pos >= 32) - { - memcpy(bufPtr + 32, ptr + pos, 32); - } - else - { - int i = (int)(len - pos); - memcpy(bufPtr + 32, ptr + pos, i); - memset(bufPtr + 32 + i, 0, 32 - i); - } - (*haraka512Function)(bufPtr2, bufPtr); - bufPtr2 = bufPtr; - bufPtr += nextOffset; - nextOffset *= -1; - } - memcpy(result, bufPtr, 32); -}; - -CVerusHashV2 &CVerusHashV2::Write(const unsigned char *data, size_t len) -{ - unsigned char *tmp; - - // digest up to 32 bytes at a time - for ( int pos = 0; pos < len; ) - { - int room = 32 - curPos; - - if (len - pos >= room) - { - memcpy(curBuf + 32 + curPos, data + pos, room); - (*haraka512Function)(result, curBuf); - tmp = curBuf; - curBuf = result; - result = tmp; - pos += room; - curPos = 0; - } - else - { - memcpy(curBuf + 32 + curPos, data + pos, len - pos); - curPos += len - pos; - pos = len; - } - } - return *this; -} - -// to be declared and accessed from C -void verus_hash_v2(void *result, const void *data, size_t len) -{ - return CVerusHashV2::Hash(result, data, len); -} diff --git a/src/crypto/verus_hash.h b/src/crypto/verus_hash.h deleted file mode 100644 index 63ff1aaaa..000000000 --- a/src/crypto/verus_hash.h +++ /dev/null @@ -1,134 +0,0 @@ -// (C) 2018 Michael Toutonghi -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -/* -This provides the PoW hash function for Verus, enabling CPU mining. -*/ -#ifndef VERUS_HASH_H_ -#define VERUS_HASH_H_ - -#include -#include - -#include - -extern "C" -{ -#include "crypto/haraka.h" -#include "crypto/haraka_portable.h" -} - -class CVerusHash -{ - public: - static void Hash(void *result, const void *data, size_t len); - static void (*haraka512Function)(unsigned char *out, const unsigned char *in); - - static void init(); - - CVerusHash() { } - - CVerusHash &Write(const unsigned char *data, size_t len); - - CVerusHash &Reset() - { - curBuf = buf1; - result = buf2; - curPos = 0; - std::fill(buf1, buf1 + sizeof(buf1), 0); - return *this; - } - - int64_t *ExtraI64Ptr() { return (int64_t *)(curBuf + 32); } - void ClearExtra() - { - if (curPos) - { - std::fill(curBuf + 32 + curPos, curBuf + 64, 0); - } - } - void ExtraHash(unsigned char hash[32]) { (*haraka512Function)(hash, curBuf); } - - void Finalize(unsigned char hash[32]) - { - if (curPos) - { - std::fill(curBuf + 32 + curPos, curBuf + 64, 0); - (*haraka512Function)(hash, curBuf); - } - else - std::memcpy(hash, curBuf, 32); - } - - private: - // only buf1, the first source, needs to be zero initialized - unsigned char buf1[64] = {0}, buf2[64]; - unsigned char *curBuf = buf1, *result = buf2; - size_t curPos = 0; -}; - -class CVerusHashV2 -{ - public: - static void Hash(void *result, const void *data, size_t len); - static void (*haraka512Function)(unsigned char *out, const unsigned char *in); - - static void init(); - - CVerusHashV2() {} - - CVerusHashV2 &Write(const unsigned char *data, size_t len); - - CVerusHashV2 &Reset() - { - curBuf = buf1; - result = buf2; - curPos = 0; - std::fill(buf1, buf1 + sizeof(buf1), 0); - return *this; - } - - int64_t *ExtraI64Ptr() { return (int64_t *)(curBuf + 32); } - void ClearExtra() - { - if (curPos) - { - std::fill(curBuf + 32 + curPos, curBuf + 64, 0); - } - } - void ExtraHash(unsigned char hash[32]) { (*haraka512Function)(hash, curBuf); } - - void Finalize(unsigned char hash[32]) - { - if (curPos) - { - std::fill(curBuf + 32 + curPos, curBuf + 64, 0); - (*haraka512Function)(hash, curBuf); - } - else - std::memcpy(hash, curBuf, 32); - } - - private: - // only buf1, the first source, needs to be zero initialized - unsigned char buf1[64] = {0}, buf2[64]; - unsigned char *curBuf = buf1, *result = buf2; - size_t curPos = 0; -}; - -extern void verus_hash(void *result, const void *data, size_t len); -extern void verus_hash_v2(void *result, const void *data, size_t len); - -inline bool IsCPUVerusOptimized() -{ - unsigned int eax,ebx,ecx,edx; - - if (!__get_cpuid(1,&eax,&ebx,&ecx,&edx)) - { - return false; - } - return ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES)); -}; - -#endif From 0eaee9dc8336f1d9f6ce7258b385e399b82030bb Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 4 Nov 2019 10:53:36 -0500 Subject: [PATCH 086/339] Good riddance --- COPYING | 1 - README-mac.md | 55 --------------------------- qa/pull-tester/rpc-tests.sh | 3 +- qa/rpc-tests/ac_private.py | 3 +- src/Makefile.gtest.include | 2 +- src/Makefile.qt.include | 2 +- src/Makefile.qttest.include | 2 +- src/Makefile.test.include | 2 +- src/Makefile.zcash.include | 1 - src/assetchains.old | 4 -- src/cc/eval.h | 2 +- src/chainparams.cpp | 74 +++++++------------------------------ src/clientversion.h | 2 +- src/coins.h | 2 +- src/fiat/vrsc | 2 - src/hash.h | 1 - src/komodo_bitcoind.h | 49 ++---------------------- src/komodo_defs.h | 13 +++---- src/komodo_gateway.h | 2 +- src/komodo_globals.h | 27 ++++++-------- src/komodo_utils.h | 22 +++-------- src/main.cpp | 47 +---------------------- src/metrics.cpp | 7 +--- src/miner.cpp | 4 +- src/pow.cpp | 34 ++++------------- src/rpc/mining.cpp | 9 +---- src/rpc/misc.cpp | 2 +- src/util.cpp | 3 +- src/wallet-utility.cpp | 4 +- 29 files changed, 69 insertions(+), 312 deletions(-) delete mode 100644 README-mac.md delete mode 100755 src/fiat/vrsc diff --git a/COPYING b/COPYING index 7a9767ad0..4c4d2e838 100644 --- a/COPYING +++ b/COPYING @@ -3,7 +3,6 @@ Copyright (c) 2009-2018 Bitcoin Developers Copyright (c) 2016-2017 The Zcash developers Copyright (c) 2016-2019 The Komodo developers Copyright (c) 2018-2019 The Hush developers -Copyright (c) 2018 The VerusCoin developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README-mac.md b/README-mac.md deleted file mode 100644 index 1fbe7bf89..000000000 --- a/README-mac.md +++ /dev/null @@ -1,55 +0,0 @@ - -You will need Apple's Xcode (at least version 7, preferably 8.x) and the Xcode Command Line Tools: - -https://itunes.apple.com/us/app/xcode/id497799835?mt=12 - -And Homebrew: - -http://brew.sh/ - -Use the brewfile to install the necessary packages: - -```shell -brew bundle -``` - -or - -```shell -brew tap discoteq/discoteq; brew install flock autoconf autogen automake gcc@6 binutils protobuf coreutils wget -``` - -Get all that installed, then run: - -```shell -git clone https://github.com/MyHush/hush3 -cd hush3 -./zcutil/build-mac.sh -``` - -To build a distributable version of Hush then run the makeReleaseMac.sh script after building. This will fix the dependency references and move the komodod and komodo-cli binaries to the kmd/mac/verus-cli directory along with the 6 libraries required for it to work properly. - -When you are done building, you need to create `Komodo.conf` the Mac way. - -```shell -mkdir ~/Library/Application\ Support/Komodo -touch ~/Library/Application\ Support/Komodo/Komodo.conf -nano ~/Library/Application\ Support/Komodo/Komodo.conf -``` - -Add the following lines to the Komodo.conf file: - -```shell -rpcuser=dontuseweakusernameoryougetrobbed -rpcpassword=dontuseweakpasswordoryougetrobbed -txindex=1 -addnode=5.9.102.210 -addnode=78.47.196.146 -addnode=178.63.69.164 -addnode=88.198.65.74 -addnode=5.9.122.241 -addnode=144.76.94.38 -addnode=89.248.166.91 -``` - -Happy Building diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh index 24e8566d5..c525a5410 100755 --- a/qa/pull-tester/rpc-tests.sh +++ b/qa/pull-tester/rpc-tests.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Copyright 2019 The Hush developers + set -e -o pipefail CURDIR=$(cd $(dirname "$0"); pwd) @@ -14,7 +16,6 @@ testScripts=( 'dpow.py' 'dpowconfs.py' 'ac_private.py' - 'verushash.py' 'paymentdisclosure.py' 'prioritisetransaction.py' 'wallet_treestate.py' diff --git a/qa/rpc-tests/ac_private.py b/qa/rpc-tests/ac_private.py index fafc4b4cd..43febdeea 100755 --- a/qa/rpc-tests/ac_private.py +++ b/qa/rpc-tests/ac_private.py @@ -1,4 +1,5 @@ #!/usr/bin/env python2 +# Copyright (c) 2019 The Hush developers # Copyright (c) 2018 SuperNET developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -28,7 +29,7 @@ def generate_random_string(length): class AssetChainPrivateTest (BitcoinTestFramework): def setup_chain(self): - print("Initializing VerusHash test directory "+self.options.tmpdir) + print("Initializing ac_private test directory "+self.options.tmpdir) self.num_nodes = 1 initialize_chain_clean(self.options.tmpdir, self.num_nodes) diff --git a/src/Makefile.gtest.include b/src/Makefile.gtest.include index ec3a4a12e..cb9aa844a 100644 --- a/src/Makefile.gtest.include +++ b/src/Makefile.gtest.include @@ -54,7 +54,7 @@ endif komodo_gtest_CPPFLAGS = $(AM_CPPFLAGS) -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) komodo_gtest_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -komodo_gtest_LDADD = -lgtest -lgmock $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBVERUS_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ +komodo_gtest_LDADD = -lgtest -lgmock $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) if ENABLE_ZMQ zcash_gtest_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 6afc3a707..c21016737 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -361,7 +361,7 @@ qt_komodo_qt_LDADD = qt/libbitcoinqt.a $(LIBBITCOIN_SERVER) if ENABLE_WALLET qt_komodo_qt_LDADD += $(LIBBITCOIN_WALLET) endif -qt_komodo_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBVERUS_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ +qt_komodo_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ $(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) $(LIBZCASH_LIBS) qt_komodo_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) qt_komodo_qt_LIBTOOLFLAGS = --tag CXX diff --git a/src/Makefile.qttest.include b/src/Makefile.qttest.include index 2d56d07e3..3e57a8926 100644 --- a/src/Makefile.qttest.include +++ b/src/Makefile.qttest.include @@ -30,7 +30,7 @@ qt_test_test_komodo_qt_LDADD = $(LIBBITCOINQT) $(LIBBITCOIN_SERVER) if ENABLE_WALLET qt_test_test_komodo_qt_LDADD += $(LIBBITCOIN_WALLET) endif -qt_test_test_komodo_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBVERUS_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) \ +qt_test_test_komodo_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBBITCOIN_UNIVALUE) $(LIBLEVELDB) \ $(LIBMEMENV) $(BOOST_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) $(QT_LIBS) \ $(QR_LIBS) $(PROTOBUF_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS) $(LIBSECP256K1) $(LIBZCASH_LIBS) qt_test_test_komodo_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 1f9f9ac1e..59c66ad43 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -113,7 +113,7 @@ endif test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES) test_test_bitcoin_CPPFLAGS = $(AM_CPPFLAGS) -fopenmp $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS) $(EVENT_CFLAGS) -test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBVERUS_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ +test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBMEMENV) \ $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSECP256K1) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) test_test_bitcoin_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) if ENABLE_WALLET diff --git a/src/Makefile.zcash.include b/src/Makefile.zcash.include index 4302b2e0d..da5b4344d 100644 --- a/src/Makefile.zcash.include +++ b/src/Makefile.zcash.include @@ -24,7 +24,6 @@ zcash_CreateJoinSplit_LDADD = \ $(LIBSNARK) \ $(LIBBITCOIN_UTIL) \ $(LIBBITCOIN_CRYPTO) \ - $(LIBVERUS_CRYPTO) \ $(BOOST_LIBS) \ $(LIBZCASH_LIBS) \ $(LIBCRYPTOCONDITIONS) \ diff --git a/src/assetchains.old b/src/assetchains.old index e0fe0eee9..0a2c4fb7b 100755 --- a/src/assetchains.old +++ b/src/assetchains.old @@ -35,7 +35,6 @@ echo $pubkey ./komodod -pubkey=$pubkey -ac_name=EQL -ac_supply=500000000 -ac_ccactivate=205000 -addnode=46.101.124.153 & ./komodod -pubkey=$pubkey -ac_name=ZILLA -ac_supply=11000000 -ac_sapling=5000000 -addnode=51.68.215.104 & ./komodod -pubkey=$pubkey -ac_name=RFOX -ac_supply=1000000000 -ac_reward=100000000 -addnode=95.213.238.98 & -~/VerusCoin/src/komodod -pubkey=$pubkey -ac_name=VRSC -ac_algo=verushash -ac_cc=1 -ac_veruspos=50 -ac_supply=0 -ac_eras=3 -ac_reward=0,38400000000,2400000000 -ac_halving=1,43200,1051920 -ac_decay=100000000,0,0 -ac_end=10080,226080,0 -ac_timelockgte=19200000000 -ac_timeunlockfrom=129600 -ac_timeunlockto=1180800 -addnode=185.25.48.236 -addnode=185.64.105.111 & ./komodod -pubkey=$pubkey -ac_name=SEC -ac_cc=333 -ac_supply=1000000000 -addnode=185.148.145.43 & ./komodod -pubkey=$pubkey -ac_name=CCL -ac_supply=200000000 -ac_end=1 -ac_cc=2 -addressindex=1 -spentindex=1 -addnode=142.93.136.89 -addnode=195.201.22.89 & ./komodod -pubkey=$pubkey -ac_name=PIRATE -ac_supply=0 -ac_reward=25600000000 -ac_halving=77777 -ac_private=1 -addnode=178.63.77.56 & @@ -48,10 +47,7 @@ echo $pubkey ./komodod -pubkey=$pubkey -ac_name=ILN -ac_supply=10000000000 -ac_cc=2 -addressindex=1 -spentindex=1 -addnode=51.75.122.83 & ./komodod -pubkey=$pubkey -ac_name=RICK -ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=95.217.44.58 -addnode=138.201.136.145 & ./komodod -pubkey=$pubkey -ac_name=MORTY -ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=95.217.44.58 -addnode=138.201.136.145 & -<<<<<<< HEAD ./komodod -pubkey=$pubkey -ac_name=VOTE2019 -ac_supply=123651638 -ac_public=1 -addnode=95.213.238.98 & -======= ->>>>>>> beta ./komodod -pubkey=$pubkey -ac_name=KOIN -ac_supply=125000000 -addnode=3.0.32.10 & ./komodod -pubkey=$pubkey -ac_name=ZEXO -ac_supply=100000000 -ac_reward=1478310502 -ac_halving=525600 -ac_cc=42 -ac_ccenable=236 -ac_perc=77700 -ac_staked=93 -ac_pubkey=02713bd85e054db923694b6b7a85306264edf4d6bd6d331814f2b40af444b3ebbc -ac_public=1 -addnode=80.240.17.222 & ./komodod -pubkey=$pubkey -ac_name=K64 -ac_supply=64000777 -ac_reward=0 -ac_staked=10 -addnode=18.197.20.211 & diff --git a/src/cc/eval.h b/src/cc/eval.h index 1324d5e21..b2a99b6d4 100644 --- a/src/cc/eval.h +++ b/src/cc/eval.h @@ -1,3 +1,4 @@ +// Copyright 2019 The Hush developers /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -36,7 +37,6 @@ * there should be a code identifying it. For example, * a possible code is EVAL_BITCOIN_SCRIPT, where the entire binary * after the code is interpreted as a bitcoin script. - * Verus EVAL_STAKEGUARD is 0x01 */ #define FOREACH_EVAL(EVAL) \ EVAL(EVAL_IMPORTPAYOUT, 0xe1) \ diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 07adada36..cfcf48313 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -581,22 +582,6 @@ void *chainparams_commandline() pCurrentParams->pchMessageStart[2] = (ASSETCHAINS_MAGIC >> 16) & 0xff; pCurrentParams->pchMessageStart[3] = (ASSETCHAINS_MAGIC >> 24) & 0xff; fprintf(stderr,">>>>>>>>>> %s: p2p.%u rpc.%u magic.%08x %u %u coins\n",ASSETCHAINS_SYMBOL,ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT,ASSETCHAINS_MAGIC,ASSETCHAINS_MAGIC,(uint32_t)ASSETCHAINS_SUPPLY); - if (ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH) - { - // this is only good for 60 second blocks with an averaging window of 45. for other parameters, use: - // nLwmaAjustedWeight = (N+1)/2 * (0.9989^(500/nPowAveragingWindow)) * nPowTargetSpacing - pCurrentParams->consensus.nLwmaAjustedWeight = 1350; - pCurrentParams->consensus.nPowAveragingWindow = 45; - pCurrentParams->consensus.powAlternate = uint256S("00000f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); - } - else if (ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1) - { - // this is only good for 60 second blocks with an averaging window of 45. for other parameters, use: - // nLwmaAjustedWeight = (N+1)/2 * (0.9989^(500/nPowAveragingWindow)) * nPowTargetSpacing - pCurrentParams->consensus.nLwmaAjustedWeight = 1350; - pCurrentParams->consensus.nPowAveragingWindow = 45; - pCurrentParams->consensus.powAlternate = uint256S("0000000f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); - } if (ASSETCHAINS_LWMAPOS != 0) { @@ -604,54 +589,23 @@ void *chainparams_commandline() pCurrentParams->consensus.nPOSAveragingWindow = 45; // spacing is 1000 units per block to get better resolution, POS is 50% hard coded for now, we can vary it later // when we get reliable integer math on nLwmaPOSAjustedWeight - pCurrentParams->consensus.nPOSTargetSpacing = VERUS_BLOCK_POSUNITS * 2; + pCurrentParams->consensus.nPOSTargetSpacing = KOMODO_BLOCK_POSUNITS * 2; // nLwmaPOSAjustedWeight = (N+1)/2 * (0.9989^(500/nPOSAveragingWindow)) * nPOSTargetSpacing - // this needs to be recalculated if VERUS_BLOCK_POSUNITS is changed + // this needs to be recalculated if KOMODO_BLOCK_POSUNITS is changed pCurrentParams->consensus.nLwmaPOSAjustedWeight = 46531; } - // only require coinbase protection on Verus from the Komodo family of coins - if (strcmp(ASSETCHAINS_SYMBOL,"VRSC") == 0) - { - pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = 227520; - pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = 227520; - pCurrentParams->consensus.fCoinbaseMustBeProtected = true; - checkpointData = //(Checkpoints::CCheckpointData) - { - boost::assign::map_list_of - (0, pCurrentParams->consensus.hashGenesisBlock) - (10000, uint256S("0xac2cd7d37177140ea4991cf630c0b9c7f94d707b84fb0351bf3a44856d2ae5dc")) - (20000, uint256S("0xb0e8cb9f77aaa7ff5bd90d6c08d06f4c4bf03e00c2b8a35a042e760845590c8a")) - (30000, uint256S("0xf2112ca577338ad7104bf905fa6a63d36b17a86f914c97b73cd31d43fcd7557c")) - (40000, uint256S("0x00000000008f83378dab727864b763ce91a4ea5f75d55939c0c1390cfb8c38f1")) - (49170, uint256S("0x2add646c0089871ec2379f02f7cd60b3af6efd9c152a6f16fc10925458c270cc")), - (int64_t)1529910234, // * UNIX timestamp of last checkpoint block - (int64_t)63661, // * total number of transactions between genesis and last checkpoint - // (the tx=... number in the SetBestChain debug.log lines) - (double)2777 // * estimated number of transactions per day after checkpoint - // total number of tx / (checkpoint block height / (24 * 24)) - }; - - pCurrentParams->consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000000001a8f4f23f8b2d1f7e"); - } - else - { - if (strcmp(ASSETCHAINS_SYMBOL,"VRSCTEST") == 0 || strcmp(ASSETCHAINS_SYMBOL,"VERUSTEST") == 0) - { - pCurrentParams->consensus.nMinimumChainWork = uint256S("0x0000000000000000000000000000000000000000000000000000000000001f7e"); - } - pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = ASSETCHAINS_SAPLING; - pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = ASSETCHAINS_OVERWINTER; - checkpointData = //(Checkpoints::CCheckpointData) - { - boost::assign::map_list_of - (0, pCurrentParams->consensus.hashGenesisBlock), - (int64_t)1231006505, - (int64_t)1, - (double)2777 // * estimated number of transactions per day after checkpoint - // total number of tx / (checkpoint block height / (24 * 24)) - }; - } + pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = ASSETCHAINS_SAPLING; + pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = ASSETCHAINS_OVERWINTER; + checkpointData = //(Checkpoints::CCheckpointData) + { + boost::assign::map_list_of + (0, pCurrentParams->consensus.hashGenesisBlock), + (int64_t)1231006505, + (int64_t)1, + (double)2777 // * estimated number of transactions per day after checkpoint + // total number of tx / (checkpoint block height / (24 * 24)) + }; } else { diff --git a/src/clientversion.h b/src/clientversion.h index 2cb13cb2e..d4868380a 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -56,7 +56,7 @@ #define DO_STRINGIZE(X) #X //! Copyright string used in Windows .rc files -#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, The Zcash developers, Komodo developers, Hush developers and Verus developers" +#define COPYRIGHT_STR "2009-" STRINGIZE(COPYRIGHT_YEAR) " The Bitcoin Core Developers, The Zcash developers, Komodo developers, Hush developers" /** * bitcoind-res.rc includes this file, but it cannot cope with real c++ code. diff --git a/src/coins.h b/src/coins.h index d7e357e9e..9948a9e3c 100644 --- a/src/coins.h +++ b/src/coins.h @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -39,7 +40,6 @@ #include #include #include "zcash/IncrementalMerkleTree.hpp" -//#include "veruslaunch.h" /** * Pruned version of CTransaction: only retains metadata and unspent transaction outputs diff --git a/src/fiat/vrsc b/src/fiat/vrsc deleted file mode 100755 index 6cd4dd1fb..000000000 --- a/src/fiat/vrsc +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -./komodo-cli -ac_name=VRSC $1 $2 $3 $4 $5 $6 diff --git a/src/hash.h b/src/hash.h index 143516d89..a062ea94c 100644 --- a/src/hash.h +++ b/src/hash.h @@ -24,7 +24,6 @@ #include "crypto/ripemd160.h" #include "crypto/sha256.h" -#include "crypto/verus_hash.h" #include "prevector.h" #include "serialize.h" #include "uint256.h" diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 924b44fae..50832b190 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1,3 +1,5 @@ +// Copyright 2019 The Hush Developers + /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -1481,11 +1483,7 @@ arith_uint256 komodo_PoWtarget(int32_t *percPoSp,arith_uint256 target,int32_t he } if ( m+n < 100 ) { - // We do actual PoS % at the start. Requires coin distribution in first 10 blocks! - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH || ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1 ) - percPoS = (percPoS*100) / (m+n); - else - percPoS = ((percPoS * n) + (goalperc * (100-n))) / 100; + percPoS = ((percPoS * n) + (goalperc * (100-n))) / 100; } if ( dispflag != 0 && ASSETCHAINS_STAKED < 100 ) fprintf(stderr," -> %d%% percPoS vs goalperc.%d ht.%d\n",percPoS,goalperc,height); @@ -1583,24 +1581,6 @@ uint32_t komodo_stake(int32_t validateflag,arith_uint256 bnTarget,int32_t nHeigh if ( blocktime+iter+segid*2 < txtime+minage ) continue; diff = (iter + blocktime - txtime - minage); - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH || ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1 ) - { - /*if ( PoSperc < ASSETCHAINS_STAKED ) - { - // Under PoS % target and we need to increase diff. - //fprintf(stderr, "PoS too low diff.%i changed to.",diff); - diff = diff * ( (ASSETCHAINS_STAKED - PoSperc + 1) * (ASSETCHAINS_STAKED - PoSperc + 1) * ( nHeight < 50 ? 1000 : 1)); - //fprintf(stderr, "%i \n",diff); - } - else */ - if ( PoSperc > ASSETCHAINS_STAKED ) - { - // Over PoS target need to lower diff. - //fprintf(stderr, "PoS too high diff.%i changed to.",diff); - diff = diff / ( (PoSperc - ASSETCHAINS_STAKED + 1) * (PoSperc - ASSETCHAINS_STAKED + 1) ); - //fprintf(stderr, "%i \n",diff); - } - } if ( diff < 0 ) diff = 60; else if ( diff > 3600*24*30 ) @@ -1611,17 +1591,6 @@ uint32_t komodo_stake(int32_t validateflag,arith_uint256 bnTarget,int32_t nHeigh if ( iter > 0 ) diff += segid*2; coinage = (value * diff); - if ( ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH || ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1 ) - { - if ( PoSperc < ASSETCHAINS_STAKED ) - { - // Under PoS % target and we need to increase diff. - //fprintf(stderr, "PoS too low diff.%i changed to.",diff); - if ( blocktime+iter+segid*2 > prevtime+128 ) - coinage *= ((blocktime+iter+segid*2) - (prevtime+102)); - //fprintf(stderr, "%i \n",diff); - } - } if ( blocktime+iter+segid*2 > prevtime+480 ) coinage *= ((blocktime+iter+segid*2) - (prevtime+400)); coinage256 = arith_uint256(coinage+1); @@ -1752,11 +1721,6 @@ int32_t komodo_is_PoSblock(int32_t slowflag,int32_t height,CBlock *pblock,arith_ bool GetStakeParams(const CTransaction &stakeTx, CStakeParams &stakeParams); bool ValidateMatchingStake(const CTransaction &ccTx, uint32_t voutNum, const CTransaction &stakeTx, bool &cheating); -// for now, we will ignore slowFlag in the interest of keeping success/fail simpler for security purposes -bool verusCheckPOSBlock(int32_t slowflag, CBlock *pblock, int32_t height) -{ - return false; -} uint64_t komodo_notarypayamount(int32_t nHeight, int64_t notarycount) { @@ -2120,13 +2084,6 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) // bnTarget = komodo_adaptivepow_target(height,bnTarget,pblock->nTime); if ( ASSETCHAINS_LWMAPOS != 0 && bhash > bnTarget ) { - /* - // if proof of stake is active, check if this is a valid PoS block before we fail - if (verusCheckPOSBlock(slowflag, pblock, height)) - { - return(0); - } - */ } if ( (ASSETCHAINS_SYMBOL[0] != 0 || height > 792000) && bhash > bnTarget ) { diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 9bebea215..396a62764 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -1,3 +1,4 @@ +// Copyright © 2019 The Hush developers /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -270,24 +271,23 @@ int32_t MAX_BLOCK_SIZE(int32_t height); extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; extern uint32_t ASSETCHAIN_INIT, ASSETCHAINS_MAGIC; -extern int32_t VERUS_BLOCK_POSUNITS, ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; +extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; extern uint64_t ASSETCHAINS_SUPPLY, ASSETCHAINS_FOUNDERS_REWARD; extern uint64_t ASSETCHAINS_TIMELOCKGTE; -extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; +extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; extern int32_t KOMODO_MININGTHREADS,KOMODO_LONGESTCHAIN,ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,KOMODO_ON_DEMAND,KOMODO_PASSPORT_INITDONE,ASSETCHAINS_STAKED,KOMODO_NSPV; extern uint64_t ASSETCHAINS_COMMISSION, ASSETCHAINS_LASTERA,ASSETCHAINS_CBOPRET; -extern bool VERUS_MINTBLOCKS; extern uint64_t ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_NOTARY_PAY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_TIMELOCKGTE, ASSETCHAINS_NONCEMASK[],ASSETCHAINS_NK[2]; extern const char *ASSETCHAINS_ALGORITHMS[]; -extern int32_t VERUS_MIN_STAKEAGE; -extern uint32_t ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1, ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; +extern uint32_t ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY,ASSETCHAINS_SCRIPTPUB; extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_MARMARA; extern std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; -extern int32_t VERUS_BLOCK_POSUNITS, VERUS_CONSECUTIVE_POS_THRESHOLD, VERUS_NOPOS_THRESHHOLD; +extern int32_t KOMODO_BLOCK_POSUNITS, KOMODO_CONSECUTIVE_POS_THRESHOLD, KOMODO_NOPOS_THRESHHOLD; + extern uint256 KOMODO_EARLYTXID; extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; @@ -298,7 +298,6 @@ extern uint8_t ASSETCHAINS_CCDISABLES[256]; extern int32_t USE_EXTERNAL_PUBKEY; extern std::string NOTARY_PUBKEY; extern int32_t KOMODO_EXCHANGEWALLET; -extern int32_t VERUS_MIN_STAKEAGE; extern std::string DONATION_PUBKEY; extern uint8_t ASSETCHAINS_PRIVATE; extern int32_t USE_EXTERNAL_PUBKEY; diff --git a/src/komodo_gateway.h b/src/komodo_gateway.h index b2ffc26f0..036831af3 100644 --- a/src/komodo_gateway.h +++ b/src/komodo_gateway.h @@ -1,3 +1,4 @@ +// Copyright 2019 The Hush developers /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -727,7 +728,6 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtim return(-1); } } - // we don't want these checks in VRSC, leave it at the Sapling upgrade if ( ASSETCHAINS_SYMBOL[0] == 0 || ((ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_FOUNDERS_REWARD) && height > 1) || NetworkUpgradeActive(height, Params().GetConsensus(), Consensus::UPGRADE_SAPLING) ) diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 817e51027..87cf95997 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -1,3 +1,5 @@ +// Copyright 2019 The Hush Developers + /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -46,13 +48,17 @@ struct komodo_state KOMODO_STATES[34]; int COINBASE_MATURITY = _COINBASE_MATURITY;//100; unsigned int WITNESS_CACHE_SIZE = _COINBASE_MATURITY+10; uint256 KOMODO_EARLYTXID; +int32_t KOMODO_BLOCK_POSUNITS = 1024; // one block is 1024 units +int32_t KOMODO_MIN_STAKEAGE = 150; // 1/2 this should also be a cap on the POS averaging window, or startup could be too easy +int32_t KOMODO_CONSECUTIVE_POS_THRESHOLD = 7; +int32_t KOMODO_NOPOS_THRESHHOLD = 150; // if we have no POS blocks in this many blocks, set to default difficulty + int32_t KOMODO_MININGTHREADS = -1,IS_KOMODO_NOTARY,IS_STAKED_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET,KOMODO_REWIND,STAKED_ERA,KOMODO_CONNECTING = -1,KOMODO_DEALERNODE,KOMODO_EXTRASATOSHI,ASSETCHAINS_FOUNDERS,ASSETCHAINS_CBMATURITY,KOMODO_NSPV; int32_t KOMODO_INSYNC,KOMODO_LASTMINED,prevKOMODO_LASTMINED,KOMODO_CCACTIVATE,JUMBLR_PAUSE = 1; std::string NOTARY_PUBKEY,ASSETCHAINS_NOTARIES,ASSETCHAINS_OVERRIDE_PUBKEY,DONATION_PUBKEY,ASSETCHAINS_SCRIPTPUB,NOTARY_ADDRESS,ASSETCHAINS_SELFIMPORT,ASSETCHAINS_CCLIB; uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEYHASH[20],ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE,ASSETCHAINS_TXPOW,ASSETCHAINS_MARMARA; int8_t ASSETCHAINS_ADAPTIVEPOW; -bool VERUS_MINTBLOCKS; std::vector Mineropret; std::vector vWhiteListAddress; char NOTARYADDRS[64][64]; @@ -83,23 +89,14 @@ std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; #define _ASSETCHAINS_EQUIHASH 0 uint32_t ASSETCHAINS_NUMALGOS = 3; uint32_t ASSETCHAINS_EQUIHASH = _ASSETCHAINS_EQUIHASH; -uint32_t ASSETCHAINS_VERUSHASH = 1; -uint32_t ASSETCHAINS_VERUSHASHV1_1 = 2; -const char *ASSETCHAINS_ALGORITHMS[] = {"equihash", "verushash", "verushash11"}; -uint64_t ASSETCHAINS_NONCEMASK[] = {0xffff,0xfffffff,0xfffffff}; -uint32_t ASSETCHAINS_NONCESHIFT[] = {32,16,16}; -uint32_t ASSETCHAINS_HASHESPERROUND[] = {1,4096,4096}; +const char *ASSETCHAINS_ALGORITHMS[] = {"equihash"}; +uint64_t ASSETCHAINS_NONCEMASK[] = {0xffff}; +uint32_t ASSETCHAINS_NONCESHIFT[] = {32}; +uint32_t ASSETCHAINS_HASHESPERROUND[] = {1}; uint32_t ASSETCHAINS_ALGO = _ASSETCHAINS_EQUIHASH; // min diff returned from GetNextWorkRequired needs to be added here for each algo, so they can work with ac_staked. -uint32_t ASSETCHAINS_MINDIFF[] = {537857807,504303375,487526159}; - // ^ wrong! -// Verus proof of stake controls +uint32_t ASSETCHAINS_MINDIFF[] = {537857807}; int32_t ASSETCHAINS_LWMAPOS = 0; // percentage of blocks should be PoS -int32_t VERUS_BLOCK_POSUNITS = 1024; // one block is 1000 units -int32_t VERUS_MIN_STAKEAGE = 150; // 1/2 this should also be a cap on the POS averaging window, or startup could be too easy -int32_t VERUS_CONSECUTIVE_POS_THRESHOLD = 7; -int32_t VERUS_NOPOS_THRESHHOLD = 150; // if we have no POS blocks in this many blocks, set to default difficulty - int32_t ASSETCHAINS_SAPLING = -1; int32_t ASSETCHAINS_OVERWINTER = -1; diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 01a046f62..20e294ce7 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1055,19 +1055,11 @@ int64_t komodo_block_unlocktime(uint32_t nHeight) unlocktime = ASSETCHAINS_TIMEUNLOCKTO; else { - if (strcmp(ASSETCHAINS_SYMBOL, "VRSC") != 0 || nHeight >= 12800) - { - unlocktime = komodo_block_prg(nHeight) % (ASSETCHAINS_TIMEUNLOCKTO - ASSETCHAINS_TIMEUNLOCKFROM); - unlocktime += ASSETCHAINS_TIMEUNLOCKFROM; - } - else - { - unlocktime = komodo_block_prg(nHeight) / (0xffffffffffffffff / ((ASSETCHAINS_TIMEUNLOCKTO - ASSETCHAINS_TIMEUNLOCKFROM) + 1)); - // boundary and power of 2 can make it exceed to time by 1 - unlocktime = unlocktime + ASSETCHAINS_TIMEUNLOCKFROM; - if (unlocktime > ASSETCHAINS_TIMEUNLOCKTO) - unlocktime--; - } + unlocktime = komodo_block_prg(nHeight) / (0xffffffffffffffff / ((ASSETCHAINS_TIMEUNLOCKTO - ASSETCHAINS_TIMEUNLOCKFROM) + 1)); + // boundary and power of 2 can make it exceed to time by 1 + unlocktime = unlocktime + ASSETCHAINS_TIMEUNLOCKFROM; + if (unlocktime > ASSETCHAINS_TIMEUNLOCKTO) + unlocktime--; } return ((int64_t)unlocktime); } @@ -1977,7 +1969,7 @@ void komodo_args(char *argv0) // for now, we only support 50% PoS due to other parts of the algorithm needing adjustment for // other values - if ( (ASSETCHAINS_LWMAPOS = GetArg("-ac_veruspos",0)) != 0 ) + if ( (ASSETCHAINS_LWMAPOS = GetArg("-ac_lwmapos",0)) != 0 ) { ASSETCHAINS_LWMAPOS = 50; } @@ -2339,8 +2331,6 @@ fprintf(stderr,"extralen.%d before disable bits\n",extralen); ASSETCHAINS_HALVING[0] *= 5; fprintf(stderr,"PIRATE halving changed to %d %.1f days ASSETCHAINS_LASTERA.%llu\n",(int32_t)ASSETCHAINS_HALVING[0],(double)ASSETCHAINS_HALVING[0]/1440,(long long)ASSETCHAINS_LASTERA); } - else if ( strcmp("VRSC",ASSETCHAINS_SYMBOL) == 0 ) - dpowconfs = 0; else if ( ASSETCHAINS_PRIVATE != 0 ) { fprintf(stderr,"-ac_private for a non-PIRATE chain is not supported. The only reason to have an -ac_private chain is for total privacy and that is best achieved with the largest anon set. PIRATE has that and it is recommended to just use PIRATE\n"); diff --git a/src/main.cpp b/src/main.cpp index 63f062c65..7636e1bdb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1110,42 +1110,7 @@ unsigned int GetP2SHSigOpCount(const CTransaction& tx, const CCoinsViewCache& in */ bool ContextualCheckCoinbaseTransaction(int32_t slowflag,const CBlock *block,CBlockIndex * const previndex,const CTransaction& tx, const int nHeight,int32_t validateprices) { - // if time locks are on, ensure that this coin base is time locked exactly as it should be - if (((uint64_t)(tx.GetValueOut()) >= ASSETCHAINS_TIMELOCKGTE) || - (((nHeight >= 31680) || strcmp(ASSETCHAINS_SYMBOL, "VRSC") != 0) && komodo_ac_block_subsidy(nHeight) >= ASSETCHAINS_TIMELOCKGTE)) - { - CScriptID scriptHash; - - // to be valid, it must be a P2SH transaction and have an op_return in vout[1] that - // holds the full output script, which may include multisig, etc., but starts with - // the time lock verify of the correct time lock for this block height - if (tx.vout.size() == 2 && - CScriptExt(tx.vout[0].scriptPubKey).IsPayToScriptHash(&scriptHash) && - tx.vout[1].scriptPubKey.size() >= 7 && // minimum for any possible future to prevent out of bounds - tx.vout[1].scriptPubKey[0] == OP_RETURN) - { - opcodetype op; - std::vector opretData = std::vector(); - CScript::const_iterator it = tx.vout[1].scriptPubKey.begin() + 1; - if (tx.vout[1].scriptPubKey.GetOp2(it, op, &opretData)) - { - if (opretData.size() > 0 && opretData.data()[0] == OPRETTYPE_TIMELOCK) - { - int64_t unlocktime; - CScriptExt opretScript = CScriptExt(&opretData[1], &opretData[opretData.size()]); - - if (CScriptID(opretScript) == scriptHash && - opretScript.IsCheckLockTimeVerify(&unlocktime) && - komodo_block_unlocktime(nHeight) == unlocktime) - { - return(true); - } - } - } - } - return(false); - } - else if ( ASSETCHAINS_MARMARA != 0 && nHeight > 0 && (nHeight & 1) == 0 ) + if ( ASSETCHAINS_MARMARA != 0 && nHeight > 0 && (nHeight & 1) == 0 ) { } @@ -2837,16 +2802,6 @@ namespace Consensus { REJECT_INVALID, "bad-txns-premature-spend-of-coinbase"); } - // Ensure that coinbases cannot be spent to transparent outputs - // Disabled on regtest - if (fCoinbaseEnforcedProtectionEnabled && - consensusParams.fCoinbaseMustBeProtected && - !(tx.vout.size() == 0 || (tx.vout.size() == 1 && tx.vout[0].nValue == 0)) && - (strcmp(ASSETCHAINS_SYMBOL, "VRSC") != 0 || (nSpendHeight >= 12800 && coins->nHeight >= 12800))) { - return state.DoS(100, - error("CheckInputs(): tried to spend coinbase with transparent outputs"), - REJECT_INVALID, "bad-txns-coinbase-spend-has-transparent-outputs"); - } } // Check for negative or overflow input values diff --git a/src/metrics.cpp b/src/metrics.cpp index 7a46a6dfd..5102da584 100644 --- a/src/metrics.cpp +++ b/src/metrics.cpp @@ -137,12 +137,7 @@ int64_t GetUptime() double GetLocalSolPS() { - if (ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASH || ASSETCHAINS_ALGO == ASSETCHAINS_VERUSHASHV1_1) - { - return miningTimer.rate(nHashCount); - } - else - return miningTimer.rate(solutionTargetChecks); + return miningTimer.rate(solutionTargetChecks); } int EstimateNetHeightInner(int height, int64_t tipmediantime, diff --git a/src/miner.cpp b/src/miner.cpp index 5f72ebfd2..220984bab 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -593,7 +593,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 blocktime = GetAdjustedTime(); siglen = komodo_staked(txStaked, pblock->nBits, &blocktime, &txtime, &utxotxid, &utxovout, &utxovalue, utxosig); // if you skip this check it will create a block too far into the future and not pass ProcessBlock or AcceptBlock. - // This has been moved from the mining loop to save CPU, and to also make ac_staked work with the verus miner. + // This has been moved from the mining loop to save CPU, and to also make ac_staked work while ( blocktime-57 > GetAdjustedTime() ) { sleep(1); @@ -1634,7 +1634,7 @@ void static BitcoinMiner() return; } - if ((nThreads == 0 || !fGenerate) && (VERUS_MINTBLOCKS == 0 || pwallet == NULL)) + if ((nThreads == 0 || !fGenerate) && (pwallet == NULL)) return; minerThreads = new boost::thread_group(); diff --git a/src/pow.cpp b/src/pow.cpp index b552df5db..cabea5351 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -644,20 +644,13 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: // if we have had no POS block in the threshold number of blocks, we must return the default, otherwise, we'll now have // a starting point uint32_t nBits = nProofOfStakeLimit; - for (int64_t i = 0; i < VERUS_NOPOS_THRESHHOLD; i++) + for (int64_t i = 0; i < KOMODO_NOPOS_THRESHHOLD; i++) { if (!pindexFirst) return nProofOfStakeLimit; CBlockHeader hdr = pindexFirst->GetBlockHeader(); - /* - if (hdr.IsVerusPOSBlock()) - { - nBits = hdr.GetVerusPOSTarget(); - break; - } - */ pindexFirst = pindexFirst->pprev; } @@ -667,10 +660,10 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: for (int64_t i = N - 1; i >= 0; i--) { - // we measure our solve time in passing of blocks, where one bock == VERUS_BLOCK_POSUNITS units + // we measure our solve time in passing of blocks, where one bock == KOMODO_BLOCK_POSUNITS units // consecutive blocks in either direction have their solve times exponentially multiplied or divided by power of 2 int x; - for (x = 0; x < VERUS_CONSECUTIVE_POS_THRESHOLD; x++) + for (x = 0; x < KOMODO_CONSECUTIVE_POS_THRESHOLD; x++) { pindexFirst = pindexFirst->pprev; @@ -678,29 +671,17 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: return nProofOfStakeLimit; CBlockHeader hdr = pindexFirst->GetBlockHeader(); - /* - if (hdr.IsVerusPOSBlock()) - { - nBits = hdr.GetVerusPOSTarget(); - break; - } - */ } if (x) { idx[i].consecutive = false; - if (!memcmp(ASSETCHAINS_SYMBOL, "VRSC", 4) && pindexLast->GetHeight() < 67680) - { - idx[i].solveTime = VERUS_BLOCK_POSUNITS * (x + 1); - } - else { int64_t lastSolveTime = 0; - idx[i].solveTime = VERUS_BLOCK_POSUNITS; + idx[i].solveTime = KOMODO_BLOCK_POSUNITS; for (int64_t j = 0; j < x; j++) { - lastSolveTime = VERUS_BLOCK_POSUNITS + (lastSolveTime >> 1); + lastSolveTime = KOMODO_BLOCK_POSUNITS + (lastSolveTime >> 1); idx[i].solveTime += lastSolveTime; } } @@ -712,13 +693,13 @@ uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus:: idx[i].nBits = nBits; // go forward and halve the minimum solve time for all consecutive blocks in this run, to get here, our last block is POS, // and if there is no POS block in front of it, it gets the normal solve time of one block - uint32_t st = VERUS_BLOCK_POSUNITS; + uint32_t st = KOMODO_BLOCK_POSUNITS; for (int64_t j = i; j < N; j++) { if (idx[j].consecutive == true) { idx[j].solveTime = st; - if ((j - i) >= VERUS_CONSECUTIVE_POS_THRESHOLD) + if ((j - i) >= KOMODO_CONSECUTIVE_POS_THRESHOLD) { // if this is real time, return zero if (j == (N - 1)) @@ -875,7 +856,6 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t //else if ( ASSETCHAINS_ADAPTIVEPOW > 0 && ASSETCHAINS_STAKED == 0 ) // bnTarget = komodo_adaptivepow_target(height,bnTarget,blkHeader.nTime); // Check proof of work matches claimed amount - //if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget && !blkHeader.IsVerusPOSBlock() ) if ( UintToArith256(hash = blkHeader.GetHash()) > bnTarget ) { if ( KOMODO_LOADINGBLOCKS != 0 ) diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 6f5254cc3..db2fbb228 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -162,7 +162,6 @@ UniValue getnetworkhashps(const UniValue& params, bool fHelp) } #ifdef ENABLE_MINING -extern bool VERUS_MINTBLOCKS; UniValue getgenerate(const UniValue& params, bool fHelp) { if (fHelp || params.size() != 0) @@ -184,7 +183,7 @@ UniValue getgenerate(const UniValue& params, bool fHelp) LOCK(cs_main); UniValue obj(UniValue::VOBJ); - bool staking = VERUS_MINTBLOCKS; + bool staking = false; if ( ASSETCHAINS_STAKED != 0 && GetBoolArg("-gen", false) && GetBoolArg("-genproclimit", -1) == 0 ) staking = true; obj.push_back(Pair("staking", staking)); @@ -374,13 +373,11 @@ UniValue setgenerate(const UniValue& params, bool fHelp) { if (fGenerate && !nGenProcLimit) { - VERUS_MINTBLOCKS = 1; fGenerate = GetBoolArg("-gen", false); KOMODO_MININGTHREADS = nGenProcLimit; } else if (!fGenerate) { - VERUS_MINTBLOCKS = 0; KOMODO_MININGTHREADS = 0; } else KOMODO_MININGTHREADS = (int32_t)nGenProcLimit; @@ -499,9 +496,7 @@ UniValue getmininginfo(const UniValue& params, bool fHelp) obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC())); obj.push_back(Pair("chain", Params().NetworkIDString())); #ifdef ENABLE_MINING - bool staking = VERUS_MINTBLOCKS; - if ( ASSETCHAINS_STAKED != 0 && GetBoolArg("-gen", false) && GetBoolArg("-genproclimit", -1) == 0 ) - staking = true; + bool staking = false; obj.push_back(Pair("staking", staking)); obj.push_back(Pair("generate", GetBoolArg("-gen", false) && GetBoolArg("-genproclimit", -1) != 0 )); obj.push_back(Pair("numthreads", (int64_t)KOMODO_MININGTHREADS)); diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 86e6d44ea..624e7f006 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -353,7 +353,7 @@ UniValue getinfo(const UniValue& params, bool fHelp) if ( ASSETCHAINS_STAKED != 0 ) obj.push_back(Pair("staked", ASSETCHAINS_STAKED)); if ( ASSETCHAINS_LWMAPOS != 0 ) - obj.push_back(Pair("veruspos", ASSETCHAINS_LWMAPOS)); + obj.push_back(Pair("lwmapos", ASSETCHAINS_LWMAPOS)); if ( ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH ) obj.push_back(Pair("algo",ASSETCHAINS_ALGORITHMS[ASSETCHAINS_ALGO])); } diff --git a/src/util.cpp b/src/util.cpp index cc66822ad..e75ed4ca8 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1031,9 +1031,8 @@ std::string LicenseInfo() FormatParagraph(strprintf(_("Copyright (C) 2015-%i The Zcash Developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2015-%i jl777 and SuperNET developers"), COPYRIGHT_YEAR)) + "\n" + FormatParagraph(strprintf(_("Copyright (C) 2018-%i The Hush developers"), COPYRIGHT_YEAR)) + "\n" + - FormatParagraph(strprintf(_("Copyright (C) 2018-%i The Verus developers"), COPYRIGHT_YEAR)) + "\n" + "\n" + - FormatParagraph(_("This is experimental software.")) + "\n" + + FormatParagraph(_("This is experimental software!!!")) + "\n" + "\n" + FormatParagraph(_("Distributed under the MIT software license, see the accompanying file COPYING or .")) + "\n" + "\n" + diff --git a/src/wallet-utility.cpp b/src/wallet-utility.cpp index 06eee1f2a..6f7b195ac 100644 --- a/src/wallet-utility.cpp +++ b/src/wallet-utility.cpp @@ -17,14 +17,12 @@ uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; uint32_t ASSETCHAIN_INIT,ASSETCHAINS_CC; uint32_t ASSETCHAINS_MAGIC = 2387029918; uint32_t ASSETCHAINS_EQUIHASH = 0; -uint32_t ASSETCHAINS_VERUSHASH = 1; -uint32_t ASSETCHAINS_VERUSHASHV1_1 = 2; uint32_t ASSETCHAINS_ALGO = 0; int32_t ASSETCHAINS_LWMAPOS = 0; -int32_t VERUS_BLOCK_POSUNITS = 1000; int32_t ASSETCHAINS_OVERWINTER = 227520; int32_t ASSETCHAINS_SAPLING = 227520; int32_t KOMODO_TESTNODE = 0; +int32_t KOMODO_BLOCK_POSUNITS = 1000; unsigned int MAX_BLOCK_SIGOPS = 20000; From f80fc3c0022681679af84b05689cbff0d76f306e Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 4 Nov 2019 11:01:52 -0500 Subject: [PATCH 087/339] update manpages and other junk --- doc/man/komodo-cli.1 | 7 +++---- doc/man/komodo-tx.1 | 7 +++---- doc/man/komodod.1 | 11 +++-------- src/chainparams.cpp | 2 +- src/primitives/nonce.cpp | 1 + 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/doc/man/komodo-cli.1 b/doc/man/komodo-cli.1 index 8297286ed..1a6db770c 100644 --- a/doc/man/komodo-cli.1 +++ b/doc/man/komodo-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODO-CLI "1" "October 2019" "komodo-cli v3.2.1" "User Commands" +.TH KOMODO-CLI "1" "November 2019" "komodo-cli v3.2.1" "User Commands" .SH NAME komodo-cli \- manual page for komodo-cli v3.2.1 .SH DESCRIPTION -Komodo RPC client version v3.2.1\-659ebb148 +Komodo RPC client version v3.2.1\-7965ffc29\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . @@ -79,9 +79,8 @@ Copyright (C) 2009-2019 The Bitcoin Core Developers Copyright (C) 2015-2019 The Zcash Developers Copyright (C) 2015-2019 jl777 and SuperNET developers Copyright (C) 2018-2019 The Hush developers -Copyright (C) 2018-2019 The Verus developers -This is experimental software. +This is experimental software!!! Distributed under the MIT software license, see the accompanying file COPYING or . diff --git a/doc/man/komodo-tx.1 b/doc/man/komodo-tx.1 index df0808515..52073d0f3 100644 --- a/doc/man/komodo-tx.1 +++ b/doc/man/komodo-tx.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODO-TX "1" "October 2019" "komodo-tx v3.2.1" "User Commands" +.TH KOMODO-TX "1" "November 2019" "komodo-tx v3.2.1" "User Commands" .SH NAME komodo-tx \- manual page for komodo-tx v3.2.1 .SH DESCRIPTION -Hush komodo\-tx utility version v3.2.1\-659ebb148 +Hush komodo\-tx utility version v3.2.1\-7965ffc29\-dirty .SS "Usage:" .TP komodo\-tx [options] [commands] @@ -92,9 +92,8 @@ Copyright (C) 2009-2019 The Bitcoin Core Developers Copyright (C) 2015-2019 The Zcash Developers Copyright (C) 2015-2019 jl777 and SuperNET developers Copyright (C) 2018-2019 The Hush developers -Copyright (C) 2018-2019 The Verus developers -This is experimental software. +This is experimental software!!! Distributed under the MIT software license, see the accompanying file COPYING or . diff --git a/doc/man/komodod.1 b/doc/man/komodod.1 index 0caab5b23..dd7b5d854 100644 --- a/doc/man/komodod.1 +++ b/doc/man/komodod.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODOD "1" "October 2019" "komodod v3.2.1" "User Commands" +.TH KOMODOD "1" "November 2019" "komodod v3.2.1" "User Commands" .SH NAME komodod \- manual page for komodod v3.2.1 .SH DESCRIPTION -Hush Daemon version v3.2.1\-659ebb148 +Hush Daemon version v3.2.1\-7965ffc29\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . @@ -617,10 +617,6 @@ Timelocked coinbase stop height \fB\-ac_txpow\fR .IP Enforce transaction\-rate limit, default 0 -.HP -\fB\-ac_veruspos\fR -.IP -Use Verus Proof\-Of\-Stake (\fB\-ac_veruspos\fR=\fI\,50\/\fR) default 0 .SH COPYRIGHT In order to ensure you are adequately protecting your privacy when using Hush, @@ -630,9 +626,8 @@ Copyright (C) 2009-2019 The Bitcoin Core Developers Copyright (C) 2015-2019 The Zcash Developers Copyright (C) 2015-2019 jl777 and SuperNET developers Copyright (C) 2018-2019 The Hush developers -Copyright (C) 2018-2019 The Verus developers -This is experimental software. +This is experimental software!!! Distributed under the MIT software license, see the accompanying file COPYING or . diff --git a/src/chainparams.cpp b/src/chainparams.cpp index cfcf48313..28c738891 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -105,7 +105,7 @@ public: strNetworkID = "main"; strCurrencyUnits = "KMD"; bip44CoinType = 141; // As registered in https://github.com/satoshilabs/slips/blob/master/slip-0044.md - consensus.fCoinbaseMustBeProtected = false; // true this is only true wuth Verus and enforced after block 12800 + consensus.fCoinbaseMustBeProtected = false; consensus.nSubsidySlowStartInterval = 20000; consensus.nSubsidyHalvingInterval = 840000; consensus.nMajorityEnforceBlockUpgrade = 750; diff --git a/src/primitives/nonce.cpp b/src/primitives/nonce.cpp index a512b757d..a1fbd667d 100644 --- a/src/primitives/nonce.cpp +++ b/src/primitives/nonce.cpp @@ -1,3 +1,4 @@ +// Copyright (c) 2019 The Hush Developers // Copyright (c) 2018 Michael Toutonghi // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. From 3252efc837d5bc361277d13427f5bbd5fca28a96 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 3 Nov 2019 21:44:49 -1100 Subject: [PATCH 088/339] Mempool fix from upstream --- src/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 264cb0643..96068a489 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1809,8 +1809,9 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa return error("AcceptToMemoryPool: CheckTransaction failed"); } // DoS level set to 10 to be more forgiving. + // Check transaction contextually against the set of consensus rules which apply in the next block to be mined. - if (!fSkipExpiry && !ContextualCheckTransaction(0,0,0,tx, state, nextBlockHeight, (dosLevel == -1) ? 10 : dosLevel,0)) + if (!fSkipExpiry && !ContextualCheckTransaction(0,0,0,tx, state, nextBlockHeight, (dosLevel == -1) ? 10 : dosLevel)) { return error("AcceptToMemoryPool: ContextualCheckTransaction failed"); } From e87d02996854b4f8eabc95c0f4c009fe1df0640e Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 5 Nov 2019 09:39:11 -0500 Subject: [PATCH 089/339] Mostly-working Hush full node sans Verus!!! Every line of Verus-specific code has been removed from the codebase. This code compiles on Linux and can do a partial sync. A full sync and other extensive tests need to be done before it's merged into the duke branch. BUGS: One known bug is that the node starts to CPU mine by default, lol. --- src/Makefile.am | 1 - src/cc/CCinclude.h | 11 --- src/cc/COptCCParams.cpp | 116 -------------------------------- src/keystore.h | 1 - src/main.cpp | 1 - src/main.h | 1 - src/miner.cpp | 33 ++------- src/script/script_ext.cpp | 137 -------------------------------------- src/script/script_ext.h | 65 ------------------ src/wallet/rpcwallet.cpp | 7 +- src/wallet/wallet.cpp | 8 ++- 11 files changed, 13 insertions(+), 368 deletions(-) delete mode 100644 src/cc/COptCCParams.cpp delete mode 100644 src/script/script_ext.cpp delete mode 100644 src/script/script_ext.h diff --git a/src/Makefile.am b/src/Makefile.am index 30ecd9ff5..99ef1a36a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -457,7 +457,6 @@ libbitcoin_common_a_SOURCES = \ script/cc.cpp \ script/interpreter.cpp \ script/script.cpp \ - script/script_ext.cpp \ script/script_error.cpp \ script/sign.cpp \ script/standard.cpp \ diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index 2ee42f0fa..0e9f7bad2 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -103,17 +103,6 @@ struct CC_utxo int32_t vout; }; -// these are the parameters stored after Verus crypto-condition vouts. new versions may change -// the format -struct CC_meta -{ - std::vector version; - uint8_t evalCode; - bool is1of2; - uint8_t numDestinations; - // followed by address destinations -}; - struct CCcontract_info { // this is for spending from 'unspendable' CC address diff --git a/src/cc/COptCCParams.cpp b/src/cc/COptCCParams.cpp deleted file mode 100644 index 41c9ba874..000000000 --- a/src/cc/COptCCParams.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/*Descriptson and examples of COptCCParams class found in: - script/standard.h/cpp - class COptCCParams - -structure of data in vData payload attached to end of CCvout: - param - OP_1 - param - OP_2 ... etc until OP_16 - OP_PUSHDATA4 is the last OP code to tell things its at the end. - - taken from standard.cpp line 22: COptCCParams::COptCCParams(std::vector &vch) - -EXAMPLE taken from Verus how to create scriptPubKey from COptCCParams class: -EXAMPLE taken from Verus how to decode scriptPubKey from COptCCParams class: -*/ - -bool MakeGuardedOutput(CAmount value, CPubKey &dest, CTransaction &stakeTx, CTxOut &vout) -{ - CCcontract_info *cp, C; - cp = CCinit(&C,EVAL_STAKEGUARD); - - CPubKey ccAddress = CPubKey(ParseHex(cp->CChexstr)); - - // return an output that is bound to the stake transaction and can be spent by presenting either a signed condition by the original - // destination address or a properly signed stake transaction of the same utxo on a fork - vout = MakeCC1of2vout(EVAL_STAKEGUARD, value, dest, ccAddress); - - std::vector vPubKeys = std::vector(); - vPubKeys.push_back(dest); - vPubKeys.push_back(ccAddress); - - std::vector> vData = std::vector>(); - - CVerusHashWriter hw = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hw << stakeTx.vin[0].prevout.hash; - hw << stakeTx.vin[0].prevout.n; - - uint256 utxo = hw.GetHash(); - vData.push_back(std::vector(utxo.begin(), utxo.end())); // Can we use any data here to construct vector? - - CStakeParams p; - if (GetStakeParams(stakeTx, p)) - { - // prev block hash and height is here to make validation easy - vData.push_back(std::vector(p.prevHash.begin(), p.prevHash.end())); - std::vector height = std::vector(4); - for (int i = 0; i < 4; i++) - { - height[i] = (p.blkHeight >> (8 * i)) & 0xff; - } - vData.push_back(height); - - COptCCParams ccp = COptCCParams(COptCCParams::VERSION, EVAL_STAKEGUARD, 1, 2, vPubKeys, vData); - - vout.scriptPubKey << ccp.AsVector() << OP_DROP; - return true; - } - return false; -} - -bool ValidateMatchingStake(const CTransaction &ccTx, uint32_t voutNum, const CTransaction &stakeTx, bool &cheating) -{ - // an invalid or non-matching stake transaction cannot cheat - cheating = false; - - //printf("ValidateMatchingStake: ccTx.vin[0].prevout.hash: %s, ccTx.vin[0].prevout.n: %d\n", ccTx.vin[0].prevout.hash.GetHex().c_str(), ccTx.vin[0].prevout.n); - - if (ccTx.IsCoinBase()) - { - CStakeParams p; - if (ValidateStakeTransaction(stakeTx, p)) - { - std::vector> vParams = std::vector>(); - CScript dummy; - - if (ccTx.vout[voutNum].scriptPubKey.IsPayToCryptoCondition(&dummy, vParams) && vParams.size() > 0) - { - COptCCParams ccp = COptCCParams(vParams[0]); - if (ccp.IsValid() & ccp.vData.size() >= 3 && ccp.vData[2].size() <= 4) - { - CVerusHashWriter hw = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hw << stakeTx.vin[0].prevout.hash; - hw << stakeTx.vin[0].prevout.n; - uint256 utxo = hw.GetHash(); - - uint32_t height = 0; - int i, dataLen = ccp.vData[2].size(); - for (i = dataLen - 1; i >= 0; i--) - { - height = (height << 8) + ccp.vData[2][i]; - } - // for debugging strange issue - // printf("iterator: %d, height: %d, datalen: %d\n", i, height, dataLen); - - if (utxo == uint256(ccp.vData[0])) - { - if (p.prevHash != uint256(ccp.vData[1]) && p.blkHeight >= height) - { - cheating = true; - return true; - } - // if block height is equal and we are at the else, prevHash must have been equal - else if (p.blkHeight == height) - { - return true; - } - } - } - } - } - } - return false; -} diff --git a/src/keystore.h b/src/keystore.h index bab236e24..c2e1f25d9 100644 --- a/src/keystore.h +++ b/src/keystore.h @@ -25,7 +25,6 @@ #include "pubkey.h" #include "script/script.h" #include "script/standard.h" -#include "script/script_ext.h" #include "sync.h" #include "zcash/Address.hpp" #include "zcash/NoteEncryption.hpp" diff --git a/src/main.cpp b/src/main.cpp index 7636e1bdb..f1beaa2c7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4122,7 +4122,6 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) { for (int i = 0; i < block.vtx.size(); i++) { CTransaction &tx = block.vtx[i]; - //if ((i == (block.vtx.size() - 1)) && ((ASSETCHAINS_LWMAPOS && block.IsVerusPOSBlock()) || (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block) != 0)))) if ((i == (block.vtx.size() - 1)) && (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block,pindexDelete->GetHeight(),true) != 0))) { #ifdef ENABLE_WALLET diff --git a/src/main.h b/src/main.h index 800f05745..f49c30518 100644 --- a/src/main.h +++ b/src/main.h @@ -37,7 +37,6 @@ #include "script/script.h" #include "script/serverchecker.h" #include "script/standard.h" -#include "script/script_ext.h" #include "spentindex.h" #include "sync.h" #include "tinyformat.h" diff --git a/src/miner.cpp b/src/miner.cpp index 220984bab..090cf83cf 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -691,31 +691,10 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 } else if ( (uint64_t)(txNew.vout[0].nValue) >= ASSETCHAINS_TIMELOCKGTE) { - int32_t opretlen, p2shlen, scriptlen; - CScriptExt opretScript = CScriptExt(); - - txNew.vout.resize(2); - - // prepend time lock to original script unless original script is P2SH, in which case, we will leave the coins - // protected only by the time lock rather than 100% inaccessible - opretScript.AddCheckLockTimeVerify(komodo_block_unlocktime(nHeight)); - if (scriptPubKeyIn.IsPayToScriptHash() || scriptPubKeyIn.IsPayToCryptoCondition()) - { - fprintf(stderr,"CreateNewBlock: attempt to add timelock to pay2sh or pay2cc\n"); - if ( ASSETCHAINS_SYMBOL[0] == 0 || (ASSETCHAINS_SYMBOL[0] != 0 && !isStake) ) - { - LEAVE_CRITICAL_SECTION(cs_main); - LEAVE_CRITICAL_SECTION(mempool.cs); - } - return 0; - } - - opretScript += scriptPubKeyIn; - - txNew.vout[0].scriptPubKey = CScriptExt().PayToScriptHash(CScriptID(opretScript)); - txNew.vout[1].scriptPubKey = CScriptExt().OpReturnScript(opretScript, OPRETTYPE_TIMELOCK); - txNew.vout[1].nValue = 0; - // timelocks and commissions are currently incompatible due to validation complexity of the combination + fprintf(stderr,"timelocked chains not supported in this code!\n"); + LEAVE_CRITICAL_SECTION(cs_main); + LEAVE_CRITICAL_SECTION(mempool.cs); + return(0); } else if ( fNotarisationBlock && ASSETCHAINS_NOTARY_PAY[0] != 0 && pblock->vtx[1].vout.size() == 2 && pblock->vtx[1].vout[1].nValue == 0 ) { @@ -749,7 +728,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 pblock->vtx[0] = txNew; pblocktemplate->vTxFees[0] = -nFees; - // if not Verus stake, setup nonce, otherwise, leave it alone + // if not staking, setup nonce, otherwise, leave it alone if (!isStake || ASSETCHAINS_LWMAPOS == 0) { // Randomise nonce @@ -765,7 +744,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashFinalSaplingRoot = sapling_tree.root(); - // all Verus PoS chains need this data in the block at all times + // all PoS chains need this data in the block at all times if ( ASSETCHAINS_LWMAPOS || ASSETCHAINS_SYMBOL[0] == 0 || ASSETCHAINS_STAKED == 0 || KOMODO_MININGTHREADS > 0 ) { UpdateTime(pblock, Params().GetConsensus(), pindexPrev); diff --git a/src/script/script_ext.cpp b/src/script/script_ext.cpp deleted file mode 100644 index f1d903946..000000000 --- a/src/script/script_ext.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2009-2014 The Bitcoin Core developers -// Copyright (c) 2018 The Verus developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -/****************************************************************************** - * Copyright © 2014-2019 The SuperNET Developers. * - * * - * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at * - * the top-level directory of this distribution for the individual copyright * - * holder information and the developer policies on copyright and licensing. * - * * - * Unless otherwise agreed in a custom licensing agreement, no part of the * - * SuperNET software, including this file may be copied, modified, propagated * - * or distributed except according to the terms contained in the LICENSE file * - * * - * Removal or modification of this copyright notice is prohibited. * - * * - ******************************************************************************/ - -#include "script_ext.h" - -using namespace std; - -bool CScriptExt::IsPayToScriptHash(CScriptID *scriptID) const -{ - if (((CScript *)this)->IsPayToScriptHash()) - { - *scriptID = CScriptID(uint160(std::vector(this->begin() + 2, this->end() - 1))); - return true; - } - return false; -} - -// P2PKH script, adds to whatever is already in the script (for example CLTV) -const CScriptExt &CScriptExt::AddPayToPubKeyHash(const CKeyID &key) const -{ - *((CScript *)this) << OP_DUP; - *((CScript *)this) << OP_HASH160; - *((CScript *)this) << ToByteVector(key); - *((CScript *)this) << OP_EQUALVERIFY; - *((CScript *)this) << OP_CHECKSIG; - return *this; -} - -// push data into an op_return script with an opret type indicator, fails if the op_return is too large -const CScriptExt &CScriptExt::OpReturnScript(const vector &data, unsigned char opretType) const -{ - ((CScript *)this)->clear(); - if (data.size() < MAX_SCRIPT_ELEMENT_SIZE) - { - vector scratch = vector(data); - scratch.insert(scratch.begin(), opretType); - *((CScript *)this) << OP_RETURN; - *((CScript *)this) << scratch; - } - return *this; -} - -// push data into an op_return script with an opret type indicator, fails if the op_return is too large -const CScriptExt &CScriptExt::OpReturnScript(const CScript &src, unsigned char opretType) const -{ - vector vch = vector(src.begin(), src.end()); - return OpReturnScript(vch, opretType); -} - -// P2SH script, adds to whatever is already in the script (for example CLTV) -const CScriptExt &CScriptExt::PayToScriptHash(const CScriptID &scriptID) const -{ - ((CScript *)this)->clear(); - *((CScript *)this) << OP_HASH160; - *((CScript *)this) << ToByteVector(scriptID); - *((CScript *)this) << OP_EQUAL; - return *this; -} - -// P2SH script, adds to whatever is already in the script (for example CLTV) -const CScriptExt &CScriptExt::AddCheckLockTimeVerify(int64_t unlocktime) const -{ - if (unlocktime > 0) - { - *((CScript *)this) << CScriptNum::serialize(unlocktime); - *((CScript *)this) << OP_CHECKLOCKTIMEVERIFY; - *((CScript *)this) << OP_DROP; - return *this; - } - return *this; -} - -// combined CLTV script and P2PKH -const CScriptExt &CScriptExt::TimeLockSpend(const CKeyID &key, int64_t unlocktime) const -{ - ((CScript *)this)->clear(); - this->AddCheckLockTimeVerify(unlocktime); - this->AddPayToPubKeyHash(key); - return *this; -} - -/** - * provide destination extraction for non-standard, timelocked coinbase transactions - * as well as other transactions - */ -bool CScriptExt::ExtractVoutDestination(const CTransaction& tx, int32_t voutNum, CTxDestination& addressRet) -{ - if (tx.vout.size() <= voutNum) - return false; - - CScriptID scriptHash; - CScriptExt spk = tx.vout[voutNum].scriptPubKey; - - // if this is a timelocked transaction, get the destination behind the time lock - if (tx.IsCoinBase() && tx.vout.size() == 2 && voutNum == 0 && - spk.IsPayToScriptHash(&scriptHash) && - tx.vout[1].scriptPubKey.IsOpReturn()) - { - opcodetype op; - std::vector opretData = std::vector(); - CScript::const_iterator it = tx.vout[1].scriptPubKey.begin() + 1; - if (tx.vout[1].scriptPubKey.GetOp2(it, op, &opretData)) - { - if (opretData.size() > 0 && opretData[0] == OPRETTYPE_TIMELOCK) - { - int64_t unlocktime; - CScriptExt se = CScriptExt(&opretData[1], &opretData[opretData.size()]); - - if (CScriptID(se) == scriptHash && - se.IsCheckLockTimeVerify(&unlocktime)) - { - spk = se; - } - } - } - } - return ExtractDestination(spk, addressRet); -} - diff --git a/src/script/script_ext.h b/src/script/script_ext.h deleted file mode 100644 index e14cbd1f7..000000000 --- a/src/script/script_ext.h +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2009-2010 Satoshi Nakamoto -// Copyright (c) 2009-2014 The Bitcoin Core developers -// Copyright (c) 2018 The Verus developers -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -/****************************************************************************** - * Copyright © 2014-2019 The SuperNET Developers. * - * * - * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at * - * the top-level directory of this distribution for the individual copyright * - * holder information and the developer policies on copyright and licensing. * - * * - * Unless otherwise agreed in a custom licensing agreement, no part of the * - * SuperNET software, including this file may be copied, modified, propagated * - * or distributed except according to the terms contained in the LICENSE file * - * * - * Removal or modification of this copyright notice is prohibited. * - * * - ******************************************************************************/ - -#ifndef BITCOIN_SCRIPT_SCRIPT_EXT_H -#define BITCOIN_SCRIPT_SCRIPT_EXT_H - -#include "script.h" -#include "standard.h" -#include "pubkey.h" - -#include - -class CScriptExt : public CScript -{ - public: - CScriptExt() { } - CScriptExt(const CScript& b) : CScript(b) { } - CScriptExt(const_iterator pbegin, const_iterator pend) : CScript(pbegin, pend) { } - CScriptExt(const unsigned char* pbegin, const unsigned char* pend) : CScript(pbegin, pend) { } - - // overload to return the hash of the referenced script - bool IsPayToScriptHash(CScriptID *scriptID) const; - - // P2PKH script, adds to whatever is already in the script (for example CLTV) - const CScriptExt &AddPayToPubKeyHash(const CKeyID &key) const; - - // push data into an op_return script with an opret type indicator, fails if the op_return is too large - const CScriptExt &OpReturnScript(const std::vector &data, unsigned char opretType) const; - - // push data into an op_return script with an opret type indicator, fails if the op_return is too large - const CScriptExt &OpReturnScript(const CScript &src, unsigned char opretType) const; - - // P2SH script - const CScriptExt &PayToScriptHash(const CScriptID &scriptID) const; - - // P2SH script, adds to whatever is already in the script (for example CLTV) - const CScriptExt &AddCheckLockTimeVerify(int64_t unlocktime) const; - - // combined CLTV script and P2PKH - const CScriptExt &TimeLockSpend(const CKeyID &key, int64_t unlocktime) const; - - // lookup for destinations that includes non-standard destinations for time locked coinbases - static bool ExtractVoutDestination(const CTransaction& tx, int32_t voutNum, CTxDestination& addressRet); -}; - -#endif - diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index c2935c0c0..b233ad3bd 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -1858,11 +1859,7 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe entry.push_back(Pair("involvesWatchonly", true)); entry.push_back(Pair("account", account)); - CTxDestination dest; - if (CScriptExt::ExtractVoutDestination(wtx, r.vout, dest)) - MaybePushAddress(entry, dest); - else - MaybePushAddress(entry, r.destination); + MaybePushAddress(entry, r.destination); if (bIsCoinbase) { diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 1744ef0b6..41aa9eabe 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -2084,13 +2085,13 @@ bool CWallet::IsMine(const CTransaction& tx) return false; } -// special case handling for non-standard/Verus OP_RETURN script outputs, which need the transaction +// special case handling for non-standard OP_RETURN script outputs, which need the transaction // to determine ownership isminetype CWallet::IsMine(const CTransaction& tx, uint32_t voutNum) { vector vSolutions; txnouttype whichType; - const CScriptExt scriptPubKey = CScriptExt(tx.vout[voutNum].scriptPubKey); + const CScript scriptPubKey = CScript(tx.vout[voutNum].scriptPubKey); if (!Solver(scriptPubKey, whichType, vSolutions)) { if (this->HaveWatchOnly(scriptPubKey)) @@ -2100,7 +2101,7 @@ isminetype CWallet::IsMine(const CTransaction& tx, uint32_t voutNum) CKeyID keyID; CScriptID scriptID; - CScriptExt subscript; + CScript subscript; int voutNext = voutNum + 1; switch (whichType) @@ -2134,6 +2135,7 @@ isminetype CWallet::IsMine(const CTransaction& tx, uint32_t voutNum) case TX_SCRIPTHASH: scriptID = CScriptID(uint160(vSolutions[0])); + //TODO: remove CLTV stuff not relevant to Hush if (this->GetCScript(scriptID, subscript)) { // if this is a CLTV, handle it differently From f69e3697aa25f687660e30f17b8dd881d6cb1aa2 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Fri, 8 Nov 2019 09:16:50 -0700 Subject: [PATCH 090/339] Fix of CVE-2017-18350 Adapted from bitcoin/bitcoin#11397 by Wladimir J. van der Laan. Co-Authored-By: Jack Grigg Co-Authored-By: Daira Hopwood --- src/netbase.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/netbase.cpp b/src/netbase.cpp index 5ad6353e9..b118446b9 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -267,7 +267,7 @@ struct timeval MillisToTimeval(int64_t nTimeout) * * @note This function requires that hSocket is in non-blocking mode. */ -bool static InterruptibleRecv(char* data, size_t len, int timeout, SOCKET& hSocket) +bool static InterruptibleRecv(uint8_t* data, size_t len, int timeout, SOCKET& hSocket) { int64_t curTime = GetTimeMillis(); int64_t endTime = curTime + timeout; @@ -335,7 +335,7 @@ static bool Socks5(const std::string& strDest, int port, const ProxyCredentials CloseSocket(hSocket); return error("Error sending to proxy"); } - char pchRet1[2]; + uint8_t pchRet1[2]; if (!InterruptibleRecv(pchRet1, 2, SOCKS5_RECV_TIMEOUT, hSocket)) { CloseSocket(hSocket); return error("Error reading proxy response"); @@ -360,7 +360,7 @@ static bool Socks5(const std::string& strDest, int port, const ProxyCredentials return error("Error sending authentication to proxy"); } LogPrint("proxy", "SOCKS5 sending proxy authentication %s:%s\n", auth->username, auth->password); - char pchRetA[2]; + uint8_t pchRetA[2]; if (!InterruptibleRecv(pchRetA, 2, SOCKS5_RECV_TIMEOUT, hSocket)) { CloseSocket(hSocket); return error("Error reading proxy authentication response"); @@ -389,7 +389,7 @@ static bool Socks5(const std::string& strDest, int port, const ProxyCredentials CloseSocket(hSocket); return error("Error sending to proxy"); } - char pchRet2[4]; + uint8_t pchRet2[4]; if (!InterruptibleRecv(pchRet2, 4, SOCKS5_RECV_TIMEOUT, hSocket)) { CloseSocket(hSocket); return error("Error reading proxy response"); @@ -417,7 +417,7 @@ static bool Socks5(const std::string& strDest, int port, const ProxyCredentials CloseSocket(hSocket); return error("Error: malformed proxy response"); } - char pchRet3[256]; + uint8_t pchRet3[256]; switch (pchRet2[3]) { case 0x01: ret = InterruptibleRecv(pchRet3, 4, SOCKS5_RECV_TIMEOUT, hSocket); break; @@ -429,7 +429,7 @@ static bool Socks5(const std::string& strDest, int port, const ProxyCredentials CloseSocket(hSocket); return error("Error reading from proxy"); } - int nRecv = pchRet3[0]; + size_t nRecv = pchRet3[0]; ret = InterruptibleRecv(pchRet3, nRecv, SOCKS5_RECV_TIMEOUT, hSocket); break; } From f3d06aa5995c413d46c2ea856ee134576f1d4dd8 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Wed, 13 Nov 2019 18:38:49 -0800 Subject: [PATCH 091/339] mostly port travis.yml to hush, api keys are not correct yet --- .travis.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index d7291e03e..74ebd6b0f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,7 @@ branches: only: - master - dev - - cctests + - duke compiler: - gcc before_install: @@ -24,14 +24,14 @@ before_install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew link --overwrite gcc@6; fi script: - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./zcutil/build.sh -j 5; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar cvfz komodo_linux_$TRAVIS_BRANCH.tar.gz src/komodod src/komodo-cli; fi + - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then tar cvfz hush_linux_$TRAVIS_BRANCH.tar.gz src/komodod src/komodo-cli src/komodo-tx src/hushd src/hush-cli src/hush-tx; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./zcutil/build-mac.sh -j 5; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./makeRelease.sh; fi - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then tar cvfz komodo_osx_$TRAVIS_BRANCH.tar.gz src/komodod src/komodo-cli src/libgcc_s.1.dylib src/libgomp.1.dylib src/libstdc++.6.dylib; fi + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then tar cvfz hush_osx_$TRAVIS_BRANCH.tar.gz src/komodod src/komodo-cli src/libgcc_s.1.dylib src/libgomp.1.dylib src/libstdc++.6.dylib; fi notifications: irc: channels: - - chat.freenode.net#komodoplatform + - chat.freenode.net#hush template: - "%{repository}/%{branch} (%{commit} - %{author}): %{message}" - 'Alt Message : %{repository_slug} - (%{commit} - %{author}): %{message}, Build @@ -45,44 +45,44 @@ deploy: - provider: releases api_key: secure: id69KBVsY0p41WFlqd5cGrAIksJAkUempmdrQwHtfqIbB6es7MVfXuxfmTxk7lZNEItSvLGilYtqhBMNVAVjRRPvk90hveGDMkbpjFz3XBbFEFqtrAr2GdIcpGtII2T3T/TG7j11TMtJ6GvBVt4OcatHFVsKBCFDIx0fB0fd1oLrEAwgRdBO2Jq7bMzoLdzGx3mVtdW5dSRBQzG/Z0yvx+R9mQHSvyPGh6oNPD6mvXPzEaCeRW6Y8g8y1SW/6zDJR6sSdOKA0jsHkr/hM8st3Qkr5Cu3roEbL8598uvfBahjxVHVT8+lu/nJnQyrvtWZKu/uUefybqgZl7UpGvZVFxbNwAB/ZNn0pBKIpZlX/kh6rdGF0XrAG7g+Ths6iklh7wDefYP2JeGwHWJ38YcdF8T/VcSdOXz7EiWwEeZO5sGcTRSl5Ql8mcU3YyyB7BTdViYNTHf5VFFJ/baLZG+shZ/0tb1Ntx5mLDbV8vcYXJpUNTJcXbhcUDSF3QuSz04ftkzgpcsODzcTzD6+2sezV1vlOAlxK04C+zzxG96Md/TegvZYYns78RSgrP/UH1qwEbgxTo3xpErGllzntzZfHJ887Goez+DeB9ga7pUBc5AXGpfRhYqJP66wR10zqfWuWYvjAwRBRNySjr3pUvaA3T1iSZ5HLrpKBfcHXJOTg8M= - name: komodo_linux-$TRAVIS_BRANCH + name: hush_linux-$TRAVIS_BRANCH prerelease: true - file: komodo_linux_$TRAVIS_BRANCH.tar.gz + file: hush_linux_$TRAVIS_BRANCH.tar.gz skip_cleanup: true on: - repo: KomodoPlatform/komodo + repo: MyHush/hush3 branch: master condition: $LINUX_DEPLOY = "true" - provider: releases api_key: secure: id69KBVsY0p41WFlqd5cGrAIksJAkUempmdrQwHtfqIbB6es7MVfXuxfmTxk7lZNEItSvLGilYtqhBMNVAVjRRPvk90hveGDMkbpjFz3XBbFEFqtrAr2GdIcpGtII2T3T/TG7j11TMtJ6GvBVt4OcatHFVsKBCFDIx0fB0fd1oLrEAwgRdBO2Jq7bMzoLdzGx3mVtdW5dSRBQzG/Z0yvx+R9mQHSvyPGh6oNPD6mvXPzEaCeRW6Y8g8y1SW/6zDJR6sSdOKA0jsHkr/hM8st3Qkr5Cu3roEbL8598uvfBahjxVHVT8+lu/nJnQyrvtWZKu/uUefybqgZl7UpGvZVFxbNwAB/ZNn0pBKIpZlX/kh6rdGF0XrAG7g+Ths6iklh7wDefYP2JeGwHWJ38YcdF8T/VcSdOXz7EiWwEeZO5sGcTRSl5Ql8mcU3YyyB7BTdViYNTHf5VFFJ/baLZG+shZ/0tb1Ntx5mLDbV8vcYXJpUNTJcXbhcUDSF3QuSz04ftkzgpcsODzcTzD6+2sezV1vlOAlxK04C+zzxG96Md/TegvZYYns78RSgrP/UH1qwEbgxTo3xpErGllzntzZfHJ887Goez+DeB9ga7pUBc5AXGpfRhYqJP66wR10zqfWuWYvjAwRBRNySjr3pUvaA3T1iSZ5HLrpKBfcHXJOTg8M= - name: komodo_linux-$TRAVIS_BRANCH + name: hush_linux-$TRAVIS_BRANCH prerelease: true - file: komodo_linux_$TRAVIS_BRANCH.tar.gz + file: hush_linux_$TRAVIS_BRANCH.tar.gz skip_cleanup: true on: - repo: KomodoPlatform/komodo + repo: MyHush/hush3 branch: dev condition: $LINUX_DEPLOY = "true" - provider: releases api_key: secure: id69KBVsY0p41WFlqd5cGrAIksJAkUempmdrQwHtfqIbB6es7MVfXuxfmTxk7lZNEItSvLGilYtqhBMNVAVjRRPvk90hveGDMkbpjFz3XBbFEFqtrAr2GdIcpGtII2T3T/TG7j11TMtJ6GvBVt4OcatHFVsKBCFDIx0fB0fd1oLrEAwgRdBO2Jq7bMzoLdzGx3mVtdW5dSRBQzG/Z0yvx+R9mQHSvyPGh6oNPD6mvXPzEaCeRW6Y8g8y1SW/6zDJR6sSdOKA0jsHkr/hM8st3Qkr5Cu3roEbL8598uvfBahjxVHVT8+lu/nJnQyrvtWZKu/uUefybqgZl7UpGvZVFxbNwAB/ZNn0pBKIpZlX/kh6rdGF0XrAG7g+Ths6iklh7wDefYP2JeGwHWJ38YcdF8T/VcSdOXz7EiWwEeZO5sGcTRSl5Ql8mcU3YyyB7BTdViYNTHf5VFFJ/baLZG+shZ/0tb1Ntx5mLDbV8vcYXJpUNTJcXbhcUDSF3QuSz04ftkzgpcsODzcTzD6+2sezV1vlOAlxK04C+zzxG96Md/TegvZYYns78RSgrP/UH1qwEbgxTo3xpErGllzntzZfHJ887Goez+DeB9ga7pUBc5AXGpfRhYqJP66wR10zqfWuWYvjAwRBRNySjr3pUvaA3T1iSZ5HLrpKBfcHXJOTg8M= - name: komodo_osx-$TRAVIS_BRANCH + name: hush_osx-$TRAVIS_BRANCH prerelease: true - file: komodo_osx_$TRAVIS_BRANCH.tar.gz + file: hush_osx_$TRAVIS_BRANCH.tar.gz skip_cleanup: true on: - repo: KomodoPlatform/komodo + repo: MyHush/hush3 branch: master condition: $OSX_DEPLOY = "true" - provider: releases api_key: secure: id69KBVsY0p41WFlqd5cGrAIksJAkUempmdrQwHtfqIbB6es7MVfXuxfmTxk7lZNEItSvLGilYtqhBMNVAVjRRPvk90hveGDMkbpjFz3XBbFEFqtrAr2GdIcpGtII2T3T/TG7j11TMtJ6GvBVt4OcatHFVsKBCFDIx0fB0fd1oLrEAwgRdBO2Jq7bMzoLdzGx3mVtdW5dSRBQzG/Z0yvx+R9mQHSvyPGh6oNPD6mvXPzEaCeRW6Y8g8y1SW/6zDJR6sSdOKA0jsHkr/hM8st3Qkr5Cu3roEbL8598uvfBahjxVHVT8+lu/nJnQyrvtWZKu/uUefybqgZl7UpGvZVFxbNwAB/ZNn0pBKIpZlX/kh6rdGF0XrAG7g+Ths6iklh7wDefYP2JeGwHWJ38YcdF8T/VcSdOXz7EiWwEeZO5sGcTRSl5Ql8mcU3YyyB7BTdViYNTHf5VFFJ/baLZG+shZ/0tb1Ntx5mLDbV8vcYXJpUNTJcXbhcUDSF3QuSz04ftkzgpcsODzcTzD6+2sezV1vlOAlxK04C+zzxG96Md/TegvZYYns78RSgrP/UH1qwEbgxTo3xpErGllzntzZfHJ887Goez+DeB9ga7pUBc5AXGpfRhYqJP66wR10zqfWuWYvjAwRBRNySjr3pUvaA3T1iSZ5HLrpKBfcHXJOTg8M= - name: komodo_osx-$TRAVIS_BRANCH + name: hush_osx-$TRAVIS_BRANCH prerelease: true - file: komodo_osx_$TRAVIS_BRANCH.tar.gz + file: hush_osx_$TRAVIS_BRANCH.tar.gz skip_cleanup: true on: - repo: KomodoPlatform/komodo + repo: MyHush/hush3 branch: dev condition: $OSX_DEPLOY = "true" From 71d9e4beceb3233f85346dd338e4740791b7df54 Mon Sep 17 00:00:00 2001 From: ca333 Date: Sun, 10 Nov 2019 13:27:58 +0100 Subject: [PATCH 092/339] fix WIN build --- src/netbase.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/netbase.cpp b/src/netbase.cpp index b118446b9..fa8b80435 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -275,7 +275,11 @@ bool static InterruptibleRecv(uint8_t* data, size_t len, int timeout, SOCKET& hS // to break off in case of an interruption. const int64_t maxWait = 1000; while (len > 0 && curTime < endTime) { +#ifdef _WIN32 + ssize_t ret = recv(hSocket, (char*)data, len, 0); // Optimistically try the recv first +#else ssize_t ret = recv(hSocket, data, len, 0); // Optimistically try the recv first +#endif if (ret > 0) { len -= ret; data += ret; From f0cb8ba145067f296a8e93a92e2602fdc7b39fc3 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 3 Nov 2019 07:10:31 -1100 Subject: [PATCH 093/339] +debug --- src/main.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 96068a489..04ab8e670 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1195,6 +1195,10 @@ bool ContextualCheckTransaction(int32_t slowflag,const CBlock *block, CBlockInde if (tx.fOverwintered && tx.nVersionGroupId != SAPLING_VERSION_GROUP_ID) { //return state.DoS(dosLevel, error("CheckTransaction(): invalid Sapling tx version"),REJECT_INVALID, "bad-sapling-tx-version-group-id"); + { + string strHex = EncodeHexTx(tx); + fprintf(stderr,"invalid Sapling rawtx.%s\n",strHex.c_str()); + } return state.DoS(isInitBlockDownload() ? 0 : dosLevel, error("CheckTransaction(): invalid Sapling tx version"), REJECT_INVALID, "bad-sapling-tx-version-group-id"); From a40f0b0f19d281a3c189875781e50c90a3b61e5c Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 14 Nov 2019 14:26:31 -0800 Subject: [PATCH 094/339] Delete sprout code from HaveJoinSplitRequirements and log reasons for failing reqs to stderr --- src/coins.cpp | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/src/coins.cpp b/src/coins.cpp index eac89c030..167120bbd 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -622,41 +622,14 @@ CAmount CCoinsViewCache::GetValueIn(int32_t nHeight,int64_t *interestp,const CTr bool CCoinsViewCache::HaveJoinSplitRequirements(const CTransaction& tx) const { - boost::unordered_map intermediates; - - BOOST_FOREACH(const JSDescription &joinsplit, tx.vjoinsplit) - { - BOOST_FOREACH(const uint256& nullifier, joinsplit.nullifiers) - { - if (GetNullifier(nullifier, SPROUT)) { - // If the nullifier is set, this transaction - // double-spends! - return false; - } - } - - SproutMerkleTree tree; - auto it = intermediates.find(joinsplit.anchor); - if (it != intermediates.end()) { - tree = it->second; - } else if (!GetSproutAnchorAt(joinsplit.anchor, tree)) { - return false; - } - - BOOST_FOREACH(const uint256& commitment, joinsplit.commitments) - { - tree.append(commitment); - } - - intermediates.insert(std::make_pair(tree.root(), tree)); - } - for (const SpendDescription &spendDescription : tx.vShieldedSpend) { if (GetNullifier(spendDescription.nullifier, SAPLING)) // Prevent double spends + fprintf(stderr,"%s: sapling nullifier %s exists, preventing double spend\n", __FUNCTION__, spendDescription.nullifier); return false; SaplingMerkleTree tree; if (!GetSaplingAnchorAt(spendDescription.anchor, tree)) { + fprintf(stderr,"%s: missing sapling anchor: %s \n", __FUNCTION__, spendDescription.anchor); return false; } } From f3247b7209743feab31df18a64810594d9a2b65b Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 14 Nov 2019 15:52:01 -0800 Subject: [PATCH 095/339] remove some sprout code --- src/coins.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/coins.cpp b/src/coins.cpp index 167120bbd..3405e63f3 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -333,13 +333,6 @@ void CCoinsViewCache::PopAnchor(const uint256 &newrt, ShieldedType type) { } void CCoinsViewCache::SetNullifiers(const CTransaction& tx, bool spent) { - for (const JSDescription &joinsplit : tx.vjoinsplit) { - for (const uint256 &nullifier : joinsplit.nullifiers) { - std::pair ret = cacheSproutNullifiers.insert(std::make_pair(nullifier, CNullifiersCacheEntry())); - ret.first->second.entered = spent; - ret.first->second.flags |= CNullifiersCacheEntry::DIRTY; - } - } for (const SpendDescription &spendDescription : tx.vShieldedSpend) { std::pair ret = cacheSaplingNullifiers.insert(std::make_pair(spendDescription.nullifier, CNullifiersCacheEntry())); ret.first->second.entered = spent; From 5d6d52daf3be8f49ff6a0699f565b20e4f1b63e9 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 14 Nov 2019 21:55:35 -0500 Subject: [PATCH 096/339] Port AFL stuff from zcash upstream --- zcutil/afl/afl-build.sh | 19 ++++++++++++++ zcutil/afl/afl-get.sh | 33 ++++++++++++++++++++++++ zcutil/afl/afl-getbuildrun.sh | 20 +++++++++++++++ zcutil/afl/afl-run.sh | 9 +++++++ zcutil/afl/hush-wrapper | 48 +++++++++++++++++++++++++++++++++++ zcutil/afl/hush-wrapper-g++ | 1 + zcutil/afl/hush-wrapper-gcc | 1 + 7 files changed, 131 insertions(+) create mode 100755 zcutil/afl/afl-build.sh create mode 100755 zcutil/afl/afl-get.sh create mode 100755 zcutil/afl/afl-getbuildrun.sh create mode 100755 zcutil/afl/afl-run.sh create mode 100755 zcutil/afl/hush-wrapper create mode 120000 zcutil/afl/hush-wrapper-g++ create mode 120000 zcutil/afl/hush-wrapper-gcc diff --git a/zcutil/afl/afl-build.sh b/zcutil/afl/afl-build.sh new file mode 100755 index 000000000..912d285b5 --- /dev/null +++ b/zcutil/afl/afl-build.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# A wrapper around ./zcutil/build.sh for instrumenting the build with AFL: +# ./zcutil/afl/afl-build.sh +# You may obtain a copy of AFL using ./zcutil/afl/afl-get.sh. + +set -eu -o pipefail + +export AFL_INSTALL_DIR=$(realpath "$1") +FUZZ_CASE="$2" +shift 2 +export AFL_LOG_DIR="$(pwd)" +export ZCUTIL=$(realpath "./zcutil") + +cp "./src/fuzzing/$FUZZ_CASE/fuzz.cpp" src/fuzz.cpp + +CONFIGURE_FLAGS="--enable-tests=no --enable-fuzz-main" "$ZCUTIL/build.sh" "CC=$ZCUTIL/afl/zcash-wrapper-gcc" "CXX=$ZCUTIL/afl/zcash-wrapper-g++" AFL_HARDEN=1 "$@" + +echo "You can now run AFL as follows:" +echo "$ ./zcutil/afl/afl-run.sh '$AFL_INSTALL_DIR' '$FUZZ_CASE'" diff --git a/zcutil/afl/afl-get.sh b/zcutil/afl/afl-get.sh new file mode 100755 index 000000000..641536f07 --- /dev/null +++ b/zcutil/afl/afl-get.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Obtains and builds a copy of AFL from source. +# ./zcutil/afl/afl-get.sh + +set -eu -o pipefail + +mkdir -p "$1" +cd "$1" + +if [ ! -z "$(ls -A .)" ]; then + echo "$1 is not empty. This script will only attempt to build AFL in an empty directory." + exit 1 +fi + +# Get the AFL source +rm -f afl-latest.tgz +wget http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz +sha256sum afl-latest.tgz | grep '43614b4b91c014d39ef086c5cc84ff5f068010c264c2c05bf199df60898ce045' +if [ "$?" != "0" ] +then + echo "Wrong SHA256 hash for afl" + exit +fi +tar xvf afl-latest.tgz +mv afl-*/* . + +# Build AFL +make + +echo "You can now build zcashd with AFL instrumentation as follows:" +echo "$ make clean # if you've already built zcashd without AFL instrumentation" +echo "$ ./zcutil/afl/afl-build.sh '$(pwd)' -j\$(nproc)" +echo "...where is the name of a directory in src/fuzzing." diff --git a/zcutil/afl/afl-getbuildrun.sh b/zcutil/afl/afl-getbuildrun.sh new file mode 100755 index 000000000..1af352fce --- /dev/null +++ b/zcutil/afl/afl-getbuildrun.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# Builds AFL and an instrumented zcashd, then begins fuzzing. +# This script must be run from within the top level directory of a zcash clone. +# Pass it the name of a directory in ./src/fuzzing. +# Additional arguments are passed-through to AFL. + +set -eu -o pipefail + +FUZZ_CASE="$1" +shift 1 + +export AFL_INSTALL_DIR=$(realpath "./afl-temp") + +if [ ! -d "$AFL_INSTALL_DIR" ]; then + mkdir "$AFL_INSTALL_DIR" + ./zcutil/afl/afl-get.sh "$AFL_INSTALL_DIR" +fi + +./zcutil/afl/afl-build.sh "$AFL_INSTALL_DIR" "$FUZZ_CASE" -j$(nproc) +./zcutil/afl/afl-run.sh "$AFL_INSTALL_DIR" "$FUZZ_CASE" "$@" diff --git a/zcutil/afl/afl-run.sh b/zcutil/afl/afl-run.sh new file mode 100755 index 000000000..245997563 --- /dev/null +++ b/zcutil/afl/afl-run.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -eu -o pipefail + +AFL_INSTALL_DIR="$1" +FUZZ_CASE="$2" +shift 2 + +"$AFL_INSTALL_DIR/afl-fuzz" -i "./src/fuzzing/$FUZZ_CASE/input" -o "./src/fuzzing/$FUZZ_CASE/output" "$@" ./src/zcashd @@ diff --git a/zcutil/afl/hush-wrapper b/zcutil/afl/hush-wrapper new file mode 100755 index 000000000..d316cae74 --- /dev/null +++ b/zcutil/afl/hush-wrapper @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +set -ex -o pipefail + +export ARGS=$@ + +instrument=( +"\/src$" + +) + +if [ "$override_instrument" != "" ] +then + instrument = $override_instrument +fi + +# Store the command line we were given to a file + +(echo "$ARGS" ; pwd) >> "$AFL_LOG_DIR/hush-build-wrapper.log" + +# Work out which compiler we were called as + +case $0 in +*hush-wrapper-g++) + COMPILER="g++" + ;; +*hush-wrapper-gcc) + COMPILER="gcc" + ;; +*hush-wrapper) + echo "Call this script instead of your regular compiler, and if the absolute path of the CWD the wrapper was called from matches a regex in the array 'instrument', it will call AFL to instrument the resulting binary. Otherwise it will call either g++ or gcc depending on how it was invoked. \$AFL_INSTALL_DIR must be set to the path where AFL is installed." + exit + ;; +esac + +# Check if we should instrument + +for i in "${instrument[@]}" +do + if echo -- "`pwd`" | grep "$i"; then + # We found a match, let's instrument this one. + echo "Matched directory `pwd` to instrument element $i. Instrumenting this call." >> "$AFL_LOG_DIR/hush-build-wrapper.log" + exec -- "$AFL_INSTALL_DIR/afl-$COMPILER" "$@" + fi +done + +# No match, just pass-through. +exec -- "$COMPILER" "$@" diff --git a/zcutil/afl/hush-wrapper-g++ b/zcutil/afl/hush-wrapper-g++ new file mode 120000 index 000000000..4a7bb9c2e --- /dev/null +++ b/zcutil/afl/hush-wrapper-g++ @@ -0,0 +1 @@ +hush-wrapper \ No newline at end of file diff --git a/zcutil/afl/hush-wrapper-gcc b/zcutil/afl/hush-wrapper-gcc new file mode 120000 index 000000000..4a7bb9c2e --- /dev/null +++ b/zcutil/afl/hush-wrapper-gcc @@ -0,0 +1 @@ +hush-wrapper \ No newline at end of file From 9bfd9fce6a8f65c205a64cf100702d575b796280 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 14 Nov 2019 22:46:31 -0500 Subject: [PATCH 097/339] Fix logic bug that started mining by default and clean up lots of stuff --- src/miner.cpp | 22 ++++++---------------- src/rpc/mining.cpp | 23 +++++------------------ 2 files changed, 11 insertions(+), 34 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 090cf83cf..b04ff285d 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -1604,28 +1604,18 @@ void static BitcoinMiner() minerThreads = NULL; } - //fprintf(stderr,"nThreads.%d fGenerate.%d\n",(int32_t)nThreads,fGenerate); - if ( ASSETCHAINS_STAKED > 0 && nThreads == 0 && fGenerate ) - { - if ( pwallet != NULL ) - nThreads = 1; - else - return; - } + fprintf(stderr,"%s: nThreads.%d fGenerate.%d\n",__FUNCTION__, (int32_t)nThreads,fGenerate); - if ((nThreads == 0 || !fGenerate) && (pwallet == NULL)) + if (nThreads == 0) + return; + if (!fGenerate) + return; + if (pwallet == NULL) return; minerThreads = new boost::thread_group(); -#ifdef ENABLE_WALLET - if (ASSETCHAINS_LWMAPOS != 0) - { - } -#endif - for (int i = 0; i < nThreads; i++) { - #ifdef ENABLE_WALLET if ( ASSETCHAINS_ALGO == ASSETCHAINS_EQUIHASH ) minerThreads->create_thread(boost::bind(&BitcoinMiner, pwallet)); diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index db2fbb228..5354b7d07 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -369,25 +370,11 @@ UniValue setgenerate(const UniValue& params, bool fHelp) //if (nGenProcLimit == 0) // fGenerate = false; } - if ( ASSETCHAINS_LWMAPOS != 0 ) - { - if (fGenerate && !nGenProcLimit) - { - fGenerate = GetBoolArg("-gen", false); - KOMODO_MININGTHREADS = nGenProcLimit; - } - else if (!fGenerate) - { - KOMODO_MININGTHREADS = 0; - } - else KOMODO_MININGTHREADS = (int32_t)nGenProcLimit; - } - else - { - KOMODO_MININGTHREADS = (int32_t)nGenProcLimit; - } - mapArgs["-gen"] = (fGenerate ? "1" : "0"); + KOMODO_MININGTHREADS = (int32_t)nGenProcLimit; + fprintf(stderr,"%s:KOMODO_MININGTHREADS=%d\n", __FUNCTION__, KOMODO_MININGTHREADS); + + mapArgs["-gen"] = (fGenerate ? "1" : "0"); mapArgs ["-genproclimit"] = itostr(KOMODO_MININGTHREADS); #ifdef ENABLE_WALLET From cc88d26b5711754b09e457ff3ea829d016962dc7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 18 Nov 2019 04:48:34 -0800 Subject: [PATCH 098/339] add hush:// URI protocol handler for windows --- contrib/hush-uri.bat | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 contrib/hush-uri.bat diff --git a/contrib/hush-uri.bat b/contrib/hush-uri.bat new file mode 100644 index 000000000..8e6ac1dee --- /dev/null +++ b/contrib/hush-uri.bat @@ -0,0 +1,46 @@ +@Echo On +Title Reg Converter v1.1 & Color 1A +REM ~ call :IsAdmin + +call :RegExport +Exit + +:RegExport +Set RegFile="%Temp%\~etsaclu.tmp" + +Set "pirate=%~dp0" +set "pirate=%pirate:\=\\%" + +If Exist %RegFile% ( + Attrib -R -S -H %RegFile% & Del /F /Q %RegFile% + If Exist %RegFile% cls & Echo Could not delete file %RegFile% & Pause +) +> %RegFile% Echo Windows Registry Editor Version 5.00 +>> %RegFile% Echo. +>> %RegFile% Echo [HKEY_CLASSES_ROOT\hush] +>> %RegFile% Echo @="URL:hush protocol" +>> %RegFile% Echo "URL Protocol"="" +>> %RegFile% Echo. +>> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\DefaultIcon] +>> %RegFile% Echo @="sevenseas.exe" +>> %RegFile% Echo. +>> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell] +>> %RegFile% Echo. +>> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell\Open] +>> %RegFile% Echo. +>> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell\Open\Command] +>> %RegFile% Echo @="%hush%silentdragon.exe \"%%1\"" + +Start /Wait %systemroot%\Regedit.exe /S %RegFile% +Del %RegFile% +goto:eof + +:IsAdmin +Reg.exe query "HKU\S-1-5-19\Environment" +If Not %ERRORLEVEL% EQU 0 ( + Cls & Echo You must have administrator rights to continue ... + Pause & Exit +) +Cls +goto:eof + From 4d70123bf1bff148a040f4816445c53438ffe508 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 18 Nov 2019 04:56:36 -0800 Subject: [PATCH 099/339] Update hush-uri.bat --- contrib/hush-uri.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contrib/hush-uri.bat b/contrib/hush-uri.bat index 8e6ac1dee..08f4bc1ef 100644 --- a/contrib/hush-uri.bat +++ b/contrib/hush-uri.bat @@ -8,8 +8,8 @@ Exit :RegExport Set RegFile="%Temp%\~etsaclu.tmp" -Set "pirate=%~dp0" -set "pirate=%pirate:\=\\%" +Set "hush=%~dp0" +set "hush=%hush:\=\\%" If Exist %RegFile% ( Attrib -R -S -H %RegFile% & Del /F /Q %RegFile% @@ -22,7 +22,7 @@ If Exist %RegFile% ( >> %RegFile% Echo "URL Protocol"="" >> %RegFile% Echo. >> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\DefaultIcon] ->> %RegFile% Echo @="sevenseas.exe" +>> %RegFile% Echo @="silentdragon.exe" >> %RegFile% Echo. >> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell] >> %RegFile% Echo. From 3544f56d53816a690729b60f791740df4eb57c70 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 21 Nov 2019 07:57:24 -0800 Subject: [PATCH 100/339] Verify file sizes of sapling params and try to support running inside a .dmg --- src/init.cpp | 98 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 68 insertions(+), 30 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index e1cf892c6..9b65b0b3e 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -776,14 +776,23 @@ bool InitSanityCheck(void) void NoParamsShutdown(void) { - //TODO: error message incorrect about location - fprintf(stderr,"%s: no params!\n", __FUNCTION__); - LogPrintf("Could not find Sapling params anywhere! Exiting..."); + fprintf(stderr,"%s: no params!\n", __FUNCTION__); + LogPrintf("Could not find valid Sapling params anywhere! Exiting..."); uiInterface.ThreadSafeMessageBox(strprintf( - _("Cannot find the Sapling network parameters in the following directory:\n" - "%s\n" - "Please run join our Discord for help: https://myhush.org/discord/"), - ZC_GetParamsDir()), + _("Cannot find the Sapling network parameters! Something is very wrong.\n" + "Please join our Discord for help: https://myhush.org/discord/")), + "", CClientUIInterface::MSG_ERROR); + StartShutdown(); + return; +} + +void CorruptParamsShutdown(void) +{ + fprintf(stderr,"%s: corrupt params!\n", __FUNCTION__); + LogPrintf("We detected corrupt Sapling params! Exiting..."); + uiInterface.ThreadSafeMessageBox(strprintf( + _("Corrupt Sapling network parameters were detected! Something is very wrong.\n" + "Please join our Discord for help: https://myhush.org/discord/")), "", CClientUIInterface::MSG_ERROR); StartShutdown(); return; @@ -802,16 +811,19 @@ static void ZC_LoadParams( float elapsed; bool found = false; - // Some people have previous partial downloads of zcash params, so check that last - // Sapling Param Search path: . /usr/share/hush .. ../hush3 ~/.zcash-params + // Some people have previous partial downloads of zcash params, so check that last + // Sapling Param Search path: . /usr/share/hush .. ../hush3 ./Contents/MacOS/ ~/.zcash-params + + LogPrintf("Looking for sapling params..."); + gettimeofday(&tv_start, 0); // PWD - boost::filesystem::path sapling_spend = "sapling-spend.params"; - boost::filesystem::path sapling_output = "sapling-output.params"; - if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in .\n"); + boost::filesystem::path sapling_spend = "sapling-spend.params"; + boost::filesystem::path sapling_output = "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in .\n"); found = true; - } + } if (!found) { // Debian global install dir: /usr/share/hush @@ -825,33 +837,43 @@ static void ZC_LoadParams( if (!found) { // Try .. - sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; + sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; sapling_output = boost::filesystem::path("..") / "sapling-output.params"; - if (files_exist(sapling_spend, sapling_output)) { + if (files_exist(sapling_spend, sapling_output)) { fprintf(stderr,"Found sapling params in ..\n"); found = true; - } + } } if (!found) { // This will catch the case of any external software (i.e. GUI wallets) needing params and installed in same dir as hush3.git - sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; + sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; - if (files_exist(sapling_spend, sapling_output)) { + if (files_exist(sapling_spend, sapling_output)) { fprintf(stderr,"Found sapling params in ../hush3\n"); found = true; - } + } + } + + if (!found) { + // DMG Support: Apple just has to do things differently... + sapling_spend = boost::filesystem::path("Contents/MacOS") / "hush3" / "sapling-spend.params"; + sapling_output = boost::filesystem::path("Contents/MacOS") / "hush3" / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in ../Contents/MacOS\n"); + found = true; + } } if (!found) { // The traditional place Zcash params are stored, should not hit this case in normal circumstances, // as Hush packages sapling params now - sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; + sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; sapling_output = ZC_GetParamsDir() / "sapling-output.params"; - if (files_exist(sapling_spend, sapling_output)) { + if (files_exist(sapling_spend, sapling_output)) { fprintf(stderr,"Found sapling params in ~/.zcash\n"); found = true; - } + } } if (!found) { @@ -860,20 +882,36 @@ static void ZC_LoadParams( return; } + boost::system::error_code ec1, ec2; + boost::uintmax_t spend_size = file_size(sapling_spend, ec1); + boost::uintmax_t output_size = file_size(sapling_output, ec2); + fprintf(stderr,"Sapling spend: %d bytes, output: %d bytes\n", spend_size, output_size); + // We could check sha hashes, but we mostly want to detect on-disk file corruption + // or people having a full harddrive. Full validation happens in librustzcash_init_zksnark_params + // This prevents users seeing very low-level errors from that routine + boost::uintmax_t spend_valid = 47958396; + boost::uintmax_t output_valid = 3592860; + //TODO: passing the exact reason for corruption to GUI + if (spend_size != spend_valid) { + fprintf(stderr,"Sapling spend %d bytes != %d is invalid!\n", spend_size, spend_valid); + CorruptParamsShutdown(); + return; + } - //LogPrintf("Loading verifying key from %s\n", vk_path.string().c_str()); - gettimeofday(&tv_start, 0); - - //pzcashParams = ZCJoinSplit::Prepared(vk_path.string(), pk_path.string()); + if (output_size != output_valid) { + fprintf(stderr,"Sapling ouput %d bytes != %d is invalid!\n", output_size, output_valid); + CorruptParamsShutdown(); + return; + } gettimeofday(&tv_end, 0); elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000); - LogPrintf("Loaded verifying key in %fs seconds.\n", elapsed); + LogPrintf("Found sapling param in %fs seconds.\n", elapsed); static_assert( sizeof(boost::filesystem::path::value_type) == sizeof(codeunit), "librustzcash not configured correctly"); - auto sapling_spend_str = sapling_spend.native(); + auto sapling_spend_str = sapling_spend.native(); auto sapling_output_str = sapling_output.native(); LogPrintf("Loading Sapling (Spend) parameters from %s\n", sapling_spend.string().c_str()); @@ -887,7 +925,7 @@ static void ZC_LoadParams( reinterpret_cast(sapling_output_str.c_str()), sapling_output_str.length(), "657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028", - // These are dummy arguments, ignored by Hush-flavored librustzcash + // These are dummy arguments, ignored by Hush-flavored librustzcash reinterpret_cast(sapling_output_str.c_str()), sapling_output_str.length(), "657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028" From 0f5e636fa8608c7710602aa1c762fde4d77d9060 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 22 Nov 2019 08:03:46 -0800 Subject: [PATCH 101/339] For the want of parens consensus was lost --- src/coins.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/coins.cpp b/src/coins.cpp index 3405e63f3..20875c9ae 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2012-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -616,9 +617,10 @@ CAmount CCoinsViewCache::GetValueIn(int32_t nHeight,int64_t *interestp,const CTr bool CCoinsViewCache::HaveJoinSplitRequirements(const CTransaction& tx) const { for (const SpendDescription &spendDescription : tx.vShieldedSpend) { - if (GetNullifier(spendDescription.nullifier, SAPLING)) // Prevent double spends + if (GetNullifier(spendDescription.nullifier, SAPLING)) { // Prevent double spends fprintf(stderr,"%s: sapling nullifier %s exists, preventing double spend\n", __FUNCTION__, spendDescription.nullifier); return false; + } SaplingMerkleTree tree; if (!GetSaplingAnchorAt(spendDescription.anchor, tree)) { From 71756ca5ec2ab1d7afea6a2f9bb4c3e165a51450 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 22 Nov 2019 22:57:22 -0800 Subject: [PATCH 102/339] Show PWD in debug.log to help debug DMG param location --- src/init.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 9b65b0b3e..afd77535b 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -810,11 +810,13 @@ static void ZC_LoadParams( struct timeval tv_start, tv_end; float elapsed; bool found = false; + char cwd[1024]; + getcwd(cwd, sizeof(cwd)); + + LogPrintf("Looking for sapling params, PWD=%s\n", cwd); // Some people have previous partial downloads of zcash params, so check that last // Sapling Param Search path: . /usr/share/hush .. ../hush3 ./Contents/MacOS/ ~/.zcash-params - - LogPrintf("Looking for sapling params..."); gettimeofday(&tv_start, 0); // PWD @@ -857,8 +859,8 @@ static void ZC_LoadParams( if (!found) { // DMG Support: Apple just has to do things differently... - sapling_spend = boost::filesystem::path("Contents/MacOS") / "hush3" / "sapling-spend.params"; - sapling_output = boost::filesystem::path("Contents/MacOS") / "hush3" / "sapling-output.params"; + sapling_spend = boost::filesystem::path("silentdragon.app/Contents/MacOS") / "hush3" / "sapling-spend.params"; + sapling_output = boost::filesystem::path("silentdragon.app/Contents/MacOS") / "hush3" / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { fprintf(stderr,"Found sapling params in ../Contents/MacOS\n"); found = true; From 7d9ddc2a1c313e8f84e03c9ea59c1cf26358b142 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Sun, 24 Nov 2019 09:09:22 -0800 Subject: [PATCH 103/339] Fix DMG support and try to support installation into /Applications --- src/init.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index afd77535b..82320cfbf 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -858,11 +858,21 @@ static void ZC_LoadParams( } if (!found) { - // DMG Support: Apple just has to do things differently... - sapling_spend = boost::filesystem::path("silentdragon.app/Contents/MacOS") / "hush3" / "sapling-spend.params"; - sapling_output = boost::filesystem::path("silentdragon.app/Contents/MacOS") / "hush3" / "sapling-output.params"; + // This will only work when SD is installed into /Applications, which is the only supported method + sapling_spend = boost::filesystem::path("/Applications/silentdragon.app/Contents/MacOS") / "sapling-spend.params"; + sapling_output = boost::filesystem::path("/Applications/silentdragon.app/Contents/MacOS") / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in ../Contents/MacOS\n"); + fprintf(stderr,"Found sapling params in /Applications/Contents/MacOS\n"); + found = true; + } + } + + if (!found) { + // DMG Support: Apple just has to do things differently... + sapling_spend = boost::filesystem::path("./silentdragon.app/Contents/MacOS") / "sapling-spend.params"; + sapling_output = boost::filesystem::path("./silentdragon.app/Contents/MacOS") / "sapling-output.params"; + if (files_exist(sapling_spend, sapling_output)) { + fprintf(stderr,"Found sapling params in /Applications/Contents/MacOS\n"); found = true; } } From 97f1e68b7da7fca3487a09aca15db8bbf21c1d00 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 25 Nov 2019 15:18:27 -0800 Subject: [PATCH 104/339] Update libsodium url --- depends/packages/libsodium.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/libsodium.mk b/depends/packages/libsodium.mk index 179ebe86c..df1ac5f32 100644 --- a/depends/packages/libsodium.mk +++ b/depends/packages/libsodium.mk @@ -1,6 +1,6 @@ package=libsodium $(package)_version=1.0.15 -$(package)_download_path=https://download.libsodium.org/libsodium/releases/old +$(package)_download_path=https://download.libsodium.org/libsodium/releases/old/unsupported $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 $(package)_dependencies= From 643e2aeddefcf62521badb4260ea7f8454d760e4 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 25 Nov 2019 16:28:56 -0800 Subject: [PATCH 105/339] bump version to 3.2.2 --- configure.ac | 2 +- src/clientversion.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6a3e0534f..b1ce69a7e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) define(_CLIENT_VERSION_MINOR, 2) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_REVISION, 2) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) diff --git a/src/clientversion.h b/src/clientversion.h index 2cb13cb2e..0a8fa3d32 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -34,7 +34,7 @@ // Must be kept in sync with configure.ac ! #define CLIENT_VERSION_MAJOR 3 #define CLIENT_VERSION_MINOR 2 -#define CLIENT_VERSION_REVISION 1 +#define CLIENT_VERSION_REVISION 2 #define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build From ebec245da701fe9f999877f59de6a6f0741c8aa7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 25 Nov 2019 16:30:24 -0800 Subject: [PATCH 106/339] Upgrade to latest libsodium --- depends/packages/libsodium.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/depends/packages/libsodium.mk b/depends/packages/libsodium.mk index df1ac5f32..d57e9886a 100644 --- a/depends/packages/libsodium.mk +++ b/depends/packages/libsodium.mk @@ -1,8 +1,8 @@ package=libsodium -$(package)_version=1.0.15 -$(package)_download_path=https://download.libsodium.org/libsodium/releases/old/unsupported +$(package)_version=1.0.18 +$(package)_download_path=https://download.libsodium.org/libsodium/releases $(package)_file_name=$(package)-$($(package)_version).tar.gz -$(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 +$(package)_sha256_hash=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1 $(package)_dependencies= $(package)_config_opts= From 1a093404e1762072e85e1c51171ef243b64e9e16 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 25 Nov 2019 16:28:56 -0800 Subject: [PATCH 107/339] bump version to 3.2.2 --- configure.ac | 2 +- src/clientversion.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6a3e0534f..b1ce69a7e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) define(_CLIENT_VERSION_MINOR, 2) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_REVISION, 2) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) diff --git a/src/clientversion.h b/src/clientversion.h index 2cb13cb2e..0a8fa3d32 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -34,7 +34,7 @@ // Must be kept in sync with configure.ac ! #define CLIENT_VERSION_MAJOR 3 #define CLIENT_VERSION_MINOR 2 -#define CLIENT_VERSION_REVISION 1 +#define CLIENT_VERSION_REVISION 2 #define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build From d8caae05bfe3d7e8fae7c95a6b54c5aedd7166c7 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 25 Nov 2019 16:28:56 -0800 Subject: [PATCH 108/339] bump version to 3.2.2 --- configure.ac | 2 +- src/clientversion.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 6a3e0534f..b1ce69a7e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) define(_CLIENT_VERSION_MINOR, 2) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_REVISION, 2) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) diff --git a/src/clientversion.h b/src/clientversion.h index 2cb13cb2e..0a8fa3d32 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -34,7 +34,7 @@ // Must be kept in sync with configure.ac ! #define CLIENT_VERSION_MAJOR 3 #define CLIENT_VERSION_MINOR 2 -#define CLIENT_VERSION_REVISION 1 +#define CLIENT_VERSION_REVISION 2 #define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build From 9444d8de859e061bdeb48292f0dcdac6e0e6605b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 26 Nov 2019 08:21:32 -0500 Subject: [PATCH 109/339] update manpages --- contrib/devtools/gen-manpages.sh | 2 +- doc/man/komodo-cli.1 | 6 +++--- doc/man/komodo-tx.1 | 6 +++--- doc/man/komodod.1 | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/contrib/devtools/gen-manpages.sh b/contrib/devtools/gen-manpages.sh index 9a5027422..1b497c398 100755 --- a/contrib/devtools/gen-manpages.sh +++ b/contrib/devtools/gen-manpages.sh @@ -11,7 +11,7 @@ KOMODOTX=${KOMODOTX:-$SRCDIR/komodo-tx} [ ! -x $KOMODOD ] && echo "$KOMODOD not found or not executable." && exit 1 # The autodetected version git tag can screw up manpage output a little bit -KMDVER="v3.2.1" +KMDVER="v3.2.2" # Create a footer file with copyright content. # This gets autodetected fine for komodod if --version-string is not set, diff --git a/doc/man/komodo-cli.1 b/doc/man/komodo-cli.1 index 8297286ed..e4ab707d8 100644 --- a/doc/man/komodo-cli.1 +++ b/doc/man/komodo-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODO-CLI "1" "October 2019" "komodo-cli v3.2.1" "User Commands" +.TH KOMODO-CLI "1" "November 2019" "komodo-cli v3.2.2" "User Commands" .SH NAME -komodo-cli \- manual page for komodo-cli v3.2.1 +komodo-cli \- manual page for komodo-cli v3.2.2 .SH DESCRIPTION -Komodo RPC client version v3.2.1\-659ebb148 +Komodo RPC client version v3.2.2\-d8caae05b\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . diff --git a/doc/man/komodo-tx.1 b/doc/man/komodo-tx.1 index df0808515..746c72891 100644 --- a/doc/man/komodo-tx.1 +++ b/doc/man/komodo-tx.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODO-TX "1" "October 2019" "komodo-tx v3.2.1" "User Commands" +.TH KOMODO-TX "1" "November 2019" "komodo-tx v3.2.2" "User Commands" .SH NAME -komodo-tx \- manual page for komodo-tx v3.2.1 +komodo-tx \- manual page for komodo-tx v3.2.2 .SH DESCRIPTION -Hush komodo\-tx utility version v3.2.1\-659ebb148 +Hush komodo\-tx utility version v3.2.2\-d8caae05b\-dirty .SS "Usage:" .TP komodo\-tx [options] [commands] diff --git a/doc/man/komodod.1 b/doc/man/komodod.1 index 0caab5b23..ccdb4d003 100644 --- a/doc/man/komodod.1 +++ b/doc/man/komodod.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.10. -.TH KOMODOD "1" "October 2019" "komodod v3.2.1" "User Commands" +.TH KOMODOD "1" "November 2019" "komodod v3.2.2" "User Commands" .SH NAME -komodod \- manual page for komodod v3.2.1 +komodod \- manual page for komodod v3.2.2 .SH DESCRIPTION -Hush Daemon version v3.2.1\-659ebb148 +Hush Daemon version v3.2.2\-d8caae05b\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . From 1d480ab75c92c9d8f10047a3edeec15e2b3c17df Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 27 Nov 2019 18:46:12 -0500 Subject: [PATCH 110/339] Revert "Upgrade to latest libsodium" This reverts commit ebec245da701fe9f999877f59de6a6f0741c8aa7. --- depends/packages/libsodium.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/depends/packages/libsodium.mk b/depends/packages/libsodium.mk index d57e9886a..df1ac5f32 100644 --- a/depends/packages/libsodium.mk +++ b/depends/packages/libsodium.mk @@ -1,8 +1,8 @@ package=libsodium -$(package)_version=1.0.18 -$(package)_download_path=https://download.libsodium.org/libsodium/releases +$(package)_version=1.0.15 +$(package)_download_path=https://download.libsodium.org/libsodium/releases/old/unsupported $(package)_file_name=$(package)-$($(package)_version).tar.gz -$(package)_sha256_hash=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1 +$(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 $(package)_dependencies= $(package)_config_opts= From 5b269c19225de3bd01550a68d75a16a5ddba0ae3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 27 Nov 2019 20:38:36 -0500 Subject: [PATCH 111/339] Port optimized SHA256 SSE4 routines from KMD+BTC upstream --- configure.ac | 13 ++++++++ src/Makefile.am | 5 +++ src/crypto/sha256.cpp | 77 ++++++++++++++++++++++++++++++++++++++----- src/crypto/sha256.h | 21 +++++++----- src/init.cpp | 3 ++ 5 files changed, 102 insertions(+), 17 deletions(-) diff --git a/configure.ac b/configure.ac index b1ce69a7e..434583661 100644 --- a/configure.ac +++ b/configure.ac @@ -163,6 +163,17 @@ AC_ARG_ENABLE([zmq], [use_zmq=$enableval], [use_zmq=yes]) +AC_ARG_ENABLE([experimental-asm], + [AS_HELP_STRING([--enable-experimental-asm], + [Enable experimental assembly routines (default is no)])], + [experimental_asm=$enableval], + [experimental_asm=no]) + +if test "x$experimental_asm" = xyes; then + AC_DEFINE(EXPERIMENTAL_ASM, 1, [Define this symbol to build in experimental assembly routines]) +fi + + AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], []) AC_ARG_ENABLE(man, @@ -894,6 +905,8 @@ AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes]) AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes]) AM_CONDITIONAL([ASAN],[test x$use_asan = xyes]) AM_CONDITIONAL([TSAN],[test x$use_tsan = xyes]) +AM_CONDITIONAL([EXPERIMENTAL_ASM],[test x$experimental_asm = xyes]) + AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version]) AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version]) diff --git a/src/Makefile.am b/src/Makefile.am index 99ef1a36a..aaeada2d1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -413,6 +413,11 @@ crypto_libbitcoin_crypto_a_SOURCES = \ crypto/sha512.cpp \ crypto/sha512.h +if EXPERIMENTAL_ASM + crypto_libbitcoin_crypto_a_SOURCES += crypto/sha256_sse4.cpp +endif + + if ENABLE_MINING EQUIHASH_TROMP_SOURCES = \ pow/tromp/equi_miner.h \ diff --git a/src/crypto/sha256.cpp b/src/crypto/sha256.cpp index 39583c26a..0718d2d25 100644 --- a/src/crypto/sha256.cpp +++ b/src/crypto/sha256.cpp @@ -3,12 +3,22 @@ // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include "crypto/sha256.h" - #include "crypto/common.h" +#include #include #include +#if defined(__x86_64__) || defined(__amd64__) +#if defined(EXPERIMENTAL_ASM) +#include +namespace sha256_sse4 +{ +void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks); +} +#endif +#endif + // Internal implementation code. namespace { @@ -44,9 +54,10 @@ void inline Initialize(uint32_t* s) s[7] = 0x5be0cd19ul; } -/** Perform one SHA-256 transformation, processing a 64-byte chunk. */ -void Transform(uint32_t* s, const unsigned char* chunk) +/** Perform a number of SHA-256 transformations, processing 64-byte chunks. */ +void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks) { + while (blocks--) { uint32_t a = s[0], b = s[1], c = s[2], d = s[3], e = s[4], f = s[5], g = s[6], h = s[7]; uint32_t w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15; @@ -126,11 +137,59 @@ void Transform(uint32_t* s, const unsigned char* chunk) s[5] += f; s[6] += g; s[7] += h; + chunk += 64; + } } } // namespace sha256 + +typedef void (*TransformType)(uint32_t*, const unsigned char*, size_t); + +bool SelfTest(TransformType tr) { + static const unsigned char in1[65] = {0, 0x80}; + static const unsigned char in2[129] = { + 0, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0 + }; + static const uint32_t init[8] = {0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul, 0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul}; + static const uint32_t out1[8] = {0xe3b0c442ul, 0x98fc1c14ul, 0x9afbf4c8ul, 0x996fb924ul, 0x27ae41e4ul, 0x649b934cul, 0xa495991bul, 0x7852b855ul}; + static const uint32_t out2[8] = {0xce4153b0ul, 0x147c2a86ul, 0x3ed4298eul, 0xe0676bc8ul, 0x79fc77a1ul, 0x2abe1f49ul, 0xb2b055dful, 0x1069523eul}; + uint32_t buf[8]; + memcpy(buf, init, sizeof(buf)); + // Process nothing, and check we remain in the initial state. + tr(buf, nullptr, 0); + if (memcmp(buf, init, sizeof(buf))) return false; + // Process the padded empty string (unaligned) + tr(buf, in1 + 1, 1); + if (memcmp(buf, out1, sizeof(buf))) return false; + // Process 64 spaces (unaligned) + memcpy(buf, init, sizeof(buf)); + tr(buf, in2 + 1, 2); + if (memcmp(buf, out2, sizeof(buf))) return false; + return true; +} + +TransformType Transform = sha256::Transform; + } // namespace +std::string SHA256AutoDetect() +{ +#if defined(EXPERIMENTAL_ASM) && (defined(__x86_64__) || defined(__amd64__)) + uint32_t eax, ebx, ecx, edx; + if (__get_cpuid(1, &eax, &ebx, &ecx, &edx) && (ecx >> 19) & 1) { + Transform = sha256_sse4::Transform; + assert(SelfTest(Transform)); + return "sse4"; + } +#endif + + assert(SelfTest(Transform)); + return "standard"; +} ////// SHA-256 @@ -148,14 +207,14 @@ CSHA256& CSHA256::Write(const unsigned char* data, size_t len) memcpy(buf + bufsize, data, 64 - bufsize); bytes += 64 - bufsize; data += 64 - bufsize; - sha256::Transform(s, buf); + Transform(s, buf, 1); bufsize = 0; } - while (end >= data + 64) { - // Process full chunks directly from the source. - sha256::Transform(s, data); - bytes += 64; - data += 64; + if (end - data >= 64) { + size_t blocks = (end - data) / 64; + Transform(s, data, blocks); + data += 64 * blocks; + bytes += 64 * blocks; } if (end > data) { // Fill the buffer with what remains. diff --git a/src/crypto/sha256.h b/src/crypto/sha256.h index 8ecb7348d..24c9c666d 100644 --- a/src/crypto/sha256.h +++ b/src/crypto/sha256.h @@ -1,4 +1,4 @@ -// Copyright (c) 2014 The Bitcoin Core developers +// Copyright (c) 2014-2016 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -7,13 +7,19 @@ #include #include +#include /** A hasher class for SHA-256. */ class CSHA256 { public: static const size_t OUTPUT_SIZE = 32; - +private: + uint32_t s[8]; + unsigned char buf[64]; + size_t bytes; + void FinalizeNoPadding(unsigned char hash[OUTPUT_SIZE], bool enforce_compression); +public: CSHA256(); CSHA256& Write(const unsigned char* data, size_t len); void Finalize(unsigned char hash[OUTPUT_SIZE]); @@ -21,12 +27,11 @@ public: FinalizeNoPadding(hash, true); }; CSHA256& Reset(); - -private: - uint32_t s[8]; - unsigned char buf[64]; - size_t bytes; - void FinalizeNoPadding(unsigned char hash[OUTPUT_SIZE], bool enforce_compression); }; +/** Autodetect the best available SHA256 implementation. + * Returns the name of the implementation. + */ +std::string SHA256AutoDetect(); + #endif // BITCOIN_CRYPTO_SHA256_H diff --git a/src/init.cpp b/src/init.cpp index edbbbb06a..51b39c7fd 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1378,6 +1378,9 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) ECC_Start(); globalVerifyHandle.reset(new ECCVerifyHandle()); + std::string sha256_algo = SHA256AutoDetect(); + LogPrintf("Using the '%s' SHA256 implementation\n", sha256_algo); + //fprintf(stderr,"%s tik10\n", __FUNCTION__); // Sanity check if (!InitSanityCheck()) From f130321b0ad936e0134939dcc65f3ce4c96c417a Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 27 Nov 2019 23:39:03 -0500 Subject: [PATCH 112/339] recovered => outgoing in z_viewtransaction --- src/wallet/rpcwallet.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index b233ad3bd..fa54fdb32 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -4109,6 +4109,7 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp) " \"anchor\" : \"anchor\", (string) The anchor\n" " \"commitment\" : \"commitment\", (string) The commitment\n" " \"rk\" : \"rk\", (string) The rk\n" + " \"zkproof\" : \"zkproof\", (string) Hexadecimal string representation of raw zksnark proof\n" " \"outputPrev\" : n, (numeric) the index of the output within the vShieldedOutput\n" " \"address\" : \"zcashaddress\", (string) The Hush shielded address involved in the transaction\n" " \"value\" : x.xxx (numeric) The amount in " + CURRENCY_UNIT + "\n" @@ -4121,7 +4122,7 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp) " \"type\" : \"sapling\", (string) The type of address\n" " \"output\" : n, (numeric) the index of the output within the vShieldedOutput\n" " \"address\" : \"hushaddress\", (string) The Hush address involved in the transaction\n" - " \"recovered\" : true|false (boolean) True if the output is not for an address in the wallet\n" + " \"outgoing\" : true|false (boolean) True if the output is not for an address in the wallet\n" " \"value\" : x.xxx (numeric) The amount in " + CURRENCY_UNIT + "\n" " \"valueZat\" : xxxx (numeric) The amount in zatoshis\n" " \"memo\" : \"hexmemo\", (string) Hexademical string representation of the memo field\n" @@ -4201,20 +4202,20 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp) SaplingNotePlaintext notePt; SaplingPaymentAddress pa; - bool isRecovered; + bool isOutgoing; auto decrypted = wtx.DecryptSaplingNote(op); if (decrypted) { notePt = decrypted->first; pa = decrypted->second; - isRecovered = false; + isOutgoing = false; } else { // Try recovering the output auto recovered = wtx.RecoverSaplingNote(op, ovks); if (recovered) { notePt = recovered->first; pa = recovered->second; - isRecovered = true; + isOutgoing = true; } else { // Unreadable fprintf(stderr,"Could not recover Sapling note!"); @@ -4226,7 +4227,7 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp) UniValue entry(UniValue::VOBJ); entry.push_back(Pair("type", ADDR_TYPE_SAPLING)); entry.push_back(Pair("output", (int)op.n)); - entry.push_back(Pair("recovered", isRecovered)); + entry.push_back(Pair("outgoing", isOutgoing)); entry.push_back(Pair("address", EncodePaymentAddress(pa))); entry.push_back(Pair("value", ValueFromAmount(notePt.value()))); entry.push_back(Pair("valueZat", notePt.value())); From 32258ee7ed3da2c449d31b77cb86e6e3ba9bb622 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 27 Nov 2019 23:40:37 -0500 Subject: [PATCH 113/339] Add SHA256 sse4 implementation --- src/crypto/sha256_sse4.cpp | 1506 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1506 insertions(+) create mode 100644 src/crypto/sha256_sse4.cpp diff --git a/src/crypto/sha256_sse4.cpp b/src/crypto/sha256_sse4.cpp new file mode 100644 index 000000000..89f529a3a --- /dev/null +++ b/src/crypto/sha256_sse4.cpp @@ -0,0 +1,1506 @@ +// Copyright (c) 2017 The Bitcoin Core developers +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. +// +// This is a translation to GCC extended asm syntax from YASM code by Intel +// (available at the bottom of this file). + +#include +#include + +#if defined(__x86_64__) || defined(__amd64__) + +namespace sha256_sse4 +{ +void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks) +{ + static const uint32_t K256 alignas(16) [] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2, + }; + static const uint32_t FLIP_MASK alignas(16) [] = {0x00010203, 0x04050607, 0x08090a0b, 0x0c0d0e0f}; + static const uint32_t SHUF_00BA alignas(16) [] = {0x03020100, 0x0b0a0908, 0xffffffff, 0xffffffff}; + static const uint32_t SHUF_DC00 alignas(16) [] = {0xffffffff, 0xffffffff, 0x03020100, 0x0b0a0908}; + uint32_t a, b, c, d, f, g, h, y0, y1, y2; + uint64_t tbl; + uint64_t inp_end, inp; + uint32_t xfer alignas(16) [4]; + + __asm__ __volatile__( + "shl $0x6,%2;" + "je Ldone_hash_%=;" + "add %1,%2;" + "mov %2,%14;" + "mov (%0),%3;" + "mov 0x4(%0),%4;" + "mov 0x8(%0),%5;" + "mov 0xc(%0),%6;" + "mov 0x10(%0),%k2;" + "mov 0x14(%0),%7;" + "mov 0x18(%0),%8;" + "mov 0x1c(%0),%9;" + "movdqa %18,%%xmm12;" + "movdqa %19,%%xmm10;" + "movdqa %20,%%xmm11;" + + "Lloop0_%=:" + "lea %17,%13;" + "movdqu (%1),%%xmm4;" + "pshufb %%xmm12,%%xmm4;" + "movdqu 0x10(%1),%%xmm5;" + "pshufb %%xmm12,%%xmm5;" + "movdqu 0x20(%1),%%xmm6;" + "pshufb %%xmm12,%%xmm6;" + "movdqu 0x30(%1),%%xmm7;" + "pshufb %%xmm12,%%xmm7;" + "mov %1,%15;" + "mov $3,%1;" + + "Lloop1_%=:" + "movdqa 0x0(%13),%%xmm9;" + "paddd %%xmm4,%%xmm9;" + "movdqa %%xmm9,%16;" + "movdqa %%xmm7,%%xmm0;" + "mov %k2,%10;" + "ror $0xe,%10;" + "mov %3,%11;" + "palignr $0x4,%%xmm6,%%xmm0;" + "ror $0x9,%11;" + "xor %k2,%10;" + "mov %7,%12;" + "ror $0x5,%10;" + "movdqa %%xmm5,%%xmm1;" + "xor %3,%11;" + "xor %8,%12;" + "paddd %%xmm4,%%xmm0;" + "xor %k2,%10;" + "and %k2,%12;" + "ror $0xb,%11;" + "palignr $0x4,%%xmm4,%%xmm1;" + "xor %3,%11;" + "ror $0x6,%10;" + "xor %8,%12;" + "movdqa %%xmm1,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add %16,%12;" + "movdqa %%xmm1,%%xmm3;" + "mov %3,%10;" + "add %12,%9;" + "mov %3,%12;" + "pslld $0x19,%%xmm1;" + "or %5,%10;" + "add %9,%6;" + "and %5,%12;" + "psrld $0x7,%%xmm2;" + "and %4,%10;" + "add %11,%9;" + "por %%xmm2,%%xmm1;" + "or %12,%10;" + "add %10,%9;" + "movdqa %%xmm3,%%xmm2;" + "mov %6,%10;" + "mov %9,%11;" + "movdqa %%xmm3,%%xmm8;" + "ror $0xe,%10;" + "xor %6,%10;" + "mov %k2,%12;" + "ror $0x9,%11;" + "pslld $0xe,%%xmm3;" + "xor %9,%11;" + "ror $0x5,%10;" + "xor %7,%12;" + "psrld $0x12,%%xmm2;" + "ror $0xb,%11;" + "xor %6,%10;" + "and %6,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm1;" + "xor %9,%11;" + "xor %7,%12;" + "psrld $0x3,%%xmm8;" + "add %10,%12;" + "add 4+%16,%12;" + "ror $0x2,%11;" + "pxor %%xmm2,%%xmm1;" + "mov %9,%10;" + "add %12,%8;" + "mov %9,%12;" + "pxor %%xmm8,%%xmm1;" + "or %4,%10;" + "add %8,%5;" + "and %4,%12;" + "pshufd $0xfa,%%xmm7,%%xmm2;" + "and %3,%10;" + "add %11,%8;" + "paddd %%xmm1,%%xmm0;" + "or %12,%10;" + "add %10,%8;" + "movdqa %%xmm2,%%xmm3;" + "mov %5,%10;" + "mov %8,%11;" + "ror $0xe,%10;" + "movdqa %%xmm2,%%xmm8;" + "xor %5,%10;" + "ror $0x9,%11;" + "mov %6,%12;" + "xor %8,%11;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %k2,%12;" + "psrlq $0x13,%%xmm3;" + "xor %5,%10;" + "and %5,%12;" + "psrld $0xa,%%xmm8;" + "ror $0xb,%11;" + "xor %8,%11;" + "xor %k2,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm2;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "pxor %%xmm2,%%xmm8;" + "mov %8,%10;" + "add %12,%7;" + "mov %8,%12;" + "pshufb %%xmm10,%%xmm8;" + "or %3,%10;" + "add %7,%4;" + "and %3,%12;" + "paddd %%xmm8,%%xmm0;" + "and %9,%10;" + "add %11,%7;" + "pshufd $0x50,%%xmm0,%%xmm2;" + "or %12,%10;" + "add %10,%7;" + "movdqa %%xmm2,%%xmm3;" + "mov %4,%10;" + "ror $0xe,%10;" + "mov %7,%11;" + "movdqa %%xmm2,%%xmm4;" + "ror $0x9,%11;" + "xor %4,%10;" + "mov %5,%12;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %7,%11;" + "xor %6,%12;" + "psrlq $0x13,%%xmm3;" + "xor %4,%10;" + "and %4,%12;" + "ror $0xb,%11;" + "psrld $0xa,%%xmm4;" + "xor %7,%11;" + "ror $0x6,%10;" + "xor %6,%12;" + "pxor %%xmm3,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add 12+%16,%12;" + "pxor %%xmm2,%%xmm4;" + "mov %7,%10;" + "add %12,%k2;" + "mov %7,%12;" + "pshufb %%xmm11,%%xmm4;" + "or %9,%10;" + "add %k2,%3;" + "and %9,%12;" + "paddd %%xmm0,%%xmm4;" + "and %8,%10;" + "add %11,%k2;" + "or %12,%10;" + "add %10,%k2;" + "movdqa 0x10(%13),%%xmm9;" + "paddd %%xmm5,%%xmm9;" + "movdqa %%xmm9,%16;" + "movdqa %%xmm4,%%xmm0;" + "mov %3,%10;" + "ror $0xe,%10;" + "mov %k2,%11;" + "palignr $0x4,%%xmm7,%%xmm0;" + "ror $0x9,%11;" + "xor %3,%10;" + "mov %4,%12;" + "ror $0x5,%10;" + "movdqa %%xmm6,%%xmm1;" + "xor %k2,%11;" + "xor %5,%12;" + "paddd %%xmm5,%%xmm0;" + "xor %3,%10;" + "and %3,%12;" + "ror $0xb,%11;" + "palignr $0x4,%%xmm5,%%xmm1;" + "xor %k2,%11;" + "ror $0x6,%10;" + "xor %5,%12;" + "movdqa %%xmm1,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add %16,%12;" + "movdqa %%xmm1,%%xmm3;" + "mov %k2,%10;" + "add %12,%6;" + "mov %k2,%12;" + "pslld $0x19,%%xmm1;" + "or %8,%10;" + "add %6,%9;" + "and %8,%12;" + "psrld $0x7,%%xmm2;" + "and %7,%10;" + "add %11,%6;" + "por %%xmm2,%%xmm1;" + "or %12,%10;" + "add %10,%6;" + "movdqa %%xmm3,%%xmm2;" + "mov %9,%10;" + "mov %6,%11;" + "movdqa %%xmm3,%%xmm8;" + "ror $0xe,%10;" + "xor %9,%10;" + "mov %3,%12;" + "ror $0x9,%11;" + "pslld $0xe,%%xmm3;" + "xor %6,%11;" + "ror $0x5,%10;" + "xor %4,%12;" + "psrld $0x12,%%xmm2;" + "ror $0xb,%11;" + "xor %9,%10;" + "and %9,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm1;" + "xor %6,%11;" + "xor %4,%12;" + "psrld $0x3,%%xmm8;" + "add %10,%12;" + "add 4+%16,%12;" + "ror $0x2,%11;" + "pxor %%xmm2,%%xmm1;" + "mov %6,%10;" + "add %12,%5;" + "mov %6,%12;" + "pxor %%xmm8,%%xmm1;" + "or %7,%10;" + "add %5,%8;" + "and %7,%12;" + "pshufd $0xfa,%%xmm4,%%xmm2;" + "and %k2,%10;" + "add %11,%5;" + "paddd %%xmm1,%%xmm0;" + "or %12,%10;" + "add %10,%5;" + "movdqa %%xmm2,%%xmm3;" + "mov %8,%10;" + "mov %5,%11;" + "ror $0xe,%10;" + "movdqa %%xmm2,%%xmm8;" + "xor %8,%10;" + "ror $0x9,%11;" + "mov %9,%12;" + "xor %5,%11;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %3,%12;" + "psrlq $0x13,%%xmm3;" + "xor %8,%10;" + "and %8,%12;" + "psrld $0xa,%%xmm8;" + "ror $0xb,%11;" + "xor %5,%11;" + "xor %3,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm2;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "pxor %%xmm2,%%xmm8;" + "mov %5,%10;" + "add %12,%4;" + "mov %5,%12;" + "pshufb %%xmm10,%%xmm8;" + "or %k2,%10;" + "add %4,%7;" + "and %k2,%12;" + "paddd %%xmm8,%%xmm0;" + "and %6,%10;" + "add %11,%4;" + "pshufd $0x50,%%xmm0,%%xmm2;" + "or %12,%10;" + "add %10,%4;" + "movdqa %%xmm2,%%xmm3;" + "mov %7,%10;" + "ror $0xe,%10;" + "mov %4,%11;" + "movdqa %%xmm2,%%xmm5;" + "ror $0x9,%11;" + "xor %7,%10;" + "mov %8,%12;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %4,%11;" + "xor %9,%12;" + "psrlq $0x13,%%xmm3;" + "xor %7,%10;" + "and %7,%12;" + "ror $0xb,%11;" + "psrld $0xa,%%xmm5;" + "xor %4,%11;" + "ror $0x6,%10;" + "xor %9,%12;" + "pxor %%xmm3,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add 12+%16,%12;" + "pxor %%xmm2,%%xmm5;" + "mov %4,%10;" + "add %12,%3;" + "mov %4,%12;" + "pshufb %%xmm11,%%xmm5;" + "or %6,%10;" + "add %3,%k2;" + "and %6,%12;" + "paddd %%xmm0,%%xmm5;" + "and %5,%10;" + "add %11,%3;" + "or %12,%10;" + "add %10,%3;" + "movdqa 0x20(%13),%%xmm9;" + "paddd %%xmm6,%%xmm9;" + "movdqa %%xmm9,%16;" + "movdqa %%xmm5,%%xmm0;" + "mov %k2,%10;" + "ror $0xe,%10;" + "mov %3,%11;" + "palignr $0x4,%%xmm4,%%xmm0;" + "ror $0x9,%11;" + "xor %k2,%10;" + "mov %7,%12;" + "ror $0x5,%10;" + "movdqa %%xmm7,%%xmm1;" + "xor %3,%11;" + "xor %8,%12;" + "paddd %%xmm6,%%xmm0;" + "xor %k2,%10;" + "and %k2,%12;" + "ror $0xb,%11;" + "palignr $0x4,%%xmm6,%%xmm1;" + "xor %3,%11;" + "ror $0x6,%10;" + "xor %8,%12;" + "movdqa %%xmm1,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add %16,%12;" + "movdqa %%xmm1,%%xmm3;" + "mov %3,%10;" + "add %12,%9;" + "mov %3,%12;" + "pslld $0x19,%%xmm1;" + "or %5,%10;" + "add %9,%6;" + "and %5,%12;" + "psrld $0x7,%%xmm2;" + "and %4,%10;" + "add %11,%9;" + "por %%xmm2,%%xmm1;" + "or %12,%10;" + "add %10,%9;" + "movdqa %%xmm3,%%xmm2;" + "mov %6,%10;" + "mov %9,%11;" + "movdqa %%xmm3,%%xmm8;" + "ror $0xe,%10;" + "xor %6,%10;" + "mov %k2,%12;" + "ror $0x9,%11;" + "pslld $0xe,%%xmm3;" + "xor %9,%11;" + "ror $0x5,%10;" + "xor %7,%12;" + "psrld $0x12,%%xmm2;" + "ror $0xb,%11;" + "xor %6,%10;" + "and %6,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm1;" + "xor %9,%11;" + "xor %7,%12;" + "psrld $0x3,%%xmm8;" + "add %10,%12;" + "add 4+%16,%12;" + "ror $0x2,%11;" + "pxor %%xmm2,%%xmm1;" + "mov %9,%10;" + "add %12,%8;" + "mov %9,%12;" + "pxor %%xmm8,%%xmm1;" + "or %4,%10;" + "add %8,%5;" + "and %4,%12;" + "pshufd $0xfa,%%xmm5,%%xmm2;" + "and %3,%10;" + "add %11,%8;" + "paddd %%xmm1,%%xmm0;" + "or %12,%10;" + "add %10,%8;" + "movdqa %%xmm2,%%xmm3;" + "mov %5,%10;" + "mov %8,%11;" + "ror $0xe,%10;" + "movdqa %%xmm2,%%xmm8;" + "xor %5,%10;" + "ror $0x9,%11;" + "mov %6,%12;" + "xor %8,%11;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %k2,%12;" + "psrlq $0x13,%%xmm3;" + "xor %5,%10;" + "and %5,%12;" + "psrld $0xa,%%xmm8;" + "ror $0xb,%11;" + "xor %8,%11;" + "xor %k2,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm2;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "pxor %%xmm2,%%xmm8;" + "mov %8,%10;" + "add %12,%7;" + "mov %8,%12;" + "pshufb %%xmm10,%%xmm8;" + "or %3,%10;" + "add %7,%4;" + "and %3,%12;" + "paddd %%xmm8,%%xmm0;" + "and %9,%10;" + "add %11,%7;" + "pshufd $0x50,%%xmm0,%%xmm2;" + "or %12,%10;" + "add %10,%7;" + "movdqa %%xmm2,%%xmm3;" + "mov %4,%10;" + "ror $0xe,%10;" + "mov %7,%11;" + "movdqa %%xmm2,%%xmm6;" + "ror $0x9,%11;" + "xor %4,%10;" + "mov %5,%12;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %7,%11;" + "xor %6,%12;" + "psrlq $0x13,%%xmm3;" + "xor %4,%10;" + "and %4,%12;" + "ror $0xb,%11;" + "psrld $0xa,%%xmm6;" + "xor %7,%11;" + "ror $0x6,%10;" + "xor %6,%12;" + "pxor %%xmm3,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add 12+%16,%12;" + "pxor %%xmm2,%%xmm6;" + "mov %7,%10;" + "add %12,%k2;" + "mov %7,%12;" + "pshufb %%xmm11,%%xmm6;" + "or %9,%10;" + "add %k2,%3;" + "and %9,%12;" + "paddd %%xmm0,%%xmm6;" + "and %8,%10;" + "add %11,%k2;" + "or %12,%10;" + "add %10,%k2;" + "movdqa 0x30(%13),%%xmm9;" + "paddd %%xmm7,%%xmm9;" + "movdqa %%xmm9,%16;" + "add $0x40,%13;" + "movdqa %%xmm6,%%xmm0;" + "mov %3,%10;" + "ror $0xe,%10;" + "mov %k2,%11;" + "palignr $0x4,%%xmm5,%%xmm0;" + "ror $0x9,%11;" + "xor %3,%10;" + "mov %4,%12;" + "ror $0x5,%10;" + "movdqa %%xmm4,%%xmm1;" + "xor %k2,%11;" + "xor %5,%12;" + "paddd %%xmm7,%%xmm0;" + "xor %3,%10;" + "and %3,%12;" + "ror $0xb,%11;" + "palignr $0x4,%%xmm7,%%xmm1;" + "xor %k2,%11;" + "ror $0x6,%10;" + "xor %5,%12;" + "movdqa %%xmm1,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add %16,%12;" + "movdqa %%xmm1,%%xmm3;" + "mov %k2,%10;" + "add %12,%6;" + "mov %k2,%12;" + "pslld $0x19,%%xmm1;" + "or %8,%10;" + "add %6,%9;" + "and %8,%12;" + "psrld $0x7,%%xmm2;" + "and %7,%10;" + "add %11,%6;" + "por %%xmm2,%%xmm1;" + "or %12,%10;" + "add %10,%6;" + "movdqa %%xmm3,%%xmm2;" + "mov %9,%10;" + "mov %6,%11;" + "movdqa %%xmm3,%%xmm8;" + "ror $0xe,%10;" + "xor %9,%10;" + "mov %3,%12;" + "ror $0x9,%11;" + "pslld $0xe,%%xmm3;" + "xor %6,%11;" + "ror $0x5,%10;" + "xor %4,%12;" + "psrld $0x12,%%xmm2;" + "ror $0xb,%11;" + "xor %9,%10;" + "and %9,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm1;" + "xor %6,%11;" + "xor %4,%12;" + "psrld $0x3,%%xmm8;" + "add %10,%12;" + "add 4+%16,%12;" + "ror $0x2,%11;" + "pxor %%xmm2,%%xmm1;" + "mov %6,%10;" + "add %12,%5;" + "mov %6,%12;" + "pxor %%xmm8,%%xmm1;" + "or %7,%10;" + "add %5,%8;" + "and %7,%12;" + "pshufd $0xfa,%%xmm6,%%xmm2;" + "and %k2,%10;" + "add %11,%5;" + "paddd %%xmm1,%%xmm0;" + "or %12,%10;" + "add %10,%5;" + "movdqa %%xmm2,%%xmm3;" + "mov %8,%10;" + "mov %5,%11;" + "ror $0xe,%10;" + "movdqa %%xmm2,%%xmm8;" + "xor %8,%10;" + "ror $0x9,%11;" + "mov %9,%12;" + "xor %5,%11;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %3,%12;" + "psrlq $0x13,%%xmm3;" + "xor %8,%10;" + "and %8,%12;" + "psrld $0xa,%%xmm8;" + "ror $0xb,%11;" + "xor %5,%11;" + "xor %3,%12;" + "ror $0x6,%10;" + "pxor %%xmm3,%%xmm2;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "pxor %%xmm2,%%xmm8;" + "mov %5,%10;" + "add %12,%4;" + "mov %5,%12;" + "pshufb %%xmm10,%%xmm8;" + "or %k2,%10;" + "add %4,%7;" + "and %k2,%12;" + "paddd %%xmm8,%%xmm0;" + "and %6,%10;" + "add %11,%4;" + "pshufd $0x50,%%xmm0,%%xmm2;" + "or %12,%10;" + "add %10,%4;" + "movdqa %%xmm2,%%xmm3;" + "mov %7,%10;" + "ror $0xe,%10;" + "mov %4,%11;" + "movdqa %%xmm2,%%xmm7;" + "ror $0x9,%11;" + "xor %7,%10;" + "mov %8,%12;" + "ror $0x5,%10;" + "psrlq $0x11,%%xmm2;" + "xor %4,%11;" + "xor %9,%12;" + "psrlq $0x13,%%xmm3;" + "xor %7,%10;" + "and %7,%12;" + "ror $0xb,%11;" + "psrld $0xa,%%xmm7;" + "xor %4,%11;" + "ror $0x6,%10;" + "xor %9,%12;" + "pxor %%xmm3,%%xmm2;" + "ror $0x2,%11;" + "add %10,%12;" + "add 12+%16,%12;" + "pxor %%xmm2,%%xmm7;" + "mov %4,%10;" + "add %12,%3;" + "mov %4,%12;" + "pshufb %%xmm11,%%xmm7;" + "or %6,%10;" + "add %3,%k2;" + "and %6,%12;" + "paddd %%xmm0,%%xmm7;" + "and %5,%10;" + "add %11,%3;" + "or %12,%10;" + "add %10,%3;" + "sub $0x1,%1;" + "jne Lloop1_%=;" + "mov $0x2,%1;" + + "Lloop2_%=:" + "paddd 0x0(%13),%%xmm4;" + "movdqa %%xmm4,%16;" + "mov %k2,%10;" + "ror $0xe,%10;" + "mov %3,%11;" + "xor %k2,%10;" + "ror $0x9,%11;" + "mov %7,%12;" + "xor %3,%11;" + "ror $0x5,%10;" + "xor %8,%12;" + "xor %k2,%10;" + "ror $0xb,%11;" + "and %k2,%12;" + "xor %3,%11;" + "ror $0x6,%10;" + "xor %8,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add %16,%12;" + "mov %3,%10;" + "add %12,%9;" + "mov %3,%12;" + "or %5,%10;" + "add %9,%6;" + "and %5,%12;" + "and %4,%10;" + "add %11,%9;" + "or %12,%10;" + "add %10,%9;" + "mov %6,%10;" + "ror $0xe,%10;" + "mov %9,%11;" + "xor %6,%10;" + "ror $0x9,%11;" + "mov %k2,%12;" + "xor %9,%11;" + "ror $0x5,%10;" + "xor %7,%12;" + "xor %6,%10;" + "ror $0xb,%11;" + "and %6,%12;" + "xor %9,%11;" + "ror $0x6,%10;" + "xor %7,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 4+%16,%12;" + "mov %9,%10;" + "add %12,%8;" + "mov %9,%12;" + "or %4,%10;" + "add %8,%5;" + "and %4,%12;" + "and %3,%10;" + "add %11,%8;" + "or %12,%10;" + "add %10,%8;" + "mov %5,%10;" + "ror $0xe,%10;" + "mov %8,%11;" + "xor %5,%10;" + "ror $0x9,%11;" + "mov %6,%12;" + "xor %8,%11;" + "ror $0x5,%10;" + "xor %k2,%12;" + "xor %5,%10;" + "ror $0xb,%11;" + "and %5,%12;" + "xor %8,%11;" + "ror $0x6,%10;" + "xor %k2,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "mov %8,%10;" + "add %12,%7;" + "mov %8,%12;" + "or %3,%10;" + "add %7,%4;" + "and %3,%12;" + "and %9,%10;" + "add %11,%7;" + "or %12,%10;" + "add %10,%7;" + "mov %4,%10;" + "ror $0xe,%10;" + "mov %7,%11;" + "xor %4,%10;" + "ror $0x9,%11;" + "mov %5,%12;" + "xor %7,%11;" + "ror $0x5,%10;" + "xor %6,%12;" + "xor %4,%10;" + "ror $0xb,%11;" + "and %4,%12;" + "xor %7,%11;" + "ror $0x6,%10;" + "xor %6,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 12+%16,%12;" + "mov %7,%10;" + "add %12,%k2;" + "mov %7,%12;" + "or %9,%10;" + "add %k2,%3;" + "and %9,%12;" + "and %8,%10;" + "add %11,%k2;" + "or %12,%10;" + "add %10,%k2;" + "paddd 0x10(%13),%%xmm5;" + "movdqa %%xmm5,%16;" + "add $0x20,%13;" + "mov %3,%10;" + "ror $0xe,%10;" + "mov %k2,%11;" + "xor %3,%10;" + "ror $0x9,%11;" + "mov %4,%12;" + "xor %k2,%11;" + "ror $0x5,%10;" + "xor %5,%12;" + "xor %3,%10;" + "ror $0xb,%11;" + "and %3,%12;" + "xor %k2,%11;" + "ror $0x6,%10;" + "xor %5,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add %16,%12;" + "mov %k2,%10;" + "add %12,%6;" + "mov %k2,%12;" + "or %8,%10;" + "add %6,%9;" + "and %8,%12;" + "and %7,%10;" + "add %11,%6;" + "or %12,%10;" + "add %10,%6;" + "mov %9,%10;" + "ror $0xe,%10;" + "mov %6,%11;" + "xor %9,%10;" + "ror $0x9,%11;" + "mov %3,%12;" + "xor %6,%11;" + "ror $0x5,%10;" + "xor %4,%12;" + "xor %9,%10;" + "ror $0xb,%11;" + "and %9,%12;" + "xor %6,%11;" + "ror $0x6,%10;" + "xor %4,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 4+%16,%12;" + "mov %6,%10;" + "add %12,%5;" + "mov %6,%12;" + "or %7,%10;" + "add %5,%8;" + "and %7,%12;" + "and %k2,%10;" + "add %11,%5;" + "or %12,%10;" + "add %10,%5;" + "mov %8,%10;" + "ror $0xe,%10;" + "mov %5,%11;" + "xor %8,%10;" + "ror $0x9,%11;" + "mov %9,%12;" + "xor %5,%11;" + "ror $0x5,%10;" + "xor %3,%12;" + "xor %8,%10;" + "ror $0xb,%11;" + "and %8,%12;" + "xor %5,%11;" + "ror $0x6,%10;" + "xor %3,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 8+%16,%12;" + "mov %5,%10;" + "add %12,%4;" + "mov %5,%12;" + "or %k2,%10;" + "add %4,%7;" + "and %k2,%12;" + "and %6,%10;" + "add %11,%4;" + "or %12,%10;" + "add %10,%4;" + "mov %7,%10;" + "ror $0xe,%10;" + "mov %4,%11;" + "xor %7,%10;" + "ror $0x9,%11;" + "mov %8,%12;" + "xor %4,%11;" + "ror $0x5,%10;" + "xor %9,%12;" + "xor %7,%10;" + "ror $0xb,%11;" + "and %7,%12;" + "xor %4,%11;" + "ror $0x6,%10;" + "xor %9,%12;" + "add %10,%12;" + "ror $0x2,%11;" + "add 12+%16,%12;" + "mov %4,%10;" + "add %12,%3;" + "mov %4,%12;" + "or %6,%10;" + "add %3,%k2;" + "and %6,%12;" + "and %5,%10;" + "add %11,%3;" + "or %12,%10;" + "add %10,%3;" + "movdqa %%xmm6,%%xmm4;" + "movdqa %%xmm7,%%xmm5;" + "sub $0x1,%1;" + "jne Lloop2_%=;" + "add (%0),%3;" + "mov %3,(%0);" + "add 0x4(%0),%4;" + "mov %4,0x4(%0);" + "add 0x8(%0),%5;" + "mov %5,0x8(%0);" + "add 0xc(%0),%6;" + "mov %6,0xc(%0);" + "add 0x10(%0),%k2;" + "mov %k2,0x10(%0);" + "add 0x14(%0),%7;" + "mov %7,0x14(%0);" + "add 0x18(%0),%8;" + "mov %8,0x18(%0);" + "add 0x1c(%0),%9;" + "mov %9,0x1c(%0);" + "mov %15,%1;" + "add $0x40,%1;" + "cmp %14,%1;" + "jne Lloop0_%=;" + + "Ldone_hash_%=:" + + : "+r"(s), "+r"(chunk), "+r"(blocks), "=r"(a), "=r"(b), "=r"(c), "=r"(d), /* e = chunk */ "=r"(f), "=r"(g), "=r"(h), "=r"(y0), "=r"(y1), "=r"(y2), "=r"(tbl), "+m"(inp_end), "+m"(inp), "+m"(xfer) + : "m"(K256), "m"(FLIP_MASK), "m"(SHUF_00BA), "m"(SHUF_DC00) + : "cc", "memory", "xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7", "xmm8", "xmm9", "xmm10", "xmm11", "xmm12" + ); +} +} + +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Copyright (c) 2012, Intel Corporation +; +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are +; met: +; +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the +; distribution. +; +; * Neither the name of the Intel Corporation nor the names of its +; contributors may be used to endorse or promote products derived from +; this software without specific prior written permission. +; +; +; THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION "AS IS" AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR +; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Example YASM command lines: +; Windows: yasm -Xvc -f x64 -rnasm -pnasm -o sha256_sse4.obj -g cv8 sha256_sse4.asm +; Linux: yasm -f x64 -f elf64 -X gnu -g dwarf2 -D LINUX -o sha256_sse4.o sha256_sse4.asm +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; This code is described in an Intel White-Paper: +; "Fast SHA-256 Implementations on Intel Architecture Processors" +; +; To find it, surf to http://www.intel.com/p/en_US/embedded +; and search for that title. +; The paper is expected to be released roughly at the end of April, 2012 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; This code schedules 1 blocks at a time, with 4 lanes per block +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +%define MOVDQ movdqu ;; assume buffers not aligned + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Define Macros + +; addm [mem], reg +; Add reg to mem using reg-mem add and store +%macro addm 2 + add %2, %1 + mov %1, %2 +%endm + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +; COPY_XMM_AND_BSWAP xmm, [mem], byte_flip_mask +; Load xmm with mem and byte swap each dword +%macro COPY_XMM_AND_BSWAP 3 + MOVDQ %1, %2 + pshufb %1, %3 +%endmacro + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +%define X0 xmm4 +%define X1 xmm5 +%define X2 xmm6 +%define X3 xmm7 + +%define XTMP0 xmm0 +%define XTMP1 xmm1 +%define XTMP2 xmm2 +%define XTMP3 xmm3 +%define XTMP4 xmm8 +%define XFER xmm9 + +%define SHUF_00BA xmm10 ; shuffle xBxA -> 00BA +%define SHUF_DC00 xmm11 ; shuffle xDxC -> DC00 +%define BYTE_FLIP_MASK xmm12 + +%ifdef LINUX +%define NUM_BLKS rdx ; 3rd arg +%define CTX rsi ; 2nd arg +%define INP rdi ; 1st arg + +%define SRND rdi ; clobbers INP +%define c ecx +%define d r8d +%define e edx +%else +%define NUM_BLKS r8 ; 3rd arg +%define CTX rdx ; 2nd arg +%define INP rcx ; 1st arg + +%define SRND rcx ; clobbers INP +%define c edi +%define d esi +%define e r8d + +%endif +%define TBL rbp +%define a eax +%define b ebx + +%define f r9d +%define g r10d +%define h r11d + +%define y0 r13d +%define y1 r14d +%define y2 r15d + + + +_INP_END_SIZE equ 8 +_INP_SIZE equ 8 +_XFER_SIZE equ 8 +%ifdef LINUX +_XMM_SAVE_SIZE equ 0 +%else +_XMM_SAVE_SIZE equ 7*16 +%endif +; STACK_SIZE plus pushes must be an odd multiple of 8 +_ALIGN_SIZE equ 8 + +_INP_END equ 0 +_INP equ _INP_END + _INP_END_SIZE +_XFER equ _INP + _INP_SIZE +_XMM_SAVE equ _XFER + _XFER_SIZE + _ALIGN_SIZE +STACK_SIZE equ _XMM_SAVE + _XMM_SAVE_SIZE + +; rotate_Xs +; Rotate values of symbols X0...X3 +%macro rotate_Xs 0 +%xdefine X_ X0 +%xdefine X0 X1 +%xdefine X1 X2 +%xdefine X2 X3 +%xdefine X3 X_ +%endm + +; ROTATE_ARGS +; Rotate values of symbols a...h +%macro ROTATE_ARGS 0 +%xdefine TMP_ h +%xdefine h g +%xdefine g f +%xdefine f e +%xdefine e d +%xdefine d c +%xdefine c b +%xdefine b a +%xdefine a TMP_ +%endm + +%macro FOUR_ROUNDS_AND_SCHED 0 + ;; compute s0 four at a time and s1 two at a time + ;; compute W[-16] + W[-7] 4 at a time + movdqa XTMP0, X3 + mov y0, e ; y0 = e + ror y0, (25-11) ; y0 = e >> (25-11) + mov y1, a ; y1 = a + palignr XTMP0, X2, 4 ; XTMP0 = W[-7] + ror y1, (22-13) ; y1 = a >> (22-13) + xor y0, e ; y0 = e ^ (e >> (25-11)) + mov y2, f ; y2 = f + ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) + movdqa XTMP1, X1 + xor y1, a ; y1 = a ^ (a >> (22-13) + xor y2, g ; y2 = f^g + paddd XTMP0, X0 ; XTMP0 = W[-7] + W[-16] + xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) + and y2, e ; y2 = (f^g)&e + ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) + ;; compute s0 + palignr XTMP1, X0, 4 ; XTMP1 = W[-15] + xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) + ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) + xor y2, g ; y2 = CH = ((f^g)&e)^g + movdqa XTMP2, XTMP1 ; XTMP2 = W[-15] + ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) + add y2, y0 ; y2 = S1 + CH + add y2, [rsp + _XFER + 0*4] ; y2 = k + w + S1 + CH + movdqa XTMP3, XTMP1 ; XTMP3 = W[-15] + mov y0, a ; y0 = a + add h, y2 ; h = h + S1 + CH + k + w + mov y2, a ; y2 = a + pslld XTMP1, (32-7) + or y0, c ; y0 = a|c + add d, h ; d = d + h + S1 + CH + k + w + and y2, c ; y2 = a&c + psrld XTMP2, 7 + and y0, b ; y0 = (a|c)&b + add h, y1 ; h = h + S1 + CH + k + w + S0 + por XTMP1, XTMP2 ; XTMP1 = W[-15] ror 7 + or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) + add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ + +ROTATE_ARGS + movdqa XTMP2, XTMP3 ; XTMP2 = W[-15] + mov y0, e ; y0 = e + mov y1, a ; y1 = a + movdqa XTMP4, XTMP3 ; XTMP4 = W[-15] + ror y0, (25-11) ; y0 = e >> (25-11) + xor y0, e ; y0 = e ^ (e >> (25-11)) + mov y2, f ; y2 = f + ror y1, (22-13) ; y1 = a >> (22-13) + pslld XTMP3, (32-18) + xor y1, a ; y1 = a ^ (a >> (22-13) + ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) + xor y2, g ; y2 = f^g + psrld XTMP2, 18 + ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) + xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) + and y2, e ; y2 = (f^g)&e + ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) + pxor XTMP1, XTMP3 + xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) + xor y2, g ; y2 = CH = ((f^g)&e)^g + psrld XTMP4, 3 ; XTMP4 = W[-15] >> 3 + add y2, y0 ; y2 = S1 + CH + add y2, [rsp + _XFER + 1*4] ; y2 = k + w + S1 + CH + ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) + pxor XTMP1, XTMP2 ; XTMP1 = W[-15] ror 7 ^ W[-15] ror 18 + mov y0, a ; y0 = a + add h, y2 ; h = h + S1 + CH + k + w + mov y2, a ; y2 = a + pxor XTMP1, XTMP4 ; XTMP1 = s0 + or y0, c ; y0 = a|c + add d, h ; d = d + h + S1 + CH + k + w + and y2, c ; y2 = a&c + ;; compute low s1 + pshufd XTMP2, X3, 11111010b ; XTMP2 = W[-2] {BBAA} + and y0, b ; y0 = (a|c)&b + add h, y1 ; h = h + S1 + CH + k + w + S0 + paddd XTMP0, XTMP1 ; XTMP0 = W[-16] + W[-7] + s0 + or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) + add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ + +ROTATE_ARGS + movdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {BBAA} + mov y0, e ; y0 = e + mov y1, a ; y1 = a + ror y0, (25-11) ; y0 = e >> (25-11) + movdqa XTMP4, XTMP2 ; XTMP4 = W[-2] {BBAA} + xor y0, e ; y0 = e ^ (e >> (25-11)) + ror y1, (22-13) ; y1 = a >> (22-13) + mov y2, f ; y2 = f + xor y1, a ; y1 = a ^ (a >> (22-13) + ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) + psrlq XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xBxA} + xor y2, g ; y2 = f^g + psrlq XTMP3, 19 ; XTMP3 = W[-2] ror 19 {xBxA} + xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) + and y2, e ; y2 = (f^g)&e + psrld XTMP4, 10 ; XTMP4 = W[-2] >> 10 {BBAA} + ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) + xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) + xor y2, g ; y2 = CH = ((f^g)&e)^g + ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) + pxor XTMP2, XTMP3 + add y2, y0 ; y2 = S1 + CH + ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) + add y2, [rsp + _XFER + 2*4] ; y2 = k + w + S1 + CH + pxor XTMP4, XTMP2 ; XTMP4 = s1 {xBxA} + mov y0, a ; y0 = a + add h, y2 ; h = h + S1 + CH + k + w + mov y2, a ; y2 = a + pshufb XTMP4, SHUF_00BA ; XTMP4 = s1 {00BA} + or y0, c ; y0 = a|c + add d, h ; d = d + h + S1 + CH + k + w + and y2, c ; y2 = a&c + paddd XTMP0, XTMP4 ; XTMP0 = {..., ..., W[1], W[0]} + and y0, b ; y0 = (a|c)&b + add h, y1 ; h = h + S1 + CH + k + w + S0 + ;; compute high s1 + pshufd XTMP2, XTMP0, 01010000b ; XTMP2 = W[-2] {DDCC} + or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) + add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ + +ROTATE_ARGS + movdqa XTMP3, XTMP2 ; XTMP3 = W[-2] {DDCC} + mov y0, e ; y0 = e + ror y0, (25-11) ; y0 = e >> (25-11) + mov y1, a ; y1 = a + movdqa X0, XTMP2 ; X0 = W[-2] {DDCC} + ror y1, (22-13) ; y1 = a >> (22-13) + xor y0, e ; y0 = e ^ (e >> (25-11)) + mov y2, f ; y2 = f + ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) + psrlq XTMP2, 17 ; XTMP2 = W[-2] ror 17 {xDxC} + xor y1, a ; y1 = a ^ (a >> (22-13) + xor y2, g ; y2 = f^g + psrlq XTMP3, 19 ; XTMP3 = W[-2] ror 19 {xDxC} + xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) + and y2, e ; y2 = (f^g)&e + ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) + psrld X0, 10 ; X0 = W[-2] >> 10 {DDCC} + xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) + ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) + xor y2, g ; y2 = CH = ((f^g)&e)^g + pxor XTMP2, XTMP3 + ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) + add y2, y0 ; y2 = S1 + CH + add y2, [rsp + _XFER + 3*4] ; y2 = k + w + S1 + CH + pxor X0, XTMP2 ; X0 = s1 {xDxC} + mov y0, a ; y0 = a + add h, y2 ; h = h + S1 + CH + k + w + mov y2, a ; y2 = a + pshufb X0, SHUF_DC00 ; X0 = s1 {DC00} + or y0, c ; y0 = a|c + add d, h ; d = d + h + S1 + CH + k + w + and y2, c ; y2 = a&c + paddd X0, XTMP0 ; X0 = {W[3], W[2], W[1], W[0]} + and y0, b ; y0 = (a|c)&b + add h, y1 ; h = h + S1 + CH + k + w + S0 + or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) + add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ + +ROTATE_ARGS +rotate_Xs +%endm + +;; input is [rsp + _XFER + %1 * 4] +%macro DO_ROUND 1 + mov y0, e ; y0 = e + ror y0, (25-11) ; y0 = e >> (25-11) + mov y1, a ; y1 = a + xor y0, e ; y0 = e ^ (e >> (25-11)) + ror y1, (22-13) ; y1 = a >> (22-13) + mov y2, f ; y2 = f + xor y1, a ; y1 = a ^ (a >> (22-13) + ror y0, (11-6) ; y0 = (e >> (11-6)) ^ (e >> (25-6)) + xor y2, g ; y2 = f^g + xor y0, e ; y0 = e ^ (e >> (11-6)) ^ (e >> (25-6)) + ror y1, (13-2) ; y1 = (a >> (13-2)) ^ (a >> (22-2)) + and y2, e ; y2 = (f^g)&e + xor y1, a ; y1 = a ^ (a >> (13-2)) ^ (a >> (22-2)) + ror y0, 6 ; y0 = S1 = (e>>6) & (e>>11) ^ (e>>25) + xor y2, g ; y2 = CH = ((f^g)&e)^g + add y2, y0 ; y2 = S1 + CH + ror y1, 2 ; y1 = S0 = (a>>2) ^ (a>>13) ^ (a>>22) + add y2, [rsp + _XFER + %1 * 4] ; y2 = k + w + S1 + CH + mov y0, a ; y0 = a + add h, y2 ; h = h + S1 + CH + k + w + mov y2, a ; y2 = a + or y0, c ; y0 = a|c + add d, h ; d = d + h + S1 + CH + k + w + and y2, c ; y2 = a&c + and y0, b ; y0 = (a|c)&b + add h, y1 ; h = h + S1 + CH + k + w + S0 + or y0, y2 ; y0 = MAJ = (a|c)&b)|(a&c) + add h, y0 ; h = h + S1 + CH + k + w + S0 + MAJ + ROTATE_ARGS +%endm + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; void sha256_sse4(void *input_data, UINT32 digest[8], UINT64 num_blks) +;; arg 1 : pointer to input data +;; arg 2 : pointer to digest +;; arg 3 : Num blocks +section .text +global sha256_sse4 +align 32 +sha256_sse4: + push rbx +%ifndef LINUX + push rsi + push rdi +%endif + push rbp + push r13 + push r14 + push r15 + + sub rsp,STACK_SIZE +%ifndef LINUX + movdqa [rsp + _XMM_SAVE + 0*16],xmm6 + movdqa [rsp + _XMM_SAVE + 1*16],xmm7 + movdqa [rsp + _XMM_SAVE + 2*16],xmm8 + movdqa [rsp + _XMM_SAVE + 3*16],xmm9 + movdqa [rsp + _XMM_SAVE + 4*16],xmm10 + movdqa [rsp + _XMM_SAVE + 5*16],xmm11 + movdqa [rsp + _XMM_SAVE + 6*16],xmm12 +%endif + + shl NUM_BLKS, 6 ; convert to bytes + jz done_hash + add NUM_BLKS, INP ; pointer to end of data + mov [rsp + _INP_END], NUM_BLKS + + ;; load initial digest + mov a,[4*0 + CTX] + mov b,[4*1 + CTX] + mov c,[4*2 + CTX] + mov d,[4*3 + CTX] + mov e,[4*4 + CTX] + mov f,[4*5 + CTX] + mov g,[4*6 + CTX] + mov h,[4*7 + CTX] + + movdqa BYTE_FLIP_MASK, [PSHUFFLE_BYTE_FLIP_MASK wrt rip] + movdqa SHUF_00BA, [_SHUF_00BA wrt rip] + movdqa SHUF_DC00, [_SHUF_DC00 wrt rip] + +loop0: + lea TBL,[K256 wrt rip] + + ;; byte swap first 16 dwords + COPY_XMM_AND_BSWAP X0, [INP + 0*16], BYTE_FLIP_MASK + COPY_XMM_AND_BSWAP X1, [INP + 1*16], BYTE_FLIP_MASK + COPY_XMM_AND_BSWAP X2, [INP + 2*16], BYTE_FLIP_MASK + COPY_XMM_AND_BSWAP X3, [INP + 3*16], BYTE_FLIP_MASK + + mov [rsp + _INP], INP + + ;; schedule 48 input dwords, by doing 3 rounds of 16 each + mov SRND, 3 +align 16 +loop1: + movdqa XFER, [TBL + 0*16] + paddd XFER, X0 + movdqa [rsp + _XFER], XFER + FOUR_ROUNDS_AND_SCHED + + movdqa XFER, [TBL + 1*16] + paddd XFER, X0 + movdqa [rsp + _XFER], XFER + FOUR_ROUNDS_AND_SCHED + + movdqa XFER, [TBL + 2*16] + paddd XFER, X0 + movdqa [rsp + _XFER], XFER + FOUR_ROUNDS_AND_SCHED + + movdqa XFER, [TBL + 3*16] + paddd XFER, X0 + movdqa [rsp + _XFER], XFER + add TBL, 4*16 + FOUR_ROUNDS_AND_SCHED + + sub SRND, 1 + jne loop1 + + mov SRND, 2 +loop2: + paddd X0, [TBL + 0*16] + movdqa [rsp + _XFER], X0 + DO_ROUND 0 + DO_ROUND 1 + DO_ROUND 2 + DO_ROUND 3 + paddd X1, [TBL + 1*16] + movdqa [rsp + _XFER], X1 + add TBL, 2*16 + DO_ROUND 0 + DO_ROUND 1 + DO_ROUND 2 + DO_ROUND 3 + + movdqa X0, X2 + movdqa X1, X3 + + sub SRND, 1 + jne loop2 + + addm [4*0 + CTX],a + addm [4*1 + CTX],b + addm [4*2 + CTX],c + addm [4*3 + CTX],d + addm [4*4 + CTX],e + addm [4*5 + CTX],f + addm [4*6 + CTX],g + addm [4*7 + CTX],h + + mov INP, [rsp + _INP] + add INP, 64 + cmp INP, [rsp + _INP_END] + jne loop0 + +done_hash: +%ifndef LINUX + movdqa xmm6,[rsp + _XMM_SAVE + 0*16] + movdqa xmm7,[rsp + _XMM_SAVE + 1*16] + movdqa xmm8,[rsp + _XMM_SAVE + 2*16] + movdqa xmm9,[rsp + _XMM_SAVE + 3*16] + movdqa xmm10,[rsp + _XMM_SAVE + 4*16] + movdqa xmm11,[rsp + _XMM_SAVE + 5*16] + movdqa xmm12,[rsp + _XMM_SAVE + 6*16] +%endif + + add rsp, STACK_SIZE + + pop r15 + pop r14 + pop r13 + pop rbp +%ifndef LINUX + pop rdi + pop rsi +%endif + pop rbx + + ret + + +section .data +align 64 +K256: + dd 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5 + dd 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5 + dd 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3 + dd 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174 + dd 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc + dd 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da + dd 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7 + dd 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967 + dd 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13 + dd 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85 + dd 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3 + dd 0xd192e819,0xd6990624,0xf40e3585,0x106aa070 + dd 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5 + dd 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3 + dd 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208 + dd 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2 + +PSHUFFLE_BYTE_FLIP_MASK: ddq 0x0c0d0e0f08090a0b0405060700010203 + +; shuffle xBxA -> 00BA +_SHUF_00BA: ddq 0xFFFFFFFFFFFFFFFF0b0a090803020100 + +; shuffle xDxC -> DC00 +_SHUF_DC00: ddq 0x0b0a090803020100FFFFFFFFFFFFFFFF +*/ + +#endif From 2010b75193409fabc8d4fff78c2863223b1d1703 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 2 Dec 2019 04:35:28 -0800 Subject: [PATCH 114/339] Update libgmp dep URL with our own github fork --- depends/packages/libgmp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/libgmp.mk b/depends/packages/libgmp.mk index c62fa18ed..acd5d4c0e 100644 --- a/depends/packages/libgmp.mk +++ b/depends/packages/libgmp.mk @@ -18,7 +18,7 @@ $(package)_dependencies= $(package)_config_opts=--enable-cxx --disable-shared else $(package)_version=6.1.1 -$(package)_download_path=https://supernetorg.bintray.com/misc +$(package)_download_path=https://github.com/MyHush/libgmp/releases/download/v6.1.1 $(package)_file_name=gmp-$($(package)_version).tar.bz2 $(package)_sha256_hash=a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6 $(package)_dependencies= From e46815f3380a2c2c21596c756e6c00f1a4a0fb71 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 2 Dec 2019 04:36:45 -0800 Subject: [PATCH 115/339] Sick of libsodium changing URLs. Github URLs do not change --- depends/packages/libsodium.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/libsodium.mk b/depends/packages/libsodium.mk index df1ac5f32..885921644 100644 --- a/depends/packages/libsodium.mk +++ b/depends/packages/libsodium.mk @@ -1,6 +1,6 @@ package=libsodium $(package)_version=1.0.15 -$(package)_download_path=https://download.libsodium.org/libsodium/releases/old/unsupported +$(package)_download_path=https://github.com/jedisct1/libsodium/releases/download/1.0.15 $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=fb6a9e879a2f674592e4328c5d9f79f082405ee4bb05cb6e679b90afe9e178f4 $(package)_dependencies= From 71e82cffb6db98cdb3dfa30932e8d8672647fc9d Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 2 Dec 2019 05:25:31 -0800 Subject: [PATCH 116/339] Remove old dead code --- src/init.cpp | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index edbbbb06a..fcc82d653 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1666,33 +1666,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) fReindex = GetBoolArg("-reindex", false); - // Upgrading to 0.8; hard-link the old blknnnn.dat files into /blocks/ - boost::filesystem::path blocksDir = GetDataDir() / "blocks"; - if (!boost::filesystem::exists(blocksDir)) - { - boost::filesystem::create_directories(blocksDir); - bool linked = false; - for (unsigned int i = 1; i < 10000; i++) { - boost::filesystem::path source = GetDataDir() / strprintf("blk%04u.dat", i); - if (!boost::filesystem::exists(source)) break; - boost::filesystem::path dest = blocksDir / strprintf("blk%05u.dat", i-1); - try { - boost::filesystem::create_hard_link(source, dest); - LogPrintf("Hardlinked %s -> %s\n", source.string(), dest.string()); - linked = true; - } catch (const boost::filesystem::filesystem_error& e) { - // Note: hardlink creation failing is not a disaster, it just means - // blocks will get re-downloaded from peers. - LogPrintf("Error hardlinking blk%04u.dat: %s\n", i, e.what()); - break; - } - } - if (linked) - { - fReindex = true; - } - } - // block tree db settings int dbMaxOpenFiles = GetArg("-dbmaxopenfiles", DEFAULT_DB_MAX_OPEN_FILES); bool dbCompression = GetBoolArg("-dbcompression", DEFAULT_DB_COMPRESSION); From 975e014e897a1621de435e022a162001cd1d983c Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 2 Dec 2019 14:29:18 +0100 Subject: [PATCH 117/339] add longestchain and notarized to getblockchaininfo --- src/rpc/blockchain.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 4f7374767..ef101e8d5 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1665,6 +1665,7 @@ void NetworkUpgradeDescPushBack( UniValue getblockchaininfo(const UniValue& params, bool fHelp) { + uint256 notarized_hash,notarized_desttxid; int32_t prevMoMheight,notarized_height,longestchain,kmdnotarized_height,txid_height; if (fHelp || params.size() != 0) throw runtime_error( "getblockchaininfo\n" @@ -1720,10 +1721,13 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp) int32_t longestchain = KOMODO_LONGESTCHAIN;//komodo_longestchain(); progress = (longestchain > 0 ) ? (double) chainActive.Height() / longestchain : 1.0; } + notarized_height = komodo_notarized_height(&prevMoMheight,¬arized_hash,¬arized_desttxid); UniValue obj(UniValue::VOBJ); obj.push_back(Pair("chain", Params().NetworkIDString())); obj.push_back(Pair("blocks", (int)chainActive.Height())); obj.push_back(Pair("synced", KOMODO_INSYNC!=0)); + obj.push_back(Pair("longestchain", KOMODO_LONGESTCHAIN)); + obj.push_back(Pair("notarized", notarized_height)); obj.push_back(Pair("headers", pindexBestHeader ? pindexBestHeader->GetHeight() : -1)); obj.push_back(Pair("bestblockhash", chainActive.LastTip()->GetBlockHash().GetHex())); obj.push_back(Pair("difficulty", (double)GetNetworkDifficulty())); From 89352fbf068bdb95b56e8ee120a528ba9575b9d1 Mon Sep 17 00:00:00 2001 From: Denio Date: Mon, 2 Dec 2019 14:49:26 +0100 Subject: [PATCH 118/339] add missing help output of getblockchaininfo --- src/rpc/blockchain.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index ef101e8d5..15eb31f60 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1679,6 +1679,8 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp) " \"headers\": xxxxxx, (numeric) the current number of headers we have validated\n" " \"bestblockhash\": \"...\", (string) the hash of the currently best block\n" " \"difficulty\": xxxxxx, (numeric) the current difficulty\n" + " \"longestchain\": xxxxxx, (numeric) the longest high of the chain\n" + " \"notarized\": xxxxxx, (numeric) last notarized Block\n" " \"verificationprogress\": xxxx, (numeric) estimate of verification progress [0..1]\n" " \"chainwork\": \"xxxx\" (string) total amount of work in active chain, in hexadecimal\n" " \"commitments\": xxxxxx, (numeric) the current number of note commitments in the commitment tree\n" From 823208ef1db1c76485e89a4a14261b18f2a1c92d Mon Sep 17 00:00:00 2001 From: ca333 Date: Sun, 1 Dec 2019 17:51:27 +0100 Subject: [PATCH 119/339] update libsnark fetch URL --- depends/packages/libsnark.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/libsnark.mk b/depends/packages/libsnark.mk index c2a620f26..9d8860997 100644 --- a/depends/packages/libsnark.mk +++ b/depends/packages/libsnark.mk @@ -1,6 +1,6 @@ package=libsnark $(package)_version=0.1 -$(package)_download_path=https://supernetorg.bintray.com/misc +$(package)_download_path=https://github.com/ca333/libsnark/releases/download/v$($(package)_version)-$($(package)_git_commit)/ $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$(package)-$($(package)_git_commit).tar.gz $(package)_sha256_hash=47478adc2ae88c448dc736d59dfe007de6478e41e88d2d4d2ff4135a17ee6f90 From 2bc004a6bad1d8b00930a815fd8482a535384dd2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 12:49:01 -0500 Subject: [PATCH 120/339] prep checkpoints --- src/chainparams.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 28c738891..e86fc2046 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -601,14 +601,12 @@ void *chainparams_commandline() { boost::assign::map_list_of (0, pCurrentParams->consensus.hashGenesisBlock), - (int64_t)1231006505, - (int64_t)1, + (int64_t)1231006505, // unix timestamp of last checkpoint block + (int64_t)1, // xtns from genenesis until last checkpointed block (double)2777 // * estimated number of transactions per day after checkpoint // total number of tx / (checkpoint block height / (24 * 24)) }; - } - else - { + } else { checkpointData = //(Checkpoints::CCheckpointData) { boost::assign::map_list_of From 80e065568bbedce79b75ac9d20f72c64a3f1c8a1 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 12:49:52 -0500 Subject: [PATCH 121/339] Add script to generate checkpoint data --- contrib/checkpoints.pl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100755 contrib/checkpoints.pl diff --git a/contrib/checkpoints.pl b/contrib/checkpoints.pl new file mode 100755 index 000000000..ea81da1df --- /dev/null +++ b/contrib/checkpoints.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl +use warnings; +use strict; +# Generate checkpoint data for use in src/main.cpp + +my $hush = "./src/hush-cli"; +my $gethash = "$hush getblockhash"; +my $stride = shift || 1000; +my $count = 0; +my $blocks = qx{$hush getblockcount}; + +while (1) { + $count++; + my $block = $stride*$count; + last if ($block > $blocks); + my $blockhash = qx{$gethash $block}; + chomp $blockhash; + print qq{($block, uint256S("0x$blockhash"))\n}; +} From 95e0749bd0652ddbe97df8984d5b585001d395ec Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 13:57:21 -0500 Subject: [PATCH 122/339] Automate all checkpoint data creation --- contrib/checkpoints.pl | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/contrib/checkpoints.pl b/contrib/checkpoints.pl index ea81da1df..eb4548fd0 100755 --- a/contrib/checkpoints.pl +++ b/contrib/checkpoints.pl @@ -3,17 +3,49 @@ use warnings; use strict; # Generate checkpoint data for use in src/main.cpp +# TODO: update when blocktime changes to 75s +my $perday = 576; my $hush = "./src/hush-cli"; my $gethash = "$hush getblockhash"; my $stride = shift || 1000; my $count = 0; my $blocks = qx{$hush getblockcount}; +my $prev = $blocks - $perday; +my $last = 0; +chomp($blocks); while (1) { $count++; my $block = $stride*$count; - last if ($block > $blocks); + if ($block > $blocks) { + $last = $stride*($count-1); + print "last checkpointed block=$last\n"; + last; + } my $blockhash = qx{$gethash $block}; chomp $blockhash; print qq{($block, uint256S("0x$blockhash"))\n}; } +my $time = qx{$hush getblock $last |grep time|cut -d: -f2| sed 's/,//g'}; +chomp($time); +# TODO: This is Linux-only +my $line1 = qx{grep --text height=$prev ~/.komodo/HUSH3/debug.log}; +my $line2 = qx{grep --text height=$blocks ~/.komodo/HUSH3/debug.log}; +my $txs_per_day = 2 * $perday; # default estimate is 2 txs per block, on average +my $total_txs = 0; +#print "line1: $line1\n"; +#print "line2: $line2\n"; + +# This will calculate the number of txs in the previous day to the last checkpointed block +if ($line1 =~ m/tx=(\d+)/) { + my $tx1 = $1; # number of txs in the block 1 day ago + #print "prevblock has $tx1 txs\n"; + if ($line2 =~ m/tx=(\d+)/) { + $total_txs = $1; + # TODO: average of last N days might be better + $txs_per_day = $total_txs - $tx1; + } +} +print "(int64_t) $time, // time of last checkpointed block\n"; +print "(int64_t) $total_txs, // total txs\n"; +print "(double) $txs_per_day, // txs in the last day before block $blocks\n"; From bcc95bea7cac9000f49350d9330751e3af7dbe7f Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 14:01:33 -0500 Subject: [PATCH 123/339] Update checkpoint script --- contrib/checkpoints.pl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/checkpoints.pl b/contrib/checkpoints.pl index eb4548fd0..71a37c169 100755 --- a/contrib/checkpoints.pl +++ b/contrib/checkpoints.pl @@ -1,4 +1,6 @@ #!/usr/bin/perl +# Copyright 2019 The Hush developers +# Released under the GPLv3 use warnings; use strict; # Generate checkpoint data for use in src/main.cpp @@ -12,8 +14,11 @@ my $count = 0; my $blocks = qx{$hush getblockcount}; my $prev = $blocks - $perday; my $last = 0; +my $now = time(); chomp($blocks); +print "// Generated at $now via hush3 contrib/checkpoints.pl by Duke Leto\n"; + while (1) { $count++; my $block = $stride*$count; From 8ede0329b2da8c23dc8401cc094a9e1f6d017cef Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 14:02:20 -0500 Subject: [PATCH 124/339] deprint --- contrib/checkpoints.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/checkpoints.pl b/contrib/checkpoints.pl index 71a37c169..99a84f2c2 100755 --- a/contrib/checkpoints.pl +++ b/contrib/checkpoints.pl @@ -24,7 +24,7 @@ while (1) { my $block = $stride*$count; if ($block > $blocks) { $last = $stride*($count-1); - print "last checkpointed block=$last\n"; + #print "last checkpointed block=$last\n"; last; } my $blockhash = qx{$gethash $block}; From 738e94c743b07fcadd2dcc5f8bd90d3d33fd2321 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 14:06:03 -0500 Subject: [PATCH 125/339] Update checkpoint data --- src/chainparams.cpp | 144 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 140 insertions(+), 4 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index e86fc2046..86f4568d8 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -601,10 +601,146 @@ void *chainparams_commandline() { boost::assign::map_list_of (0, pCurrentParams->consensus.hashGenesisBlock), - (int64_t)1231006505, // unix timestamp of last checkpoint block - (int64_t)1, // xtns from genenesis until last checkpointed block - (double)2777 // * estimated number of transactions per day after checkpoint - // total number of tx / (checkpoint block height / (24 * 24)) + // Generated at 1575831755 via hush3 contrib/checkpoints.pl by Duke Leto + (1000, uint256S("0x0000001893130f005d2e90fcdf40057ae06390bd0490740aae2843e62aeb7bc2")) + (2000, uint256S("0x00000003003e6c8fa176ef293d1322514778343601fa21dfdb0c9aacef189576")) + (3000, uint256S("0x00000005c1419d252bc59d77c06e07aad61702c8b3e76d2070577a18159ab59d")) + (4000, uint256S("0x00000008bc4094ea475a871302361ffdc6bfd63ded049d172c8dad01ed67fd3c")) + (5000, uint256S("0x000000018f8543066baa9c5f83e981749da4cb625fad02c187b4a9c4693ebd60")) + (6000, uint256S("0x0000000567191591911b33b852e4b87de119df2c773bc800b5a3655be18eb98e")) + (7000, uint256S("0x000000082e7b000480d0317d9115f0d0737e78fa2381a2d6456f598bf83fe2f0")) + (8000, uint256S("0x0000000415226fff123cd868e255a23d72e204d61bb405fb9dde0810e7721ebf")) + (9000, uint256S("0x00000000bd26f7b8d6d80230aad06c0cd590758176b8558da7dfc14161a23ab7")) + (10000, uint256S("0x00000002d177d1cbfeaf7c27a2a32766ea9063d222cbcc7623dc08355b07a3ad")) + (11000, uint256S("0x0000000284bcffa3bef4097178a94b6b9a788261981253cb8cd6db6b47634732")) + (12000, uint256S("0x000000006cf15fdb94253a9389d95ef607c3484c635fe0c8a1f1ec1e5a1c6865")) + (13000, uint256S("0x00000001cdc66e08f7f13c775aa1220a801a33df90edba7bbcffac8d06181207")) + (14000, uint256S("0x0000000443e432c7dbf0707a12c5671dd1ca606f962368a847bbcff2f5fc2135")) + (15000, uint256S("0x000000008dbfbd5d5e27d819bf2989c5658c3494608bfa1320ad0b090660cd44")) + (16000, uint256S("0x00000003c6a59e5b10e1a1c6bef08dee4d33d1841156bf97e26c3e4df789b128")) + (17000, uint256S("0x00000001debe3734ef4b6aacedde4a6b04cd1c60d4cf37b9f4689f2225ff7c24")) + (18000, uint256S("0x00000002e37eccfa7bacd9c201468c754cbef50be9411e3f907891755eef4c6d")) + (19000, uint256S("0x000000044636331c0277abb5592529cae1303d2bd43981a8382b4cc152a8d024")) + (20000, uint256S("0x00000000a7840e1fccedb13672804e94fcaa87c0360ee4f7353a6b93e5a59da8")) + (21000, uint256S("0x00000003a89b17d0cd489045ad62531c4211ee17c3609ed3e4291a067636d526")) + (22000, uint256S("0x0000000352a7a25b3fe5f1a32a2c42260d32345487b92b6e520eecec0ee6aca4")) + (23000, uint256S("0x00000002c1fdc5cc1211b7adff3b7e755059638fd98bd9da1cdd86bd9a0af1fd")) + (24000, uint256S("0x0000000603a6190bbfdcdc5da9645d069aebd7a0b29607077470089c7b4a1188")) + (25000, uint256S("0x0000000519d6ab6ca9c705ebafa9946bce34934709621bc22227567e90608667")) + (26000, uint256S("0x0000000146e7314e2ebb2bfc10b9fe0fdd744734910a3971bbc4e970fe2c4cb9")) + (27000, uint256S("0x000000047060e4173b4edd6374c3580580981dea20d0b49ea15c9fdfa97ba104")) + (28000, uint256S("0x000000065eea521cccf6b1f99e1a77683717d02ddaed654a4c85d717e1e8c957")) + (29000, uint256S("0x00000001ecdbcd195e04f792721262dc79bb070e73b6606b389825b5ae8e4791")) + (30000, uint256S("0x0000000240de901e9e70d2db5badf62886ab0e8c442107d571bc04b3bdd43052")) + (31000, uint256S("0x00000002d39f4f3504660e13e956c12aa3411a0ba392b3797d95f15e8fbd1958")) + (32000, uint256S("0x0000000130cd781ed559d553f35a6bc99ed252aadd92b2a461bd332ca2d69a96")) + (33000, uint256S("0x000000035ad950b0e78bbaf19f7a97865f29edd600e7aee4a3fce2e42db29d38")) + (34000, uint256S("0x00000004f33b5ff97c128bfbef656aa10341e2606f54e198d5280016d2578eca")) + (35000, uint256S("0x00000000ad1ef91eb70011a94646c148f1b8949b464a0de82adf1ba1ce6175a5")) + (36000, uint256S("0x00000003b1450e1cf9f4e5f53534777b24039fcde81ec7ac1c2ea754a26fcd78")) + (37000, uint256S("0x0000000337c4407954be01dcaf75a660e4b5b69e9e923bd62e74b0e44f01d9df")) + (38000, uint256S("0x00000002b5d6f83f8d2ef7d88c3cdff1e444882819a70a7c7281d1d92f81bc9a")) + (39000, uint256S("0x00000001a1eb6a530b065c873f65219de3282c4f386ba68bc2a0b88dc2b4c5cd")) + (40000, uint256S("0x000000013b65e22d0bb6a9103dc71da5a1b7fa2acbc1c7d7a4d8f7730c37d4ab")) + (41000, uint256S("0x000000027dbc2315769690cf93c79c54e0591c808d83decb66302492f0f79f1c")) + (42000, uint256S("0x00000000ca09a12162a92b9ecbf6bf00a2bb822a77dd142df26d81db95c21bed")) + (43000, uint256S("0x000000050c4c80b9e53b960a638bd231c193a383f0df162c720e4594ba427a4b")) + (44000, uint256S("0x00000000f42d6c43703dbb47847298cedcbef8a27018baed8f4a217e7d5d823c")) + (45000, uint256S("0x00000004da449923c218bd3e69745ebafca41c32e0c81ab6b485ae6c4c80df18")) + (46000, uint256S("0x00000006e4bdf2707158e266d2d54294b20063c0f1723abed97fafe7ecf4b2de")) + (47000, uint256S("0x0000000015d099357b0c8cbc24d8e2bd18e5e47eabe6ff89c09c9837bb071cd8")) + (48000, uint256S("0x00000009c9ddaffefc5d5c78a6f89b872fdd732c16a5311debed6b92255f340b")) + (49000, uint256S("0x00000008447d907ddc1d87df0ea235636baaaf34bc1000620e8173f1d8f7758c")) + (50000, uint256S("0x000000027470e84cd195242f199b90fde40b70f80fac7a7080b1517c95cf56c6")) + (51000, uint256S("0x000000015190913dec8a508bc219b0a0a1587b50acb23b48343010015cb5ec69")) + (52000, uint256S("0x000000071608ad395dc31dc3011d5cad7f7a7296e34490a1e9e2dcf060bcc649")) + (53000, uint256S("0x0000000608fa8a454c3c0e5e06bf091c4cfa131e7b91eb6622087cfc3fa4c149")) + (54000, uint256S("0x0000000455eac130c205512cc0bffaa3ecb2d393cbf0d9e943c3d5911ea06a4b")) + (55000, uint256S("0x00000000a20b276ed95b261a51681fb2d0d58e528cc8cd2e5fb7fdeb732b1861")) + (56000, uint256S("0x000000016057dfbf2fc59650b63b7c2dc2379af75cf00c0ee3f3835e992ec11e")) + (57000, uint256S("0x00000003a1eff8b5160655111ff1c0f1426b2b879c1f6fd761332b82c8640c67")) + (58000, uint256S("0x00000001b0ac789061a277b553de1aae373533f5b6b1330326744ac7087c87c9")) + (59000, uint256S("0x0000000a0dee07bdf593a68e5463cb5553f9bce3367a39d88f07ea43709eba87")) + (60000, uint256S("0x000000060382850eadef184b67f38c0b2de27157296f3d9d8e2b7b70b1f76127")) + (61000, uint256S("0x0000000492a93fd6c9eb080f3398517b39c8eaf835440d2571e515f76a931bf2")) + (62000, uint256S("0x00000005ee0b8f7fcae8e6b17b12ab66f17cf34697182afc29d863d9844a84a9")) + (63000, uint256S("0x000000045842b1c05c7e9a1a887e9a6ecdcaea2f4e03b9476031ed609ace91d2")) + (64000, uint256S("0x00000004259921159c0714b90b1950fbae7eee2a14687dcfc57ab22b39c8123c")) + (65000, uint256S("0x0000000618eb1c909301585f6b8f17ee6d09da97c580fe70d59babcd7864b556")) + (66000, uint256S("0x000000049c85139efb1694525b5cf864a6021e49a412aaea9ff2b2b6ee04e1ca")) + (67000, uint256S("0x0000000141358b3ae2c4ab2a384f963f4fdc925060c42de5578aec82c1de3189")) + (68000, uint256S("0x0000000405b0273ba96d1e83e27e50ecf5f123c2e3e05b56524cc2cd79ea18e7")) + (69000, uint256S("0x0000000764c8a434a1583b2578155a18720bbad67cc2c06e2fb013e872b1b10e")) + (70000, uint256S("0x00000006d11cf168399c719b2bb036eadd09e740c98764d82adf75f5a800e90d")) + (71000, uint256S("0x00000002339c3cf62fc4716899a0e341969d85146dcb98854607332f81e5f258")) + (72000, uint256S("0x000000055e39f9cd963bac08c9c10ab982491d50b66486099675b015016dad7a")) + (73000, uint256S("0x0000000766261dbd9e48a0d544d012f57ab7890a761d893851b63e0e5b5e47dc")) + (74000, uint256S("0x000000058bd8080674ffb086704fbfde45e91172d0784416ed5356d20bd60fd7")) + (75000, uint256S("0x00000007abb9cb521244c988f0ace53bf230bdf9c9db75d0102472a721c6b038")) + (76000, uint256S("0x000000071789d7ecf5e8c7e1a982e119d0b9d6748cb01426a5b8fff77a54f76b")) + (77000, uint256S("0x00000007364be847b08481f87bbe4db69a79f5c4388e3c898ea140011a121ca7")) + (78000, uint256S("0x000000031b7afd1aa244d78056606bf718cb96cb1fe1656070d37ed9d4031ebf")) + (79000, uint256S("0x00000003125d8e62fa215c1797229d271db705299f43e1db85edb7ac68349127")) + (80000, uint256S("0x000000031c23c3a1828b3a432ab27c6b34a93741f5711507abeb34a822ba5311")) + (81000, uint256S("0x0000000212aab2361322e29a1037b82624fc2acdb61dd457ae25e4dffca14b42")) + (82000, uint256S("0x00000003140442a0d3b5ba57d2e51ed4a2ec39fb6ee8c9e2d70d530f46843f57")) + (83000, uint256S("0x0000000404e963d87db2ccd709377d5fd8b28c67c51ffcace62290844b895ba0")) + (84000, uint256S("0x00000003076c29391d9a5910e287d5319f4bf29f92eb309a8dd72cbf98847102")) + (85000, uint256S("0x00000006fc5823857bdd44f89f4a97838a9f735c7bdf81bd89f50110dc16fbab")) + (86000, uint256S("0x00000002247705c4f02ab4a672686dadba9de55fcf71433388a4250af6d1154d")) + (87000, uint256S("0x00000000302718129c873c0ba6e571512ab5c4216e0d978ed3ef1d4dccddbb26")) + (88000, uint256S("0x00000002129732e7d8d99d78eef4ed3318cdbd73883d88e7c2b9534d11284486")) + (89000, uint256S("0x00000001513759a2e2b6e6c30ee8db631957511adcefa518ad31e0b1ec4e789d")) + (90000, uint256S("0x00000003e62dcb81fe33178e2dc45c70ca04733542179ac5d93bceb7c456f365")) + (91000, uint256S("0x00000000674963dd8d6d7dab67d1df8c6e9455cef55014aa15082722f9d7f115")) + (92000, uint256S("0x00000004f4e1151df0905baf82bd29ece0fc7db8d96a2ae6c0efad0e0e68e55e")) + (93000, uint256S("0x00000002876b9eb7b41e025d55d7dd740b5dc811eae0909169081e705c61b6b5")) + (94000, uint256S("0x00000001efdcd19bf060a424cd0cef2d04f0d206fae21a72a57b4cc8d1019421")) + (95000, uint256S("0x00000002a22cae35b32e31ffbe55d2d56ef04f010aebd19f1536b7582c1ea4d9")) + (96000, uint256S("0x0000000433d2385e8260c26dabec1c5f7376ed63b478c5d94bc15ee521a86ee3")) + (97000, uint256S("0x00000003112c73fd4cf10604e1a44b7acd698e196cbe16e63abdcd34008f4b36")) + (98000, uint256S("0x0000000179fb7ea8e68c54de5d09e531b5cbbfe7f5d128f3f93f55576673ddc7")) + (99000, uint256S("0x00000002e8e3a9f26154b941837d42ad62ea153d75be61a13c04e2249a781243")) + (100000, uint256S("0x00000001bc1c40d120bf2df1654f3fb5e4d28d4ff292d05667cf5610042c794a")) + (101000, uint256S("0x00000003a52ec72d58bdb88096334a29eddb17fd454a7c15aba815358f3b4285")) + (102000, uint256S("0x00000002a602644eb8765aab158112307f25bc6e8f82c1220be08642be6d12ca")) + (103000, uint256S("0x000000044a6a0aca758af879fee5bbbfc4ac75287f63cc91ad26bc921d3c44ac")) + (104000, uint256S("0x000000013fe4abb66862573821938d8e203da577e8c15055249a5fc4d6ca28f6")) + (105000, uint256S("0x0000000175182a7f9c46aaae8723a664168af4be37c5d73e8f773df6b67a458b")) + (106000, uint256S("0x000000005426bdc52efa996e5bd44f0d5f075fdd865063a1c5c341f4b37aa8d7")) + (107000, uint256S("0x000000026ce5ee0c6f81786838f502ab3ac4b52371716b3956bb58f91fe2a79e")) + (108000, uint256S("0x000000042a0f660df6ef24e237b4010749b7cc7ba402fe7f6af98643df62cb0b")) + (109000, uint256S("0x000000020debe96d90bc1d317036404c4518309e93c45303f86bdef7fac213df")) + (110000, uint256S("0x000000030ba3cdbb85d5028379dfe50fbf28c04f8add3300814c2f649ec53594")) + (111000, uint256S("0x000000030d9aa7e30990157616d54e5c32a26a0fbb5db1a7fde7e192bb2bd992")) + (112000, uint256S("0x00000003885472c246e7f5cc5c9982ce0d1ed292ff0b09451c272f201ff1bd3a")) + (113000, uint256S("0x000000027d6d7f782a510fa9b2a41f8f1a713fa4ff12906e453ba59af911cbfc")) + (114000, uint256S("0x000000046020cd15a3803db747ec6811bee5703c9b67b54185d8fae23f7617cf")) + (115000, uint256S("0x000000019fd1a317c649c83c6b2a3f6bca7e82fac2fc89ce69de4b6d5715050b")) + (116000, uint256S("0x00000002cad5e312f8553c3ca053f3588d53561722ce3bf20d55eb4654707668")) + (117000, uint256S("0x0000000339f55a289fabf4881ab5d89739779bc0e1ab5650830b4fec8870d183")) + (118000, uint256S("0x000000027bc70600ad7355ee66e6ca0b9d2fd24b7778014bb464a7bbc37627de")) + (119000, uint256S("0x00000001ddca829e3480f45ec3f7291fe9d611dd4600c047516729052a881058")) + (120000, uint256S("0x0000000217decb42c4ea26cbee700e728a558ae648393b8014f035566ef2a456")) + (121000, uint256S("0x00000000f2798338531f5a39201960a80ec28203cdd5dcd27718f6a7fd6723bf")) + (122000, uint256S("0x00000001204dfcde9f95ef04a25f54553329a48fe34078e213d93199dfe0c26b")) + (123000, uint256S("0x0000000220091729c30ec5a296a5218e0500bff2dfe10a5d9e5ceca2ea39482b")) + (124000, uint256S("0x00000002415360bf949d8e96362ce7b0aada6adbcfb73aba536fa7a329fec49f")) + (125000, uint256S("0x000000002aeab45f5e399d027976c49f4c7732ddbb78d7dc729fb226346ea3f1")) + (126000, uint256S("0x0000000067f239b6b78180145dc4ccbda1c71d506201f807912ddc170683808d")) + (127000, uint256S("0x00000001962a64e4e5a9e9c6cc286e2bcf155734c24f2c9481128e37ac6d9712")) + (128000, uint256S("0x000000011dfac6f7447ae6de5002dd3bf5ddc94faadb706f45e0b4724257dfe5")) + (129000, uint256S("0x0000000014f4aa454784a182645fa425834f8f9464abea319ea0afe5d3ccd91a")) + (130000, uint256S("0x000000001c4a5aa11e6c142931463fcf7a9f5b9fb41061d26c18ff1860431881")) + (131000, uint256S("0x000000003c44e490a60f7aa1941835277230706cfbf58dc8113610cc9c3582eb")) + (132000, uint256S("0x0000000041bef6adaff29263986224bd5a2999e2aec38aa07b52fa67eed1402f")) + (133000, uint256S("0x0000000162eb0ea1633481197a8ddc3743ff32ce2e8ecc249f9a8e9912459e05")) + (134000, uint256S("0x00000002a34611317b4b1d8bc8640282ffb7d7c86fc858af7e0abb0bca6b720d")) + (135000, uint256S("0x000000025f9502fc7474d62a0a23417cc5b77f3a049260e65b5b810d71074743")) + (136000, uint256S("0x00000000af2a19997fde28b70235070f627f3b5900a9ee13c927529a11110bc6")) + (int64_t) 1575741799, // time of last checkpointed block + (int64_t) 274689, // total txs + (double) 1065, // txs in the last day before block 136590 }; } else { checkpointData = //(Checkpoints::CCheckpointData) From 0308fac481a15ff0027cdd4ac58a0fdfd6e5a2ac Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 17:46:04 -0500 Subject: [PATCH 126/339] Update heir cc from upstream --- src/wallet/rpcwallet.cpp | 69 +++++++++++++++------------------------- 1 file changed, 25 insertions(+), 44 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index b233ad3bd..6b87cdc57 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -7959,7 +7959,6 @@ UniValue heirfund(const UniValue& params, bool fHelp) { UniValue result(UniValue::VOBJ); uint256 tokenid = zeroid; - int64_t txfee; int64_t amount; int64_t inactivitytime; std::string hex; @@ -7969,51 +7968,47 @@ UniValue heirfund(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; - if (fHelp || params.size() != 6 && params.size() != 7) - throw runtime_error("heirfund txfee funds heirname heirpubkey inactivitytime memo [tokenid]\n"); + if (fHelp || params.size() != 5 && params.size() != 6) + throw runtime_error("heirfund funds heirname heirpubkey inactivitytime memo [tokenid]\n"); if (ensure_CCrequirements(EVAL_HEIR) < 0) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; LOCK2(cs_main, pwalletMain->cs_wallet); - txfee = atoll(params[0].get_str().c_str()); - if (txfee < 0) { - result.push_back(Pair("result", "error")); - result.push_back(Pair("error", "incorrect txfee")); - return result; - } - - if(params.size() == 7) // tokens in satoshis: - amount = atoll(params[1].get_str().c_str()); - else // coins: - amount = atof(params[1].get_str().c_str()) * COIN; + if (params.size() == 6) // tokens in satoshis: + amount = atoll(params[0].get_str().c_str()); + else { // coins: + amount = 0; + if (!ParseFixedPoint(params[0].get_str(), 8, &amount)) // using ParseFixedPoint instead atof to avoid small round errors + amount = -1; // set error + } if (amount <= 0) { result.push_back(Pair("result", "error")); result.push_back(Pair("error", "incorrect amount")); return result; } - name = params[2].get_str(); + name = params[1].get_str(); - pubkey = ParseHex(params[3].get_str().c_str()); + pubkey = ParseHex(params[2].get_str().c_str()); if (!pubkey2pk(pubkey).IsValid()) { result.push_back(Pair("result", "error")); result.push_back(Pair("error", "incorrect pubkey")); return result; } - inactivitytime = atoll(params[4].get_str().c_str()); + inactivitytime = atoll(params[3].get_str().c_str()); if (inactivitytime <= 0) { result.push_back(Pair("result", "error")); result.push_back(Pair("error", "incorrect inactivity time")); return result; } - memo = params[5].get_str(); + memo = params[4].get_str(); - if (params.size() == 7) { - tokenid = Parseuint256((char*)params[6].get_str().c_str()); + if (params.size() == 6) { + tokenid = Parseuint256((char*)params[5].get_str().c_str()); if (tokenid == zeroid) { result.push_back(Pair("result", "error")); result.push_back(Pair("error", "incorrect tokenid")); @@ -8022,9 +8017,9 @@ UniValue heirfund(const UniValue& params, bool fHelp) } if( tokenid == zeroid ) - result = HeirFundCoinCaller(txfee, amount, name, pubkey2pk(pubkey), inactivitytime, memo); + result = HeirFundCoinCaller(0, amount, name, pubkey2pk(pubkey), inactivitytime, memo); else - result = HeirFundTokenCaller(txfee, amount, name, pubkey2pk(pubkey), inactivitytime, memo, tokenid); + result = HeirFundTokenCaller(0, amount, name, pubkey2pk(pubkey), inactivitytime, memo, tokenid); return result; } @@ -8033,7 +8028,6 @@ UniValue heiradd(const UniValue& params, bool fHelp) { UniValue result; uint256 fundingtxid; - int64_t txfee; int64_t amount; int64_t inactivitytime; std::string hex; @@ -8043,24 +8037,18 @@ UniValue heiradd(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; - if (fHelp || params.size() != 3) - throw runtime_error("heiradd txfee funds fundingtxid\n"); + if (fHelp || params.size() != 2) + throw runtime_error("heiradd funds fundingtxid\n"); if (ensure_CCrequirements(EVAL_HEIR) < 0) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; LOCK2(cs_main, pwalletMain->cs_wallet); - txfee = atoll(params[0].get_str().c_str()); - if (txfee < 0) { - result.push_back(Pair("result", "error")); - result.push_back(Pair("error", "incorrect txfee")); - return result; - } + std::string strAmount = params[0].get_str(); + fundingtxid = Parseuint256((char*)params[1].get_str().c_str()); - fundingtxid = Parseuint256((char*)params[2].get_str().c_str()); - - result = HeirAddCaller(fundingtxid, txfee, params[1].get_str()); + result = HeirAddCaller(fundingtxid, 0, strAmount); return result; } @@ -8085,16 +8073,9 @@ UniValue heirclaim(const UniValue& params, bool fHelp) const CKeyStore& keystore = *pwalletMain; LOCK2(cs_main, pwalletMain->cs_wallet); - txfee = atoll(params[0].get_str().c_str()); - if (txfee < 0) { - result.push_back(Pair("result", "error")); - result.push_back(Pair("error", "incorrect txfee")); - return result; - } - - fundingtxid = Parseuint256((char*)params[2].get_str().c_str()); - - result = HeirClaimCaller(fundingtxid, txfee, params[1].get_str()); + std::string strAmount = params[0].get_str(); + fundingtxid = Parseuint256((char*)params[1].get_str().c_str()); + result = HeirClaimCaller(fundingtxid, 0, strAmount); return result; } From e88db6dde682e879f98946326b2e243b61e04086 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 17:49:30 -0500 Subject: [PATCH 127/339] fix --- src/chainparams.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 86f4568d8..21ba5ce5f 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -597,11 +597,11 @@ void *chainparams_commandline() pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = ASSETCHAINS_SAPLING; pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = ASSETCHAINS_OVERWINTER; + // Generated at 1575831755 via hush3 contrib/checkpoints.pl by Duke Leto checkpointData = //(Checkpoints::CCheckpointData) { boost::assign::map_list_of - (0, pCurrentParams->consensus.hashGenesisBlock), - // Generated at 1575831755 via hush3 contrib/checkpoints.pl by Duke Leto + (0, pCurrentParams->consensus.hashGenesisBlock) (1000, uint256S("0x0000001893130f005d2e90fcdf40057ae06390bd0490740aae2843e62aeb7bc2")) (2000, uint256S("0x00000003003e6c8fa176ef293d1322514778343601fa21dfdb0c9aacef189576")) (3000, uint256S("0x00000005c1419d252bc59d77c06e07aad61702c8b3e76d2070577a18159ab59d")) @@ -737,10 +737,10 @@ void *chainparams_commandline() (133000, uint256S("0x0000000162eb0ea1633481197a8ddc3743ff32ce2e8ecc249f9a8e9912459e05")) (134000, uint256S("0x00000002a34611317b4b1d8bc8640282ffb7d7c86fc858af7e0abb0bca6b720d")) (135000, uint256S("0x000000025f9502fc7474d62a0a23417cc5b77f3a049260e65b5b810d71074743")) - (136000, uint256S("0x00000000af2a19997fde28b70235070f627f3b5900a9ee13c927529a11110bc6")) + (136000, uint256S("0x00000000af2a19997fde28b70235070f627f3b5900a9ee13c927529a11110bc6")), (int64_t) 1575741799, // time of last checkpointed block (int64_t) 274689, // total txs - (double) 1065, // txs in the last day before block 136590 + (double) 1065 // txs in the last day before block 136590 }; } else { checkpointData = //(Checkpoints::CCheckpointData) From 10be2245589bcc5ebc36e1fc2e4efbb2f3b17472 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 8 Dec 2019 20:37:59 -0500 Subject: [PATCH 128/339] Pull in upstream npsv updates from jl777/komodo@1f874d46c5ddd24c0fd32ae6800f16d8006b9059 --- src/cc/CCinclude.h | 3 + src/komodo_bitcoind.h | 8 + src/komodo_nSPV.h | 14 ++ src/komodo_nSPV_defs.h | 10 + src/komodo_nSPV_fullnode.h | 367 +++++++++++++++++++++++++++++++++++- src/komodo_nSPV_superlite.h | 53 ++++++ src/komodo_nSPV_wallet.h | 9 +- 7 files changed, 461 insertions(+), 3 deletions(-) diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index 0e9f7bad2..a2bb65e48 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -325,5 +325,8 @@ void CCLogPrintStream(const char *category, int level, T print_to_stream) // use: LOGSTREAM("yourcategory", your-debug-level, stream << "some log data" << data2 << data3 << ... << std::endl); #define LOGSTREAM(category, level, logoperator) CCLogPrintStream( category, level, [=](std::ostringstream &stream) {logoperator;} ) +int32_t CC_vinselect(int32_t *aboveip, int64_t *abovep, int32_t *belowip, int64_t *belowp, struct CC_utxo utxos[], int32_t numunspents, int64_t value); + + #endif diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 50832b190..a0e18d85c 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -2539,3 +2539,11 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt } return(siglen); } + +bool komodo_hardfork_active(uint32_t time) +{ + //TODO: set hardfork height for HUSH + return false; + //return ( (ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Height() > nDecemberHardforkHeight) || (ASSETCHAINS_SYMBOL[0] != 0 && time > nStake +} + diff --git a/src/komodo_nSPV.h b/src/komodo_nSPV.h index 3da37e7b4..fe4d784cb 100644 --- a/src/komodo_nSPV.h +++ b/src/komodo_nSPV.h @@ -431,6 +431,20 @@ void NSPV_broadcast_purge(struct NSPV_broadcastresp *ptr) memset(ptr,0,sizeof(*ptr)); } +int32_t NSPV_rwremoterpcresp(int32_t rwflag,uint8_t *serialized,struct NSPV_remoterpcresp *ptr, int32_t slen) +{ + int32_t len = 0; + len+=iguana_rwbuf(rwflag,&serialized[len],sizeof(ptr->method),(uint8_t*)ptr->method); + len+=iguana_rwbuf(rwflag,&serialized[len],slen-len,(uint8_t*)ptr->json); + return(len); +} + +void NSPV_remoterpc_purge(struct NSPV_remoterpcresp *ptr) +{ + if ( ptr != 0 ) + memset(ptr,0,sizeof(*ptr)); +} + // useful utility functions uint256 NSPV_doublesha256(uint8_t *data,int32_t datalen) diff --git a/src/komodo_nSPV_defs.h b/src/komodo_nSPV_defs.h index a2edb2c70..40d9dc022 100644 --- a/src/komodo_nSPV_defs.h +++ b/src/komodo_nSPV_defs.h @@ -44,12 +44,16 @@ #define NSPV_TXIDSRESP 0x0f #define NSPV_MEMPOOL 0x10 #define NSPV_MEMPOOLRESP 0x11 +#define NSPV_CCMODULEUTXOS 0x12 +#define NSPV_CCMODULEUTXOSRESP 0x13 #define NSPV_MEMPOOL_ALL 0 #define NSPV_MEMPOOL_ADDRESS 1 #define NSPV_MEMPOOL_ISSPENT 2 #define NSPV_MEMPOOL_INMEMPOOL 3 #define NSPV_MEMPOOL_CCEVALCODE 4 #define NSPV_CC_TXIDS 16 +#define NSPV_REMOTERPC 0x14 +#define NSPV_REMOTERPCRESP 0x15 int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int32_t height,CTransaction &tx,uint256 &hashblock,int32_t &txheight,int32_t ¤theight,int64_t extradata,uint32_t tiptime,int64_t &rewardsum); UniValue NSPV_spend(char *srcaddr,char *destaddr,int64_t satoshis); @@ -179,4 +183,10 @@ struct NSPV_CCmtxinfo struct NSPV_utxoresp used[NSPV_MAXVINS]; }; +struct NSPV_remoterpcresp +{ + char method[64]; + char json[11000]; +}; + #endif // KOMODO_NSPV_DEFSH diff --git a/src/komodo_nSPV_fullnode.h b/src/komodo_nSPV_fullnode.h index b53b77594..7419248c2 100644 --- a/src/komodo_nSPV_fullnode.h +++ b/src/komodo_nSPV_fullnode.h @@ -20,6 +20,13 @@ // NSPV_get... functions need to return the exact serialized length, which is the size of the structure minus size of pointers, plus size of allocated data #include "notarisationdb.h" +#include "rpc/server.h" + +static std::map nspv_remote_commands = {{"channelsopen", true},{"channelspayment", true},{"channelsclose", true},{"channelsrefund", true}, +{"channelslist", true},{"channelsinfo", true},{"oraclescreate", true},{"oraclesfund", true},{"oraclesregister", true},{"oraclessubscribe", true}, +{"oraclesdata", true},{"oraclesinfo", false},{"oracleslist", false},{"gatewaysbind", true},{"gatewaysdeposit", true},{"gatewaysclaim", true},{"gatewayswithdraw", true}, +{"gatewayspartialsign", true},{"gatewayscompletesigning", true},{"gatewaysmarkdone", true},{"gatewayspendingdeposits", true},{"gatewayspendingwithdraws", true}, +{"gatewaysprocessed", true},{"gatewaysinfo", false},{"gatewayslist", false},{"faucetfund", true},{"faucetget", true}}; struct NSPV_ntzargs { @@ -206,6 +213,229 @@ int32_t NSPV_getaddressutxos(struct NSPV_utxosresp *ptr,char *coinaddr,bool isCC return(0); } +class BaseCCChecker { +public: + /// base check function + /// @param vouts vouts where checked vout and opret are + /// @param nvout vout index to check + /// @param evalcode which must be in the opret + /// @param funcids allowed funcids in string + /// @param filtertxid txid that should be in the opret (after funcid) + virtual bool checkCC(uint256 txid, const std::vector &vouts, int32_t nvout, uint8_t evalcode, std::string funcids, uint256 filtertxid) = 0; +}; + +/// default cc vout checker for use in NSPV_getccmoduleutxos +/// checks if a vout is cc, has required evalcode, allowed funcids and txid +/// check both cc opret and last vout opret +/// maybe customized in via inheritance +class DefaultCCChecker : public BaseCCChecker { + +private: + +public: + DefaultCCChecker() { } + virtual bool checkCC(uint256 txid, const std::vector &vouts, int32_t nvout, uint8_t evalcode, std::string funcids, uint256 filtertxid) + { + CScript opret, dummy; + std::vector< vscript_t > vParams; + vscript_t vopret; + + if (nvout < vouts.size()) + { + // first check if it is cc vout + if (vouts[nvout].scriptPubKey.IsPayToCryptoCondition(&dummy, vParams)) + { + // try to find cc opret + if (vParams.size() > 0) + { + COptCCParams p(vParams[0]); // parse vout data + if (p.vData.size() > 0) + { + vopret = p.vData[0]; // get opret data + } + } + // if no cc opret check last vout opret + if (vopret.size() == 0) + { + GetOpReturnData(vouts.back().scriptPubKey, vopret); + } + if (vopret.size() > 2) + { + uint8_t opretEvalcode, opretFuncid; + uint256 opretTxid; + bool isEof = true; + bool isCreateTx = false; + + // parse opret first 3 fields: + bool parseOk = E_UNMARSHAL(vopret, + ss >> opretEvalcode; + ss >> opretFuncid; + if (funcids.size() > 0 && opretFuncid == funcids[0]) // this means that we check txid only for second+ funcid in array (considering that the first funcid is the creation txid itself like tokens) + { + isCreateTx = true; + } + else + { + ss >> opretTxid; + isCreateTx = false; + } + isEof = ss.eof(); ); + + opretTxid = revuint256(opretTxid); + std::cerr << __func__ << " " << "opretEvalcode=" << opretEvalcode << " opretFuncid=" << (char)opretFuncid << " isCreateTx=" << isCreateTx << " opretTxid=" << opretTxid.GetHex() << std::endl; + if( parseOk /*parseOk=true if eof reached*/|| !isEof /*more data means okay*/) + { + if (evalcode == opretEvalcode && std::find(funcids.begin(), funcids.end(), (char)opretFuncid) != funcids.end() && + (isCreateTx && filtertxid == txid || !isCreateTx && filtertxid == opretTxid)) + { + return true; + } + } + } + } + } + return false; + } +}; + +static class DefaultCCChecker defaultCCChecker; + +// table of pluggable cc vout checkers for usage in NSPV_getccmoduleutxos +// if the checker is not in the table for a evalcode then defaultCCChecker is used +static std::map ccCheckerTable = +{ +}; + +// implements SPV server's part, gets cc module utxos, filtered by evalcode, funcid and txid on opret, for the specified amount +// if the amount param is 0 returns total available filtere utxo amount and returns no utxos +// first char funcid in the string param is considered as the creation tx funcid so filtertxid is compared to the creation txid itself +// for other funcids filtertxid is compared to the txid in opreturn +int32_t NSPV_getccmoduleutxos(struct NSPV_utxosresp *ptr, char *coinaddr, int64_t amount, uint8_t evalcode, std::string funcids, uint256 filtertxid) +{ + int64_t total = 0, totaladded = 0; + uint32_t locktime; + int32_t tipheight=0, len, maxlen; + int32_t maxinputs = CC_MAXVINS; + + std::vector utxoSelected; + utxoSelected.reserve(CC_MAXVINS); + + std::vector > unspentOutputs; + SetCCunspents(unspentOutputs, coinaddr, true); + + maxlen = MAX_BLOCK_SIZE(tipheight) - 512; + //maxlen /= sizeof(*ptr->utxos); // TODO why was this? we need maxlen in bytes, don't we? + + //ptr->numutxos = (uint16_t)unspentOutputs.size(); + //if (ptr->numutxos >= 0 && ptr->numutxos < maxlen) + //{ + ptr->utxos = NULL; + ptr->numutxos = 0; + strncpy(ptr->coinaddr, coinaddr, sizeof(ptr->coinaddr) - 1); + ptr->CCflag = 1; + tipheight = chainActive.LastTip()->GetHeight(); + ptr->nodeheight = tipheight; // will be checked in libnspv + //} + + // select all appropriate utxos: + std::cerr << __func__ << " " << "searching addr=" << coinaddr << std::endl; + for (std::vector >::const_iterator it = unspentOutputs.begin(); it != unspentOutputs.end(); it++) + { + if (myIsutxo_spentinmempool(ignoretxid, ignorevin, it->first.txhash, (int32_t)it->first.index) == 0) + { + //const CCoins *pcoins = pcoinsTip->AccessCoins(it->first.txhash); <-- no opret in coins + CTransaction tx; + uint256 hashBlock; + int32_t nvout = it->first.index; + if (myGetTransaction(it->first.txhash, tx, hashBlock)) + { + class BaseCCChecker *baseChecker = ccCheckerTable[evalcode]; + + // if a checker is set for evalcode use it otherwise use the default checker: + if (baseChecker && baseChecker->checkCC(it->first.txhash, tx.vout, nvout, evalcode, funcids, filtertxid) || defaultCCChecker.checkCC(it->first.txhash, tx.vout, nvout, evalcode, funcids, filtertxid)) + { + std::cerr << __func__ << " " << "filtered utxo with amount=" << tx.vout[nvout].nValue << std::endl; + + struct CC_utxo utxo; + utxo.txid = it->first.txhash; + utxo.vout = (int32_t)it->first.index; + utxo.nValue = it->second.satoshis; + //utxo.height = it->second.blockHeight; + utxoSelected.push_back(utxo); + total += it->second.satoshis; + } + } + else + std::cerr << __func__ << " " << "ERROR: cant load tx for txid, please reindex" << std::endl; + } + } + + + if (amount == 0) { + // just return total value + ptr->total = total; + len = (int32_t)(sizeof(*ptr) - sizeof(ptr->utxos)/*subtract not serialized part of NSPV_utxoresp*/); + return len; + } + + // pick optimal utxos for the requested amount + CAmount remains = amount; + std::vector utxoAdded; + + while (utxoSelected.size() > 0) + { + int64_t below = 0, above = 0; + int32_t abovei = -1, belowi = -1, ind = -1; + + if (CC_vinselect(&abovei, &above, &belowi, &below, utxoSelected.data(), utxoSelected.size(), remains) < 0) + { + std::cerr << "error CC_vinselect" << " remains=" << remains << " amount=" << amount << " abovei=" << abovei << " belowi=" << belowi << " ind=" << " utxoSelected.size()=" << utxoSelected.size() << ind << std::endl; + return 0; + } + if (abovei >= 0) // best is 'above' + ind = abovei; + else if (belowi >= 0) // second try is 'below' + ind = belowi; + else + { + std::cerr << "error finding unspent" << " remains=" << remains << " amount=" << amount << " abovei=" << abovei << " belowi=" << belowi << " ind=" << " utxoSelected.size()=" << utxoSelected.size() << ind << std::endl; + return 0; + } + + utxoAdded.push_back(utxoSelected[ind]); + total += utxoSelected[ind].nValue; + remains -= utxoSelected[ind].nValue; + + // remove used utxo[ind]: + utxoSelected[ind] = utxoSelected.back(); + utxoSelected.pop_back(); + + if (total >= amount) // found the requested amount + break; + if (utxoAdded.size() >= maxinputs) // reached maxinputs + break; + } + ptr->numutxos = (uint16_t)utxoAdded.size(); + ptr->total = total; + ptr->utxos = (NSPV_utxoresp*)calloc(ptr->numutxos, sizeof(ptr->utxos[0])); + + for (uint16_t i = 0; i < ptr->numutxos; i++) + { + ptr->utxos[i].satoshis = utxoAdded[i].nValue; + ptr->utxos[i].txid = utxoAdded[i].txid; + ptr->utxos[i].vout = utxoAdded[i].vout; + } + + len = (int32_t)(sizeof(*ptr) - sizeof(ptr->utxos)/*subtract not serialized part of NSPV_utxoresp*/ + sizeof(*ptr->utxos)*ptr->numutxos); + if (len < maxlen) + return len; // good length + else + { + NSPV_utxosresp_purge(ptr); + return 0; + } +} + int32_t NSPV_getaddresstxids(struct NSPV_txidsresp *ptr,char *coinaddr,bool isCC,int32_t skipcount,uint32_t filter) { int32_t maxlen,txheight,ind=0,n = 0,len = 0; CTransaction tx; uint256 hashBlock; @@ -425,6 +655,63 @@ int32_t NSPV_mempooltxids(struct NSPV_mempoolresp *ptr,char *coinaddr,uint8_t is return(0); } +int32_t NSPV_remoterpc(struct NSPV_remoterpcresp *ptr,char *json,int n) +{ + std::vector txids; int32_t i,len = 0; UniValue result; std::string response; + UniValue request(UniValue::VOBJ),rpc_result(UniValue::VOBJ); JSONRequest jreq; CPubKey mypk; + + try + { + request.read(json,n); + jreq.parse(request); + strcpy(ptr->method,jreq.strMethod.c_str()); + len+=sizeof(ptr->method); + std::map::iterator it = nspv_remote_commands.find(jreq.strMethod); + if (it==nspv_remote_commands.end()) + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not supported!"); + const CRPCCommand *cmd=tableRPC[jreq.strMethod]; + if (!cmd) + throw JSONRPCError(RPC_METHOD_NOT_FOUND, "Method not found"); + if (it->second) + { + if (!request.exists("mypk")) + throw JSONRPCError(RPC_PARSE_ERROR, "No pubkey supplied in remote rpc request, necessary for this type of rpc"); + std::string str=request["mypk"].get_str(); + mypk=pubkey2pk(ParseHex(str)); + if (!mypk.IsValid()) + throw JSONRPCError(RPC_PARSE_ERROR, "Not valid pubkey passed in remote rpc call"); + } + //TODO: if ((result = cmd->actor(jreq.params,false,mypk)).isObject() || result.isArray()) + if ((result = cmd->actor(jreq.params,false)).isObject() || result.isArray()) + { + rpc_result = JSONRPCReplyObj(result, NullUniValue, jreq.id); + response=rpc_result.write(); + memcpy(ptr->json,response.c_str(),response.size()); + len+=response.size(); + return (len); + } + else throw JSONRPCError(RPC_MISC_ERROR, "Error in executing RPC on remote node"); + } + catch (const UniValue& objError) + { + rpc_result = JSONRPCReplyObj(NullUniValue, objError, jreq.id); + response=rpc_result.write(); + } + catch (const runtime_error& e) + { + rpc_result = JSONRPCReplyObj(NullUniValue,JSONRPCError(RPC_PARSE_ERROR, e.what()), jreq.id); + response=rpc_result.write(); + } + catch (const std::exception& e) + { + rpc_result = JSONRPCReplyObj(NullUniValue,JSONRPCError(RPC_PARSE_ERROR, e.what()), jreq.id); + response=rpc_result.write(); + } + memcpy(ptr->json,response.c_str(),response.size()); + len+=response.size(); + return (len); +} + uint8_t *NSPV_getrawtx(CTransaction &tx,uint256 &hashBlock,int32_t *txlenp,uint256 txid) { uint8_t *rawtx = 0; @@ -860,7 +1147,85 @@ void komodo_nSPVreq(CNode *pfrom,std::vector request) // received a req } } } - } + else if ( request[0] == NSPV_REMOTERPC ) + { + if ( timestamp > pfrom->prevtimes[ind] ) + { + struct NSPV_remoterpcresp R; int32_t p; + p = 1; + p+=iguana_rwnum(0,&request[p],sizeof(slen),&slen); + memset(&R,0,sizeof(R)); + if (request.size() == p+slen && (slen=NSPV_remoterpc(&R,(char *)&request[p],slen))>0 ) + { + response.resize(1 + slen); + response[0] = NSPV_REMOTERPCRESP; + NSPV_rwremoterpcresp(1,&response[1],&R,slen); + pfrom->PushMessage("nSPV",response); + pfrom->prevtimes[ind] = timestamp; + NSPV_remoterpc_purge(&R); + } + } + } + else if (request[0] == NSPV_CCMODULEUTXOS) // get cc module utxos from coinaddr for the requested amount, evalcode, funcid list and txid + { + //fprintf(stderr,"utxos: %u > %u, ind.%d, len.%d\n",timestamp,pfrom->prevtimes[ind],ind,len); + if (timestamp > pfrom->prevtimes[ind]) + { + struct NSPV_utxosresp U; + char coinaddr[64]; + int64_t amount; + uint8_t evalcode; + char funcids[27]; + uint256 filtertxid; + bool errorFormat = false; + const int32_t BITCOINADDRESSMINLEN = 20; + + int32_t minreqlen = sizeof(uint8_t) + sizeof(uint8_t) + BITCOINADDRESSMINLEN + sizeof(amount) + sizeof(evalcode) + sizeof(uint8_t) + sizeof(filtertxid); + int32_t maxreqlen = sizeof(uint8_t) + sizeof(uint8_t) + sizeof(coinaddr)-1 + sizeof(amount) + sizeof(evalcode) + sizeof(uint8_t) + sizeof(funcids)-1 + sizeof(filtertxid); + + if (len >= minreqlen && len <= maxreqlen) + { + n = 1; + int32_t addrlen = request[n++]; + if (addrlen < sizeof(coinaddr)) + { + memcpy(coinaddr, &request[n], addrlen); + coinaddr[addrlen] = 0; + n += addrlen; + iguana_rwnum(0, &request[n], sizeof(amount), &amount); + n += sizeof(amount); + iguana_rwnum(0, &request[n], sizeof(evalcode), &evalcode); + n += sizeof(evalcode); + + int32_t funcidslen = request[n++]; + if (funcidslen < sizeof(funcids)) + { + memcpy(funcids, &request[n], funcidslen); + funcids[funcidslen] = 0; + n += funcidslen; + iguana_rwbignum(0, &request[n], sizeof(filtertxid), (uint8_t *)&filtertxid); + std::cerr << __func__ << " " << "request addr=" << coinaddr << " amount=" << amount << " evalcode=" << (int)evalcode << " funcids=" << funcids << " filtertxid=" << filtertxid.GetHex() << std::endl; + + memset(&U, 0, sizeof(U)); + if ((slen = NSPV_getccmoduleutxos(&U, coinaddr, amount, evalcode, funcids, filtertxid)) > 0) + { + std::cerr << __func__ << " " << "created utxos, slen=" << slen << std::endl; + response.resize(1 + slen); + response[0] = NSPV_CCMODULEUTXOSRESP; + if (NSPV_rwutxosresp(1, &response[1], &U) == slen) + { + pfrom->PushMessage("nSPV", response); + pfrom->prevtimes[ind] = timestamp; + std::cerr << __func__ << " " << "returned nSPV response" << std::endl; + } + NSPV_utxosresp_purge(&U); + } + } + } + } + } + } + } } #endif // KOMODO_NSPVFULLNODE_H diff --git a/src/komodo_nSPV_superlite.h b/src/komodo_nSPV_superlite.h index cda671834..3d56d44ba 100644 --- a/src/komodo_nSPV_superlite.h +++ b/src/komodo_nSPV_superlite.h @@ -203,6 +203,12 @@ void komodo_nSPVresp(CNode *pfrom,std::vector response) // received a r NSPV_rwbroadcastresp(0,&response[1],&NSPV_broadcastresult); fprintf(stderr,"got broadcast response %u size.%d %s retcode.%d\n",timestamp,(int32_t)response.size(),NSPV_broadcastresult.txid.GetHex().c_str(),NSPV_broadcastresult.retcode); break; + case NSPV_CCMODULEUTXOSRESP: + NSPV_utxosresp_purge(&NSPV_utxosresult); + NSPV_rwutxosresp(0, &response[1], &NSPV_utxosresult); + fprintf(stderr, "got cc module utxos response %u size.%d\n", timestamp, (int32_t)response.size()); + break; + default: fprintf(stderr,"unexpected response %02x size.%d at %u\n",response[0],(int32_t)response.size(),timestamp); break; } @@ -925,4 +931,51 @@ UniValue NSPV_broadcast(char *hex) return(NSPV_broadcast_json(&B,txid)); } +// gets cc utxos filtered by evalcode, funcid and txid in opret, for the specified amount +// if amount == 0 returns total and no utxos +// funcids is string of funcid symbols like "ct". The first symbol is considered as creation tx funcid and filtertxid will be compared to the creation tx id itself. +// For second+ funcids the filtertxid will be compared to txid in opret +UniValue NSPV_ccmoduleutxos(char *coinaddr, int64_t amount, uint8_t evalcode, std::string funcids, uint256 filtertxid) +{ + UniValue result(UniValue::VOBJ); uint8_t msg[512]; int32_t i, iter, slen, len = 0; + uint8_t CCflag = 1; + + NSPV_utxosresp_purge(&NSPV_utxosresult); + if (bitcoin_base58decode(msg, coinaddr) != 25) + { + result.push_back(Pair("result", "error")); + result.push_back(Pair("error", "invalid address")); + return(result); + } + msg[len++] = NSPV_CCMODULEUTXOS; + + slen = (int32_t)strlen(coinaddr); + msg[len++] = slen; + memcpy(&msg[len], coinaddr, slen), len += slen; + + len += iguana_rwnum(1, &msg[len], sizeof(amount), &amount); + len += iguana_rwnum(1, &msg[len], sizeof(evalcode), &evalcode); + + slen = (int32_t)(funcids.size()); + msg[len++] = slen; + memcpy(&msg[len], funcids.data(), slen), len += slen; + + len += iguana_rwbignum(1, &msg[len], sizeof(filtertxid), (uint8_t *)&filtertxid); + for (iter = 0; iter<3; iter++) + if (NSPV_req(0, msg, len, NODE_ADDRINDEX, msg[0] >> 1) != 0) + { + for (i = 0; i= NSPV_inforesult.height) && strcmp(coinaddr, NSPV_utxosresult.coinaddr) == 0 && CCflag == NSPV_utxosresult.CCflag) + return(NSPV_utxosresp_json(&NSPV_utxosresult)); + } + } + else sleep(1); + result.push_back(Pair("result", "error")); + result.push_back(Pair("error", "no utxos result")); + result.push_back(Pair("lastpeer", NSPV_lastpeer)); + return(result); +} + #endif // KOMODO_NSPVSUPERLITE_H diff --git a/src/komodo_nSPV_wallet.h b/src/komodo_nSPV_wallet.h index 0b9ac11cf..f745629b7 100644 --- a/src/komodo_nSPV_wallet.h +++ b/src/komodo_nSPV_wallet.h @@ -388,8 +388,13 @@ UniValue NSPV_spend(char *srcaddr,char *destaddr,int64_t satoshis) // what its a mtx.nExpiryHeight = 0; mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID; mtx.nVersion = SAPLING_TX_VERSION; - if ( ASSETCHAINS_SYMBOL[0] == 0 ) - mtx.nLockTime = (uint32_t)time(NULL) - 777; + if ( ASSETCHAINS_SYMBOL[0] == 0 ) { + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + mtx.nLockTime = (uint32_t)time(NULL) - 777; + else + mtx.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); + } + memset(used,0,sizeof(used)); if ( NSPV_addinputs(used,mtx,satoshis+txfee,64,NSPV_utxosresult.utxos,NSPV_utxosresult.numutxos) > 0 ) From d86eb06bf1d9e1dd5741cf969073a03249da4a42 Mon Sep 17 00:00:00 2001 From: ca333 Date: Sat, 9 Nov 2019 14:10:14 +0100 Subject: [PATCH 129/339] bump protocol version --- src/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/version.h b/src/version.h index 64150b740..4056f105d 100644 --- a/src/version.h +++ b/src/version.h @@ -24,7 +24,7 @@ * network protocol versioning */ -static const int PROTOCOL_VERSION = 170007; +static const int PROTOCOL_VERSION = 170008; //! initial proto version, to be increased after version/verack negotiation static const int INIT_PROTO_VERSION = 209; @@ -33,7 +33,7 @@ static const int INIT_PROTO_VERSION = 209; static const int GETHEADERS_VERSION = 31800; //! disconnect from peers older than this proto version -static const int MIN_PEER_PROTO_VERSION = 170002; +static const int MIN_PEER_PROTO_VERSION = 170007; static const int STAKEDMIN_PEER_PROTO_VERSION = 170007; //! nTime field added to CAddress, starting with this version; From 5b71bda7a1b671ef4a541e9829727fb08577e450 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 9 Dec 2019 09:48:06 -0500 Subject: [PATCH 130/339] Use our own fork of libsnark to fix URL --- depends/packages/libsnark.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/libsnark.mk b/depends/packages/libsnark.mk index c2a620f26..895818216 100644 --- a/depends/packages/libsnark.mk +++ b/depends/packages/libsnark.mk @@ -1,6 +1,6 @@ package=libsnark $(package)_version=0.1 -$(package)_download_path=https://supernetorg.bintray.com/misc +$(package)_download_path=https://github.com/MyHush/libsnark/releases/download/v$($(package)_version)-$($(package)_git_commit)/ $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$(package)-$($(package)_git_commit).tar.gz $(package)_sha256_hash=47478adc2ae88c448dc736d59dfe007de6478e41e88d2d4d2ff4135a17ee6f90 From d9ad155c2bc2f709c990f0b871a34122d99f16a1 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 9 Dec 2019 08:15:18 -0800 Subject: [PATCH 131/339] Fix lack of block dir bug --- src/init.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index fcc82d653..f87fb7b4d 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1666,6 +1666,12 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) fReindex = GetBoolArg("-reindex", false); + boost::filesystem::path blocksDir = GetDataDir() / "blocks"; + if (!boost::filesystem::exists(blocksDir)) + { + boost::filesystem::create_directories(blocksDir); + } + // block tree db settings int dbMaxOpenFiles = GetArg("-dbmaxopenfiles", DEFAULT_DB_MAX_OPEN_FILES); bool dbCompression = GetBoolArg("-dbcompression", DEFAULT_DB_COMPRESSION); From c1d1554dfcf1fa71e48b770e596469d4727bd99b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 9 Dec 2019 23:40:32 -0500 Subject: [PATCH 132/339] Updates from to main.cpp from kmd master 1f874d46c5ddd24c0fd32ae6800f16d8006b9059 --- src/main.cpp | 327 ++++++++++++++++++++++++++------------------------- 1 file changed, 170 insertions(+), 157 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 1c0fe1fe4..8eed39563 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -940,20 +940,34 @@ bool IsStandardTx(const CTransaction& tx, string& reason, const int nHeight) bool IsFinalTx(const CTransaction &tx, int nBlockHeight, int64_t nBlockTime) { - int32_t i; - if (tx.nLockTime == 0) + if (tx.nLockTime == 0) return true; if ((int64_t)tx.nLockTime < ((int64_t)tx.nLockTime < LOCKTIME_THRESHOLD ? (int64_t)nBlockHeight : nBlockTime)) return true; BOOST_FOREACH(const CTxIn& txin, tx.vin) { - if ( txin.nSequence == 0xfffffffe && (((int64_t)tx.nLockTime >= LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime > nBlockTime) || ((int64_t)tx.nLockTime < LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime > nBlockHeight)) ) + if ( !komodo_hardfork_active(nBlockTime) && txin.nSequence == 0xfffffffe && + //if ( (nBlockTime <= ASSETCHAINS_STAKED_HF_TIMESTAMP ) && txin.nSequence == 0xfffffffe && + ( + ((int64_t)tx.nLockTime >= LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime > nBlockTime) || + ((int64_t)tx.nLockTime < LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime > nBlockHeight) + ) + ) + { + + } + //else if ( nBlockTime > ASSETCHAINS_STAKED_HF_TIMESTAMP && txin.nSequence == 0xfffffffe && + else if ( komodo_hardfork_active(nBlockTime) && txin.nSequence == 0xfffffffe && + ( + ((int64_t)tx.nLockTime >= LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime <= nBlockTime) || + ((int64_t)tx.nLockTime < LOCKTIME_THRESHOLD && (int64_t)tx.nLockTime <= nBlockHeight)) + ) { } else if (!txin.IsFinal()) { - //printf("non-final txin seq.%x locktime.%u vs nTime.%u\n",txin.nSequence,(uint32_t)tx.nLockTime,(uint32_t)nBlockTime); + LogPrintf("non-final txin seq.%x locktime.%u vs nTime.%u\n",txin.nSequence,(uint32_t)tx.nLockTime,(uint32_t)nBlockTime); return false; } } @@ -1160,6 +1174,7 @@ bool ContextualCheckTransaction(int32_t slowflag,const CBlock *block, CBlockInde if (tx.fOverwintered && tx.nVersionGroupId != SAPLING_VERSION_GROUP_ID) { //return state.DoS(dosLevel, error("CheckTransaction(): invalid Sapling tx version"),REJECT_INVALID, "bad-sapling-tx-version-group-id"); + if ( 0 ) { string strHex = EncodeHexTx(tx); fprintf(stderr,"invalid Sapling rawtx.%s\n",strHex.c_str()); @@ -1332,7 +1347,7 @@ bool ContextualCheckTransaction(int32_t slowflag,const CBlock *block, CBlockInde } bool CheckTransaction(uint32_t tiptime,const CTransaction& tx, CValidationState &state, - libzcash::ProofVerifier& verifier) + libzcash::ProofVerifier& verifier,int32_t txIndex, int32_t numTxs) { static uint256 array[64]; static int32_t numbanned,indallvouts; int32_t j,k,n; if ( *(int32_t *)&array[0] == 0 ) @@ -1732,7 +1747,7 @@ CAmount GetMinRelayFee(const CTransaction& tx, unsigned int nBytes, bool fAllowF } -bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransaction &tx, bool fLimitFree,bool* pfMissingInputs, bool fRejectAbsurdFee, int dosLevel, bool fSkipExpiry) +bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransaction &tx, bool fLimitFree,bool* pfMissingInputs, bool fRejectAbsurdFee, int dosLevel) { AssertLockHeld(cs_main); if (pfMissingInputs) @@ -1743,14 +1758,6 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa if ( nextBlockHeight <= 1 || chainActive.LastTip() == 0 ) tiptime = (uint32_t)time(NULL); else tiptime = (uint32_t)chainActive.LastTip()->nTime; - - // is it already in the memory pool? - uint256 hash = tx.GetHash(); - if (pool.exists(hash)) - { - //fprintf(stderr,"already in mempool\n"); - return state.Invalid(false, REJECT_DUPLICATE, "already in mempool"); - } //fprintf(stderr,"addmempool 0\n"); // Node operator can choose to reject tx by number of transparent inputs static_assert(std::numeric_limits::max() >= std::numeric_limits::max(), "size_t too small"); @@ -1766,21 +1773,21 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } } //fprintf(stderr,"addmempool 1\n"); - auto verifier = libzcash::ProofVerifier::Strict(); if ( ASSETCHAINS_SYMBOL[0] == 0 && komodo_validate_interest(tx,chainActive.LastTip()->GetHeight()+1,chainActive.LastTip()->GetMedianTimePast() + 777,0) < 0 ) { - //fprintf(stderr,"AcceptToMemoryPool komodo_validate_interest failure\n"); + fprintf(stderr,"AcceptToMemoryPool komodo_validate_interest failure\n"); return error("AcceptToMemoryPool: komodo_validate_interest failed"); } - if (!CheckTransaction(tiptime,tx, state, verifier)) + + if (!CheckTransaction(tiptime,tx, state, verifier, 0, 0)) { return error("AcceptToMemoryPool: CheckTransaction failed"); } + // DoS level set to 10 to be more forgiving. - // Check transaction contextually against the set of consensus rules which apply in the next block to be mined. - if (!fSkipExpiry && !ContextualCheckTransaction(0,0,0,tx, state, nextBlockHeight, (dosLevel == -1) ? 10 : dosLevel)) + if (!ContextualCheckTransaction(0,0,0,tx, state, nextBlockHeight, (dosLevel == -1) ? 10 : dosLevel)) { return error("AcceptToMemoryPool: ContextualCheckTransaction failed"); } @@ -1791,26 +1798,34 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa fprintf(stderr,"AcceptToMemoryPool coinbase as individual tx\n"); return state.DoS(100, error("AcceptToMemoryPool: coinbase as individual tx"),REJECT_INVALID, "coinbase"); } + // Rather not work on nonstandard transactions (unless -testnet/-regtest) string reason; - if (!fSkipExpiry && Params().RequireStandard() && !IsStandardTx(tx, reason, nextBlockHeight)) + if (Params().RequireStandard() && !IsStandardTx(tx, reason, nextBlockHeight)) { // //fprintf(stderr,"AcceptToMemoryPool reject nonstandard transaction: %s\nscriptPubKey: %s\n",reason.c_str(),tx.vout[0].scriptPubKey.ToString().c_str()); return state.DoS(0,error("AcceptToMemoryPool: nonstandard transaction: %s", reason),REJECT_NONSTANDARD, reason); } + // Only accept nLockTime-using transactions that can be mined in the next // block; we don't want our mempool filled up with transactions that can't // be mined yet. - if (!fSkipExpiry && !CheckFinalTx(tx, STANDARD_LOCKTIME_VERIFY_FLAGS)) + if (!CheckFinalTx(tx, STANDARD_LOCKTIME_VERIFY_FLAGS)) { //fprintf(stderr,"AcceptToMemoryPool reject non-final\n"); return state.DoS(0, false, REJECT_NONSTANDARD, "non-final"); } //fprintf(stderr,"addmempool 3\n"); + // is it already in the memory pool? + uint256 hash = tx.GetHash(); + if (pool.exists(hash)) + { + //fprintf(stderr,"already in mempool\n"); + return state.Invalid(false, REJECT_DUPLICATE, "already in mempool"); + } // Check for conflicts with in-memory transactions - if (!fSkipExpiry) { LOCK(pool.cs); // protect pool.mapNextTx for (unsigned int i = 0; i < tx.vin.size(); i++) @@ -1837,7 +1852,6 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } } //fprintf(stderr,"addmempool 4\n"); - { CCoinsView dummy; CCoinsViewCache view(&dummy); @@ -1861,7 +1875,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa if (ExistsImportTombstone(tx, view)) return state.Invalid(false, REJECT_DUPLICATE, "import tombstone exists"); } - else if (!fSkipExpiry) + else { // do all inputs exist? // Note that this does not check for the presence of actual outputs (see the next check for that), @@ -1873,10 +1887,13 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa if (pfMissingInputs) *pfMissingInputs = true; //fprintf(stderr,"missing inputs\n"); - return state.DoS(0, error("AcceptToMemoryPool: tx inputs not found"),REJECT_INVALID, "bad-txns-inputs-missing"); + return false; + /* + https://github.com/zcash/zcash/blob/master/src/main.cpp#L1490 + state.DoS(0, error("AcceptToMemoryPool: tx inputs not found"),REJECT_INVALID, "bad-txns-inputs-missing"); + */ } } - // are the actual inputs available? if (!view.HaveInputs(tx)) { @@ -1884,59 +1901,50 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa return state.Invalid(error("AcceptToMemoryPool: inputs already spent"),REJECT_DUPLICATE, "bad-txns-inputs-spent"); } } + // are the joinsplit's requirements met? if (!view.HaveJoinSplitRequirements(tx)) { //fprintf(stderr,"accept failure.2\n"); return state.Invalid(error("AcceptToMemoryPool: joinsplit requirements not met"),REJECT_DUPLICATE, "bad-txns-joinsplit-requirements-not-met"); } - + // Bring the best block into scope view.GetBestBlock(); - - if (!fSkipExpiry) - nValueIn = view.GetValueIn(chainActive.LastTip()->GetHeight(),&interest,tx,chainActive.LastTip()->nTime); + + nValueIn = view.GetValueIn(chainActive.LastTip()->GetHeight(),&interest,tx,chainActive.LastTip()->nTime); if ( 0 && interest != 0 ) fprintf(stderr,"add interest %.8f\n",(double)interest/COIN); // we have all inputs cached now, so switch back to dummy, so we don't need to keep lock on mempool view.SetBackend(dummy); } - // Check for non-standard pay-to-script-hash in inputs - if (!fSkipExpiry && Params().RequireStandard() && !AreInputsStandard(tx, view, consensusBranchId)) + if (Params().RequireStandard() && !AreInputsStandard(tx, view, consensusBranchId)) return error("AcceptToMemoryPool: reject nonstandard transaction input"); - + // Check that the transaction doesn't have an excessive number of // sigops, making it impossible to mine. Since the coinbase transaction // itself can contain sigops MAX_STANDARD_TX_SIGOPS is less than // MAX_BLOCK_SIGOPS; we still consider this an invalid rather than // merely non-standard transaction. unsigned int nSigOps = GetLegacySigOpCount(tx); - if (!fSkipExpiry) - nSigOps += GetP2SHSigOpCount(tx, view); + nSigOps += GetP2SHSigOpCount(tx, view); if (nSigOps > MAX_STANDARD_TX_SIGOPS) { fprintf(stderr,"accept failure.4\n"); return state.DoS(1, error("AcceptToMemoryPool: too many sigops %s, %d > %d", hash.ToString(), nSigOps, MAX_STANDARD_TX_SIGOPS),REJECT_NONSTANDARD, "bad-txns-too-many-sigops"); } - + CAmount nValueOut = tx.GetValueOut(); - double dPriority = 0; - CAmount nFees = 0; - - if (!fSkipExpiry) - { - dPriority = view.GetPriority(tx, chainActive.Height()); - nFees = nValueIn-nValueOut; - } - + CAmount nFees = nValueIn-nValueOut; + double dPriority = view.GetPriority(tx, chainActive.Height()); if ( nValueOut > 777777*COIN && KOMODO_VALUETOOBIG(nValueOut - 777777*COIN) != 0 ) // some room for blockreward and txfees return state.DoS(100, error("AcceptToMemoryPool: GetValueOut too big"),REJECT_INVALID,"tx valueout is too big"); - + // Keep track of transactions that spend a coinbase, which we re-scan // during reorgs to ensure COINBASE_MATURITY is still met. bool fSpendsCoinbase = false; - if (!fSkipExpiry && !tx.IsCoinImport() && !tx.IsPegsImport()) { + if (!tx.IsCoinImport() && !tx.IsPegsImport()) { BOOST_FOREACH(const CTxIn &txin, tx.vin) { const CCoins *coins = view.AccessCoins(txin.prevout.hash); if (coins->IsCoinBase()) { @@ -1945,15 +1953,15 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa } } } - +//fprintf(stderr,"addmempool 5\n"); // Grab the branch ID we expect this transaction to commit to. We don't // yet know if it does, but if the entry gets added to the mempool, then // it has passed ContextualCheckInputs and therefore this is correct. auto consensusBranchId = CurrentEpochBranchId(chainActive.Height() + 1, Params().GetConsensus()); - + CTxMemPoolEntry entry(tx, nFees, GetTime(), dPriority, chainActive.Height(), mempool.HasNoInputsOf(tx), fSpendsCoinbase, consensusBranchId); unsigned int nSize = entry.GetTxSize(); - + // Accept a tx if it contains joinsplits and has at least the default fee specified by z_sendmany. if (tx.vjoinsplit.size() > 0 && nFees >= ASYNC_RPC_OPERATION_DEFAULT_MINERS_FEE) { // In future we will we have more accurate and dynamic computation of fees for tx with joinsplits. @@ -1966,17 +1974,17 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa return state.DoS(0, error("AcceptToMemoryPool: not enough fees %s, %d < %d",hash.ToString(), nFees, txMinFee),REJECT_INSUFFICIENTFEE, "insufficient fee"); } } - + // Require that free transactions have sufficient priority to be mined in the next block. if (GetBoolArg("-relaypriority", false) && nFees < ::minRelayTxFee.GetFee(nSize) && !AllowFree(view.GetPriority(tx, chainActive.Height() + 1))) { fprintf(stderr,"accept failure.6\n"); return state.DoS(0, false, REJECT_INSUFFICIENTFEE, "insufficient priority"); } - + // Continuously rate-limit free (really, very-low-fee) transactions // This mitigates 'penny-flooding' -- sending thousands of free transactions just to // be annoying or make others' transactions take longer to confirm. - if ( !fSkipExpiry && fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize) && !tx.IsCoinImport() && !tx.IsPegsImport()) + if (fLimitFree && nFees < ::minRelayTxFee.GetFee(nSize) && !tx.IsCoinImport() && !tx.IsPegsImport()) { static CCriticalSection csFreeLimiter; static double dFreeCount; @@ -1998,8 +2006,8 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa LogPrint("mempool", "Rate limit dFreeCount: %g => %g\n", dFreeCount, dFreeCount+nSize); dFreeCount += nSize; } - - if (!fSkipExpiry && !tx.IsCoinImport() && !tx.IsPegsImport() && fRejectAbsurdFee && nFees > ::minRelayTxFee.GetFee(nSize) * 10000 && nFees > nValueOut/19) + + if (!tx.IsCoinImport() && !tx.IsPegsImport() && fRejectAbsurdFee && nFees > ::minRelayTxFee.GetFee(nSize) * 10000 && nFees > nValueOut/19) { string errmsg = strprintf("absurdly high fees %s, %d > %d", hash.ToString(), @@ -2012,12 +2020,12 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa // Check against previous transactions // This is done last to help prevent CPU exhaustion denial-of-service attacks. PrecomputedTransactionData txdata(tx); - if (!fSkipExpiry && !ContextualCheckInputs(tx, state, view, true, STANDARD_SCRIPT_VERIFY_FLAGS, true, txdata, Params().GetConsensus(), consensusBranchId)) + if (!ContextualCheckInputs(tx, state, view, true, STANDARD_SCRIPT_VERIFY_FLAGS, true, txdata, Params().GetConsensus(), consensusBranchId)) { //fprintf(stderr,"accept failure.9\n"); return error("AcceptToMemoryPool: ConnectInputs failed %s", hash.ToString()); } - + // Check again against just the consensus-critical mandatory script // verification flags, in case of bugs in the standard flags that cause // transactions to pass as valid when they're actually invalid. For @@ -2034,7 +2042,8 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa KOMODO_CONNECTING = (1<<30) + (int32_t)chainActive.LastTip()->GetHeight() + 1; } //fprintf(stderr,"addmempool 7\n"); - if (!fSkipExpiry && !ContextualCheckInputs(tx, state, view, true, MANDATORY_SCRIPT_VERIFY_FLAGS, true, txdata, Params().GetConsensus(), consensusBranchId)) + + if (!ContextualCheckInputs(tx, state, view, true, MANDATORY_SCRIPT_VERIFY_FLAGS, true, txdata, Params().GetConsensus(), consensusBranchId)) { if ( flag != 0 ) KOMODO_CONNECTING = -1; @@ -2043,24 +2052,36 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa if ( flag != 0 ) KOMODO_CONNECTING = -1; - // Store transaction in memory - pool.addUnchecked(hash, entry, !IsInitialBlockDownload()); - - if (!fSkipExpiry && !tx.IsCoinImport()) { - // Add memory address index - if (fAddressIndex) { - pool.addAddressIndex(entry, view); - } + LOCK(pool.cs); + // Store transaction in memory + pool.addUnchecked(hash, entry, !IsInitialBlockDownload()); + if (!tx.IsCoinImport()) + { + // Add memory address index + if (fAddressIndex) { + pool.addAddressIndex(entry, view); + } - // Add memory spent index - if (fSpentIndex) { - pool.addSpentIndex(entry, view); + // Add memory spent index + if (fSpentIndex) { + pool.addSpentIndex(entry, view); + } } } } - //SyncWithWallets(tx,NULL); + // This should be here still? + //SyncWithWallets(tx, NULL); + return true; +} +bool CCTxFixAcceptToMemPoolUnchecked(CTxMemPool& pool, const CTransaction &tx) +{ + // called from CheckBlock which is in cs_main and mempool.cs locks already. + auto consensusBranchId = CurrentEpochBranchId(chainActive.Height() + 1, Params().GetConsensus()); + CTxMemPoolEntry entry(tx, 0, GetTime(), 0, chainActive.Height(), mempool.HasNoInputsOf(tx), false, consensusBranchId); + //fprintf(stderr, "adding %s to mempool from block %d\n",tx.GetHash().ToString().c_str(),chainActive.GetHeight()); + pool.addUnchecked(tx.GetHash(), entry, false); return true; } @@ -2127,59 +2148,6 @@ struct CompareBlocksByHeightMain } }; -bool RemoveOrphanedBlocks(int32_t notarized_height) -{ - LOCK(cs_main); - std::vector prunedblocks; - std::set setTips; - int32_t m=0,n = 0; - // get notarised timestamp and use this as a backup incase the forked block has no height. - // we -600 to make sure the time is within future block constraints. - uint32_t notarized_timestamp = komodo_heightstamp(notarized_height)-600; - // Most of this code is a direct copy from GetChainTips RPC. Which gives a return of all - // blocks that are not in the main chain. - BOOST_FOREACH(const PAIRTYPE(const uint256, CBlockIndex*)& item, mapBlockIndex) - { - n++; - setTips.insert(item.second); - } - n = 0; - BOOST_FOREACH(const PAIRTYPE(const uint256, CBlockIndex*)& item, mapBlockIndex) - { - const CBlockIndex* pprev=0; - n++; - if ( item.second != 0 ) - pprev = item.second->pprev; - if (pprev) - setTips.erase(pprev); - } - const CBlockIndex *forked; - BOOST_FOREACH(const CBlockIndex* block, setTips) - { - // We skip anything over notarised height to avoid breaking normal consensus rules. - if ( block->GetHeight() > notarized_height || block->nTime > notarized_timestamp ) - continue; - // We can also check if the block is in the active chain as a backup test. - forked = chainActive.FindFork(block); - // Here we save each forked block to a vector for removal later. - if ( forked != 0 ) - prunedblocks.push_back(block); - } - if (prunedblocks.size() > 0 && pblocktree->EraseBatchSync(prunedblocks)) - { - // Blocks cleared from disk succesfully, using internal DB batch erase function. Which exists, but has never been used before. - // We need to try and clear the block index from mapBlockIndex now, otherwise node will need a restart. - BOOST_FOREACH(const CBlockIndex* block, prunedblocks) - { - m++; - mapBlockIndex.erase(block->GetBlockHash()); - } - fprintf(stderr, "%s removed %d orphans from %d blocks before %d\n",ASSETCHAINS_SYMBOL,m,n, notarized_height); - return true; - } - return false; -} - /*uint64_t myGettxout(uint256 hash,int32_t n) { CCoins coins; @@ -2199,7 +2167,12 @@ bool myAddtomempool(CTransaction &tx, CValidationState *pstate, bool fSkipExpiry pstate = &state; CTransaction Ltx; bool fMissingInputs,fOverrideFees = false; if ( mempool.lookup(tx.GetHash(),Ltx) == 0 ) - return(AcceptToMemoryPool(mempool, *pstate, tx, false, &fMissingInputs, !fOverrideFees, -1, fSkipExpiry)); + { + if ( !fSkipExpiry ) + return(AcceptToMemoryPool(mempool, *pstate, tx, false, &fMissingInputs, !fOverrideFees, -1)); + else + return(CCTxFixAcceptToMemPoolUnchecked(mempool,tx)); + } else return(true); } @@ -3413,9 +3386,10 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin auto verifier = libzcash::ProofVerifier::Strict(); auto disabledVerifier = libzcash::ProofVerifier::Disabled(); int32_t futureblock; - CAmount blockReward = 0; uint64_t notarypaycheque = 0; + CAmount blockReward = GetBlockSubsidy(pindex->GetHeight(), chainparams.GetConsensus()); + uint64_t notarypaycheque = 0; // Check it again to verify JoinSplit proofs, and in case a previous version let a bad block in - if (!CheckBlock(&futureblock,pindex->GetHeight(),pindex,block, state, fExpensiveChecks ? verifier : disabledVerifier, fCheckPOW, !fJustCheck) || futureblock != 0 ) + if ( !CheckBlock(&futureblock,pindex->GetHeight(),pindex,block, state, fExpensiveChecks ? verifier : disabledVerifier, fCheckPOW, !fJustCheck) || futureblock != 0 ) { //fprintf(stderr,"checkblock failure in connectblock futureblock.%d\n",futureblock); return false; @@ -3532,7 +3506,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin CAmount nFees = 0; int nInputs = 0; uint64_t valueout; - int64_t voutsum = 0,prevsum=0,interest,sum = 0; + int64_t voutsum = 0, prevsum = 0, interest, sum = 0, stakeTxValue = 0; unsigned int nSigOps = 0; CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size())); std::vector > vPos; @@ -3731,7 +3705,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin int64_t nTime1 = GetTimeMicros(); nTimeConnect += nTime1 - nTimeStart; LogPrint("bench", " - Connect %u transactions: %.2fms (%.3fms/tx, %.3fms/txin) [%.2fs]\n", (unsigned)block.vtx.size(), 0.001 * (nTime1 - nTimeStart), 0.001 * (nTime1 - nTimeStart) / block.vtx.size(), nInputs <= 1 ? 0 : 0.001 * (nTime1 - nTimeStart) / (nInputs-1), nTimeConnect * 0.000001); - blockReward += nFees + GetBlockSubsidy(pindex->GetHeight(), chainparams.GetConsensus()) + sum; + blockReward += nFees + sum; if ( ASSETCHAINS_COMMISSION != 0 || ASSETCHAINS_FOUNDERS_REWARD != 0 ) //ASSETCHAINS_OVERRIDE_PUBKEY33[0] != 0 && { uint64_t checktoshis; @@ -4016,6 +3990,9 @@ void static UpdateTip(CBlockIndex *pindexNew) { pcoinsTip->DynamicMemoryUsage() * (1.0 / (1<<20)), pcoinsTip->GetCacheSize()); cvBlockChange.notify_all(); + + /* + // https://github.com/zcash/zcash/issues/3992 -> https://github.com/zcash/zcash/commit/346d11d3eb2f8162df0cb00b1d1f49d542495198 // Check the version of the last 100 blocks to see if we need to upgrade: static bool fWarned = false; @@ -4039,6 +4016,7 @@ void static UpdateTip(CBlockIndex *pindexNew) { fWarned = true; } } + */ } /** @@ -4127,17 +4105,15 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) { for (int i = 0; i < block.vtx.size(); i++) { CTransaction &tx = block.vtx[i]; - if ((i == (block.vtx.size() - 1)) && (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block,pindexDelete->GetHeight(),true) != 0))) + //if ((i == (block.vtx.size() - 1)) && ((ASSETCHAINS_LWMAPOS && block.IsVerusPOSBlock()) || (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block) != 0)))) + if ( komodo_newStakerActive(0, pindexDelete->nTime) == 0 && i == block.vtx.size()-1 && komodo_isPoS((CBlock *)&block,pindexDelete->GetHeight(),0) != 0 ) { #ifdef ENABLE_WALLET - if ( !GetBoolArg("-disablewallet", false) && KOMODO_NSPV_FULLNODE ) - pwalletMain->EraseFromWallet(tx.GetHash()); + // new staking tx cannot be accepted to mempool and expires in 1 block, so no need for this! :D + if ( !GetBoolArg("-disablewallet", false) && KOMODO_NSPV_FULLNODE ) + pwalletMain->EraseFromWallet(tx.GetHash()); #endif - } - else - { - SyncWithWallets(tx, NULL); - } + } else SyncWithWallets(tx, NULL); } // Update cached incremental witnesses GetMainSignals().ChainTip(pindexDelete, &block, newSproutTree, newSaplingTree, false); @@ -4232,8 +4208,7 @@ bool static ConnectTip(CValidationState &state, CBlockIndex *pindexNew, CBlock * pblock = █ } KOMODO_CONNECTING = (int32_t)pindexNew->GetHeight(); - fprintf(stderr,"%s connecting ht.%d maxsize.%d vs %d\n",ASSETCHAINS_SYMBOL,(int32_t)pindexNew->GetHeight(),MAX_BLOCK_SIZE(pindexNew->GetHeight()),(int32_t)::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION)); - + //fprintf(stderr,"%s connecting ht.%d maxsize.%d vs %d\n",ASSETCHAINS_SYMBOL,(int32_t)pindexNew->GetHeight(),MAX_BLOCK_SIZE(pindexNew->GetHeight()),(int32_t)::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION)); // Get the current commitment tree SproutMerkleTree oldSproutTree; SaplingMerkleTree oldSaplingTree; @@ -4417,7 +4392,6 @@ static void PruneBlockIndexCandidates() { * pblock is either NULL or a pointer to a CBlock corresponding to pindexMostWork. */ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBlockIndex *pindexMostWork, CBlock *pblock) { - //fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); AssertLockHeld(cs_main); bool fInvalidFound = false; const CBlockIndex *pindexOldTip = chainActive.Tip(); @@ -4429,9 +4403,37 @@ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBloc notarizedht = komodo_notarized_height(&prevMoMheight,¬arizedhash,&txid); if ( !fSkipdpow && pindexFork != 0 && pindexOldTip->GetHeight() > notarizedht && pindexFork->GetHeight() < notarizedht ) { - fprintf(stderr,"pindexOldTip->GetHeight().%d > notarizedht %d && pindexFork->GetHeight().%d is < notarizedht %d, so ignore it\n",(int32_t)pindexOldTip->GetHeight(),notarizedht,(int32_t)pindexFork->GetHeight(),notarizedht); + LogPrintf("pindexOldTip->GetHeight().%d > notarizedht %d && pindexFork->GetHeight().%d is < notarizedht %d, so ignore it\n",(int32_t)pindexOldTip->GetHeight(),notarizedht,(int32_t)pindexFork->GetHeight(),notarizedht); + // *** DEBUG *** + if (1) + { + const CBlockIndex *pindexLastNotarized = mapBlockIndex[notarizedhash]; + auto msg = "- " + strprintf(_("Current tip : %s, height %d, work %s"), + pindexOldTip->phashBlock->GetHex(), pindexOldTip->GetHeight(), pindexOldTip->chainPower.chainWork.GetHex()) + "\n" + + "- " + strprintf(_("New tip : %s, height %d, work %s"), + pindexMostWork->phashBlock->GetHex(), pindexMostWork->GetHeight(), pindexMostWork->chainPower.chainWork.GetHex()) + "\n" + + "- " + strprintf(_("Fork point : %s, height %d"), + pindexFork->phashBlock->GetHex(), pindexFork->GetHeight()) + "\n" + + "- " + strprintf(_("Last ntrzd : %s, height %d"), + pindexLastNotarized->phashBlock->GetHex(), pindexLastNotarized->GetHeight()); + LogPrintf("[ Debug ]\n%s\n",msg); + + int nHeight = pindexFork ? pindexFork->GetHeight() : -1; + int nTargetHeight = std::min(nHeight + 32, pindexMostWork->GetHeight()); + + LogPrintf("[ Debug ] nHeight = %d, nTargetHeight = %d\n", nHeight, nTargetHeight); + + CBlockIndex *pindexIter = pindexMostWork->GetAncestor(nTargetHeight); + while (pindexIter && pindexIter->GetHeight() != nHeight) { + LogPrintf("[ Debug -> New blocks list ] %s, height %d\n", pindexIter->phashBlock->GetHex(), pindexIter->GetHeight()); + pindexIter = pindexIter->pprev; + } + } + + CValidationState tmpstate; + InvalidateBlock(tmpstate,pindexMostWork); // trying to invalidate longest chain, which tried to reorg notarized chain (in case of fork point below last notarized block) return state.DoS(100, error("ActivateBestChainStep(): pindexOldTip->GetHeight().%d > notarizedht %d && pindexFork->GetHeight().%d is < notarizedht %d, so ignore it",(int32_t)pindexOldTip->GetHeight(),notarizedht,(int32_t)pindexFork->GetHeight(),notarizedht), - REJECT_INVALID, "past-notarized-height"); + REJECT_INVALID, "past-notarized-height"); } // - On ChainDB initialization, pindexOldTip will be null, so there are no removable blocks. // - If pindexMostWork is in a chain that doesn't have the same genesis block as our chain, @@ -4553,7 +4555,6 @@ static bool ActivateBestChainStep(bool fSkipdpow, CValidationState &state, CBloc * that is already loaded (to avoid loading it again from disk). */ bool ActivateBestChain(bool fSkipdpow, CValidationState &state, CBlock *pblock) { - //fprintf(stderr,"%s: fSkipdpow=%d\n", __FUNCTION__, fSkipdpow); CBlockIndex *pindexNewTip = NULL; CBlockIndex *pindexMostWork = NULL; const CChainParams& chainParams = Params(); @@ -4762,8 +4763,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl sproutValue += js.vpub_old; sproutValue -= js.vpub_new; } - } - + } pindexNew->nSproutValue = sproutValue; pindexNew->nChainSproutValue = boost::none; pindexNew->nSaplingValue = saplingValue; @@ -4773,7 +4773,6 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl pindexNew->nUndoPos = 0; pindexNew->nStatus |= BLOCK_HAVE_DATA; pindexNew->RaiseValidity(BLOCK_VALID_TRANSACTIONS); - setDirtyBlockIndex.insert(pindexNew); if (pindexNew->pprev == NULL || pindexNew->pprev->nChainTx) { @@ -4786,10 +4785,7 @@ bool ReceivedBlockTransactions(const CBlock &block, CValidationState& state, CBl CBlockIndex *pindex = queue.front(); queue.pop_front(); pindex->nChainTx = (pindex->pprev ? pindex->pprev->nChainTx : 0) + pindex->nTx; - if (pindex->pprev) { - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; - if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; } else { @@ -5073,7 +5069,7 @@ bool CheckBlockHeader(int32_t *futureblockp,int32_t height,CBlockIndex *pindex, } int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtime); -int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height); +int32_t komodo_checkPOW(int64_t stakeTxValue,int32_t slowflag,CBlock *pblock,int32_t height); bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const CBlock& block, CValidationState& state, libzcash::ProofVerifier& verifier, @@ -5105,9 +5101,24 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C fprintf(stderr," failed hash ht.%d\n",height); return state.DoS(50, error("CheckBlock: proof of work failed"),REJECT_INVALID, "high-hash"); } - if ( komodo_checkPOW(1,(CBlock *)&block,height) < 0 ) // checks Equihash + if ( ASSETCHAINS_STAKED == 0 && komodo_checkPOW(0,1,(CBlock *)&block,height) < 0 ) // checks Equihash return state.DoS(100, error("CheckBlock: failed slow_checkPOW"),REJECT_INVALID, "failed-slow_checkPOW"); } + if ( height > nDecemberHardforkHeight && ASSETCHAINS_SYMBOL[0] == 0 ) // December 2019 hardfork + { + int32_t notaryid; + int32_t special = komodo_chosennotary(¬aryid,height,pubkey33,tiptime); + if (notaryid > 0) { + CScript merkleroot = CScript(); + CBlock blockcopy = block; // block shouldn't be changed below, so let's make it's copy + CBlock *pblockcopy = (CBlock *)&blockcopy; + if (!komodo_checkopret(pblockcopy, merkleroot)) { + fprintf(stderr, "failed or missing merkleroot expected.%s != merkleroot.%s\n", komodo_makeopret(pblockcopy, false).ToString().c_str(), merkleroot.ToString().c_str()); + return state.DoS(100, error("CheckBlock: failed or missing merkleroot opret in easy-mined"),REJECT_INVALID, "failed-merkle-opret-in-easy-mined"); + } + } + } + // Check the merkle root. if (fCheckMerkleRoot) { bool mutated; @@ -5177,10 +5188,9 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C list removed; for (i=0; iGetHeight(), pindex)); //komodo_pindex_init(pindex,(int32_t)pindex->GetHeight()); } - fprintf(stderr,"load blockindexDB paired %u\n",(uint32_t)time(NULL)); + //fprintf(stderr,"load blockindexDB paired %u\n",(uint32_t)time(NULL)); sort(vSortedByHeight.begin(), vSortedByHeight.end()); - fprintf(stderr,"load blockindexDB sorted %u\n",(uint32_t)time(NULL)); + //fprintf(stderr,"load blockindexDB sorted %u\n",(uint32_t)time(NULL)); BOOST_FOREACH(const PAIRTYPE(int, CBlockIndex*)& item, vSortedByHeight) { CBlockIndex* pindex = item.second; From 9a90d4186eb2e6d4a64db4d08f379c72e3b6ed65 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 11:31:34 -0500 Subject: [PATCH 133/339] pow.cpp changes --- src/pow.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pow.cpp b/src/pow.cpp index cabea5351..e402cb63f 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -780,6 +780,8 @@ int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33, int32_t komodo_is_special(uint8_t pubkeys[66][33],int32_t mids[66],uint32_t blocktimes[66],int32_t height,uint8_t pubkey33[33],uint32_t blocktime); int32_t komodo_currentheight(); void komodo_index2pubkey33(uint8_t *pubkey33,CBlockIndex *pindex,int32_t height); +bool komodo_checkopret(CBlock *pblock, CScript &merkleroot); +CScript komodo_makeopret(CBlock *pblock, bool fNew); extern int32_t KOMODO_CHOSEN_ONE; extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; #define KOMODO_ELECTION_GAP 2000 @@ -840,8 +842,16 @@ bool CheckProofOfWork(const CBlockHeader &blkHeader, uint8_t *pubkey33, int32_t } if ( (flag != 0 || special2 > 0) && special2 != -2 ) { - //fprintf(stderr,"EASY MINING ht.%d\n",height); bnTarget.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow); + /* + const void* pblock = &blkHeader; + CScript merkleroot = CScript(); + if ( height > nDecemberHardforkHeight && !komodo_checkopret((CBlock*)pblock, merkleroot) ) // December 2019 hardfork + { + fprintf(stderr, "failed or missing expected.%s != %s\n", komodo_makeopret((CBlock*)pblock, false).ToString().c_str(), merkleroot.ToString().c_str()); + return false; + } + */ } } } From 8e9573f87d26bd01c8c51a87a947b824891b4f5d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 11:39:49 -0500 Subject: [PATCH 134/339] komodo_bitocind.h changes --- src/komodo_bitcoind.h | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index a0e18d85c..1ae6f60dc 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -35,6 +35,7 @@ extern CScript KOMODO_EARLYTXID_SCRIPTPUB; int32_t MarmaraSignature(uint8_t *utxosig,CMutableTransaction &txNew); uint8_t DecodeMaramaraCoinbaseOpRet(const CScript scriptPubKey,CPubKey &pk,int32_t &height,int32_t &unlockht); +uint32_t komodo_heightstamp(int32_t height); //#define issue_curl(cmdstr) bitcoind_RPC(0,(char *)"curl",(char *)"http://127.0.0.1:7776",0,0,(char *)(cmdstr)) @@ -545,6 +546,18 @@ int32_t komodo_verifynotarization(char *symbol,char *dest,int32_t height,int32_t return(retval); } +CScript komodo_makeopret(CBlock *pblock, bool fNew) +{ + std::vector vLeaves; + vLeaves.push_back(pblock->hashPrevBlock); + for (int32_t i = 0; i < pblock->vtx.size()-(fNew ? 0 : 1); i++) + vLeaves.push_back(pblock->vtx[i].GetHash()); + uint256 merkleroot = GetMerkleRoot(vLeaves); + CScript opret; + opret << OP_RETURN << E_MARSHAL(ss << merkleroot); + return(opret); +} + /*uint256 komodo_getblockhash(int32_t height) { uint256 hash; char params[128],*hexstr,*jsonstr; cJSON *result; int32_t i; uint8_t revbuf[32]; @@ -968,6 +981,7 @@ void komodo_index2pubkey33(uint8_t *pubkey33,CBlockIndex *pindex,int32_t height) int32_t komodo_eligiblenotary(uint8_t pubkeys[66][33],int32_t *mids,uint32_t blocktimes[66],int32_t *nonzpkeysp,int32_t height) { + // after the season HF block ALL new notaries instantly become elegible. int32_t i,j,n,duplicate; CBlock block; CBlockIndex *pindex; uint8_t notarypubs33[64][33]; memset(mids,-1,sizeof(*mids)*66); n = komodo_notaries(notarypubs33,height,0); @@ -1224,6 +1238,7 @@ int32_t komodo_isrealtime(int32_t *kmdheightp) int32_t komodo_validate_interest(const CTransaction &tx,int32_t txheight,uint32_t cmptime,int32_t dispflag) { + dispflag = 1; if ( KOMODO_REWIND == 0 && ASSETCHAINS_SYMBOL[0] == 0 && (int64_t)tx.nLockTime >= LOCKTIME_THRESHOLD ) //1473793441 ) { if ( txheight > 246748 ) @@ -2055,7 +2070,7 @@ bool KOMODO_TEST_ASSETCHAIN_SKIP_POW = 0; int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) { - uint256 hash; arith_uint256 bnTarget,bhash; bool fNegative,fOverflow; uint8_t *script,pubkey33[33],pubkeys[64][33]; int32_t i,scriptlen,possible,PoSperc,is_PoSblock=0,n,failed = 0,notaryid = -1; int64_t checktoshis,value; CBlockIndex *pprev; + uint256 hash,merkleroot; arith_uint256 bnTarget,bhash; bool fNegative,fOverflow; uint8_t *script,pubkey33[33],pubkeys[64][33]; int32_t i,scriptlen,possible,PoSperc,is_PoSblock=0,n,failed = 0,notaryid = -1; int64_t checktoshis,value; CBlockIndex *pprev; if ( KOMODO_TEST_ASSETCHAIN_SKIP_POW == 0 && Params().NetworkIDString() == "regtest" ) KOMODO_TEST_ASSETCHAIN_SKIP_POW = 1; if ( !CheckEquihashSolution(pblock, Params()) ) @@ -2185,10 +2200,10 @@ int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height) // the default daemon miner, checks the actual vins so the only way this will fail, is if someone changes the miner, // and then creates txs to the crypto address meeting min sigs and puts it in tx position 1. // If they go through this effort, the block will still fail at connect block, and will be auto purged by the temp file fix. - if ( failed == 0 && ASSETCHAINS_NOTARY_PAY[0] != 0 && pblock->vtx[0].vout.size() > 1 ) + if ( failed == 0 && ASSETCHAINS_NOTARY_PAY[0] != 0 && pblock->vtx.size() > 1 ) { // We check the full validation in ConnectBlock directly to get the amount for coinbase. So just approx here. - if ( slowflag == 0 ) + if ( slowflag == 0 && pblock->vtx[0].vout.size() > 1 ) { // Check the notarisation tx is to the crypto address. if ( !komodo_is_notarytx(pblock->vtx[1]) == 1 ) @@ -2350,11 +2365,12 @@ struct komodo_staking *komodo_addutxo(struct komodo_staking *array,int32_t *numk return(array); } -int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blocktimep,uint32_t *txtimep,uint256 *utxotxidp,int32_t *utxovoutp,uint64_t *utxovaluep,uint8_t *utxosig) +int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blocktimep,uint32_t *txtimep,uint256 *utxotxidp,int32_t *utxovoutp,uint64_t *utxovaluep,uint8_t *utxosig, uint256 merkleroot) { static struct komodo_staking *array; static int32_t numkp,maxkp; static uint32_t lasttime; - int32_t PoSperc; + int32_t PoSperc = 0, newStakerActive; set setAddress; struct komodo_staking *kp; int32_t winners,segid,minage,nHeight,counter=0,i,m,siglen=0,nMinDepth = 1,nMaxDepth = 99999999; vector vecOutputs; uint32_t block_from_future_rejecttime,besttime,eligible,earliest = 0; CScript best_scriptPubKey; arith_uint256 mindiff,ratio,bnTarget,tmpTarget; CBlockIndex *tipindex,*pindex; CTxDestination address; bool fNegative,fOverflow; uint8_t hashbuf[256]; CTransaction tx; uint256 hashBlock; + uint64_t cbPerc = *utxovaluep, tocoinbase = 0; if (!EnsureWalletIsAvailable(0)) return 0; @@ -2406,7 +2422,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt { if ( (tipindex= chainActive.Tip()) == 0 || tipindex->GetHeight()+1 > nHeight ) { - fprintf(stderr,"chain tip changed during staking loop t.%u counter.%d\n",(uint32_t)time(NULL),counter); + fprintf(stderr,"[%s:%d] chain tip changed during staking loop t.%u counter.%d\n",ASSETCHAINS_SYMBOL,nHeight,(uint32_t)time(NULL),counter); return(0); } counter++; @@ -2423,7 +2439,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt { if ( IsMine(*pwalletMain,address) == 0 ) continue; - if ( GetTransaction(out.tx->GetHash(),tx,hashBlock,true) != 0 && (pindex= komodo_getblockindex(hashBlock)) != 0 ) + if ( myGetTransaction(out.tx->GetHash(),tx,hashBlock) != 0 && (pindex= komodo_getblockindex(hashBlock)) != 0 ) { array = komodo_addutxo(array,&numkp,&maxkp,(uint32_t)pindex->nTime,(uint64_t)nValue,out.tx->GetHash(),out.i,(char *)CBitcoinAddress(address).ToString().c_str(),hashbuf,(CScript)pk); //fprintf(stderr,"addutxo numkp.%d vs max.%d\n",numkp,maxkp); @@ -2446,7 +2462,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt vout = (int32_t)it->first.index; if ( (nValue= it->second.satoshis) < COIN ) continue; - if ( GetTransaction(txid,tx,hashBlock,true) != 0 && (pindex= komodo_getblockindex(hashBlock)) != 0 && myIsutxo_spentinmempool(ignoretxid,ignorevin,txid,vout) == 0 ) + if ( myGetTransaction(txid,tx,hashBlock) != 0 && (pindex= komodo_getblockindex(hashBlock)) != 0 && myIsutxo_spentinmempool(ignoretxid,ignorevin,txid,vout) == 0 ) { const CScript &scriptPubKey = tx.vout[vout].scriptPubKey; if ( DecodeMaramaraCoinbaseOpRet(tx.vout[tx.vout.size()-1].scriptPubKey,pk,ht,unlockht) != 0 && pk == mypk ) @@ -2539,11 +2555,3 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt } return(siglen); } - -bool komodo_hardfork_active(uint32_t time) -{ - //TODO: set hardfork height for HUSH - return false; - //return ( (ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Height() > nDecemberHardforkHeight) || (ASSETCHAINS_SYMBOL[0] != 0 && time > nStake -} - From 94f922932a40292da68ce66b319a801e4008747e Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 12:05:13 -0500 Subject: [PATCH 135/339] komodo_globals.h --- src/komodo_globals.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/komodo_globals.h b/src/komodo_globals.h index 87cf95997..344cdb526 100644 --- a/src/komodo_globals.h +++ b/src/komodo_globals.h @@ -43,16 +43,13 @@ int32_t NUM_PRICES; uint32_t *PVALS; struct knotaries_entry *Pubkeys; struct komodo_state KOMODO_STATES[34]; +const uint32_t nStakedDecemberHardforkTimestamp = 1576840000; //December 2019 hardfork 12/20/2019 @ 11:06am (UTC) +const int32_t nDecemberHardforkHeight = 1670000; //December 2019 hardfork #define _COINBASE_MATURITY 100 int COINBASE_MATURITY = _COINBASE_MATURITY;//100; unsigned int WITNESS_CACHE_SIZE = _COINBASE_MATURITY+10; uint256 KOMODO_EARLYTXID; -int32_t KOMODO_BLOCK_POSUNITS = 1024; // one block is 1024 units -int32_t KOMODO_MIN_STAKEAGE = 150; // 1/2 this should also be a cap on the POS averaging window, or startup could be too easy -int32_t KOMODO_CONSECUTIVE_POS_THRESHOLD = 7; -int32_t KOMODO_NOPOS_THRESHHOLD = 150; // if we have no POS blocks in this many blocks, set to default difficulty - int32_t KOMODO_MININGTHREADS = -1,IS_KOMODO_NOTARY,IS_STAKED_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET,KOMODO_REWIND,STAKED_ERA,KOMODO_CONNECTING = -1,KOMODO_DEALERNODE,KOMODO_EXTRASATOSHI,ASSETCHAINS_FOUNDERS,ASSETCHAINS_CBMATURITY,KOMODO_NSPV; int32_t KOMODO_INSYNC,KOMODO_LASTMINED,prevKOMODO_LASTMINED,KOMODO_CCACTIVATE,JUMBLR_PAUSE = 1; From 62263ef1b83521822cdf0c3fd38ffe1619a254ec Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 17:36:29 -0500 Subject: [PATCH 136/339] Lots of changes --- src/cc/oracles.cpp | 6 --- src/init.cpp | 6 +-- src/komodo_defs.h | 116 ++++++++++++++++++++++++++++++++++++++++----- toolchain-info.sh | 4 +- 4 files changed, 107 insertions(+), 25 deletions(-) diff --git a/src/cc/oracles.cpp b/src/cc/oracles.cpp index 6781db48a..067cba043 100644 --- a/src/cc/oracles.cpp +++ b/src/cc/oracles.cpp @@ -639,12 +639,6 @@ bool OraclesDataValidate(struct CCcontract_info *cp,Eval* eval,const CTransactio else return(true); } -int32_t GetLatestTimestamp(int32_t height) -{ - if ( KOMODO_NSPV_SUPERLITE ) return (NSPV_blocktime(height)); - return(komodo_heightstamp(height)); -} - bool OraclesValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn) { uint256 oracletxid,batontxid; uint64_t txfee=10000; int32_t numvins,numvouts,preventCCvins,preventCCvouts; int64_t amount; uint256 hashblock; diff --git a/src/init.cpp b/src/init.cpp index a0d7b0b58..805e3de7c 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -896,7 +896,7 @@ static void ZC_LoadParams( boost::system::error_code ec1, ec2; boost::uintmax_t spend_size = file_size(sapling_spend, ec1); boost::uintmax_t output_size = file_size(sapling_output, ec2); - fprintf(stderr,"Sapling spend: %d bytes, output: %d bytes\n", spend_size, output_size); + fprintf(stderr,"Sapling spend: %d bytes, output: %d bytes\n", (int)spend_size, (int)output_size); // We could check sha hashes, but we mostly want to detect on-disk file corruption // or people having a full harddrive. Full validation happens in librustzcash_init_zksnark_params @@ -905,13 +905,13 @@ static void ZC_LoadParams( boost::uintmax_t output_valid = 3592860; //TODO: passing the exact reason for corruption to GUI if (spend_size != spend_valid) { - fprintf(stderr,"Sapling spend %d bytes != %d is invalid!\n", spend_size, spend_valid); + LogPrintf("Sapling spend %d bytes != %d is invalid!\n", (int)spend_size, (int)spend_valid); CorruptParamsShutdown(); return; } if (output_size != output_valid) { - fprintf(stderr,"Sapling ouput %d bytes != %d is invalid!\n", output_size, output_valid); + LogPrintf("Sapling ouput %d bytes != %d is invalid!\n", (int)output_size, (int)output_valid); CorruptParamsShutdown(); return; } diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 396a62764..32977fe60 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -1,4 +1,3 @@ -// Copyright © 2019 The Hush developers /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -17,7 +16,7 @@ #ifndef KOMODO_DEFS_H #define KOMODO_DEFS_H #include "arith_uint256.h" - +#include "chain.h" #include "komodo_nk.h" #define KOMODO_EARLYTXID_HEIGHT 100 @@ -34,6 +33,9 @@ #define KOMODO_FIRSTFUNGIBLEID 100 #define KOMODO_SAPLING_ACTIVATION 1544832000 // Dec 15th, 2018 #define KOMODO_SAPLING_DEADLINE 1550188800 // Feb 15th, 2019 +#define ASSETCHAINS_STAKED_BLOCK_FUTURE_MAX 57 +#define ASSETCHAINS_STAKED_BLOCK_FUTURE_HALF 27 +#define ASSETCHAINS_STAKED_MIN_POW_DIFF 536900000 // 537000000 537300000 #define _COINBASE_MATURITY 100 // KMD Notary Seasons @@ -43,10 +45,15 @@ // 1751328000 = dummy timestamp, 1 July 2025! // 7113400 = 5x current KMD blockheight. // to add 4th season, change NUM_KMD_SEASONS to 4, and add timestamp and height of activation to these arrays. -#define NUM_KMD_SEASONS 3 + +#define NUM_KMD_SEASONS 4 #define NUM_KMD_NOTARIES 64 -static const uint32_t KMD_SEASON_TIMESTAMPS[NUM_KMD_SEASONS] = {1525132800, 1563148800, 1751328000}; -static const int32_t KMD_SEASON_HEIGHTS[NUM_KMD_SEASONS] = {814000, 1444000, 7113400}; + +extern const uint32_t nStakedDecemberHardforkTimestamp; //December 2019 hardfork +extern const int32_t nDecemberHardforkHeight; //December 2019 hardfork + +static const uint32_t KMD_SEASON_TIMESTAMPS[NUM_KMD_SEASONS] = {1525132800, 1563148800, nStakedDecemberHardforkTimestamp, 1751328000}; +static const int32_t KMD_SEASON_HEIGHTS[NUM_KMD_SEASONS] = {814000, 1444000, nDecemberHardforkHeight, 7113400}; // Era array of pubkeys. Add extra seasons to bottom as requried, after adding appropriate info above. static const char *notaries_elected[NUM_KMD_SEASONS][NUM_KMD_NOTARIES][2] = @@ -248,6 +255,73 @@ static const char *notaries_elected[NUM_KMD_SEASONS][NUM_KMD_NOTARIES][2] = {"gt_AR", "0348430538a4944d3162bb4749d8c5ed51299c2434f3ee69c11a1f7815b3f46135" }, {"patchkez_SH", "03f45e9beb5c4cd46525db8195eb05c1db84ae7ef3603566b3d775770eba3b96ee" }, {"decker_AR", "03ffdf1a116300a78729608d9930742cd349f11a9d64fcc336b8f18592dd9c91bc" }, // 63 + }, + { + // Season 3.5 + {"madmax_NA", "0237e0d3268cebfa235958808db1efc20cc43b31100813b1f3e15cc5aa647ad2c3" }, // 0 + {"alright_AR", "020566fe2fb3874258b2d3cf1809a5d650e0edc7ba746fa5eec72750c5188c9cc9" }, + {"strob_NA", "0206f7a2e972d9dfef1c424c731503a0a27de1ba7a15a91a362dc7ec0d0fb47685" }, + {"hunter_EU", "0378224b4e9d8a0083ce36f2963ec0a4e231ec06b0c780de108e37f41181a89f6a" }, // FIXME verify this, kolo. Change name if you want + {"phm87_SH", "021773a38db1bc3ede7f28142f901a161c7b7737875edbb40082a201c55dcf0add" }, + {"chainmakers_NA", "02285d813c30c0bf7eefdab1ff0a8ad08a07a0d26d8b95b3943ce814ac8e24d885" }, + {"indenodes_EU", "0221387ff95c44cb52b86552e3ec118a3c311ca65b75bf807c6c07eaeb1be8303c" }, + {"blackjok3r_SH", "021eac26dbad256cbb6f74d41b10763183ee07fb609dbd03480dd50634170547cc" }, + {"chainmakers_EU", "03fdf5a3fce8db7dee89724e706059c32e5aa3f233a6b6cc256fea337f05e3dbf7" }, + {"titomane_AR", "023e3aa9834c46971ff3e7cb86a200ec9c8074a9566a3ea85d400d5739662ee989" }, + {"fullmoon_SH", "023b7252968ea8a955cd63b9e57dee45a74f2d7ba23b4e0595572138ad1fb42d21" }, // 10 + {"indenodes_NA", "02698c6f1c9e43b66e82dbb163e8df0e5a2f62f3a7a882ca387d82f86e0b3fa988" }, + {"chmex_EU", "0281304ebbcc39e4f09fda85f4232dd8dacd668e20e5fc11fba6b985186c90086e" }, + {"metaphilibert_SH", "0284af1a5ef01503e6316a2ca4abf8423a794e9fc17ac6846f042b6f4adedc3309" }, + {"ca333_DEV", "02856843af2d9457b5b1c907068bef6077ea0904cc8bd4df1ced013f64bf267958" }, + {"cipi_NA", "02858904a2a1a0b44df4c937b65ee1f5b66186ab87a751858cf270dee1d5031f18" }, + {"pungocloud_SH", "024dfc76fa1f19b892be9d06e985d0c411e60dbbeb36bd100af9892a39555018f6" }, + {"voskcoin_EU", "034190b1c062a04124ad15b0fa56dfdf34aa06c164c7163b6aec0d654e5f118afb" }, + {"decker_DEV", "028eea44a09674dda00d88ffd199a09c9b75ba9782382cc8f1e97c0fd565fe5707" }, + {"cryptoeconomy_EU", "0290ab4937e85246e048552df3e9a66cba2c1602db76e03763e16c671e750145d1" }, + {"etszombi_EU", "0293ea48d8841af7a419a24d9da11c34b39127ef041f847651bae6ab14dcd1f6b4" }, // 20 + {"karasugoi_NA", "02a348b03b9c1a8eac1b56f85c402b041c9bce918833f2ea16d13452309052a982" }, + {"pirate_AR", "03e29c90354815a750db8ea9cb3c1b9550911bb205f83d0355a061ac47c4cf2fde" }, + {"metaphilibert_AR", "02adad675fae12b25fdd0f57250b0caf7f795c43f346153a31fe3e72e7db1d6ac6" }, + {"zatjum_SH", "02d6b0c89cacd58a0af038139a9a90c9e02cd1e33803a1f15fceabea1f7e9c263a" }, + {"madmax_AR", "03c5941fe49d673c094bc8e9bb1a95766b4670c88be76d576e915daf2c30a454d3" }, + {"lukechilds_NA", "03f1051e62c2d280212481c62fe52aab0a5b23c95de5b8e9ad5f80d8af4277a64b" }, + {"cipi_AR", "02c4f89a5b382750836cb787880d30e23502265054e1c327a5bfce67116d757ce8" }, + {"tonyl_AR", "02cc8bc862f2b65ad4f99d5f68d3011c138bf517acdc8d4261166b0be8f64189e1" }, + {"infotech_DEV", "0345ad4ab5254782479f6322c369cec77a7535d2f2162d103d666917d5e4f30c4c" }, + {"fullmoon_NA", "032c716701fe3a6a3f90a97b9d874a9d6eedb066419209eed7060b0cc6b710c60b" }, // 30 + {"etszombi_AR", "02e55e104aa94f70cde68165d7df3e162d4410c76afd4643b161dea044aa6d06ce" }, + {"node-9_EU", "0372e5b51e86e2392bb15039bac0c8f975b852b45028a5e43b324c294e9f12e411" }, + {"phba2061_EU", "03f6bd15dba7e986f0c976ea19d8a9093cb7c989d499f1708a0386c5c5659e6c4e" }, + {"indenodes_AR", "02ec0fa5a40f47fd4a38ea5c89e375ad0b6ddf4807c99733c9c3dc15fb978ee147" }, + {"and1-89_EU", "02736cbf8d7b50835afd50a319f162dd4beffe65f2b1dc6b90e64b32c8e7849ddd" }, + {"komodopioneers_SH", "032a238a5747777da7e819cfa3c859f3677a2daf14e4dce50916fc65d00ad9c52a" }, + {"komodopioneers_EU", "036d02425916444fff8cc7203fcbfc155c956dda5ceb647505836bef59885b6866" }, + {"d0ct0r_NA", "0303725d8525b6f969122faf04152653eb4bf34e10de92182263321769c334bf58" }, + {"kolo_DEV", "02849e12199dcc27ba09c3902686d2ad0adcbfcee9d67520e9abbdda045ba83227" }, + {"peer2cloud_AR", "02acc001fe1fe8fd68685ba26c0bc245924cb592e10cec71e9917df98b0e9d7c37" }, // 40 + {"webworker01_SH", "031e50ba6de3c16f99d414bb89866e578d963a54bde7916c810608966fb5700776" }, + {"webworker01_NA", "032735e9cad1bb00eaababfa6d27864fa4c1db0300c85e01e52176be2ca6a243ce" }, + {"pbca26_NA", "03a97606153d52338bcffd1bf19bb69ef8ce5a7cbdc2dbc3ff4f89d91ea6bbb4dc" }, + {"indenodes_SH", "0334e6e1ec8285c4b85bd6dae67e17d67d1f20e7328efad17ce6fd24ae97cdd65e" }, + {"pirate_NA", "0255e32d8a56671dee8aa7f717debb00efa7f0086ee802de0692f2d67ee3ee06ee" }, + {"lukechilds_AR", "025c6a73ff6d750b9ddf6755b390948cffdd00f344a639472d398dd5c6b4735d23" }, + {"dragonhound_NA", "0224a9d951d3a06d8e941cc7362b788bb1237bb0d56cc313e797eb027f37c2d375" }, + {"fullmoon_AR", "03da64dd7cd0db4c123c2f79d548a96095a5a103e5b9d956e9832865818ffa7872" }, + {"chainzilla_SH", "0360804b8817fd25ded6e9c0b50e3b0782ac666545b5416644198e18bc3903d9f9" }, + {"titomane_EU", "03772ac0aad6b0e9feec5e591bff5de6775d6132e888633e73d3ba896bdd8e0afb" }, // 50 + {"jeezy_EU", "037f182facbad35684a6e960699f5da4ba89e99f0d0d62a87e8400dd086c8e5dd7" }, + {"titomane_SH", "03850fdddf2413b51790daf51dd30823addb37313c8854b508ea6228205047ef9b" }, + {"alien_AR", "03911a60395801082194b6834244fa78a3c30ff3e888667498e157b4aa80b0a65f" }, + {"pirate_EU", "03fff24efd5648870a23badf46e26510e96d9e79ce281b27cfe963993039dd1351" }, + {"thegaltmines_NA", "02db1a16c7043f45d6033ccfbd0a51c2d789b32db428902f98b9e155cf0d7910ed" }, + {"computergenie_NA", "03a78ae070a5e9e935112cf7ea8293f18950f1011694ea0260799e8762c8a6f0a4" }, + {"nutellalicka_SH", "02f7d90d0510c598ce45915e6372a9cd0ba72664cb65ce231f25d526fc3c5479fc" }, + {"chainstrike_SH", "03b806be3bf7a1f2f6290ec5c1ea7d3ea57774dcfcf2129a82b2569e585100e1cb" }, + {"hunter_SH", "02407db70ad30ce4dfaee8b4ae35fae88390cad2b0ba0373fdd6231967537ccfdf" }, // FIXME verify this, Decker. Change name if you want + {"alien_EU", "03bb749e337b9074465fa28e757b5aa92cb1f0fea1a39589bca91a602834d443cd" }, // 60 + {"gt_AR", "0348430538a4944d3162bb4749d8c5ed51299c2434f3ee69c11a1f7815b3f46135" }, + {"patchkez_SH", "03f45e9beb5c4cd46525db8195eb05c1db84ae7ef3603566b3d775770eba3b96ee" }, + {"decker_AR", "03ffdf1a116300a78729608d9930742cd349f11a9d64fcc336b8f18592dd9c91bc" }, // 63 } }; @@ -271,23 +345,24 @@ int32_t MAX_BLOCK_SIZE(int32_t height); extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; extern uint32_t ASSETCHAIN_INIT, ASSETCHAINS_MAGIC; -extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; +extern int32_t VERUS_BLOCK_POSUNITS, ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; extern uint64_t ASSETCHAINS_SUPPLY, ASSETCHAINS_FOUNDERS_REWARD; extern uint64_t ASSETCHAINS_TIMELOCKGTE; -extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; +extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; extern int32_t KOMODO_MININGTHREADS,KOMODO_LONGESTCHAIN,ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,KOMODO_ON_DEMAND,KOMODO_PASSPORT_INITDONE,ASSETCHAINS_STAKED,KOMODO_NSPV; extern uint64_t ASSETCHAINS_COMMISSION, ASSETCHAINS_LASTERA,ASSETCHAINS_CBOPRET; +extern bool VERUS_MINTBLOCKS; extern uint64_t ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_NOTARY_PAY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_TIMELOCKGTE, ASSETCHAINS_NONCEMASK[],ASSETCHAINS_NK[2]; extern const char *ASSETCHAINS_ALGORITHMS[]; -extern uint32_t ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; +extern int32_t VERUS_MIN_STAKEAGE; +extern uint32_t ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1, ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY,ASSETCHAINS_SCRIPTPUB; extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_MARMARA; extern std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; -extern int32_t KOMODO_BLOCK_POSUNITS, KOMODO_CONSECUTIVE_POS_THRESHOLD, KOMODO_NOPOS_THRESHHOLD; - +extern int32_t VERUS_BLOCK_POSUNITS, VERUS_CONSECUTIVE_POS_THRESHOLD, VERUS_NOPOS_THRESHHOLD; extern uint256 KOMODO_EARLYTXID; extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; @@ -296,20 +371,23 @@ extern std::string CCerror,ASSETCHAINS_CCLIB; extern uint8_t ASSETCHAINS_CCDISABLES[256]; extern int32_t USE_EXTERNAL_PUBKEY; -extern std::string NOTARY_PUBKEY; +extern std::string NOTARY_PUBKEY,NOTARY_ADDRESS; extern int32_t KOMODO_EXCHANGEWALLET; +extern int32_t VERUS_MIN_STAKEAGE; extern std::string DONATION_PUBKEY; extern uint8_t ASSETCHAINS_PRIVATE; extern int32_t USE_EXTERNAL_PUBKEY; -extern char NOTARYADDRS[64][64]; // should be depreciated later. Only affects labs. +extern char NOTARYADDRS[64][64]; extern char NOTARY_ADDRESSES[NUM_KMD_SEASONS][64][64]; -extern int32_t KOMODO_TESTNODE, KOMODO_SNAPSHOT_INTERVAL; +extern int32_t KOMODO_TESTNODE, KOMODO_SNAPSHOT_INTERVAL,IS_STAKED_NOTARY,STAKED_ERA; extern int32_t ASSETCHAINS_EARLYTXIDCONTRACT; +extern int32_t ASSETCHAINS_STAKED_SPLIT_PERCENTAGE; int tx_height( const uint256 &hash ); extern std::vector vWhiteListAddress; extern std::map mapHeightEvalActivate; void komodo_netevent(std::vector payload); int32_t getacseason(uint32_t timestamp); +int32_t getkmdseason(int32_t height); #define IGUANA_MAXSCRIPTSIZE 10001 #define KOMODO_KVDURATION 1440 @@ -341,8 +419,20 @@ uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 int32_t komodo_currentheight(); int32_t komodo_notarized_bracket(struct notarized_checkpoint *nps[2],int32_t height); arith_uint256 komodo_adaptivepow_target(int32_t height,arith_uint256 bnTarget,uint32_t nTime); +bool komodo_hardfork_active(uint32_t time); +int32_t komodo_newStakerActive(int32_t height, uint32_t timestamp); uint256 Parseuint256(const char *hexstr); +void komodo_sendmessage(int32_t minpeers, int32_t maxpeers, const char *message, std::vector payload); +CBlockIndex *komodo_getblockindex(uint256 hash); +int32_t komodo_nextheight(); +CBlockIndex *komodo_blockindex(uint256 hash); +CBlockIndex *komodo_chainactive(int32_t height); +int32_t komodo_blockheight(uint256 hash); +bool komodo_txnotarizedconfirmed(uint256 txid); +int32_t komodo_blockload(CBlock& block, CBlockIndex *pindex); +uint32_t komodo_chainactive_timestamp(); +uint32_t GetLatestTimestamp(int32_t height); #ifndef KOMODO_NSPV_FULLNODE #define KOMODO_NSPV_FULLNODE (KOMODO_NSPV <= 0) diff --git a/toolchain-info.sh b/toolchain-info.sh index 6a0fc7e75..3c25658ef 100755 --- a/toolchain-info.sh +++ b/toolchain-info.sh @@ -9,8 +9,6 @@ echo for tool in "${tools[@]}" do echo "$tool location: `which $tool`" - echo "$tool version: `$tool --version`" - echo + echo "$tool version: `$tool --version|grep -i version`" echo "-------" - echo done From 6227bfd94a19220ab22a35ef43185cd6eaf56f35 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 17:42:33 -0500 Subject: [PATCH 137/339] new functions --- src/komodo_bitcoind.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 1ae6f60dc..beb3c0fb3 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -695,6 +695,29 @@ int32_t komodo_WhoStaked(CBlock *pblock, CTxDestination &addressout) return(0); } +int32_t komodo_newStakerActive(int32_t height, uint32_t timestamp) +{ + if ( timestamp > nStakedDecemberHardforkTimestamp || komodo_heightstamp(height) > nStakedDecemberHardforkTimestamp ) //December 2019 hardfork + return(1); + else return(0); +} + +int32_t komodo_hasOpRet(int32_t height, uint32_t timestamp) +{ + return((ASSETCHAINS_MARMARA!=0 || komodo_newStakerActive(height, timestamp) == 1)); +} + +bool komodo_checkopret(CBlock *pblock, CScript &merkleroot) +{ + merkleroot = pblock->vtx.back().vout.back().scriptPubKey; + return(merkleroot.IsOpReturn() && merkleroot == komodo_makeopret(pblock, false)); +} + +bool komodo_hardfork_active(uint32_t time) +{ + return ( (ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Height() > nDecemberHardforkHeight) || (ASSETCHAINS_SYMBOL[0] != 0 && time > nStakedDecemberHardforkTimestamp) ); //December 2019 hardfork +} + bool MarmaraPoScheck(char *destaddr,CScript opret,CTransaction staketx); int32_t komodo_isPoS2(CBlock *pblock) From f0b6600526795a1d8fe08fbf2515b31bd4196c38 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 17:44:45 -0500 Subject: [PATCH 138/339] Hush smart chains do not support PoS --- src/komodo_bitcoind.h | 66 ++----------------------------------------- 1 file changed, 2 insertions(+), 64 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index beb3c0fb3..fdfaa0669 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -695,15 +695,8 @@ int32_t komodo_WhoStaked(CBlock *pblock, CTxDestination &addressout) return(0); } -int32_t komodo_newStakerActive(int32_t height, uint32_t timestamp) -{ - if ( timestamp > nStakedDecemberHardforkTimestamp || komodo_heightstamp(height) > nStakedDecemberHardforkTimestamp ) //December 2019 hardfork - return(1); - else return(0); -} - int32_t komodo_hasOpRet(int32_t height, uint32_t timestamp) -{ +{ return((ASSETCHAINS_MARMARA!=0 || komodo_newStakerActive(height, timestamp) == 1)); } @@ -715,69 +708,14 @@ bool komodo_checkopret(CBlock *pblock, CScript &merkleroot) bool komodo_hardfork_active(uint32_t time) { + //TODO: set a block height for ~ Jan 21 3pm return ( (ASSETCHAINS_SYMBOL[0] == 0 && chainActive.Height() > nDecemberHardforkHeight) || (ASSETCHAINS_SYMBOL[0] != 0 && time > nStakedDecemberHardforkTimestamp) ); //December 2019 hardfork } bool MarmaraPoScheck(char *destaddr,CScript opret,CTransaction staketx); -int32_t komodo_isPoS2(CBlock *pblock) -{ - CBlockIndex *pindex = komodo_blockindex(pblock->GetHash()); - if ( pindex != 0 && pindex->segid >= -1 ) - { - //fprintf(stderr,"isPoSblock segid.%d\n",pindex->segid); - if ( pindex->segid == -1 ) - return(0); - else return(1); - } - return (-1); -} - int32_t komodo_isPoS(CBlock *pblock,int32_t height,bool fJustCheck) { - int32_t n,vout,numvouts,ret; uint32_t txtime; uint64_t value; char voutaddr[64],destaddr[64]; CTxDestination voutaddress; uint256 txid; CScript opret; - if ( ASSETCHAINS_STAKED != 0 ) - { - if ( fJustCheck ) - { - // check pindex first, if that does not work, continue with slow check. - if ( (ret= komodo_isPoS2(pblock)) == 1 ) - return (1); - else if ( ret == 0 ) - return (0); - } - n = pblock->vtx.size(); - //fprintf(stderr,"ht.%d check for PoS numtx.%d numvins.%d numvouts.%d\n",height,n,(int32_t)pblock->vtx[n-1].vin.size(),(int32_t)pblock->vtx[n-1].vout.size()); - if ( n > 1 && pblock->vtx[n-1].vin.size() == 1 && pblock->vtx[n-1].vout.size() == 1+(ASSETCHAINS_MARMARA!=0) ) - { - txid = pblock->vtx[n-1].vin[0].prevout.hash; - vout = pblock->vtx[n-1].vin[0].prevout.n; - txtime = komodo_txtime(opret,&value,txid,vout,destaddr); - if ( ExtractDestination(pblock->vtx[n-1].vout[0].scriptPubKey,voutaddress) ) - { - strcpy(voutaddr,CBitcoinAddress(voutaddress).ToString().c_str()); - //fprintf(stderr,"voutaddr.%s vs destaddr.%s\n",voutaddr,destaddr); - if ( pblock->vtx[n-1].vout[0].nValue == value && strcmp(destaddr,voutaddr) == 0 ) - { - if ( ASSETCHAINS_MARMARA == 0 ) - return(1); - else - { - if ( pblock->vtx[n-1].vout[0].scriptPubKey.IsPayToCryptoCondition() != 0 && (numvouts= pblock->vtx[n-1].vout.size()) == 2 ) - { -//fprintf(stderr,"validate proper %s %s signature and unlockht preservation\n",voutaddr,destaddr); - return(MarmaraPoScheck(destaddr,opret,pblock->vtx[n-1])); - } - else - { - fprintf(stderr,"reject ht.%d PoS block\n",height); - return(strcmp(ASSETCHAINS_SYMBOL,"MTST2") == 0); // allow until MTST3 - } - } - } - } - } - } return(0); } From 62613ed77abe3c4ce6c8c13a07a8944c1f7439b2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 17:50:28 -0500 Subject: [PATCH 139/339] main.h changes --- src/main.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main.h b/src/main.h index f49c30518..2b1fd8456 100644 --- a/src/main.h +++ b/src/main.h @@ -291,7 +291,7 @@ void PruneAndFlush(); /** (try to) add transaction to memory pool **/ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransaction &tx, bool fLimitFree, - bool* pfMissingInputs, bool fRejectAbsurdFee=false, int dosLevel=-1, bool fSkipExpiry=false); + bool* pfMissingInputs, bool fRejectAbsurdFee=false, int dosLevel=-1); struct CNodeStateStats { @@ -716,7 +716,7 @@ void UpdateCoins(const CTransaction& tx, CCoinsViewCache& inputs, int nHeight); /** Transaction validation functions */ /** Context-independent validity checks */ -bool CheckTransaction(uint32_t tiptime,const CTransaction& tx, CValidationState& state, libzcash::ProofVerifier& verifier); +bool CheckTransaction(uint32_t tiptime,const CTransaction& tx, CValidationState& state, libzcash::ProofVerifier& verifier, int32_t txIndex, int32_t numTxs); bool CheckTransactionWithoutProofVerification(uint32_t tiptime,const CTransaction& tx, CValidationState &state); /** Check for standard transaction types @@ -808,7 +808,6 @@ bool GetAddressUnspent(uint160 addressHash, int type, bool WriteBlockToDisk(const CBlock& block, CDiskBlockPos& pos, const CMessageHeader::MessageStartChars& messageStart); bool ReadBlockFromDisk(CBlock& block, const CDiskBlockPos& pos,bool checkPOW); bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex,bool checkPOW); -bool RemoveOrphanedBlocks(int32_t notarized_height); bool PruneOneBlockFile(bool tempfile, const int fileNumber); /** Functions for validating blocks and updating the block tree */ From de0b5938a17fcbd4f69ece2a6d9f80733a4c9b8d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 17:51:08 -0500 Subject: [PATCH 140/339] copyright --- src/main.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.h b/src/main.h index 2b1fd8456..33fe66bda 100644 --- a/src/main.h +++ b/src/main.h @@ -1,5 +1,6 @@ // Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. From 9ede75e725d85d3a32370e7d59782ef0dfdcfa77 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:01:38 -0500 Subject: [PATCH 141/339] Remove stuff --- src/komodo_defs.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 32977fe60..dedced6a6 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -345,19 +345,17 @@ int32_t MAX_BLOCK_SIZE(int32_t height); extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; extern uint32_t ASSETCHAIN_INIT, ASSETCHAINS_MAGIC; -extern int32_t VERUS_BLOCK_POSUNITS, ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; +extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; extern uint64_t ASSETCHAINS_SUPPLY, ASSETCHAINS_FOUNDERS_REWARD; extern uint64_t ASSETCHAINS_TIMELOCKGTE; -extern uint32_t ASSETCHAINS_ALGO, ASSETCHAINS_VERUSHASH,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; +extern uint32_t ASSETCHAINS_ALGO,,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; extern int32_t KOMODO_MININGTHREADS,KOMODO_LONGESTCHAIN,ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,KOMODO_ON_DEMAND,KOMODO_PASSPORT_INITDONE,ASSETCHAINS_STAKED,KOMODO_NSPV; extern uint64_t ASSETCHAINS_COMMISSION, ASSETCHAINS_LASTERA,ASSETCHAINS_CBOPRET; -extern bool VERUS_MINTBLOCKS; extern uint64_t ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_NOTARY_PAY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_TIMELOCKGTE, ASSETCHAINS_NONCEMASK[],ASSETCHAINS_NK[2]; extern const char *ASSETCHAINS_ALGORITHMS[]; -extern int32_t VERUS_MIN_STAKEAGE; -extern uint32_t ASSETCHAINS_VERUSHASH, ASSETCHAINS_VERUSHASHV1_1, ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; +extern uint32_t ASSETCHAINS_NONCESHIFT[], ASSETCHAINS_HASHESPERROUND[]; extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY,ASSETCHAINS_SCRIPTPUB; extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_MARMARA; extern std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; From 5a15350b0e3d6866707990445140e900c205c8d9 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:03:45 -0500 Subject: [PATCH 142/339] Remove more Verus garbage --- src/main.cpp | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8eed39563..e9bc4c561 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -152,25 +152,8 @@ namespace { bool operator()(CBlockIndex *pa, const CBlockIndex *pb) const { // First sort by most total work, ... - if (ASSETCHAINS_LWMAPOS) { - - /* Decker: - - seems we had CChainPower classes compare here from Verus, it's slow, bcz of hard - arith_uint256 math in bool operator<(const CChainPower &p1, const CChainPower &p2), - this slows down setBlockIndexCandidates.insert operations in LoadBlockIndexDB(), - so, for faster block index db loading we will use check from Verus only for LWMAPOS - enabled chains. - */ - - if (pa->chainPower > pb->chainPower) return false; - if (pa->chainPower < pb->chainPower) return true; - } - else - { - if (pa->chainPower.chainWork > pb->chainPower.chainWork) return false; - if (pa->chainPower.chainWork < pb->chainPower.chainWork) return true; - } + if (pa->chainPower.chainWork > pb->chainPower.chainWork) return false; + if (pa->chainPower.chainWork < pb->chainPower.chainWork) return true; // ... then by earliest time received, ... if (pa->nSequenceId < pb->nSequenceId) return false; From 9607c4c0ba88915469c63269bb82af28dbd1761c Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:12:51 -0500 Subject: [PATCH 143/339] This option is not supported --- src/komodo_utils.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 20e294ce7..f883d23dd 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1,3 +1,4 @@ +// Copyright (c) 2019 The Hush developers /****************************************************************************** * Copyright © 2014-2019 The SuperNET Developers. * * * @@ -1967,12 +1968,6 @@ void komodo_args(char *argv0) if ( (ASSETCHAINS_STAKED= GetArg("-ac_staked",0)) > 100 ) ASSETCHAINS_STAKED = 100; - // for now, we only support 50% PoS due to other parts of the algorithm needing adjustment for - // other values - if ( (ASSETCHAINS_LWMAPOS = GetArg("-ac_lwmapos",0)) != 0 ) - { - ASSETCHAINS_LWMAPOS = 50; - } ASSETCHAINS_SAPLING = GetArg("-ac_sapling", -1); if (ASSETCHAINS_SAPLING == -1) { From 24447b55a5f485b56f171f6935581b52bd64e60d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:21:58 -0500 Subject: [PATCH 144/339] update komodo_notary.h --- src/komodo_notary.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/komodo_notary.h b/src/komodo_notary.h index c260bae5f..f820e0bd5 100644 --- a/src/komodo_notary.h +++ b/src/komodo_notary.h @@ -69,7 +69,7 @@ int32_t getkmdseason(int32_t height) return(1); for (int32_t i = 1; i < NUM_KMD_SEASONS; i++) { - if ( height <= KMD_SEASON_HEIGHTS[i] && height >= KMD_SEASON_HEIGHTS[i-1] ) + if ( height <= KMD_SEASON_HEIGHTS[i] && height > KMD_SEASON_HEIGHTS[i-1] ) return(i+1); } return(0); @@ -81,7 +81,7 @@ int32_t getacseason(uint32_t timestamp) return(1); for (int32_t i = 1; i < NUM_KMD_SEASONS; i++) { - if ( timestamp <= KMD_SEASON_TIMESTAMPS[i] && timestamp >= KMD_SEASON_TIMESTAMPS[i-1] ) + if ( timestamp <= KMD_SEASON_TIMESTAMPS[i] && timestamp > KMD_SEASON_TIMESTAMPS[i-1] ) return(i+1); } return(0); From 0dbab2979fb1548c892d05064ff833beeb0cb84d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:32:10 -0500 Subject: [PATCH 145/339] komodo_gateway.h upstream updates --- src/komodo_gateway.h | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/komodo_gateway.h b/src/komodo_gateway.h index 036831af3..89b13b42e 100644 --- a/src/komodo_gateway.h +++ b/src/komodo_gateway.h @@ -20,7 +20,6 @@ /*#include "secp256k1/include/secp256k1.h" #include "secp256k1/include/secp256k1_schnorrsig.h" #include "secp256k1/include/secp256k1_musig.h" - int32_t dummy_linker_tricker() { secp256k1_context *ctx = 0; std::vector musig64; CPubKey pk; secp256k1_schnorrsig musig; secp256k1_pubkey combined_pk; @@ -703,8 +702,29 @@ int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtim { if ( i == 0 && txn_count > 1 && block.vtx[txn_count-1].vout.size() > 0 && block.vtx[txn_count-1].vout[0].nValue == 5000 ) { + /* if ( block.vtx[txn_count-1].vin.size() == 1 && GetTransaction(block.vtx[txn_count-1].vin[0].prevout.hash,tx,hash,false) && block.vtx[0].vout[0].scriptPubKey == tx.vout[block.vtx[txn_count-1].vin[0].prevout.n].scriptPubKey ) notmatched = 1; + */ + if ( block.vtx[txn_count-1].vin.size() == 1 ) { + uint256 hashNotaryProofVin = block.vtx[txn_count-1].vin[0].prevout.hash; + int fNotaryProofVinTxFound = GetTransaction(hashNotaryProofVin,tx,hash,false); + if (!fNotaryProofVinTxFound) { + // try to search in the same block + BOOST_FOREACH(const CTransaction &txInThisBlock, block.vtx) { + if (txInThisBlock.GetHash() == hashNotaryProofVin) { + fNotaryProofVinTxFound = 1; + tx = txInThisBlock; + hash = block.GetHash(); + break; + } + } + } + if ( fNotaryProofVinTxFound && block.vtx[0].vout[0].scriptPubKey == tx.vout[block.vtx[txn_count-1].vin[0].prevout.n].scriptPubKey ) + { + notmatched = 1; + } + } } n = block.vtx[i].vin.size(); for (j=0; j Date: Tue, 10 Dec 2019 19:39:05 -0500 Subject: [PATCH 146/339] update assetchains.json --- src/assetchains.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/assetchains.json b/src/assetchains.json index a6779b634..23a8ea959 100644 --- a/src/assetchains.json +++ b/src/assetchains.json @@ -307,5 +307,31 @@ "157.230.45.184", "165.22.52.123" ] - } + }, + { + "ac_name": "COMMOD", + "ac_supply": "0", + "ac_reward": "204800000000,100000000", + "ac_end": "482130,0", + "ac_halving": "43830,525960", + "ac_decay": "50000000,10000000", + "ac_eras": "2", + "ac_cc": "777", + "ac_public": "1", + "addnode": [ + "34.246.186.176", + "34.251.151.148" + ] + }, + { + "ac_name": "WLC21", + "ac_supply": "21000000", + "ac_reward": "190258751", + "ac_staked": "90", + "ac_public": "1", + "addnode": [ + "37.187.225.231", + "51.38.38.134" + ] + } ] From 8e43781748a0a2e90e3620291128b9227b56c3b4 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:55:07 -0500 Subject: [PATCH 147/339] update .gitignore --- .gitignore | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index a4396df73..f22782d46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,6 @@ *.tar.gz *.deb src/bitcoin -src/zcashd -src/zcash-cli -src/zcash-gtest -src/zcash-tx src/test/test_bitcoin *zcashTest.pk @@ -29,7 +25,7 @@ build-aux/compile build-aux/test-driver config.log config.status -#configure +configure libtool src/config/bitcoin-config.h src/config/bitcoin-config.h.in @@ -44,7 +40,7 @@ src/univalue/gen .dirstamp .idea .libs -.*.swp +.*.sw? *.*~* *.bak *.rej @@ -156,3 +152,8 @@ src/cc/rogue/confdefs.h src/cc/rogue/x64 src/cc/dapps/a.out +src/Makefile.in +doc/man/Makefile.in +Makefile.in +src/libcc.so +src/cc/customcc.so From 717feec6d7c82fc450819b7e8c46271fa222f398 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 19:58:29 -0500 Subject: [PATCH 148/339] ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index f22782d46..965088922 100644 --- a/.gitignore +++ b/.gitignore @@ -157,3 +157,4 @@ doc/man/Makefile.in Makefile.in src/libcc.so src/cc/customcc.so +src/HUSH3_7776 From 93ef7f6ccc61576f0c861a3167ed1a84e3df5c31 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 21:08:49 -0500 Subject: [PATCH 149/339] Log some important things to debug.log because STDOUT is lost in binaries --- src/init.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/init.cpp b/src/init.cpp index 805e3de7c..873e31f40 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -810,7 +810,7 @@ static void ZC_LoadParams( float elapsed; bool found = false; char cwd[1024]; - getcwd(cwd, sizeof(cwd)); + bool ret = getcwd(cwd, sizeof(cwd)); LogPrintf("Looking for sapling params, PWD=%s\n", cwd); @@ -822,7 +822,7 @@ static void ZC_LoadParams( boost::filesystem::path sapling_spend = "sapling-spend.params"; boost::filesystem::path sapling_output = "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in .\n"); + LogPrintf("Found sapling params in .\n"); found = true; } @@ -831,7 +831,7 @@ static void ZC_LoadParams( sapling_spend = fs::path("/usr/share/hush") / "sapling-spend.params"; sapling_output = fs::path("/usr/share/hush") / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in /usr/share/hush\n"); + LogPrintf("Found sapling params in /usr/share/hush\n"); found=true; } } @@ -841,7 +841,7 @@ static void ZC_LoadParams( sapling_spend = boost::filesystem::path("..") / "sapling-spend.params"; sapling_output = boost::filesystem::path("..") / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in ..\n"); + LogPrintf("Found sapling params in ..\n"); found = true; } } @@ -851,7 +851,7 @@ static void ZC_LoadParams( sapling_spend = boost::filesystem::path("..") / "hush3" / "sapling-spend.params"; sapling_output = boost::filesystem::path("..") / "hush3" / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in ../hush3\n"); + LogPrintf("Found sapling params in ../hush3\n"); found = true; } } @@ -861,7 +861,7 @@ static void ZC_LoadParams( sapling_spend = boost::filesystem::path("/Applications/silentdragon.app/Contents/MacOS") / "sapling-spend.params"; sapling_output = boost::filesystem::path("/Applications/silentdragon.app/Contents/MacOS") / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in /Applications/Contents/MacOS\n"); + LogPrintf("Found sapling params in /Applications/Contents/MacOS\n"); found = true; } } @@ -871,7 +871,7 @@ static void ZC_LoadParams( sapling_spend = boost::filesystem::path("./silentdragon.app/Contents/MacOS") / "sapling-spend.params"; sapling_output = boost::filesystem::path("./silentdragon.app/Contents/MacOS") / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in /Applications/Contents/MacOS\n"); + LogPrintf("Found sapling params in /Applications/Contents/MacOS\n"); found = true; } } @@ -882,13 +882,14 @@ static void ZC_LoadParams( sapling_spend = ZC_GetParamsDir() / "sapling-spend.params"; sapling_output = ZC_GetParamsDir() / "sapling-output.params"; if (files_exist(sapling_spend, sapling_output)) { - fprintf(stderr,"Found sapling params in ~/.zcash\n"); + LogPrintf("Found sapling params in ~/.zcash\n"); found = true; } } if (!found) { // No Sapling params, at least we tried + LogPrintf("No Sapling params found! :(\n"); NoParamsShutdown(); return; } From 6da4084fbfe6abd4f834e1a796abedad2c839ea0 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 21:09:02 -0500 Subject: [PATCH 150/339] compile fixes --- src/komodo_defs.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/komodo_defs.h b/src/komodo_defs.h index dedced6a6..d2df54f1f 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -349,7 +349,7 @@ extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER, extern uint64_t ASSETCHAINS_SUPPLY, ASSETCHAINS_FOUNDERS_REWARD; extern uint64_t ASSETCHAINS_TIMELOCKGTE; -extern uint32_t ASSETCHAINS_ALGO,,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; +extern uint32_t ASSETCHAINS_ALGO,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; extern int32_t KOMODO_MININGTHREADS,KOMODO_LONGESTCHAIN,ASSETCHAINS_SEED,IS_KOMODO_NOTARY,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,KOMODO_ON_DEMAND,KOMODO_PASSPORT_INITDONE,ASSETCHAINS_STAKED,KOMODO_NSPV; extern uint64_t ASSETCHAINS_COMMISSION, ASSETCHAINS_LASTERA,ASSETCHAINS_CBOPRET; @@ -360,7 +360,7 @@ extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY,ASSETCHAINS_SCRIPTP extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_MARMARA; extern std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; -extern int32_t VERUS_BLOCK_POSUNITS, VERUS_CONSECUTIVE_POS_THRESHOLD, VERUS_NOPOS_THRESHHOLD; +extern int32_t KOMODO_BLOCK_POSUNITS, KOMODO_CONSECUTIVE_POS_THRESHOLD, KOMODO_NOPOS_THRESHHOLD; extern uint256 KOMODO_EARLYTXID; extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; @@ -371,7 +371,6 @@ extern uint8_t ASSETCHAINS_CCDISABLES[256]; extern int32_t USE_EXTERNAL_PUBKEY; extern std::string NOTARY_PUBKEY,NOTARY_ADDRESS; extern int32_t KOMODO_EXCHANGEWALLET; -extern int32_t VERUS_MIN_STAKEAGE; extern std::string DONATION_PUBKEY; extern uint8_t ASSETCHAINS_PRIVATE; extern int32_t USE_EXTERNAL_PUBKEY; From 870811d3bf962b8208a22fad344fc09a90a3baa8 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 22:28:49 -0500 Subject: [PATCH 151/339] Fix call to CheckTransaction() --- src/wallet/walletdb.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index c451e02e1..a9333a414 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -489,7 +489,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue, // ac_public chains set at height like KMD and ZEX, will force a rescan if we dont ignore this error: bad-txns-acpublic-chain // there cannot be any ztx in the wallet on ac_public chains that started from block 1, so this wont affect those. // PIRATE fails this check for notary nodes, need exception. Triggers full rescan without it. - if ( !(CheckTransaction(0,wtx, state, verifier) && (wtx.GetHash() == hash) && state.IsValid()) && (state.GetRejectReason() != "bad-txns-acpublic-chain" && state.GetRejectReason() != "bad-txns-acprivacy-chain") ) + if ( !(CheckTransaction(0,wtx, state, verifier, 0, 0) && (wtx.GetHash() == hash) && state.IsValid()) && (state.GetRejectReason() != "bad-txns-acpublic-chain" && state.GetRejectReason() != "bad-txns-acprivacy-chain" && state.GetRejectReason() != "bad-txns-stakingtx") ) { //fprintf(stderr, "tx failed: %s rejectreason.%s\n", wtx.GetHash().GetHex().c_str(), state.GetRejectReason().c_str()); // vin-empty on staking chains is error relating to a failed staking tx, that for some unknown reason did not fully erase. save them here to erase and re-add later on. From 4f0ee90ce6d31ebbd6cef43ad9b450e197c30f3f Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 23:20:57 -0500 Subject: [PATCH 152/339] Fix some compile issues --- src/coins.cpp | 4 ++-- src/komodo_defs.h | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/coins.cpp b/src/coins.cpp index 20875c9ae..3ca0565a0 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -618,13 +618,13 @@ bool CCoinsViewCache::HaveJoinSplitRequirements(const CTransaction& tx) const { for (const SpendDescription &spendDescription : tx.vShieldedSpend) { if (GetNullifier(spendDescription.nullifier, SAPLING)) { // Prevent double spends - fprintf(stderr,"%s: sapling nullifier %s exists, preventing double spend\n", __FUNCTION__, spendDescription.nullifier); + LogPrintf("%s: sapling nullifier %s exists, preventing double spend\n", __FUNCTION__, spendDescription.nullifier.GetHex().c_str()); return false; } SaplingMerkleTree tree; if (!GetSaplingAnchorAt(spendDescription.anchor, tree)) { - fprintf(stderr,"%s: missing sapling anchor: %s \n", __FUNCTION__, spendDescription.anchor); + LogPrintf("%s: missing sapling anchor: %s \n", __FUNCTION__, spendDescription.anchor.GetHex().c_str()); return false; } } diff --git a/src/komodo_defs.h b/src/komodo_defs.h index d2df54f1f..7a3be8218 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -348,6 +348,9 @@ extern uint32_t ASSETCHAIN_INIT, ASSETCHAINS_MAGIC; extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; extern uint64_t ASSETCHAINS_SUPPLY, ASSETCHAINS_FOUNDERS_REWARD; +extern int32_t ASSETCHAINS_LWMAPOS, ASSETCHAINS_SAPLING, ASSETCHAINS_OVERWINTER,ASSETCHAINS_BLOCKTIME; +extern int32_t KOMODO_BLOCK_POSUNITS, KOMODO_CONSECUTIVE_POS_THRESHOLD, KOMODO_NOPOS_THRESHHOLD; + extern uint64_t ASSETCHAINS_TIMELOCKGTE; extern uint32_t ASSETCHAINS_ALGO,ASSETCHAINS_EQUIHASH,KOMODO_INITDONE; From 82c878d17b29b627611d9e426365785cc15a0e24 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 23:28:20 -0500 Subject: [PATCH 153/339] Remove PoS stuff --- src/chainparams.cpp | 12 ------------ src/komodo_defs.h | 1 - 2 files changed, 13 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 21ba5ce5f..173f2b299 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -583,18 +583,6 @@ void *chainparams_commandline() pCurrentParams->pchMessageStart[3] = (ASSETCHAINS_MAGIC >> 24) & 0xff; fprintf(stderr,">>>>>>>>>> %s: p2p.%u rpc.%u magic.%08x %u %u coins\n",ASSETCHAINS_SYMBOL,ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT,ASSETCHAINS_MAGIC,ASSETCHAINS_MAGIC,(uint32_t)ASSETCHAINS_SUPPLY); - if (ASSETCHAINS_LWMAPOS != 0) - { - pCurrentParams->consensus.posLimit = uint256S("000000000f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); - pCurrentParams->consensus.nPOSAveragingWindow = 45; - // spacing is 1000 units per block to get better resolution, POS is 50% hard coded for now, we can vary it later - // when we get reliable integer math on nLwmaPOSAjustedWeight - pCurrentParams->consensus.nPOSTargetSpacing = KOMODO_BLOCK_POSUNITS * 2; - // nLwmaPOSAjustedWeight = (N+1)/2 * (0.9989^(500/nPOSAveragingWindow)) * nPOSTargetSpacing - // this needs to be recalculated if KOMODO_BLOCK_POSUNITS is changed - pCurrentParams->consensus.nLwmaPOSAjustedWeight = 46531; - } - pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = ASSETCHAINS_SAPLING; pCurrentParams->consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = ASSETCHAINS_OVERWINTER; // Generated at 1575831755 via hush3 contrib/checkpoints.pl by Duke Leto diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 7a3be8218..24d5557f0 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -363,7 +363,6 @@ extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY,ASSETCHAINS_SCRIPTP extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_MARMARA; extern std::vector ASSETCHAINS_PRICES,ASSETCHAINS_STOCKS; -extern int32_t KOMODO_BLOCK_POSUNITS, KOMODO_CONSECUTIVE_POS_THRESHOLD, KOMODO_NOPOS_THRESHHOLD; extern uint256 KOMODO_EARLYTXID; extern int32_t KOMODO_CONNECTING,KOMODO_CCACTIVATE,KOMODO_DEALERNODE; From 1cb03d8e304d0e8356afbd686b591434cdb02ca5 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 10 Dec 2019 23:58:32 -0500 Subject: [PATCH 154/339] Compile fixes --- src/cc/oracles.cpp | 7 +++++++ src/komodo_bitcoind.h | 5 ----- src/komodo_defs.h | 2 +- src/miner.cpp | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/cc/oracles.cpp b/src/cc/oracles.cpp index 067cba043..00aac5087 100644 --- a/src/cc/oracles.cpp +++ b/src/cc/oracles.cpp @@ -96,6 +96,13 @@ extern int32_t komodo_get_current_height(); #define PUBKEY_SPOOFING_FIX_ACTIVATION 1563148800 #define CC_MARKER_VALUE 10000 +int32_t GetLatestTimestamp(int32_t height) +{ + if ( KOMODO_NSPV_SUPERLITE ) return (NSPV_blocktime(height)); + return(komodo_heightstamp(height)); +} + + // start of consensus code CScript EncodeOraclesCreateOpRet(uint8_t funcid,std::string name,std::string description,std::string format) { diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index fdfaa0669..bcd2cf91a 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -695,11 +695,6 @@ int32_t komodo_WhoStaked(CBlock *pblock, CTxDestination &addressout) return(0); } -int32_t komodo_hasOpRet(int32_t height, uint32_t timestamp) -{ - return((ASSETCHAINS_MARMARA!=0 || komodo_newStakerActive(height, timestamp) == 1)); -} - bool komodo_checkopret(CBlock *pblock, CScript &merkleroot) { merkleroot = pblock->vtx.back().vout.back().scriptPubKey; diff --git a/src/komodo_defs.h b/src/komodo_defs.h index 24d5557f0..dfd1cd62a 100644 --- a/src/komodo_defs.h +++ b/src/komodo_defs.h @@ -431,7 +431,7 @@ int32_t komodo_blockheight(uint256 hash); bool komodo_txnotarizedconfirmed(uint256 txid); int32_t komodo_blockload(CBlock& block, CBlockIndex *pindex); uint32_t komodo_chainactive_timestamp(); -uint32_t GetLatestTimestamp(int32_t height); +//uint32_t GetLatestTimestamp(int32_t height); #ifndef KOMODO_NSPV_FULLNODE #define KOMODO_NSPV_FULLNODE (KOMODO_NSPV <= 0) diff --git a/src/miner.cpp b/src/miner.cpp index b04ff285d..2ce5ca1a1 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -591,7 +591,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 else { blocktime = GetAdjustedTime(); - siglen = komodo_staked(txStaked, pblock->nBits, &blocktime, &txtime, &utxotxid, &utxovout, &utxovalue, utxosig); + //siglen = komodo_staked(txStaked, pblock->nBits, &blocktime, &txtime, &utxotxid, &utxovout, &utxovalue, utxosig); // if you skip this check it will create a block too far into the future and not pass ProcessBlock or AcceptBlock. // This has been moved from the mining loop to save CPU, and to also make ac_staked work while ( blocktime-57 > GetAdjustedTime() ) From b6fa28dfa27e536375f7a5f7b6c5a721add519b3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 15:51:40 -0500 Subject: [PATCH 155/339] Delete more dead code that causes compile issues --- src/komodo_bitcoind.h | 1 - src/pow.cpp | 127 ------------------------------------------ src/pow.h | 2 - 3 files changed, 130 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index bcd2cf91a..5e46960f1 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -28,7 +28,6 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp); int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp); int32_t komodo_voutupdate(bool fJustCheck,int32_t *isratificationp,int32_t notaryid,uint8_t *scriptbuf,int32_t scriptlen,int32_t height,uint256 txhash,int32_t i,int32_t j,uint64_t *voutmaskp,int32_t *specialtxp,int32_t *notarizedheightp,uint64_t value,int32_t notarized,uint64_t signedmask,uint32_t timestamp); -unsigned int lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus::Params& params); bool EnsureWalletIsAvailable(bool avoidException); extern bool fRequestShutdown; extern CScript KOMODO_EARLYTXID_SCRIPTPUB; diff --git a/src/pow.cpp b/src/pow.cpp index e402cb63f..578ee738d 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -613,133 +613,6 @@ bool DoesHashQualify(const CBlockIndex *pbindex) return true; } -// the goal is to keep POS at a solve time that is a ratio of block time units. the low resolution makes a stable solution more challenging -// and requires that the averaging window be quite long. -uint32_t lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus::Params& params) -{ - arith_uint256 nextTarget {0}, sumTarget {0}, bnTmp, bnLimit; - bnLimit = UintToArith256(params.posLimit); - uint32_t nProofOfStakeLimit = bnLimit.GetCompact(); - int64_t t = 0, solvetime = 0; - int64_t k = params.nLwmaPOSAjustedWeight; - int64_t N = params.nPOSAveragingWindow; - - struct solveSequence { - int64_t solveTime; - bool consecutive; - uint32_t nBits; - solveSequence() - { - consecutive = 0; - solveTime = 0; - nBits = 0; - } - }; - - // Find the first block in the averaging interval as we total the linearly weighted average - // of POS solve times - const CBlockIndex* pindexFirst = pindexLast; - - // we need to make sure we have a starting nBits reference, which is either the last POS block, or the default - // if we have had no POS block in the threshold number of blocks, we must return the default, otherwise, we'll now have - // a starting point - uint32_t nBits = nProofOfStakeLimit; - for (int64_t i = 0; i < KOMODO_NOPOS_THRESHHOLD; i++) - { - if (!pindexFirst) - return nProofOfStakeLimit; - - CBlockHeader hdr = pindexFirst->GetBlockHeader(); - - pindexFirst = pindexFirst->pprev; - } - - pindexFirst = pindexLast; - std::vector idx = std::vector(); - idx.resize(N); - - for (int64_t i = N - 1; i >= 0; i--) - { - // we measure our solve time in passing of blocks, where one bock == KOMODO_BLOCK_POSUNITS units - // consecutive blocks in either direction have their solve times exponentially multiplied or divided by power of 2 - int x; - for (x = 0; x < KOMODO_CONSECUTIVE_POS_THRESHOLD; x++) - { - pindexFirst = pindexFirst->pprev; - - if (!pindexFirst) - return nProofOfStakeLimit; - - CBlockHeader hdr = pindexFirst->GetBlockHeader(); - } - - if (x) - { - idx[i].consecutive = false; - { - int64_t lastSolveTime = 0; - idx[i].solveTime = KOMODO_BLOCK_POSUNITS; - for (int64_t j = 0; j < x; j++) - { - lastSolveTime = KOMODO_BLOCK_POSUNITS + (lastSolveTime >> 1); - idx[i].solveTime += lastSolveTime; - } - } - idx[i].nBits = nBits; - } - else - { - idx[i].consecutive = true; - idx[i].nBits = nBits; - // go forward and halve the minimum solve time for all consecutive blocks in this run, to get here, our last block is POS, - // and if there is no POS block in front of it, it gets the normal solve time of one block - uint32_t st = KOMODO_BLOCK_POSUNITS; - for (int64_t j = i; j < N; j++) - { - if (idx[j].consecutive == true) - { - idx[j].solveTime = st; - if ((j - i) >= KOMODO_CONSECUTIVE_POS_THRESHOLD) - { - // if this is real time, return zero - if (j == (N - 1)) - { - // target of 0 (virtually impossible), if we hit max consecutive POS blocks - nextTarget.SetCompact(0); - return nextTarget.GetCompact(); - } - } - st >>= 1; - } - else - break; - } - } - } - - for (int64_t i = N - 1; i >= 0; i--) - { - // weighted sum - t += idx[i].solveTime * i; - - // Target sum divided by a factor, (k N^2). - // The factor is a part of the final equation. However we divide - // here to avoid potential overflow. - bnTmp.SetCompact(idx[i].nBits); - sumTarget += bnTmp / (k * N * N); - } - - // Keep t reasonable in case strange solvetimes occurred. - if (t < N * k / 3) - t = N * k / 3; - - nextTarget = t * sumTarget; - if (nextTarget > bnLimit) - nextTarget = bnLimit; - - return nextTarget.GetCompact(); -} - bool CheckEquihashSolution(const CBlockHeader *pblock, const CChainParams& params) { if (ASSETCHAINS_ALGO != ASSETCHAINS_EQUIHASH) diff --git a/src/pow.h b/src/pow.h index 4946cb6e8..1de85d5cb 100644 --- a/src/pow.h +++ b/src/pow.h @@ -37,8 +37,6 @@ unsigned int CalculateNextWorkRequired(arith_uint256 bnAvg, int64_t nLastBlockTime, int64_t nFirstBlockTime, const Consensus::Params&); -unsigned int lwmaGetNextPOSRequired(const CBlockIndex* pindexLast, const Consensus::Params& params); - /** Check whether the Equihash solution in a block header is valid */ bool CheckEquihashSolution(const CBlockHeader *pblock, const CChainParams&); From 1fa3de387cf62f257fa28e609751630ee80cfbc5 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 16:31:28 -0500 Subject: [PATCH 156/339] Delete delete delete --- src/main.cpp | 5 ++- src/rpc/blockchain.cpp | 74 ------------------------------------------ 2 files changed, 2 insertions(+), 77 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index e9bc4c561..cfd8e1c7d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -48,7 +48,6 @@ #include "validationinterface.h" #include "wallet/asyncrpcoperation_sendmany.h" #include "wallet/asyncrpcoperation_shieldcoinbase.h" -#include "notaries_staked.h" #include #include @@ -3489,7 +3488,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin CAmount nFees = 0; int nInputs = 0; uint64_t valueout; - int64_t voutsum = 0, prevsum = 0, interest, sum = 0, stakeTxValue = 0; + int64_t voutsum = 0, prevsum = 0, interest, sum = 0; unsigned int nSigOps = 0; CDiskTxPos pos(pindex->GetBlockPos(), GetSizeOfCompactSize(block.vtx.size())); std::vector > vPos; @@ -5052,7 +5051,7 @@ bool CheckBlockHeader(int32_t *futureblockp,int32_t height,CBlockIndex *pindex, } int32_t komodo_check_deposit(int32_t height,const CBlock& block,uint32_t prevtime); -int32_t komodo_checkPOW(int64_t stakeTxValue,int32_t slowflag,CBlock *pblock,int32_t height); +int32_t komodo_checkPOW(int32_t slowflag,CBlock *pblock,int32_t height); bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const CBlock& block, CValidationState& state, libzcash::ProofVerifier& verifier, diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 688695956..8b65b8249 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -648,80 +648,10 @@ UniValue getblockhash(const UniValue& params, bool fHelp) UniValue getlastsegidstakes(const UniValue& params, bool fHelp) { - if (fHelp || params.size() != 1) - throw runtime_error( - "getlastsegidstakes depth\n" - "\nReturns object containing the counts of the last X blocks staked by each segid.\n" - "\nArguments:\n" - "1. depth (numeric, required) The amount of blocks to scan back." - "\nResult:\n" - "{\n" - " \"0\" : n, (numeric) number of stakes from segid 0 in the last X blocks.\n" - " .....\n" - "}\n" - "\nExamples:\n" - + HelpExampleCli("getlastsegidstakes", "1000") - + HelpExampleRpc("getlastsegidstakes", "1000") - ); - - if ( ASSETCHAINS_STAKED == 0 ) - throw runtime_error("Only applies to ac_staked chains\n"); - - LOCK(cs_main); - - int depth = params[0].get_int(); - if ( depth > chainActive.Height() ) - throw runtime_error("Not enough blocks to scan back that far.\n"); - - int32_t segids[64] = {0}; - int32_t pow = 0; - int32_t notset = 0; - - for (int64_t i = chainActive.Height(); i > chainActive.Height()-depth; i--) - { - int8_t segid = komodo_segid(0,i); - //CBlockIndex* pblockindex = chainActive[i]; - if ( segid >= 0 ) - segids[segid] += 1; - else if ( segid == -1 ) - pow++; - else - notset++; - } - - int8_t posperc = 100*(depth-pow)/depth; - UniValue ret(UniValue::VOBJ); - UniValue objsegids(UniValue::VOBJ); - for (int8_t i = 0; i < 64; i++) - { - char str[4]; - sprintf(str, "%d", i); - objsegids.push_back(Pair(str,segids[i])); - } - ret.push_back(Pair("NotSet",notset)); - ret.push_back(Pair("PoW",pow)); - ret.push_back(Pair("PoSPerc",posperc)); - ret.push_back(Pair("SegIds",objsegids)); return ret; } -/*uint256 _komodo_getblockhash(int32_t nHeight) -{ - uint256 hash; - LOCK(cs_main); - if ( nHeight >= 0 && nHeight <= chainActive.Height() ) - { - CBlockIndex* pblockindex = chainActive[nHeight]; - hash = pblockindex->GetBlockHash(); - int32_t i; - for (i=0; i<32; i++) - printf("%02x",((uint8_t *)&hash)[i]); - printf(" blockhash.%d\n",nHeight); - } else memset(&hash,0,sizeof(hash)); - return(hash); -}*/ - UniValue getblockheader(const UniValue& params, bool fHelp) { if (fHelp || params.size() < 1 || params.size() > 2) @@ -1735,10 +1665,6 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp) obj.push_back(Pair("difficulty", (double)GetNetworkDifficulty())); obj.push_back(Pair("verificationprogress", progress)); obj.push_back(Pair("chainwork", chainActive.LastTip()->chainPower.chainWork.GetHex())); - if (ASSETCHAINS_LWMAPOS) - { - obj.push_back(Pair("chainstake", chainActive.LastTip()->chainPower.chainStake.GetHex())); - } obj.push_back(Pair("pruned", fPruneMode)); SproutMerkleTree tree; From ed52da4a8db613305d9319766ac1e602a951fab2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 16:35:47 -0500 Subject: [PATCH 157/339] No staking code, thank you very much --- src/crosschain_authority.cpp | 2 +- src/komodo.h | 2 +- src/komodo_notary.h | 2 +- src/notaries_staked.cpp | 136 ----------------------------------- src/notaries_staked.h | 75 ------------------- src/wallet/rpcwallet.cpp | 1 - 6 files changed, 3 insertions(+), 215 deletions(-) delete mode 100644 src/notaries_staked.cpp delete mode 100644 src/notaries_staked.h diff --git a/src/crosschain_authority.cpp b/src/crosschain_authority.cpp index 7487e4879..cf562db45 100644 --- a/src/crosschain_authority.cpp +++ b/src/crosschain_authority.cpp @@ -1,7 +1,7 @@ #include "cc/eval.h" #include "crosschain.h" #include "notarisationdb.h" -#include "notaries_staked.h" + int GetSymbolAuthority(const char* symbol) { diff --git a/src/komodo.h b/src/komodo.h index 3176f6592..3d2316961 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -16,7 +16,7 @@ #ifndef H_KOMODO_H #define H_KOMODO_H #include "komodo_defs.h" -#include "notaries_staked.h" + #ifdef _WIN32 #define printf(...) diff --git a/src/komodo_notary.h b/src/komodo_notary.h index f820e0bd5..14555e534 100644 --- a/src/komodo_notary.h +++ b/src/komodo_notary.h @@ -17,7 +17,7 @@ #include "komodo_defs.h" #include "komodo_cJSON.h" -#include "notaries_staked.h" + #define KOMODO_MAINNET_START 178999 #define KOMODO_NOTARIES_HEIGHT1 814000 diff --git a/src/notaries_staked.cpp b/src/notaries_staked.cpp deleted file mode 100644 index d3281127e..000000000 --- a/src/notaries_staked.cpp +++ /dev/null @@ -1,136 +0,0 @@ - -#include "notaries_staked.h" -#include "crosschain.h" -#include "cc/CCinclude.h" -#include - -extern char NOTARYADDRS[64][64]; -extern std::string NOTARY_ADDRESS,NOTARY_PUBKEY; -extern int32_t STAKED_ERA,IS_STAKED_NOTARY,IS_KOMODO_NOTARY; -extern pthread_mutex_t staked_mutex; -extern uint8_t NOTARY_PUBKEY33[33]; - -int8_t is_STAKED(const char *chain_name) -{ - static int8_t STAKED,doneinit; - if ( chain_name[0] == 0 ) - return(0); - if (doneinit == 1 && ASSETCHAINS_SYMBOL[0] != 0) - return(STAKED); - else STAKED = 0; - if ( (strcmp(chain_name, "LABS") == 0) ) - STAKED = 1; // These chains are allowed coin emissions. - else if ( (strncmp(chain_name, "LABS", 4) == 0) ) - STAKED = 2; // These chains have no coin emission, block subsidy is always 0, and comission is 0. Notary pay is allowed. - else if ( (strcmp(chain_name, "CFEK") == 0) || (strncmp(chain_name, "CFEK", 4) == 0) ) - STAKED = 3; // These chains have no speical rules at all. - else if ( (strcmp(chain_name, "TEST") == 0) || (strncmp(chain_name, "TEST", 4) == 0) ) - STAKED = 4; // These chains are for testing consensus to create a chain etc. Not meant to be actually used for anything important. - else if ( (strcmp(chain_name, "THIS_CHAIN_IS_BANNED") == 0) ) - STAKED = 255; // Any chain added to this group is banned, no notarisations are valid, as a consensus rule. Can be used to remove a chain from cluster if needed. - doneinit = 1; - return(STAKED); -}; - -int32_t STAKED_era(int timestamp) -{ - int8_t era = 0; - if (timestamp <= STAKED_NOTARIES_TIMESTAMP[0]) - return(1); - for (int32_t i = 1; i < NUM_STAKED_ERAS; i++) - { - if (timestamp <= STAKED_NOTARIES_TIMESTAMP[i] && timestamp >= (STAKED_NOTARIES_TIMESTAMP[i-1] + STAKED_ERA_GAP)) - return(i+1); - } - // if we are in a gap, return era 0, this allows to invalidate notarizations when in GAP. - return(0); -}; - -int8_t StakedNotaryID(std::string ¬aryname, char *Raddress) { - if ( STAKED_ERA != 0 ) - { - for (int8_t i = 0; i < num_notaries_STAKED[STAKED_ERA-1]; i++) { - if ( strcmp(Raddress,NOTARYADDRS[i]) == 0 ) { - notaryname.assign(notaries_STAKED[STAKED_ERA-1][i][0]); - return(i); - } - } - } - return(-1); -} - -int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) { - int i; int8_t retval = 0; - static uint8_t staked_pubkeys[NUM_STAKED_ERAS][64][33],didinit[NUM_STAKED_ERAS]; - static char ChainName[65]; - - if ( ChainName[0] == 0 ) - { - if ( ASSETCHAINS_SYMBOL[0] == 0 ) - strcpy(ChainName,"KMD"); - else - strcpy(ChainName,ASSETCHAINS_SYMBOL); - } - - if ( era == 0 ) - { - // era is zero so we need to null out the pubkeys. - memset(pubkeys,0,64 * 33); - printf("%s is a STAKED chain and is in an ERA GAP.\n",ChainName); - return(64); - } - else - { - if ( didinit[era-1] == 0 ) - { - for (i=0; i Date: Wed, 11 Dec 2019 16:53:49 -0500 Subject: [PATCH 158/339] Clean up --- src/miner.cpp | 2 +- src/notarisationdb.cpp | 2 +- src/rpc/crosschain.cpp | 2 +- src/rpc/misc.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 2ce5ca1a1..3cf7fd45b 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -55,7 +55,7 @@ #include "sodium.h" -#include "notaries_staked.h" + #include #include diff --git a/src/notarisationdb.cpp b/src/notarisationdb.cpp index b148deccf..a5d755e59 100644 --- a/src/notarisationdb.cpp +++ b/src/notarisationdb.cpp @@ -4,7 +4,7 @@ #include "cc/eval.h" #include "crosschain.h" #include "main.h" -#include "notaries_staked.h" + #include diff --git a/src/rpc/crosschain.cpp b/src/rpc/crosschain.cpp index b42a08f62..5b2759f12 100644 --- a/src/rpc/crosschain.cpp +++ b/src/rpc/crosschain.cpp @@ -34,7 +34,7 @@ #include "script/script_error.h" #include "script/sign.h" #include "script/standard.h" -#include "notaries_staked.h" + #include "key_io.h" #include "cc/CCImportGateway.h" diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 624e7f006..162eae89c 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -28,7 +28,7 @@ #include "timedata.h" #include "txmempool.h" #include "util.h" -#include "notaries_staked.h" + #include "cc/eval.h" #include "cc/CCinclude.h" #ifdef ENABLE_WALLET From bfc635106a62ec1d9bc2225e817c156d67aa56b9 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 22:39:56 -0500 Subject: [PATCH 159/339] Compile fixes --- src/komodo.h | 12 ------------ src/komodo_notary.h | 10 ---------- src/komodo_utils.h | 3 --- src/main.cpp | 17 +++++++++-------- src/miner.cpp | 2 ++ src/notarisationdb.cpp | 15 +-------------- 6 files changed, 12 insertions(+), 47 deletions(-) diff --git a/src/komodo.h b/src/komodo.h index 3d2316961..9816eb20b 100644 --- a/src/komodo.h +++ b/src/komodo.h @@ -835,18 +835,6 @@ int32_t komodo_connectblock(bool fJustCheck, CBlockIndex *pindex,CBlock& block) } //fprintf(stderr,"%s connect.%d\n",ASSETCHAINS_SYMBOL,pindex->nHeight); // Wallet Filter. Disabled here. Cant be activated by notaries or pools with some changes. - if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 || IS_STAKED_NOTARY > -1 ) - { - staked_era = STAKED_era(pindex->GetBlockTime()); - if ( !fJustCheck && staked_era != lastStakedEra ) - { - uint8_t tmp_pubkeys[64][33]; - int8_t numSN = numStakedNotaries(tmp_pubkeys,staked_era); - UpdateNotaryAddrs(tmp_pubkeys,numSN); - STAKED_ERA = staked_era; - lastStakedEra = staked_era; - } - } numnotaries = komodo_notaries(pubkeys,pindex->GetHeight(),pindex->GetBlockTime()); calc_rmd160_sha256(rmd160,pubkeys[0],33); if ( pindex->GetHeight() > hwmheight ) diff --git a/src/komodo_notary.h b/src/komodo_notary.h index 14555e534..6c819c005 100644 --- a/src/komodo_notary.h +++ b/src/komodo_notary.h @@ -130,16 +130,6 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam return(NUM_KMD_NOTARIES); } } - else if ( timestamp != 0 ) - { - // here we can activate our pubkeys for LABS chains everythig is in notaries_staked.cpp - int32_t staked_era; int8_t numSN; - uint8_t staked_pubkeys[64][33]; - staked_era = STAKED_era(timestamp); - numSN = numStakedNotaries(staked_pubkeys,staked_era); - memcpy(pubkeys,staked_pubkeys,numSN * 33); - return(numSN); - } htind = height / KOMODO_ELECTION_GAP; if ( htind >= KOMODO_MAXBLOCKS / KOMODO_ELECTION_GAP ) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index f883d23dd..285bef9e3 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1965,9 +1965,6 @@ void komodo_args(char *argv0) } - if ( (ASSETCHAINS_STAKED= GetArg("-ac_staked",0)) > 100 ) - ASSETCHAINS_STAKED = 100; - ASSETCHAINS_SAPLING = GetArg("-ac_sapling", -1); if (ASSETCHAINS_SAPLING == -1) { diff --git a/src/main.cpp b/src/main.cpp index cfd8e1c7d..36fdb8d7f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -116,6 +116,13 @@ bool fAlerts = DEFAULT_ALERTS; int64_t nMaxTipAge = DEFAULT_MAX_TIP_AGE; unsigned int expiryDelta = DEFAULT_TX_EXPIRY_DELTA; +extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; +extern uint64_t ASSETCHAINS_ENDSUBSIDY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_HALVING[ASSETCHAINS_MAX_ERAS+1]; +extern uint32_t ASSETCHAINS_MAGIC; +extern uint64_t ASSETCHAINS_LINEAR,ASSETCHAINS_COMMISSION,ASSETCHAINS_SUPPLY; +extern uint8_t ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE; +extern int32_t ASSETCHAINS_STAKED; +extern uint64_t ASSETCHAINS_CBOPRET; /** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */ CFeeRate minRelayTxFee = CFeeRate(DEFAULT_MIN_RELAY_TX_FEE); @@ -2383,12 +2390,6 @@ bool ReadBlockFromDisk(CBlock& block, const CBlockIndex* pindex,bool checkPOW) } //uint64_t komodo_moneysupply(int32_t height); -extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; -extern uint64_t ASSETCHAINS_ENDSUBSIDY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_HALVING[ASSETCHAINS_MAX_ERAS+1]; -extern uint32_t ASSETCHAINS_MAGIC; -extern uint64_t ASSETCHAINS_LINEAR,ASSETCHAINS_COMMISSION,ASSETCHAINS_SUPPLY; -extern uint8_t ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE; -extern int32_t ASSETCHAINS_STAKED; CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams) { @@ -5083,7 +5084,7 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C fprintf(stderr," failed hash ht.%d\n",height); return state.DoS(50, error("CheckBlock: proof of work failed"),REJECT_INVALID, "high-hash"); } - if ( ASSETCHAINS_STAKED == 0 && komodo_checkPOW(0,1,(CBlock *)&block,height) < 0 ) // checks Equihash + if ( ASSETCHAINS_STAKED == 0 && komodo_checkPOW(1,(CBlock *)&block,height) < 0 ) // checks Equihash return state.DoS(100, error("CheckBlock: failed slow_checkPOW"),REJECT_INVALID, "failed-slow_checkPOW"); } if ( height > nDecemberHardforkHeight && ASSETCHAINS_SYMBOL[0] == 0 ) // December 2019 hardfork @@ -5732,7 +5733,7 @@ bool ProcessNewBlock(bool from_miner,int32_t height,CValidationState &state, CNo } } fRequested |= fForceProcessing; - if ( checked != 0 && komodo_checkPOW(0,0,pblock,height) < 0 ) //from_miner && ASSETCHAINS_STAKED == 0 + if ( checked != 0 && komodo_checkPOW(0,pblock,height) < 0 ) //from_miner && ASSETCHAINS_STAKED == 0 { checked = 0; //fprintf(stderr,"passed checkblock but failed checkPOW.%d\n",from_miner && ASSETCHAINS_STAKED == 0); diff --git a/src/miner.cpp b/src/miner.cpp index 3cf7fd45b..df42d577a 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -121,6 +121,8 @@ public: } }; +extern int8_t ASSETCHAINS_ADAPTIVEPOW; + void UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParams, const CBlockIndex* pindexPrev) { if ( ASSETCHAINS_ADAPTIVEPOW <= 0 ) diff --git a/src/notarisationdb.cpp b/src/notarisationdb.cpp index a5d755e59..4011992f5 100644 --- a/src/notarisationdb.cpp +++ b/src/notarisationdb.cpp @@ -39,20 +39,7 @@ NotarisationsInBlock ScanBlockNotarisations(const CBlock &block, int nHeight) continue; //printf("Authorised notarisation data for %s \n",data.symbol); } else if (authority == CROSSCHAIN_STAKED) { - // We need to create auth_STAKED dynamically here based on timestamp - int32_t staked_era = STAKED_era(timestamp); - if (staked_era == 0) { - // this is an ERA GAP, so we will ignore this notarization - continue; - if ( is_STAKED(data.symbol) == 255 ) - // this chain is banned... we will discard its notarisation. - continue; - } else { - // pass era slection off to notaries_staked.cpp file - auth_STAKED = Choose_auth_STAKED(staked_era); - } - if (!CheckTxAuthority(tx, auth_STAKED)) - continue; + continue; } if (parsed) { From 1bc12291ff042ac163436418e6f07cd9b6e0778b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 23:04:31 -0500 Subject: [PATCH 160/339] fix makefile --- src/Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index aaeada2d1..8de102760 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -319,7 +319,6 @@ libbitcoin_server_a_SOURCES = \ metrics.h \ miner.cpp \ net.cpp \ - notaries_staked.cpp \ noui.cpp \ notarisationdb.cpp \ paymentdisclosure.cpp \ From 0bb15841b02b793647efbf2c2d9d822c5e02cccf Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 23:04:49 -0500 Subject: [PATCH 161/339] define --- src/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.cpp b/src/main.cpp index 36fdb8d7f..ef126376f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -117,6 +117,7 @@ int64_t nMaxTipAge = DEFAULT_MAX_TIP_AGE; unsigned int expiryDelta = DEFAULT_TX_EXPIRY_DELTA; extern char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN]; +#define ASSETCHAINS_MAX_ERAS 7 extern uint64_t ASSETCHAINS_ENDSUBSIDY[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_REWARD[ASSETCHAINS_MAX_ERAS+1], ASSETCHAINS_HALVING[ASSETCHAINS_MAX_ERAS+1]; extern uint32_t ASSETCHAINS_MAGIC; extern uint64_t ASSETCHAINS_LINEAR,ASSETCHAINS_COMMISSION,ASSETCHAINS_SUPPLY; From fb1f9893914e0cfbcdc90b5487d8dfcbf32ac215 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 23:04:59 -0500 Subject: [PATCH 162/339] Revert "Clean up" This reverts commit 5477a673e1c2ab93d595414c22d226a094f2ae93. --- src/miner.cpp | 2 +- src/notarisationdb.cpp | 2 +- src/rpc/crosschain.cpp | 2 +- src/rpc/misc.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index df42d577a..82c0b43bb 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -55,7 +55,7 @@ #include "sodium.h" - +#include "notaries_staked.h" #include #include diff --git a/src/notarisationdb.cpp b/src/notarisationdb.cpp index 4011992f5..6a560d599 100644 --- a/src/notarisationdb.cpp +++ b/src/notarisationdb.cpp @@ -4,7 +4,7 @@ #include "cc/eval.h" #include "crosschain.h" #include "main.h" - +#include "notaries_staked.h" #include diff --git a/src/rpc/crosschain.cpp b/src/rpc/crosschain.cpp index 5b2759f12..b42a08f62 100644 --- a/src/rpc/crosschain.cpp +++ b/src/rpc/crosschain.cpp @@ -34,7 +34,7 @@ #include "script/script_error.h" #include "script/sign.h" #include "script/standard.h" - +#include "notaries_staked.h" #include "key_io.h" #include "cc/CCImportGateway.h" diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 162eae89c..624e7f006 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -28,7 +28,7 @@ #include "timedata.h" #include "txmempool.h" #include "util.h" - +#include "notaries_staked.h" #include "cc/eval.h" #include "cc/CCinclude.h" #ifdef ENABLE_WALLET From a7b3051f756e1f7a79b39829ef39bbb6e14802e1 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 23:10:11 -0500 Subject: [PATCH 163/339] This header is needed for now --- src/notaries_staked.h | 100 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/notaries_staked.h diff --git a/src/notaries_staked.h b/src/notaries_staked.h new file mode 100644 index 000000000..4095eb0f0 --- /dev/null +++ b/src/notaries_staked.h @@ -0,0 +1,100 @@ + +#ifndef NOTARIES_STAKED +#define NOTARIES_STAKED + +#include "crosschain.h" +#include "cc/CCinclude.h" + +static const int32_t iguanaPort = 9333; +static const int8_t BTCminsigs = 13; +static const int8_t overrideMinSigs = 7; +static const char *iguanaSeeds[8][1] = +{ + {"94.23.1.95"}, + {"103.6.12.112"}, + {"18.224.176.46"}, + {"45.76.120.247"}, + {"185.62.57.32"}, + {"149.28.253.160"}, + {"68.183.226.124"}, + {"149.28.246.230"}, +}; + +static const int STAKED_ERA_GAP = 777; + +static const int NUM_STAKED_ERAS = 4; +// Set timestamp for notary change over in position 1: +static const int STAKED_NOTARIES_TIMESTAMP[NUM_STAKED_ERAS] = {1572523200, 1704244444, 1704244444, 1704244444}; // Oct 31 noon UTC +// Set the number of keys in position 2: +static const int32_t num_notaries_STAKED[NUM_STAKED_ERAS] = { 22, 24, 1, 1 }; + +// Era array of pubkeys. +static const char *notaries_STAKED[NUM_STAKED_ERAS][64][2] = +{ + { + {"blackjok3r", "035fc678bf796ad52f69e1f5759be54ec671c559a22adf27eed067e0ddf1531574" }, // RTcYRJ6WopYkUqcmksyjxoV1CueYyqxFuk right + {"Alright", "02b718c60a035f77b7103a507d36aed942b4f655b8d13bce6f28b8eac523944278" }, //RG77F4mQpP1K1q2CDSc2vZSJvKUZgF8R26 + {"webworker01", "031d1fb39ae4dca28965c3abdbd21faa0f685f6d7b87a60561afa7c448343fef6d" }, //RGsQiArk5sTmjXZV9UzGMW5njyvtSnsTN8 right + {"CrisF", "03745656c8991c4597828aad2820760c43c00ff2e3b381fef3b5c040f32a7b3a34" }, // RNhYJAaPHJCVXGWNVEJeP3TfepEPdhjrRr right + {"smk762", "02381616fbc02d3f0398c912fe7b7daf2f3f29e55dc35287f686b15686d8135a9f" }, // RSchwBApVquaG6mXH31bQ6P83kMN4Hound right + {"jorian", "0343eec31037d7b909efd968a5b5e7af60321bf7e464da28f815f0fb23ee7aadd7" }, // RJorianBXNwfNDYPxtNYJJ6vX7Z3VdTR25 right + {"TonyL", "021a559101e355c907d9c553671044d619769a6e71d624f68bfec7d0afa6bd6a96" }, // RHq3JsvLxU45Z8ufYS6RsDpSG4wi6ucDev + {"CHMEX", "03ed125d1beb118d12ff0a052bdb0cee32591386d718309b2924f2c36b4e7388e6" }, // RF4HiVeuYpaznRPs7fkRAKKYqT5tuxQQTL right + {"metaphilibert", "0344182c376f054e3755d712361672138660bda8005abb64067eb5aa98bdb40d10" }, // RG28QSnYFADBg1dAVkH1uPGYS6F8ioEUM2 right + {"gt", "02312dcecb6e4a32927a075972d3c009f3c68635d8100562cc1813ea66751b9fde" }, // RCg4tzKWQ7i3wrZEU8bvCbCQ4xRJnHnyoo right + {"CMaurice", "026c6d094523e810641b89f2d7f0ddd8f0b59d97c32e1fa97f0e3e0ac119c26ae4" }, // RSjayeSuYUE1E22rBjnqoexobaRjbAZ2Yb right + {"Bar_F1sh_Rel", "0395f2d9dd9ccb78caf74bff49b6d959afb95af746462e1b35f4a167d8e82b3666" }, // RBbLxJagCA9QHDazQvfnDZe874V1K4Gu8t + {"zatJUM", "030fff499b6dc0215344b28a0b6b4becdfb00cd34cd1b36b983ec14f47965fd4bc" }, // RSoEDLBasth7anxS8gbkg6KgeGiz8rhqv1 right + {"dwy", "03669457b2934d98b5761121dd01b243aed336479625b293be9f8c43a6ae7aaeff" }, // RKhZMqRF361FSGFAzstP5AhozekPjoVh5q + {"gcharang", "021569dd350d99e685a739c5b36bd01f217efb4f448a6f9a56da80c5edf6ce20ee" }, // RE8SsNwhYoygXJSvw9DuQbJicDc28dwR78 right + {"computergenie", "027313dabde94fb72f823231d0a1c59fc7baa2e5b3bb2af97ca7d70aae116026b9" }, // RLabsCGxTRqJcJvz6foKuXAB61puJ2x8yt right + {"daemonfox", "0383484bdc745b2b953c85b5a0c496a1f27bc42ae971f15779ed1532421b3dd943" }, // + {"SHossain", "02791f5c215b8a19c143a98e3371ff03b5613df9ac430c4a331ca55fed5761c800" }, // RKdLoHkyeorXmMtj91B1AAnAGiwsdt9MdF + {"Nabob", "03ee91c20b6d26e3604022f42df6bb8de6f669da4591f93b568778cba13d9e9ddf" }, // RRwCLPZDzpHEFJnLev4phy51e2stHRUAaU + {"mylo", "03f6b7fcaf0b8b8ec432d0de839a76598b78418dadd50c8e5594c0e557d914ec09" }, // RXN4hoZkhUkkrnef9nTUDw3E3vVALAD8Kx + {"PHBA2061", "039fc98c764bc85aed97d690d7942a4fd1190b2fa4f5f4c5c8e0957fac5c6ede00" }, // RPHba2o61hcpX4ds91oj3sKJ8aDXv6QdQf right + {"Exile13", "0247b2120a39faf83678b5de6883e039180ff42925bcb298d32f3792cd59001aae" }, // RTDJ3CDZ6ANbeDKab8nqTVrGw7ViAKLeDV right + }, + { + {"blackjok3r", "035fc678bf796ad52f69e1f5759be54ec671c559a22adf27eed067e0ddf1531574"}, //RTcYRJ6WopYkUqcmksyjxoV1CueYyqxFuk + {"Alright", "02b718c60a035f77b7103a507d36aed942b4f655b8d13bce6f28b8eac523944278"}, //RG77F4mQpP1K1q2CDSc2vZSJvKUZgF8R26 + {"webworker01", "031d1fb39ae4dca28965c3abdbd21faa0f685f6d7b87a60561afa7c448343fef6d"}, //RGsQiArk5sTmjXZV9UzGMW5njyvtSnsTN8 + {"CrisF", "03745656c8991c4597828aad2820760c43c00ff2e3b381fef3b5c040f32a7b3a34"}, //RNhYJAaPHJCVXGWNVEJeP3TfepEPdhjrRr + {"smk762", "02381616fbc02d3f0398c912fe7b7daf2f3f29e55dc35287f686b15686d8135a9f"}, //RSchwBApVquaG6mXH31bQ6P83kMN4Hound + {"jorian", "0343eec31037d7b909efd968a5b5e7af60321bf7e464da28f815f0fb23ee7aadd7"}, //RJorianBXNwfNDYPxtNYJJ6vX7Z3VdTR25 + {"TonyL", "021a559101e355c907d9c553671044d619769a6e71d624f68bfec7d0afa6bd6a96"}, //RHq3JsvLxU45Z8ufYS6RsDpSG4wi6ucDev + {"CHMEX", "031938a89a44b3c11d53ac332d01a465384a75394fddfe98055ca3fed00ccff236"}, //RCyHdP6EvVDdfpFPzbfACHMhQAN6Wd3Wdv + {"metaphilibert", "0344182c376f054e3755d712361672138660bda8005abb64067eb5aa98bdb40d10"}, //RG28QSnYFADBg1dAVkH1uPGYS6F8ioEUM2 + {"gt", "02312dcecb6e4a32927a075972d3c009f3c68635d8100562cc1813ea66751b9fde"}, //RCg4tzKWQ7i3wrZEU8bvCbCQ4xRJnHnyoo + {"CMaurice", "026c6d094523e810641b89f2d7f0ddd8f0b59d97c32e1fa97f0e3e0ac119c26ae4"}, //RSjayeSuYUE1E22rBjnqoexobaRjbAZ2Yb + {"Bar_F1sh_Rel", "0395f2d9dd9ccb78caf74bff49b6d959afb95af746462e1b35f4a167d8e82b3666"}, //RBbLxJagCA9QHDazQvfnDZe874V1K4Gu8t + {"zatJUM", "030fff499b6dc0215344b28a0b6b4becdfb00cd34cd1b36b983ec14f47965fd4bc"}, //RSoEDLBasth7anxS8gbkg6KgeGiz8rhqv1 + {"Oszy", "02d1dd4c5d5c00039322295aa965f9787a87d234ed4f8174231bbd6162e384eba8"}, //RWQmJQfYrZBxQhuazVrordif6sHPFJRP9W + {"gcharang", "021569dd350d99e685a739c5b36bd01f217efb4f448a6f9a56da80c5edf6ce20ee"}, //RE8SsNwhYoygXJSvw9DuQbJicDc28dwR78 + {"computergenie", "027313dabde94fb72f823231d0a1c59fc7baa2e5b3bb2af97ca7d70aae116026b9"}, //RLabsCGxTRqJcJvz6foKuXAB61puJ2x8yt + {"daemonfox", "0383484bdc745b2b953c85b5a0c496a1f27bc42ae971f15779ed1532421b3dd943"}, //REScxcZm3dsWmERSax1yVgoPPadh8BYQ6k + {"SHossain", "033e90f5550dfea6c61f8d26a026ec5edcb9ecf9c69230da246f9762ee9542782d"}, //RKTwJMAs9jVSmXQq4x6jCw48i8g5xkTeQp + {"Nabob", "03ee91c20b6d26e3604022f42df6bb8de6f669da4591f93b568778cba13d9e9ddf"}, //RRwCLPZDzpHEFJnLev4phy51e2stHRUAaU + {"mylo", "03f6b7fcaf0b8b8ec432d0de839a76598b78418dadd50c8e5594c0e557d914ec09"}, //RXN4hoZkhUkkrnef9nTUDw3E3vVALAD8Kx + {"PHBA2061", "03f4d3b286bb3d75d0095761dcca4aef778d9eb82065f95b5f9f8b8be8cad82bc7"}, //RPHba2o61CBZ1aUQhEGhgHJhJEGsR5T68i + {"ml777", "03438497e857f346e91bb269fc00d3509ab2a4d9df14931de86c8ac39aa8d82507"}, //RCRd3jESCdEgfX4gPoZsXx1Q1RQMqMa2kR + {"bishop", "026acce6b8ac3f0ed44271f1e275f220bb66ab9ff628b70bccb67b1d7d2411b320"}, //RQEUDihRhhN316K8gVLHY1neWBJjAbrtd5 + {"OldManPhil", "03d0bb79578613bb8c160d0466027ce0e7dd4d0dc6777b37460ac05342cd1e6c5b"}, //RVX3cr4J2FBDoztgF8rCuQN6vTf42XAL2U + }, + { + {"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x + }, + { + {"blackjok3r", "021914947402d936a89fbdd1b12be49eb894a1568e5e17bb18c8a6cffbd3dc106e" }, // RTVti13NP4eeeZaCCmQxc2bnPdHxCJFP9x + } +}; + +int8_t is_STAKED(const char *chain_name); +int32_t STAKED_era(int timestamp); +int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era); +int8_t StakedNotaryID(std::string ¬aryname, char *Raddress); +void UpdateNotaryAddrs(uint8_t pubkeys[64][33],int8_t numNotaries); + +CrosschainAuthority Choose_auth_STAKED(int32_t chosen_era); + +#endif From f2081ca3a0010610213167a4a2bbced5180d3da4 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Wed, 11 Dec 2019 23:20:35 -0500 Subject: [PATCH 164/339] Revert "fix makefile" This reverts commit 1bc12291ff042ac163436418e6f07cd9b6e0778b. --- src/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile.am b/src/Makefile.am index 8de102760..aaeada2d1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -319,6 +319,7 @@ libbitcoin_server_a_SOURCES = \ metrics.h \ miner.cpp \ net.cpp \ + notaries_staked.cpp \ noui.cpp \ notarisationdb.cpp \ paymentdisclosure.cpp \ From ff803add6eb590cb5b8214964b0aa155b2379e1c Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 06:42:33 -0500 Subject: [PATCH 165/339] Compile fixes --- src/main.cpp | 2 +- src/rpc/misc.cpp | 2 -- src/wallet/rpcwallet.cpp | 8 +------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index ef126376f..54e56d974 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4090,7 +4090,7 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) { { CTransaction &tx = block.vtx[i]; //if ((i == (block.vtx.size() - 1)) && ((ASSETCHAINS_LWMAPOS && block.IsVerusPOSBlock()) || (ASSETCHAINS_STAKED != 0 && (komodo_isPoS((CBlock *)&block) != 0)))) - if ( komodo_newStakerActive(0, pindexDelete->nTime) == 0 && i == block.vtx.size()-1 && komodo_isPoS((CBlock *)&block,pindexDelete->GetHeight(),0) != 0 ) + if (0) // komodo_newStakerActive(0, pindexDelete->nTime) == 0 && i == block.vtx.size()-1 && komodo_isPoS((CBlock *)&block,pindexDelete->GetHeight(),0) != 0 ) { #ifdef ENABLE_WALLET // new staking tx cannot be accepted to mempool and expires in 1 block, so no need for this! :D diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index 624e7f006..d27826ec3 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -311,8 +311,6 @@ UniValue getinfo(const UniValue& params, bool fHelp) obj.push_back(Pair("rpcport", ASSETCHAINS_RPCPORT)); if ( ASSETCHAINS_SYMBOL[0] != 0 ) { - if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 ) - obj.push_back(Pair("StakedEra", STAKED_ERA)); //obj.push_back(Pair("name", ASSETCHAINS_SYMBOL)); obj.push_back(Pair("magic", (int)ASSETCHAINS_MAGIC)); obj.push_back(Pair("premine", ASSETCHAINS_SUPPLY)); diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 70c68eb27..278ef77b0 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -38,7 +38,7 @@ #include "zcbenchmarks.h" #include "script/interpreter.h" #include "zcash/zip32.h" - +#include "cc/CCinclude.h" #include "utiltime.h" #include "asyncrpcoperation.h" #include "asyncrpcqueue.h" @@ -5622,12 +5622,6 @@ UniValue setpubkey(const UniValue& params, bool fHelp) else { result.push_back(Pair("ismine", "true")); - std::string notaryname; - if ( (IS_STAKED_NOTARY= StakedNotaryID(notaryname, Raddress)) > -1 ) - { - result.push_back(Pair("IsNotary", notaryname)); - IS_KOMODO_NOTARY = 0; - } } NOTARY_PUBKEY = params[0].get_str(); decode_hex(NOTARY_PUBKEY33,33,(char *)NOTARY_PUBKEY.c_str()); From 9f722b41f76455c2266b3e40a59187f396906fde Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Thu, 12 Dec 2019 06:44:37 -0800 Subject: [PATCH 166/339] Not needed --- src/REVS.batch0 | 323 --- src/REVS.batch1 | 78 - src/REVS.batch1.txids | 25 - src/REVS.batch2 | 48 - src/REVS.batch2.txids | 15 - src/REVS.batch3 | 44 - src/REVS.batch3.txids | 94 - src/REVS.batch4 | 27 - src/REVS.batchtxids0 | 107 - src/REVS.raw | 5492 --------------------------------------- src/REVS.rawtxids | 5492 --------------------------------------- src/REVS.snapshot | 5653 ----------------------------------------- src/REVS.txids | 3683 --------------------------- src/REVS.txids0 | 5650 ---------------------------------------- 14 files changed, 26731 deletions(-) delete mode 100755 src/REVS.batch0 delete mode 100755 src/REVS.batch1 delete mode 100644 src/REVS.batch1.txids delete mode 100755 src/REVS.batch2 delete mode 100644 src/REVS.batch2.txids delete mode 100755 src/REVS.batch3 delete mode 100644 src/REVS.batch3.txids delete mode 100755 src/REVS.batch4 delete mode 100644 src/REVS.batchtxids0 delete mode 100755 src/REVS.raw delete mode 100644 src/REVS.rawtxids delete mode 100755 src/REVS.snapshot delete mode 100644 src/REVS.txids delete mode 100644 src/REVS.txids0 diff --git a/src/REVS.batch0 b/src/REVS.batch0 deleted file mode 100755 index 2e4d31653..000000000 --- a/src/REVS.batch0 +++ /dev/null @@ -1,323 +0,0 @@ -# RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 KMD 16462.32091533, REVS 289.86606506 -fiat/revs sendtoaddress RG1QE6hTqu4dadL2XSNWS9VCHjd8xNVo58 289.86606506 -sleep 1 -# RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA KMD 74417.52897713, REVS 500.77700000 -fiat/revs sendtoaddress RFVvyUAnQe5yon6wq7B73Z1BzfFeZKyAZA 500.77700000 -sleep 1 -# RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c KMD 616895.10028203, REVS 3685.61452692 -fiat/revs sendtoaddress RWfaj9ZNmHq5A4jV411xpt1FJoyvKfVJ6c 3685.61452692 -sleep 1 -# R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n KMD 1053.37494565, REVS 4.29070721 -fiat/revs sendtoaddress R9dTcQWVDuaRdFqDzq4xPaFDjGbaLK6t8n 4.29070721 -sleep 1 -# REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE KMD 3945.67461320, REVS 30.24757576 -fiat/revs sendtoaddress REvJWEuwqmwTnanZ8bWt85wnjfrsAjnvgE 30.24757576 -sleep 1 -# RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj KMD 2729058.03025689, REVS 54178.00103054 -fiat/revs sendtoaddress RBpEnyzuQNj1hNdAG1pKLALpAWEUS67PBj 54178.00103054 -sleep 1 -# RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r KMD 8661.80183095, REVS 171.90929822 -fiat/revs sendtoaddress RHSZ1CWDNhkNbbQRDrqLHRAdCshueMrt2r 171.90929822 -sleep 1 -# RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia KMD 18367.01200788, REVS 350.00000000 -fiat/revs sendtoaddress RTqh7gEJMJDpnBp62FZZAfXctj8X7sRRia 350.00000000 -sleep 1 -# RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 KMD 7816.63087181, REVS 78.63808960 -fiat/revs sendtoaddress RNhyF9U3o4hTgWqnwQjHwrD1o4GqWiP1T6 78.63808960 -sleep 1 -# RE3yR2mCeG15ARgvENMbb573VqoQJcM3po KMD 17738.87416605, REVS 18.61556549 -fiat/revs sendtoaddress RE3yR2mCeG15ARgvENMbb573VqoQJcM3po 18.61556549 -sleep 1 -# RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH KMD 26696.69308472, REVS 529.99000000 -fiat/revs sendtoaddress RT7ENMvL46nwrFfNj1TLa5FEqJzTztHefH 529.99000000 -sleep 1 -# RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b KMD 82906.87674571, REVS 1438.93600000 -fiat/revs sendtoaddress RDTcqgh4MMHLtu9FBCcULqZmP761DFmk9b 1438.93600000 -sleep 1 -# RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 KMD 2197.34858012, REVS 43.61040113 -fiat/revs sendtoaddress RHSUmLRyJwpbdsRtytkGs9GmpZghQWHje3 43.61040113 -sleep 1 -# RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP KMD 64966.39751162, REVS 1035.00000000 -fiat/revs sendtoaddress RJEQbNrMQUHELrYPVLPepR2Y3ruAag3hEP 1035.00000000 -sleep 1 -# RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ KMD 377892.70160675, REVS 7501.00000000 -fiat/revs sendtoaddress RJ1DUUySYib5LcwJKFJ78PD3so2GQ89jKJ 7501.00000000 -sleep 1 -# RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR KMD 41.38832712, REVS 0.82090537 -fiat/revs sendtoaddress RC2nLGhFUc5Q9QFG1b38gAi9WgSgzQ9hJR 0.82090537 -sleep 1 -# RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 KMD 1350076.86672091, REVS 100.00000000 -fiat/revs sendtoaddress RCJHEogA7SW6PxuctPLtaVnXwiu49PyZY8 100.00000000 -sleep 1 -# RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu KMD 50567.04202258, REVS 1003.32000000 -fiat/revs sendtoaddress RJbudEMb7wEEN8QZ18fEkptxjE4QnMECUu 1003.32000000 -sleep 1 -# RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL KMD 589187.66272894, REVS 11685.49743445 -fiat/revs sendtoaddress RSdVypRznJsboL6MaP1shkaLhrVFcNx2KL 11685.49743445 -sleep 1 -# RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH KMD 1012.75625347, REVS 20.10000000 -fiat/revs sendtoaddress RWXwZyGf4q7cBakkY4tgupptBbCSvcBsBH 20.10000000 -sleep 1 -# RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa KMD 45132.81116316, REVS 342.26137428 -fiat/revs sendtoaddress RA7UJPwPxqgPHn4YscYWRH5EPQVaFaaaPa 342.26137428 -sleep 1 -# RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq KMD 155.36852443, REVS 3.08314987 -fiat/revs sendtoaddress RRFFxsc6kkfahR7v4paTaUZrPFisuz9Nkq 3.08314987 -sleep 1 -# RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts KMD 23963.90703474, REVS 475.60756080 -fiat/revs sendtoaddress RWFSbi9ECuZWVE37jpkbiKGw7DaFYdNtts 475.60756080 -sleep 1 -# RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr KMD 43088.75849296, REVS 470.88002226 -fiat/revs sendtoaddress RUVkn1F9g7TxoPbYtegiQoFnPTusP2gzDr 470.88002226 -sleep 1 -# R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN KMD 111664.10821907, REVS 2023.42268720 -fiat/revs sendtoaddress R9vBYQw9tSBhu2c1g4SQhZdhuZeeQrEBoN 2023.42268720 -sleep 1 -# RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk KMD 972.80557592, REVS 19.29916914 -fiat/revs sendtoaddress RG8g7LjK7hdyKp3aoKBRdwzpLy31XMXMLk 19.29916914 -sleep 1 -# RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE KMD 43251.49599262, REVS 857.93461385 -fiat/revs sendtoaddress RJ7RfZfip4qL9uEJs7Wr9FYtGusQiryMqE 857.93461385 -sleep 1 -# RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY KMD 53585.08128315, REVS 731.01000000 -fiat/revs sendtoaddress RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY 731.01000000 -sleep 1 -# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 57862.44847739, REVS 464.78017965 -fiat/revs sendtoaddress RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 464.78017965 -sleep 1 -# RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr KMD 215743.93040290, REVS 4280.65926868 -fiat/revs sendtoaddress RTkvmxME9rVZBY6ABNqkkbqKvn8WUqgQqr 4280.65926868 -sleep 1 -# RS9erX84xJG17efdZ66qHxhsUMG15fnCsH KMD 977546.42205511, REVS 19403.85638743 -fiat/revs sendtoaddress RS9erX84xJG17efdZ66qHxhsUMG15fnCsH 19403.85638743 -sleep 1 -# RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 KMD 14588.33036215, REVS 289.61149547 -fiat/revs sendtoaddress RE1wsrDNwW2NnNWM5eE162yp6haLtm5uh7 289.61149547 -sleep 1 -# RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 KMD 3170.70655908, REVS 37.96790925 -fiat/revs sendtoaddress RK5BnRzCP52qsTE4xR3Qysn6m6KeTgpZA6 37.96790925 -sleep 1 -# RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a KMD 7073.16782615, REVS 44.30216197 -fiat/revs sendtoaddress RN6TfTEYHdvFAeosYrvDaMBb2yBco47Q5a 44.30216197 -sleep 1 -# RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv KMD 117108.97863641, REVS 1631.49836519 -fiat/revs sendtoaddress RV4Hf22arBv4P4s5eFsUAnXC6N11T8x9tv 1631.49836519 -sleep 1 -# RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt KMD 163386.58575808, REVS 50.00000000 -fiat/revs sendtoaddress RYBH6Ha8RJa3CcE91yxJP6z2E6mDFm3bBt 50.00000000 -sleep 1 -# RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU KMD 6742.29255596, REVS 105.00000000 -fiat/revs sendtoaddress RUY7YW1WmTD3hCvkXmUKLeRnNg5UsJoLbU 105.00000000 -sleep 1 -# RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF KMD 1598.36899361, REVS 11.75449303 -fiat/revs sendtoaddress RNVwzuZynZ7d4DE5CfT8CWkxsp9TtCY3BF 11.75449303 -sleep 1 -# RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y KMD 21671.70738465, REVS 170.69524117 -fiat/revs sendtoaddress RPriQZfzzgin7y2Ns6vxdrMAa4XgZqdY6y 170.69524117 -sleep 1 -# RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG KMD 12075.12037906, REVS 239.62000000 -fiat/revs sendtoaddress RSCdeeWvzpBhg2tKnCWZWKw9iAMyYWiREG 239.62000000 -sleep 1 -# RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj KMD 25710.06172178, REVS 510.00000000 -fiat/revs sendtoaddress RUAvb7FFPvxjNTVhABeS2EbbdUi2LfGNMj 510.00000000 -sleep 1 -# RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC KMD 34758.47429765, REVS 689.94006658 -fiat/revs sendtoaddress RQuMEMn1TG7CCpbmYCVcDfPqesEvEkisjC 689.94006658 -sleep 1 -# RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq KMD 816561.67159376, REVS 16199.49755302 -fiat/revs sendtoaddress RBNB5mKstG86jYRjrKFgJuFoUFvZKJb9Wq 16199.49755302 -sleep 1 -# RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 KMD 88331.27512150, REVS 1398.88449696 -fiat/revs sendtoaddress RHoouCBBapEHE6uyX7CxHGFcRwUQFGMot5 1398.88449696 -sleep 1 -# RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i KMD 22366.16022678, REVS 443.95821128 -fiat/revs sendtoaddress RLHEGDwXuXQwhYkrhwSRGSJMFuvv7EAT7i 443.95821128 -sleep 1 -# RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN KMD 25.54297774, REVS 0.50680815 -fiat/revs sendtoaddress RAEtFUqe3jwVxLywCga2eKQxT2DiewsUuN 0.50680815 -sleep 1 -# RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym KMD 21446.21749875, REVS 241.00000000 -fiat/revs sendtoaddress RUcDMtu7fA3ATbHHsDTsZ8KThgd1ivawym 241.00000000 -sleep 1 -# RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 KMD 102137.83664315, REVS 2027.11216000 -fiat/revs sendtoaddress RG2cAef3JbCXiQkzPgrqS52HAQrBzJiAy4 2027.11216000 -sleep 1 -# REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf KMD 130928.69826981, REVS 2597.54928401 -fiat/revs sendtoaddress REzcqBkARMCCxkA5rVdp61f7rovmFtq5kf 2597.54928401 -sleep 1 -# RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA KMD 28641.72782430, REVS 337.66808110 -fiat/revs sendtoaddress RXKZmFmmpfAV2DAdUUXhA88RqCoyPRXcnA 337.66808110 -sleep 1 -# RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk KMD 2171.04073365, REVS 43.05910000 -fiat/revs sendtoaddress RCxnQhmYdpK9vTS7PLRtXBtDk2HaRNo1qk 43.05910000 -sleep 1 -# RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS KMD 31741.86724191, REVS 514.45537037 -fiat/revs sendtoaddress RPtwW4UejbAxs5PU6a1zMPcPqW7SVghMDS 514.45537037 -sleep 1 -# RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd KMD 12756.16332851, REVS 253.10000000 -fiat/revs sendtoaddress RYMzZx5nxKrMtTm3TNeheVn4RooTGvhsNd 253.10000000 -sleep 1 -# RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz KMD 3422.63549310, REVS 51.90683618 -fiat/revs sendtoaddress RPyKbtBPVb3FYv5iFULNUB6bq9DdvekZuz 51.90683618 -sleep 1 -# RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns KMD 77986.19708921, REVS 1548.20316000 -fiat/revs sendtoaddress RVcGdBT2N6Fbqbptj3R4zhZYNB4WJQWEns 1548.20316000 -sleep 1 -# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 11621.99031627, REVS 192.14192021 -fiat/revs sendtoaddress RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf 192.14192021 -sleep 1 -# REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH KMD 25088.84725730, REVS 305.62849999 -fiat/revs sendtoaddress REtq1LtbLVo6bz68f9TGFduNmUTKqG7vnH 305.62849999 -sleep 1 -# RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 KMD 3546.25060143, REVS 39.99000000 -fiat/revs sendtoaddress RS3rMPEGouBWbHKStyQg8TxVmtwFQ6ebh3 39.99000000 -sleep 1 -# RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd KMD 69108.92543895, REVS 314.51750000 -fiat/revs sendtoaddress RGzvr4JSHDLDQAGBwdyoUiUuaYn5sUwKNd 314.51750000 -sleep 1 -# RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE KMD 2931.50081538, REVS 40.37145505 -fiat/revs sendtoaddress RMD1wVnzMmKn8uMTHaP9pYfCWkxf3QVWWE 40.37145505 -sleep 1 -# RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE KMD 5506.18026103, REVS 90.00054364 -fiat/revs sendtoaddress RQCEEEprmqghZHN73iG1C2XvYTTQ6FB2wE 90.00054364 -sleep 1 -# RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx KMD 529.41438680, REVS 10.50000000 -fiat/revs sendtoaddress RCmLc2JBpPw9T9g1skg7J5Xr5kz1fyd7mx 10.50000000 -sleep 1 -# R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J KMD 15051.18125683, REVS 298.60000000 -fiat/revs sendtoaddress R9ULUWEvzmHPZ4rYL5FtwkMyTWvGDZX43J 298.60000000 -sleep 1 -# RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb KMD 166779.58408020, REVS 3310.49966000 -fiat/revs sendtoaddress RW2xS8dpxjudqBX1hqxShP7FWn8EHYH4Rb 3310.49966000 -sleep 1 -# RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 KMD 25746.96382302, REVS 510.64558668 -fiat/revs sendtoaddress RALRwXaEN3yS5damdDwAkmEMKvdAkVs361 510.64558668 -sleep 1 -# RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 KMD 16872.68860925, REVS 334.64000000 -fiat/revs sendtoaddress RPVNUvVq4BgKrrB3E1uULja2hjPW6Hv6r9 334.64000000 -sleep 1 -# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 19616.45270312, REVS 389.05771834 -fiat/revs sendtoaddress RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A 389.05771834 -sleep 1 -# RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx KMD 327.74801651, REVS 6.50475878 -fiat/revs sendtoaddress RXFr5VB9gQYC5QYv7yVvkxtjDY3zwYuvDx 6.50475878 -sleep 1 -# RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD KMD 2183.96436714, REVS 2.36599993 -fiat/revs sendtoaddress RHUpvFhHv1umX1JsV5S8smAKAsN5CxA4HD 2.36599993 -sleep 1 -# RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f KMD 3457.02047726, REVS 68.56389987 -fiat/revs sendtoaddress RAhvJHePdAb1PF9jjZhP2F7r72ebL9pA1f 68.56389987 -sleep 1 -# RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M KMD 76598.36955552, REVS 1519.19347187 -fiat/revs sendtoaddress RDCjGgoZ1tvCWop6m5wPYkr83wdFrofF6M 1519.19347187 -sleep 1 -# RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ KMD 82831.36892196, REVS 1643.94000000 -fiat/revs sendtoaddress RLAEm3H2LMSNzJmveLkcf2nS18AnqWR7pJ 1643.94000000 -sleep 1 -# RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL KMD 67327.03192299, REVS 1282.48928243 -fiat/revs sendtoaddress RSUfnwTLE36E3Nx8PptxVoAfSRtMeGQsFL 1282.48928243 -sleep 1 -# RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf KMD 1538.42929417, REVS 30.51202988 -fiat/revs sendtoaddress RPkkQmMmyLQe8Th7ZP5GoF6kSUs1DTNfAf 30.51202988 -sleep 1 -# RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d KMD 73542.70261753, REVS 1459.56877203 -fiat/revs sendtoaddress RSkhXmiPCxqdp4bM4ux7VxAwMoCv2Uar6d 1459.56877203 -sleep 1 -# RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY KMD 10419.10088055, REVS 206.75776925 -fiat/revs sendtoaddress RUJvR3TXCAcizk7dXdFc6GKRFS6jZfjtyY 206.75776925 -sleep 1 -# RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU KMD 43480.56469698, REVS 50.30001915 -fiat/revs sendtoaddress RLZmhbeB2tXTas9grzAeqaL2RFAXVmDVpU 50.30001915 -sleep 1 -# RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ KMD 105141.23597043, REVS 1006.07261743 -fiat/revs sendtoaddress RLCDEXwfJ75P1iKgWGfR9geJmjZ84A4XXJ 1006.07261743 -sleep 1 -# RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi KMD 33700.59190315, REVS 380.47576230 -fiat/revs sendtoaddress RW1FmQGcpPv87WZVSCaMgjj74shMb3Y6Zi 380.47576230 -sleep 1 -# RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP KMD 61230.10078656, REVS 600.00100000 -fiat/revs sendtoaddress RQUMrGYr4SsHgbN56WP7tuEpWUcd62KidP 600.00100000 -sleep 1 -# RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt KMD 153725.02014837, REVS 3049.70000000 -fiat/revs sendtoaddress RP8CkGhyfhdoVpGqGbVmEmRL7gGdqKBdkt 3049.70000000 -sleep 1 -# RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN KMD 790607.74140148, REVS 15691.16324116 -fiat/revs sendtoaddress RRupn47XfLSMhXEuShtCCPBCv8P6LYXrLN 15691.16324116 -sleep 1 -# RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG KMD 26022.54788263, REVS 5.39446042 -fiat/revs sendtoaddress RRX73tynW4sxCmqyYBQrS9nMcDUcXuX1yG 5.39446042 -sleep 1 -# R9u7V63TLwJPH1shvAGHRG61aci61yy7RN KMD 20764.40163902, REVS 291.83028199 -fiat/revs sendtoaddress R9u7V63TLwJPH1shvAGHRG61aci61yy7RN 291.83028199 -sleep 1 -# RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 KMD 6483.53169406, REVS 5.41696484 -fiat/revs sendtoaddress RKAxvqvC3apzrb8udG9trBxiNhhNXaLkz4 5.41696484 -sleep 1 -# RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 KMD 81008.20903630, REVS 1607.10337790 -fiat/revs sendtoaddress RV5cgPjqt37QBHr94VL5HnXWqcwdqoqoC3 1607.10337790 -sleep 1 -# RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v KMD 14010.00244099, REVS 277.86367220 -fiat/revs sendtoaddress RMnuGgpEzWcxYi861E7BjGMURCFX2Szj2v 277.86367220 -sleep 1 -# RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 KMD 674.21697725, REVS 13.37190382 -fiat/revs sendtoaddress RF4iG6huXb9u6Pt8281WvnBjhdEtiVUnp4 13.37190382 -sleep 1 -# RW3gz9fEadohRLZerK9r8zXkugk5swWHrf KMD 21219.62483892, REVS 421.20000000 -fiat/revs sendtoaddress RW3gz9fEadohRLZerK9r8zXkugk5swWHrf 421.20000000 -sleep 1 -# RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu KMD 52588.80320859, REVS 1043.00609779 -fiat/revs sendtoaddress RJ89radoRzRr5oDsf71QZ7BXUTiHcyVSUu 1043.00609779 -sleep 1 -# RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 KMD 668547.16129881, REVS 13259.45302721 -fiat/revs sendtoaddress RKenAzKZyD58qPu2zVdjwPjDn71T34sWE4 13259.45302721 -sleep 1 -# R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc KMD 241619.45649268, REVS 4792.09548598 -fiat/revs sendtoaddress R9ibGGfsFHD8MxLRL4q2a6ezxAaHHPJvLc 4792.09548598 -sleep 1 -# RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm KMD 9071868.91817425, REVS 180010.00000000 -fiat/revs sendtoaddress RGwuMmW1ZBMrHJwJucEy5JEV3BZWv7eQnm 180010.00000000 -sleep 1 -# RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm KMD 25778.27244764, REVS 225.87592741 -fiat/revs sendtoaddress RT6Ckpw8yM2Q7yaCxejiVTrxELGQPtnGPm 225.87592741 -sleep 1 -# RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu KMD 6387.59296405, REVS 126.73871740 -fiat/revs sendtoaddress RGf4wwbHVYYZrVPVZg6XdS3mWvbzHSebzu 126.73871740 -sleep 1 -# RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z KMD 492782.94486222, REVS 9773.48000000 -fiat/revs sendtoaddress RJAbNiCSRaMxUky9h8as6orZY3cu2rSW8z 9773.48000000 -sleep 1 -# RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP KMD 343847.33707184, REVS 6001.47957339 -fiat/revs sendtoaddress RSW5SvtjWiGYN3iwb2mteYP7Hn223Zk1tP 6001.47957339 -sleep 1 -# RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw KMD 36335.50253541, REVS 413.60001059 -fiat/revs sendtoaddress RFPKxBL8iLQGmkoUukXdFU7VkXyGJLSsGw 413.60001059 -sleep 1 -# RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp KMD 47464.51702590, REVS 634.55156126 -fiat/revs sendtoaddress RVFspAKoUpDMAiiEUiQQEpqdqXDMB48Jqp 634.55156126 -sleep 1 -# RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 KMD 36359.70475507, REVS 100.00000000 -fiat/revs sendtoaddress RCPys8hvEfFSDkMZL7GtYA8a5GSwih67Q1 100.00000000 -sleep 1 -# R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd KMD 915808.36366861, REVS 18163.44258555 -fiat/revs sendtoaddress R9ce1xHEaWnRRP5jrWozEfPf9ZJgX7jnxd 18163.44258555 -sleep 1 -# RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU KMD 18822.21903353, REVS 360.77089072 -fiat/revs sendtoaddress RS1rdGqAhXvwFFTVyUCx695y84E3N3emcU 360.77089072 -sleep 1 -# RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG KMD 62376.97840244, REVS 1045.22605497 -fiat/revs sendtoaddress RLgKsmgdzwNCt8CgqZ5J6cZhTat9HeZgxG 1045.22605497 -sleep 1 -# RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC KMD 541390.42407502, REVS 10592.65522652 -fiat/revs sendtoaddress RUBESyzjgZUts3fD6W7abpgMj4qRFSSszC 10592.65522652 -sleep 1 -# RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs KMD 130769.80646849, REVS 2593.58831601 -fiat/revs sendtoaddress RSNu7Kd9p33aDrgT2AM8buy7fUSQZ2N3Gs 2593.58831601 -sleep 1 -# RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC KMD 6843.04832293, REVS 25.10000000 -fiat/revs sendtoaddress RCrCe4dsMzXzzp7GLahubjg73VGK2rnczC 25.10000000 -sleep 1 -# RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 KMD 95283.12042643, REVS 497.50723875 -fiat/revs sendtoaddress RVTCRzofA2cV6FwGcvn1uGjZJmP5s9G1o9 497.50723875 -sleep 1 -# total KMD 45769105.32172734 REVS 426291.27268935 - diff --git a/src/REVS.batch1 b/src/REVS.batch1 deleted file mode 100755 index 2b7f7822b..000000000 --- a/src/REVS.batch1 +++ /dev/null @@ -1,78 +0,0 @@ -sleep 9999999 -# RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 KMD 205767.24475092, REVS 4084.38717211 -sleep 1 -fiat/revs sendtoaddress RA4nyddYYzEzoUqnpLCvTm8d4nKvqQavs4 4084.38717211 -# RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx KMD 138163.01002402, REVS 2740.59474723 -sleep 1 -fiat/revs sendtoaddress RFppcFo1bKQzD4zxrxCbicpAvnrqo99hPx 2740.59474723 -# RHfHV1LTG5rz3T2HApavCto9973puD93qt KMD 243998.92767004, REVS 4839.53600000 -sleep 1 -fiat/revs sendtoaddress RHfHV1LTG5rz3T2HApavCto9973puD93qt 4839.53600000 -# RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy KMD 36785.74330117, REVS 730.28056435 -sleep 1 -fiat/revs sendtoaddress RPNRr6efhaPYKHzRyemxYowUbNQ6crBtcy 730.28056435 -# RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB KMD 567760.05597770, REVS 11191.99000000 -sleep 1 -fiat/revs sendtoaddress RTnhkYHVoApyX8Fc2ZEHB2rtW7cLHqZEMB 11191.99000000 -# RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u KMD 7771.42052436, REVS 0.62700000 -sleep 1 -fiat/revs sendtoaddress RER2vwRLHFT4HNQLzyqT1PhbeMCitDaY1u 0.62700000 -# RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK KMD 18186.86986853, REVS 143.39272495 -sleep 1 -fiat/revs sendtoaddress RM3onNDjZbjypoN8wqo7Rzz3QEv6EiCfwK 143.39272495 -# RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu KMD 2375.16051963, REVS 47.12337252 -sleep 1 -fiat/revs sendtoaddress RVXTirtRaZkYk1wjAE3mwhdUjTXWKrTnFu 47.12337252 -# RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta KMD 70173.29001640, REVS 1392.33555151 -sleep 1 -fiat/revs sendtoaddress RJJBtg8XfxMmb6rg6UMWME6zhxM1n8Umta 1392.33555151 -# REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 KMD 220390.81840860, REVS 1384.18511377 -sleep 1 -fiat/revs sendtoaddress REbMisMicS8W7LUqBPJwkVfYHxNfSeW7d8 1384.18511377 -# RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ KMD 479029.87110523, REVS 9502.00000000 -sleep 1 -fiat/revs sendtoaddress RRDmaG64XZjdERzojAQ3DwHewBZbXfqpcJ 9502.00000000 -# RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz KMD 230594.13977661, REVS 8.48502608 -sleep 1 -fiat/revs sendtoaddress RTBeZc5Biq3BY1hB1dXi6XTaH8j6FsyGuz 8.48502608 -# RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv KMD 25505.74161232, REVS 506.00000000 -sleep 1 -fiat/revs sendtoaddress RGbLr8CsszoGATo6uy7fZJ5GJPuXYbA6sv 506.00000000 -# RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 KMD 4516.65527532, REVS 31.96541397 -sleep 1 -fiat/revs sendtoaddress RP7HdvokCK1yJmpVCY49q4LXsVe3qhnEU5 31.96541397 -# RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH KMD 35011.78668474, REVS 310.59835083 -sleep 1 -fiat/revs sendtoaddress RMvpp3QwvYch8hFCjZNXvXkzoFWEw9R5QH 310.59835083 -# R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks KMD 201.26853079, REVS 3.99180609 -sleep 1 -fiat/revs sendtoaddress R9whNiPsV9NHvyPqg6ranxDFvsM8HsDtks 3.99180609 -# RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig KMD 663.13491046, REVS 13.16292943 -sleep 1 -fiat/revs sendtoaddress RFfJkcC1fnFZB2G2MUPYdNEeRrZk6njPig 13.16292943 -# RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK KMD 29548.60287586, REVS 586.04438779 -sleep 1 -fiat/revs sendtoaddress RV49vYgGa9kdzTQ5hq5ra88DkX4wwVdzmK 586.04438779 -# RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK KMD 100186.19238242, REVS 1944.84440292 -sleep 1 -fiat/revs sendtoaddress RMYqPrPpgosrjcoS34WmBtG9KDRmE7WcXK 1944.84440292 -# RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq KMD 1853646.03638691, REVS 415.68775429 -sleep 1 -fiat/revs sendtoaddress RH1Ug5jz6S5DbJyLENhMthMEAoSBbkXRMq 415.68775429 -# RFREgr9p32GanT4YcM25hMcPYkvRLDNkja KMD 151544.96672946, REVS 3005.62695376 -sleep 1 -fiat/revs sendtoaddress RFREgr9p32GanT4YcM25hMcPYkvRLDNkja 3005.62695376 -# RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 KMD 295382.69930466, REVS 5860.00000000 -sleep 1 -fiat/revs sendtoaddress RFjddDTCuobaHatQtd7kTiSjYv94Mp9Cu4 5860.00000000 -# RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT KMD 59621.32507756, REVS 606.36817953 -sleep 1 -fiat/revs sendtoaddress RVNWkGzsFG1ZhzKBzzUj7UPzHMu8s1JWfT 606.36817953 -# RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p KMD 23159.75532541, REVS 459.58469952 -sleep 1 -fiat/revs sendtoaddress RGwu8hcD19TKuqzPbjdnzKmkMsUUrdsw5p 459.58469952 -# RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ KMD 77304.58455563, REVS 1533.20000000 -sleep 1 -fiat/revs sendtoaddress RMwP7F2QRMprthjNwT7gHWjHvvqtefwRsJ 1533.20000000 - -# total KMD 0.00000000 REVS 51342.01215065 diff --git a/src/REVS.batch1.txids b/src/REVS.batch1.txids deleted file mode 100644 index 35e425dea..000000000 --- a/src/REVS.batch1.txids +++ /dev/null @@ -1,25 +0,0 @@ -b35af354357e56e2cb628d6b871b29ccecc9451d81428920e99e096be6769f7a -826e2d89119eb6bef82515cbe13c155cdbda7fe6f69f7710e9cc5ce8e9e32c0d -9f9e1bc5277765087b5a1102599745eccd88ba7e5480bcd67a326e9450c8c3ce -74c469d3659d3a21354fe29abd611ad536bb1525bd05e3ddd208860c1d195b60 -4863817beae6277158d4993a3919b5285706743d24865cd3d8cdd02f595abc13 -727210250e6144f72ed11bbcc14a6c4f49293fcd6e3140e431268e9645a2c000 -221fa9b9d8904c669bf5404d4c2bd23f3de85cfb1638550d94b8eaa3880c7442 -5d8e3dcc179dfe9610bb7f55fe14674924abb8049e44e797beb1117651a679f4 -3fa7ecd3ced13aebdbba27d1f276f19ba6787a118c1db9a5d70b60b49ce8b4c7 -a48c18753fa85a9b8a4d8dd33ae984828277d1f0b3105479f838bdb9339efc1a -fdffe296333e9101e6c86b0d4d6562c6e53e303ea26d0741caa94d681d1764aa -6d4a5569b3f02148e579a09829d732ce6a4adada2eaacf5be2656619599818ea -8628904bff0ee39c4f70275e9011a6606bacad8a5ffa3d81a82b0ca659e04f0f -62ee7a9f2aecbb287a6f589a803fc9164ab3132f3c48b19be8de29ee6f07ac3b -d7093749b27f66af626c716aec55abb35c19f7d06b0006d0340b8f5f902b74e3 -4e6893dc5cc35cae915f5fb29cc8780bff9c1c92975a83ca779f74a5efcba3fd -0f089e6e19c490ff25f8df648a3c692a4ebbc439c6e21962d8fc4c19749b5df3 -d790f0c31ef22d61cab33fd067b004093b5b39dccda0015df5cf096d666f81b5 -0193eb50a1c1f255f391e03a83a11ea3f59dff8aa66fad44eeb20bc10b3eff66 -07157664c81db45d96a3e92f2719cffa058e4b1e61fbf83873470a1ceb195a70 -f311706621dc0e5abb2af3e75fbabeb42fc08fe6a2ef73689089374f724a024f -800c9a65a0a1e7ad1381dc1770aed25fc0c7869d84f24de55861accb679f228b -40cd628126f1b9791e67c2fc2ef091c1a1fdf9a59739cb048084d76054235f23 -9786cfe6f46932d70282ff9252bcc088bce2a4aab2f03a369a2596c9964eea51 -bed3728d27935b12889559b05133418becd7daac6b12155e4bfc60c32bc6720f diff --git a/src/REVS.batch2 b/src/REVS.batch2 deleted file mode 100755 index 043e2ad62..000000000 --- a/src/REVS.batch2 +++ /dev/null @@ -1,48 +0,0 @@ -sleep 999999 -# RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU KMD 501.64865701, REVS 9.95750000 -sleep 1 -fiat/revs sendtoaddress RU18xoQZeK4Kno2ER7mv8ZEKLHiTECRhkU 9.95750000 -# RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf KMD 62103.45021354, REVS 50.00000000 -sleep 1 -fiat/revs sendtoaddress RJxiu5FTx2Nqr9xHvwdq1xynExUjFKVPdf 50.00000000 -# RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 KMD 12520.16564088, REVS 138.94305839 -sleep 1 -fiat/revs sendtoaddress RB95bkGifi94Z4VSHGULKhCU8ML7tUbQ71 138.94305839 -# RKb5ay26iSzmBoqm51vPveyErH9BYG3dry KMD 3674.15911735, REVS 72.89043156 -sleep 1 -fiat/revs sendtoaddress RKb5ay26iSzmBoqm51vPveyErH9BYG3dry 72.89043156 -# RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx KMD 612851.03780014, REVS 5433.13031755 -sleep 1 -fiat/revs sendtoaddress RVeVZrr24524LhN3VRhLqNG6qgH9tBPixx 5433.13031755 -# RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp KMD 519232.27493854, REVS 10298.05578171 -sleep 1 -fiat/revs sendtoaddress RFBxwyTKGy5DtxR5CLLZSjKL5jU6fm13kp 10298.05578171 -# RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i KMD 19106.59220646, REVS 374.39305755 -sleep 1 -fiat/revs sendtoaddress RB1cuwtKBpwZPZnwyJeznaij53ovj8Dm8i 374.39305755 -# RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf KMD 1212.14061568, REVS 24.05385000 -sleep 1 -fiat/revs sendtoaddress RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf 24.05385000 -# RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza KMD 10347.76210933, REVS 205.22959870 -sleep 1 -fiat/revs sendtoaddress RDx4sokytAASudNuMDDdk4R6RHJ4P8aPza 205.22959870 -# RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr KMD 71712.83911390, REVS 500.67180183 -sleep 1 -fiat/revs sendtoaddress RAPJuPCGMoPwfeHuckiea21LMek8BkH8Zr 500.67180183 -# RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr KMD 16435.34703311, REVS 114.80740001 -sleep 1 -fiat/revs sendtoaddress RSWsxgczqH1uYyY6MMPePJY5jNjj7uD7Xr 114.80740001 -# RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr KMD 17137.93285029, REVS 340.00462653 -sleep 1 -fiat/revs sendtoaddress RVxvCQ393MRnsQ8Fn8qiKm5yP6pk9GVgEr 340.00462653 -# RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF KMD 409543.68954327, REVS 8123.68911362 -sleep 1 -fiat/revs sendtoaddress RG5eabU8sYvrfWrCu1wb2Go5vxhyVXsbAF 8123.68911362 -# RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d KMD 302.06577591, REVS 5.99094155 -sleep 1 -fiat/revs sendtoaddress RYTMDSu1BjaQAdvh6a9CQFCr7h1rsGi48d 5.99094155 -# RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL KMD 30407.13753317, REVS 411.30538288 -sleep 1 -fiat/revs sendtoaddress RVLd4HkkB8SsyXfXHQeHHNouNer7nv3mkL 411.30538288 - -# total KMD 0.00000000 REVS 26103.12286188 diff --git a/src/REVS.batch2.txids b/src/REVS.batch2.txids deleted file mode 100644 index 124dc8985..000000000 --- a/src/REVS.batch2.txids +++ /dev/null @@ -1,15 +0,0 @@ -bc4eca8000603d16ae491bf1bf4f5fda622f54d3b0ffdaefe12337461bb88d5f -cda5da13119d348565085119b37951f0ee2f6866d677bbca2295d5d44e365b4a -ce9516059a943070ec233716c878e90bfcf6456c9a35c587fc9f6c74008d2d72 -c1f32cbd341d9e7e51046378ad072b0aaa55d1fc3b970b606ed708d3bb02d7d6 -f2a2f2a2b4cc99b5cc89fefe8340252b0bbb7ecd83df809f2bf782a06d9bcdd0 -5e44a6d50cd1cb64fa6349b49d5793d12988c4c3d517bb271f396a9fd66d3cae -6f6771ef52833bf504397c80f06e58a77e58387d809b42c8ae3bb6301796dcf0 -96d12c7828f3f3fa7983aac02b724f5a53897856b7419e0728d78ae7e3756765 -84fde41cd955564a18f6141349dffb26dc8ad498fcb3494052a8aeb0157ffb3c -93d6d89195f5332f7bae6e9ffc65d5892fa169446d90ed3d7d5017389a2a3ff6 -2dc7e37ff11703c01e1a6301746d2586549fe091bbf6cf7bf80c6b49c1f38d1c -1732b6942035ba7482f9a6c77a47f90b529c51d8b22c4d14a7a430d7b8cf3303 -733a0ef1b7ef603664271f7a3667e39809f9a4f7b618a4a9c00c3e8a6876d57c -cf2ed6deeaf6600b2fff0b5db13c5f950dc655b06420eee816edbfad7c07c991 -16ae9bf3ed2d47c8b8fc088a6773c3316642c97ff573d5f2e185f89dadf39b14 diff --git a/src/REVS.batch3 b/src/REVS.batch3 deleted file mode 100755 index b03a27e4b..000000000 --- a/src/REVS.batch3 +++ /dev/null @@ -1,44 +0,0 @@ -sleep 9999999 -# RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg KMD 5669.98491054, REVS 112.56208000 -sleep 1 -fiat/revs sendtoaddress RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg 112.56208000 -# RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W KMD 43088.74729573, REVS 470.87980000 -sleep 1 -fiat/revs sendtoaddress RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W 470.87980000 -# RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW KMD 55892.82951156, REVS 1070.41924580 -sleep 1 -fiat/revs sendtoaddress RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW 1070.41924580 -# RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK KMD 335.54240549, REVS 6.65853993 -sleep 1 -fiat/revs sendtoaddress RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK 6.65853993 -# RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh KMD 163589.49612623, REVS 3245.93000000 -sleep 1 -fiat/revs sendtoaddress RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh 3245.93000000 -# RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc KMD 98858.55994787, REVS 1384.95819177 -sleep 1 -fiat/revs sendtoaddress RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc 1384.95819177 -# RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 KMD 5226.14889591, REVS 103.72248253 -sleep 1 -fiat/revs sendtoaddress RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 103.72248253 -# RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK KMD 159251.95713851, REVS 3160.13095281 -sleep 1 -fiat/revs sendtoaddress RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK 3160.13095281 -# RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq KMD 28529.48507541, REVS 566.06461415 -sleep 1 -fiat/revs sendtoaddress RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq 566.06461415 -# RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 KMD 8637.01756743, REVS 171.30000000 -sleep 1 -fiat/revs sendtoaddress RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 171.30000000 - -# total KMD 0.00000000 REVS 10292.62590699 -17f76404644686bdc3f58c562fb86036d9d13e540486a13f9c89daa26449ca45 -df9e8d5430fd80035a4397a464a5a1b75a168e94c660a7f5eb9ac30f992ba3df -0a6c099f5dd33803223e743f099530df86d7a0bd3c2ab29d1de99ccf8d854b46 -4ed406ac9e171d930460659d9a5f3c806d51313516b4fbf3812c1bc3f27e1106 -83d733a0004ab00dc2106368405ec00f2a641721c9bdbdf24d7e88ce5f99df5c -76eb52c04c27566aa6181d1523e2cb6db413419b3a1ffe1b18ade8669de9f20b -be8fbc1408d013e586add3ca8c3677c17079d52f9d10a6e3fc08ed51dabc2598 -cec00429c9802cea98789c73426294ba065d99dc29400a329c2a510a50160651 -30500a29f6e9da29c67ea51a2718421e0ca945018f8a6eee1622c7462b9fed4a -ebc16e614204d51e09c23df54d0888741d3a40bea3c05bf3898a64fbf9826444 - diff --git a/src/REVS.batch3.txids b/src/REVS.batch3.txids deleted file mode 100644 index d540e1b57..000000000 --- a/src/REVS.batch3.txids +++ /dev/null @@ -1,94 +0,0 @@ -8f7d4648657dd7f8aa70d8e83539ae0592cbfafc6a961fe75d7f7f613b4d5737 -5669.98491054 <- expected amount RSVzs8BLvCrmvNF1MbqEpAwx9VHinmAxDg -0f5681bbc1441e39cd3226847e3863489bc3ffe6b00c161e453a897b6a4e1268 -8353.36815152 <- expected amount RXbWQbnpsQ3iSBBj5bn2HDq3WvqRPJg5Ek -34cfb92756c33c9fc2b0f1126884044711a83a6deb05c8b38cc744b7a87f34f5 -9683.15249375 <- expected amount RKCDBxUx7mbCnViLt423jdLt6oNpW7SH7z -cad96a82897ec8d240bb410a1c1b54922444d7bc6383ef31ae153646d4cb0837 -43088.74729573 <- expected amount RLqqYX4oMVz6c6s52bLnYdfi9qZ56bEK3W -ccef457f43908a2f18c86c3c1431a9b3857263413a756ca46117655fae2acec3 -50806.03038250 <- expected amount RRCvM3vVV6FPwayTevCCvkpXY2V8RxjEct -216f60dff778c0701def1ea8eb582959591369c7a67864bf2ef20ca99178138b -2015.79933830 <- expected amount RDqaDbfFHrnPAnyLY6b9A3CFZZjivhdYSJ -96e0916f1598824cfa1e2a590a0dc683be93c6fa8dbffb6153b341906de84398 -48415.76246875 <- expected amount RBGX2Z43Fiey6tkgRCL9rzc3gNhdcvQyzf -e0b44fb9e74984823a307c82b70ddb7a173976fa43aec61440d9cd53654a8e93 -7885.04483652 <- expected amount RWdo833bYVhMUHRdr8hMs7HHVcG2UNPwcZ -6bff9d66cafe0f249de24a6be6312f75ea97cce10c40bd2ffd4a785758787782 -2076.57141858 <- expected amount RVUby7nAZAEKQc1mNu89KGchwgVN6H74Pb -d4c509d86d3ddeb3be1ea733e2c79c816c0639f3ba1738d1f50140915292949e -55892.82951156 <- expected amount RY5qhTwDGWQy4LsG2M3R8zyJz51KaMgCLW -615c5efe7cbddd2e07d2282d215f307cbdc7e102ce4e3c1e134b96086736e459 -110983.78643539 <- expected amount RPAueErz2MDLv1T4VNVRkkWRPmUKDXxNyW -1baad4f5d826832d13b0ddc7379b7235a38caa42b5098f273811109b974a6dbf -135104.07865436 <- expected amount RQ2pMNHbPGagXKQoVzrgF2o718GmP7A74Z -c70b43c915aac7f917026d6229f5a7ce15184de37ed5f8aa4756d8416a3cde70 -8376.94442691 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 -8ceab84b76f983a4bc0ba4743027666fae243fa463f3b51bfd4cb26c39bc7731 -47849.00411034 <- expected amount RHSA9ocZc77tHiFvVQ2h26AJQFsionWAXK -4b08e4b3ea8608e97d8ccdd30c4785f03c443002127269c1936134c9f2cc717d -15163.82967582 <- expected amount RS8F3LcQ8DUSoBacUKBKzMR2Wxe3hCSToY -d2c320a2fafa054cd166b331937fd5fe005f07ec02f9fd5977ca466ed663d0eb -3002.22564175 <- expected amount RLijku3v2wyCcGykdbsUViqDCNaVkVkQpc -cf93b70a0ff58ec115c03e0a395a5b413610437f40bd496707ae426df1a46aa8 -14101.70011189 <- expected amount RMeaeKG7vrTpryBGVEWQ8twjQDnRVAhpqH -6be9eb9a87781ebcbd633946c891b98499001d38c934e827371a7b79d57b0de0 -5832.55634776 <- expected amount RUDEQESpyWvpwdfrieiBoNo93WHaKhGxGf -e63deddaf983e5cf537f34b9777a65f001f4dda5bb86dc8b1c8f5d0ead105435 -890.85002942 <- expected amount RMat1mSDDigFHhVL74mjBia9uHo5w24MLQ -f382d7ec4a9f9cf4283776449521e6c2c73a44863f119a6fa3ddd319c042f08c -335.54240549 <- expected amount RMx1MCvzuaiuRpS3rXV4LURWgZVRnLJCYK -f04aaada09059b8df995cf29c7f6d0c7ca20ed7e70d698bd21df1e61c70d2cca -19366.30498750 <- expected amount RVcMp4KgwCg6GnUJAAU2dmCvPjAa9JrEds -8496fcbe66360a2753f1795dc4b0bb1a93fa121de4b521410e046611bc04f2e5 -163589.49612623 <- expected amount RNdQAbnuehuF5RnYiaLkWoWktpaxzfvNXh -9b3e499b36112979a084534143826776699b2a5def69e656d7aa7dc98a381501 -3873.26099750 <- expected amount RB1j3QidCF9PTKQaZMGKe6Hzm5jdY8Mzus -17e55956fe10117b7e65a272fed473efa2dd387ab794932eebb9924e434719f0 -7746.52199500 <- expected amount RFcH8p3Ke5y4UL3pdL9KCkJWp3aRdBwWpg -4499caf8325016189dc4cbaf102d3c5a358105c135defd90afbc000fbed92795 -16670.51967129 <- expected amount RJDkJJd66n4Q4jVWbZJQKyXTf29ZqzeXac -41d0583c6f0720b27976f717d729c7445e10264b0663af6baa43e2ad0fe5fff0 -7746.52199500 <- expected amount RKzELkcNJu4g9DWQsFFeQtFZQE5u9vevuK -eb979d5a6d79b6e0466fc3dbdd2a2f73812fb5788bfcad2b160da1e1b96828c5 -74455.81274009 <- expected amount RKpUFnxUn9mJCZmNECEQT7xEubHECUPCem -2ec16b1596c2daa8d14642478d0ad6e6fa5d143980794f1c717c4e7ba2765749 -98858.55994787 <- expected amount RXX1kbdye39h9g7oFnP6cMZ6EEePCPRYnc -4d59bf3a6dcd11242c3a7c20402c38e41fb8f936d63e0c5b3f6490248fd989ed -5226.14889591 <- expected amount RUV5xgcHVavuxKkvMduhjXPVKA7oa1QCK9 -505e5b9d3e9ac0ee9a435e7fdb9819b53fd1169fceb9c6e4b3b2173031beac16 -753.34926401 <- expected amount RBtfFBdYiryB6fyWoubm4XNqZwXqzAbJEK -b2243873085e98d346e3f2341a203c3644f1fb78fe60294f5838eff96f2121dd -159251.95713851 <- expected amount RGFv6LBE1xgiu34SqSh6wjn3fpr973sREK -75740f609901350eebc9493aff3dcfb070e107b493a2b51aa1acccfb9dedd88c -693.08132289 <- expected amount RAaszCNodXXu9rJL6qqVMZDykXncDecTMS -9beeaaa5dd83e3967f35d60073f88a320276e7a3aa61a4a06b7f8b46079fa4b4 -2304.59029350 <- expected amount RT1xC82iwXtZeDLLYz3tgQRCHKsRD62Jt5 -b7508390ec18fc559112de1f5ddcd6f27c74f9a41415ae97c89b01c6718afc64 -6506.14889316 <- expected amount RGPEHHmPFaMPSLMQxEao2uVPTfN8vBCmym -c6eb29abc0c447043f94cac4df49b3ce640d27be2730d18c7ba3f0fe7d21861b -38732.60997500 <- expected amount RBUEoAzoydjckYewPsW2kfTr8TGFgnR2Ec -bf0e8dff8de3ce4c07b7cc09703978d7db0dc7660f312186b4c3eff2a97fd638 -916.79536397 <- expected amount RVQS9NGKsbBJuKDhJnPssTRevrE428dxDK -186e0d779d5a6a644e7d972aecafe4fb1739059933a0e50ad9a82ced1c8974e4 -48415.76246875 <- expected amount RHiUqYUohv49bvB2wbDe1mAkwyEFwUEnrb -37ed3649d5e2f83a0c4ee11748b076fffe8a2fb16650cad7fa39cbbe3ddc9246 -16542.25810519 <- expected amount RSWPtfGaHPL1g7SMqbLm1YZ8o3QM6krzo1 -2dc98a59906d57f9e57b3231d19749eb9979533d3a2c35ec5adb3cb91bfd7c7b -2322923.09575692 <- expected amount RFMcTK36Wzjo5QEk1wAH2CbATqsYvzgwXH -35a28b0551bbe3d3e5cfa989b5a073bea55784a9df162ebcafc61bffb8ff5834 -28529.48507541 <- expected amount RQFihaDjPvCwhENGhB163D7e8Wc8LURtKq -3b3aabeb6483d8c37265d24ef76389f96158970485866de1005ba28d8069877b -8637.01756743 <- expected amount RDjm2Xec5UTWiz3Yku8sUce8ZWxe8mTh72 -684728bb5ff281762990da11e7463c6e992b5e98cb0cc7965a3470b8a664484a -1212.26932063 <- expected amount RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf -a021d23ab591ed687f7ba0bccbd98ecbb7d8d1f967176bb2f2e1e6fe1d83af34 -32148.06627925 <- expected amount RBD72Bh4wxGi8q8xQbLfwMF2RAkTZ7sVZT -b9ab02076864711a964c149346141f01f686b50fd345e6eb5bc3f218b40c4c50 -1924.55258644 <- expected amount RVih8N9Qh1jf4CCF5ySsAY8DR42eTxYqpB -d5760b4049c8818f6486d1b81b0715f6971f88b0f49e8daab4382fe6980ddd85 -44542.50147125 <- expected amount RWez2L8rPoTmqj8kYKqxLdeD9BFuDibMyJ -c9bb31764aab4cd631fa733940c0b35470cad48d247ef227372cc84375cd8d8b -49199.88128813 <- expected amount RUuWvTwNAMGLpuY3GLPBAmMp8ptShkMSyN -08075d8b984266c27ed5f029b88b682596ace07cc43b2db50d4491dc810ced04 -30170.24616125 <- expected amount RRTks3iwSe4oR3UDmRfGszcNcfAv6Rb5es diff --git a/src/REVS.batch4 b/src/REVS.batch4 deleted file mode 100755 index 5b7cc2ff0..000000000 --- a/src/REVS.batch4 +++ /dev/null @@ -1,27 +0,0 @@ -sleep 999999 -# RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB KMD 843.49707566, REVS 16.72927581 -sleep 1 -fiat/revs sendtoaddress RPYGEUfYMHizer5siX2CNpQ6xHAbjtgQuB 16.72927581 -# RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n KMD 3090.02793673, REVS 3.67077856 -sleep 1 -fiat/revs sendtoaddress RTrZWBu7SUZWf4ZdyUVddRPxsnDhZnre7n 3.67077856 -# RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk KMD 79613.96546024, REVS 1579.43521640 -sleep 1 -fiat/revs sendtoaddress RRixT2CqGcr5cdPoP3G2rhrWDfSbVZR6sk 1579.43521640 -# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 20106.39865075, REVS 0.09000000 -sleep 1 -fiat/revs sendtoaddress RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut 0.09000000 -# RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw KMD 867960.91662544, REVS 11685.48356181 -sleep 1 -fiat/revs sendtoaddress RA9G36WwA9K95bn8Cbycq5ZnoxhSzzhhBw 11685.48356181 -# RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj KMD 19695.58704144, REVS 390.89494454 -sleep 1 -fiat/revs sendtoaddress RVcSdFR5fC3Qjk3CARvQSkra5PQwC8U3uj 390.89494454 -# RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo KMD 2981.62619009, REVS 30.35300490 -sleep 1 -fiat/revs sendtoaddress RQokxkBAizLmegMeWK5TyTpSHn2vP5adjo 30.35300490 -# RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX KMD 40914.30625015, REVS 476.17156540 -sleep 1 -fiat/revs sendtoaddress RAMvDwi58oyArqfGseWZsYbR2BN3L7ghVX 476.17156540 - -# total KMD 0.00000000 REVS 14182.82834742 diff --git a/src/REVS.batchtxids0 b/src/REVS.batchtxids0 deleted file mode 100644 index bc5eecc9f..000000000 --- a/src/REVS.batchtxids0 +++ /dev/null @@ -1,107 +0,0 @@ -f8b8a27ca722196f5f745f7778fc8aed873c3b040a1a964e704e63ebf5185edd -b7e28fadcedd54f973a9e91df42c3d02bd1436f2377f28e6c866cafadf2c947b -dc3adb9035b939ce50e4144920acb9fc4ff1fc36b226bf6cca13e1d2a7ab36c8 -8c64142d44edd729b9972361b8dbd14e5f3f022daee1b2ec1ff3b3f69a755884 -d15d1de5f494c22bcd4b9717ba416efbecb78d9d143209b31fd9362be13b9dea -4b99586c873574fd4e6f2055130a85e194ea7da61303ccd2b6839f7d6754ad92 -0645a7c8a584e9fe3f5dce8cb5972b9ab15f580abcd4fd12bdd19bd2bbca5d4b -a8ca857443e07b225d8a6271ab761e7636c568159582e7d8540998fe47b37b86 -20b13d8b02b1f728c2b19a09876e2eeab68aa3a51cd1c0b539c18f980e244106 -84491a5ed8421013e546f32e6407d4d916297176944fbc1daa99b4b7d30673db -0ff635aadfdbdb4d6887d04a1ecaed449bf708c36da782781dec0601057c6ede -4034cf5a74b9a0c5ea725ff6d227b738b1015dafb88e610d2c42bc2e56f4cd9a -7644c293c0b80e186ac8f73eeef1390458b1a2febbffe6e03442809c7a1b52ca -f6f2ceee809d3a02d32c08839965f90cc9783c7c0c979df48f17f63702bc26e2 -8be21cf583d6fff597bba5fb537ae2c29b9f797f31c5d33641e377332a14396e -32652dd110bc58128354a8f1b55d027c21cf805f34183c746494d763dc5f944a -26a8db0f5dfa4f8dc0ac40f409070e7ba0bb507bb99138639382f503dbbaa11b -5f8ca3d9d4360990b7f164b0c8a6f8541e449395a17c0024b593346454cee653 -6ef36fb6b117c326819d644ad59eaa17834b1bd4d2565906f39d0c239b3ee5fa -6a9664882c7fa2c033db4fba4d25d10db381e0005e10d08034d569c97849046e -0ef90e1eb2c1d73dca4270e16511bca3458f040ad066965859aec3c660609aaf -c6ece66a5a6254774b799ca3a167d3d28567e0239ff2738d90497a271b5e1113 -feaaa2e13f87b1116969f1eba327d9a1ce9f3bdf900c5413a12172b4b425421d -411823d20770f587c4b77140680516964f178e143249da0fd643141b422bb4e5 -15c646b807f0bfde249e7db39cf2734712ab35487bd69797473973c87ea96945 -7a8a83984b699741d2ecad3c8cba537762106648bae8a590bb8468e84d1749a5 -4bcd8c28879d255d53c56475a0d8aa2be0bf831db6f7e15ad1f77a0841e950a6 -d472c0868258d14810ceeaaac010bb1f927ece44b55d7e2cda42214baddb0ea0 -69acf622b21eb4eba6af5d506d4d11831ee4533814ba6a0300072354de25a625 -20bcdf8d19f96fea65b7130193e0d5ab54b5e4a2150b8a6ade3bf4e98bf98d0c -0c5bad3e366c301e730fbf58a83b219f5265f0a596feb89bbe0306bd87a4b72b -33744e5ee5df4dd46a7e133825a5af4734baafbe3f1d3c849e5d36e8c038b282 -d4cce84308b475327d6fec1505cb12f30a1cd266b34c9dc810a14df5eac5f825 -eafe1f16f6bf6ef1fe987039e2daf80723fc78752d2896ff6d99ae9cd0143a26 -a7033c2b1772e461a897012c9ecca796a9f3f9f0622beb006f3dbabdcbeaa5f1 -bb35fa7bed699d2c1188a0df41371e4fac1ca34eefdcfb4cd7cba398300493c3 -3de0201d7b0e0d531116c457dd857e1b92ad4ba99b1283f4e6ea346641ba270b -fa1641370e84b65f43086c90f37a0c79d918cb7330f95977849560f5db90ec7a -0dcbe1b19e716b2ae5ebe7ecce917e26fb09a8890480f2b7e8315f7b6fdf9de8 -35a134a0ca04f3cf402827df17616f64e0b488ddfa277f9d287a3aa524258a0b -08e7c05da62f384287ed42ac138d1d5da6968d3320fb855cf66a3a72685f6ec7 -fa0b0b65fb2f66f26379c6eb7f0b299d916ed0dbf7a569d7bae4fc455cb6cfc2 -88794bbb699f130951c40dc99a27d2c7c7016e12824fd1040cbedf86980de04d -3d2b8a2bd53af7f871d9c5c3ada5a8742b9ca14918efbdc0b50655fbd6a9c43c -91928c3a9e0ab6710cf6b517234420ba8455592af3c9da7662f8a3ce2fa1e823 -1e311229a68642300d6e4cae166334df4a3e87c0e52e86760ccc0234d2ebecd1 -9a82ddea65986359f0e69bd9d06db7f0f3ab99bf6be2ae2cfaa24e3de74ec170 -c0a151d520e4c11eb23f75a0b3b3a09c5dcdb4283edc5f7aaa5082336337e3c4 -ca850ff82776e1e72d82a2d0c4c35235e4841cec6f2b36d8d4e37aa46d06a5e4 -5b4060b77f23488e5f2ad57c775dfb62e235140f42d57720cb985ee218d97d64 -403183a0ab2a672c6968e9c88190910d8949bd03808b353291e150ac6e5e49a4 -5a86136b1ecf2d9a43dd42d3d902653ca24c8ecc71001097ca035e3750ba8998 -780ea40a7fea9bab8547c2917c60c90a7a88ce38bb1f3af06197dd3341504987 -4e1b419e3d67c35351fe18e2f001a404c08c04f8b6148412c7a5d7ee01f91a73 -4231eb801746ac3bd08e57533498a74400570c28f4bc4c2f8a1424be3d4b1bb1 -e1bc9dcf2dd758717480f29e62a24a9e250b356d5ef275de46bc580002ed85d0 -25e0a1f1c0d8db40acedfd491ae445e2242d6fa0ca39b18ccb4e9d6eff86dbb0 -053839195f085b1586d46ab54dd05b17e91e4f0876d0a53832543774a8fb0b1d -9deeabbcaca2e613254eca4b15dea6e86d6fa7ec8893baffe713b8ed796fc3cb -c6e0f0089b9741e4c75d3080a1549cd5ea87e7605501e2419ee9186817c60a8a -a1bca1dd1011c23bde3babeff2120ebd48282b3a9b41c10a0b80dc38e3efdef9 -563f1812684dc33528418877fa5bbcb15b83c4d3496b076f4f3bdad38f0fdb6a -06a3ca90a32455b03b5f6008737d25fab7fc02f0126b40e25f440d4ad8c98caf -36b8f751739ec405427830b06b8020f9975bc29ea93faf72e1e99c22231bed88 -ef9247fd847739e2ec786a23663da32efff73c6e4b9b02f43411332ad1eac945 -1d3fe9e86a4692029ea13b153f423fc9be211dd3d7207f374e5360a8a1812f0a -afe379fcb8d097448decdcaebc8669c2b6f05c9a593f89265b44280231d900f2 -07873c642e76432ae77193bdee90fb21c3fe1d2d47cb87689d20feb47ecf6884 -904c0e81c754b190b459be69c5ac925d274aa91e8d69639375adfc7bc3659c23 -34cbc40d34fcc916845b7a991f3d430831a919c782556a0dab5b4083cf0b277d -38c0d0d6055d6e37513af175c5232a97a04e16a6c64d2e5711e0ed0e01868264 -e1988acd516c445a36a425d4e881b6ba620ec31be7fc2e86ff40113030611a41 -0472010fbe40e01a55bdca2bfe06b9383c41ec8a4d70c54ecb32b7f1765a85f4 -4058e9174d9fbdf611c481552a0c9038b4905341ad31156fadb62e924156b971 -c0b23f4f41480765fda1efb44af0eb118685e70392e004e5b5a68ae4cb741452 -dde373fff9ce038d5b2524506038f0986b459fca9550452e3248c34b40041ece -98e70c5491278d48f0ee5fbaf63a1ffac7ab7975ec8def8e711f8821df214c32 -45e995c9a816a7ccfd34823ae88375f7e7b2d52a9fe5f1953748d06c8c9f920b -d3196f666e093f6295ff5d9bbb5fad3d735c79efc3a0ef2682a5d10abbc047d9 -47819cadf315ee1931a475219d61fa2367a73310749f23cfa994ef9e0324fff3 -aa4719fd7745191531c68c140ec52728cb9d3ffaea5875967f75dbb7ab7a2b57 -83dfacc40a05c80e1a8e4cae7a0cbb98a30f76ad010efb63b9a515b490f7676e -4c118313fff51fc72ec2c49045679e6bb9a9aeb7143b576b1f3eb07429a0b806 -f208fd7abeb82b6aa0218db68421045078cde1521129029dd2ffafa759208cbc -cf58359f2b61ab6fd73f176bd094154d04f83752a86bd91a2b7879123a51cbf0 -3e10f831b75abd7bb89fa74dd6b74d5f07a2d818c44eccec496896dfadac9534 -250204ddd107ece1d5092a4cd1163115ede9e754ef136d80d912ccfc132e0ac5 -676d1ea16b0fd80025953ecc999213d4e0b1b002f2b4193d7616ec97a269a49f -4ca289d052c847b502ce756ed65f035e38e78575ee9fa0e68df89595151967fb -ccdec5f135b9dee61540fb3f0cca5a372189d69c1461242eaa11c788557740d8 -f3ebba346b9ad00771ce1ee67dafab3f875c307ba39ab8439f63822d4c78c656 -4496f369401f0e7778fbaa9199505f8ab093c0cc22fdefe3a6d0a465b3c0d078 -b0eb34108101f19e10248066d9a339596bded6dd7a84d0be64c701e837b5f596 -796577570b9a7dce40bcc476c95c72d903531367db6ebc9d5d457d77634d0123 -26ee642aaa9f2fbeb1603ac695ce13dcfa8709af07e0cd71bce85c2ccb3ac4cf -ada15a386b1ded5afb41bd30946b9bac14a5bf8912ffcd12f086f29dfe31b3b2 -073202790ae224da09b17aed4c18d8395433d5e6ea910bd04c1b952444b8a239 -cb38a03e8afa8b0dfcdbe13070ea6d048ea1cc9a1054ba86c6ab88511e2661d4 -e8dba03f46da7dfa258be5376fc1dec714c0104423191b3ad14a476bbcbce929 -6c9dd8171202deab1d5d8af6aa1b7c1ea6f4cb8654cb3241040659674b700308 -49f2add7db2978cacc1798cd08b67f33d435606d2b3dc877a673dfdeaa7617b3 -84ae90011844413779316580fc2731e391829237e7b356354ae1266e5712ac3d -efffc292acaa38e458ef396c818dda28c9e2971065f65abeaa0a4d951b141dfe -f03e0af2f1fd32263d5a4149fedd9128c3bc7616088c208abbd5c1f065cb5249 -1814b8d5550ceb07acecc3c4995dd2d582af9bf6f6e6b5a40319f824570f18c9 -73e622d891f13d8c136214eaeeddc2c9e7d721844abf797916fb0c4b2a9e9e49 -6cee8ae520488bbe9cb516490e94876e0828c27bffdb72f7e9695d5ec9ee3b2c diff --git a/src/REVS.raw b/src/REVS.raw deleted file mode 100755 index ea77309d5..000000000 --- a/src/REVS.raw +++ /dev/null @@ -1,5492 +0,0 @@ -fiat/revs sendtoaddress R9LXBpRZ1YXaWM3DXaMjcDk7RTR9FxpiRU 0.00000547 -fiat/revs sendtoaddress RTjCw6BhKx23BGSmTb2ivx9axKAXWLbeaE 0.00000553 -fiat/revs sendtoaddress RXefJxPdVqmsdGHW2DWq9x4Nu4gWevJeuK 0.00000585 -fiat/revs sendtoaddress RSNHjAM4Zw63W8jkKBXN1fP2wcb29we8qF 0.00000669 -fiat/revs sendtoaddress RRRC93jzRNjnQbKQhfxExDA8174TiWZeUf 0.00000685 -fiat/revs sendtoaddress RCJACdC2N5vCsv2t9TvBr97DmCbiTXZG4y 0.00000703 -fiat/revs sendtoaddress RD3jbFnVv2M5aHRDywmNPjsvt1hxn7yaXd 0.00000709 -fiat/revs sendtoaddress RRAw6Qm2EwySd3ZsugWeDHcLHPkH2Wobrs 0.00000714 -fiat/revs sendtoaddress RSwuJoWN6sRUfCvFmdCTUf1iiAGA5Nft5C 0.00000727 -fiat/revs sendtoaddress RSLoeYHLZd3QeiPbCThckPx7BofwdYoXeN 0.00000736 -fiat/revs sendtoaddress RUp8RWacXWygb84wf1to7K5wLyzLVePkVk 0.00000738 -fiat/revs sendtoaddress RXcnAqt9s7EM6k2vDAYNZJVAc9DNLuL79k 0.00000752 -fiat/revs sendtoaddress RNJi1wjMdzymwAWnjKRZyU7DSQYAJyg1gk 0.00000778 -fiat/revs sendtoaddress RRqzBDSwsnyytLEfumRp8pMLoJwEL3C7Yd 0.00000794 -fiat/revs sendtoaddress RFCJSLRr5G4S1Zig11QybYLVB59CTATYh4 0.00000795 -fiat/revs sendtoaddress RAXRZSSjAaeumzvE31yEgQs1Jeevr1CH9z 0.00000798 -fiat/revs sendtoaddress RLay67bmAz3DzTiujVy1yFycjaqyA5HL4L 0.00000809 -fiat/revs sendtoaddress RMZSGjobngtzC4LMSXdmnLY72j8j35aDhE 0.00000815 -fiat/revs sendtoaddress RL9RhxJvhMnbo9RdNHS3HP2ndjnTR3p4i1 0.00000816 -fiat/revs sendtoaddress RPRH7zppJDdKogz3k6BXR2ECKqPsPDjUdD 0.00000846 -fiat/revs sendtoaddress RWQTzmkv2vAUPB6bj3CW2x2KSEFgCW9koA 0.00000847 -fiat/revs sendtoaddress RQTPGjDBk8J9o69oMxaj5iRdnJhck2guux 0.00000864 -fiat/revs sendtoaddress RCsxQt2hBXX8KFfcPoA3XufCeRu54YpqCw 0.00000865 -fiat/revs sendtoaddress RA7fJDzYpMntwW2cMKfvB6SZptM385ERrC 0.00000880 -fiat/revs sendtoaddress RKQua9gDfBQsdsYwDcmXPSgfagzrho73zJ 0.00000884 -fiat/revs sendtoaddress RJn8UQZBCHMUgtkucN2Gic6YrWXyfeETAp 0.00000911 -fiat/revs sendtoaddress RDpYWHPTQ5mtuPZpoE9BY9wzZRb6W1U3yD 0.00000915 -fiat/revs sendtoaddress RFNrVDgJzaMDGoRjXmB2QgPNejFG4PtwFK 0.00000920 -fiat/revs sendtoaddress RNoXLT7gRoUqgpN65nTqJwbQBuUhEbYGHn 0.00000931 -fiat/revs sendtoaddress RGmqsqFeXpdQeY5ezzHPFyRikkmL9ddH5B 0.00000947 -fiat/revs sendtoaddress RMqK2DGythLR24r559V8o9BUiNRiTn2km6 0.00000960 -fiat/revs sendtoaddress RWx9JVhsX4aTDZi37xTkF2GzqFcqwbduUB 0.00000986 -fiat/revs sendtoaddress RQLQTkZQCMXTHFMRJ7Yo73bcgngTN9wVzU 0.00001000 -fiat/revs sendtoaddress RNQa5mQappVSqpYSMc8YHNGRftsqhyzGzY 0.00001012 -fiat/revs sendtoaddress RSg8p2io4mtNUvYPAhQCVVsm43T7iTLcBY 0.00001014 -fiat/revs sendtoaddress RGJ6Qm1mYgmFiDYZe4uYCNYhfjemKhJxx5 0.00001040 -fiat/revs sendtoaddress RGRSyHVodwT9SWYcGm65U74CXr9XjBbLjR 0.00001044 -fiat/revs sendtoaddress RKzjs523ejD7tqsSLN8X4YH6DqAZEiWqXa 0.00001169 -fiat/revs sendtoaddress RUJULRTc4fSdhCmpQ5Qnroq5tTt4Mnohzp 0.00001195 -fiat/revs sendtoaddress RVzkTG7QrLirduT28kba47czC74GgBUgTB 0.00001208 -fiat/revs sendtoaddress REgBNV69Bu77QCx13mVx5CLJUhR9NjCj6H 0.00001255 -fiat/revs sendtoaddress RNsNbkAq8e5p6JgW8qdBCoeodZv2d5nqDJ 0.00001267 -fiat/revs sendtoaddress REAMtN7P4QDYTzHFjzFMrRdDKaDqVg4BoB 0.00001270 -fiat/revs sendtoaddress RJsWVvnhaKU8YTzbiti7dsCLRZWRZpZ1HA 0.00001275 -fiat/revs sendtoaddress RMJFtWdAP2eCu6WydrKwLHXNXr7f2qjXhM 0.00001289 -fiat/revs sendtoaddress R9a2drfZ8Wfa9aLk818Q2RMKwtMGsqK3qi 0.00001315 -fiat/revs sendtoaddress RCk1p8xiZ9o2Uz2BSAtm1npg1Y9uocQGMJ 0.00001322 -fiat/revs sendtoaddress RB1TE9p5iZ9zVVZn9GkLGJXpV3TMzVuHL7 0.00001394 -fiat/revs sendtoaddress RVVwm8nrP94rsWKttiPdvjNLa7VGd3Z5no 0.00001417 -fiat/revs sendtoaddress RAdG61foZeKKX1YgwTEmsQkiL4JkGd33hE 0.00001432 -fiat/revs sendtoaddress RENiY6Xeiyi7xMsk3HFvzxMh1MqcdLSgsW 0.00001455 -fiat/revs sendtoaddress RF2EEyEBmHHMYP4TaT2Yonjb5uG6UXbPGb 0.00001470 -fiat/revs sendtoaddress RNgn4PYhcwdBUBuy9Kvm7jbtj34UhwhwYd 0.00001506 -fiat/revs sendtoaddress R9x6DaD72CmWgCXS7Hx7HwaXNAQUgFw3x7 0.00001528 -fiat/revs sendtoaddress RLvgXGqLmzaRgssA3FXKTejcRZXxCzBsvG 0.00001577 -fiat/revs sendtoaddress RDu8jz6rHrVh29r9DCZjeovvE7vTxpFAfD 0.00001627 -fiat/revs sendtoaddress RLyFLmPxk6MYZoWESeNUr9oSf1HuQngoQa 0.00001636 -fiat/revs sendtoaddress RKF4rCVwQdEGVfkP71eBb5utmywEDE7tgt 0.00001721 -fiat/revs sendtoaddress RAHch4wiJmocRa9xS22nb5RAhLhRoSiXAL 0.00001748 -fiat/revs sendtoaddress RAauGYT42qA5i4x47FtvmS3FCuCwuEp8sj 0.00001768 -fiat/revs sendtoaddress RY2evHnruJ77SZ4XPYZc1AvbdXMxbS22Rc 0.00001795 -fiat/revs sendtoaddress RE7mR2B3yC91PyHZDShzPpMFFEecaPgQAg 0.00001798 -fiat/revs sendtoaddress RNKcmW4mpja8wExJJRhoXerBjGXvi1gKhS 0.00001811 -fiat/revs sendtoaddress RVuEbGFjCH8TMoLBkzX3knDEzhm9Eseeoi 0.00001849 -fiat/revs sendtoaddress RKRxEc9SFKtN2adxzTSf1WXc2pijDykBT4 0.00001856 -fiat/revs sendtoaddress RKEV9qL5HUX8Z5hzbvY8pZwGFr5QKPB2Hg 0.00001866 -fiat/revs sendtoaddress RN2D5ofRKLdF8yG65vn4qyHMNmmeAmTizk 0.00001883 -fiat/revs sendtoaddress RLHnZJnDoxcRLyV7BuKWipNZjLMtpcPcze 0.00001896 -fiat/revs sendtoaddress RUDWUG1svi7vJjBpQUW9eQU5ZKXybZ3N9o 0.00001900 -fiat/revs sendtoaddress RNLESAbKE5dDXMxdV8Z9HiaXBrohhDiYFM 0.00001917 -fiat/revs sendtoaddress RFyB97xvXsiui42ZY5VzN14TfZkkRnhXDQ 0.00001923 -fiat/revs sendtoaddress RQd48SZrBX6K5csxPYBpNWV6oGGPY1TybN 0.00001950 -fiat/revs sendtoaddress RSCbVbyMUWFdzpKSbbGoTPiUoDP446opYZ 0.00001965 -fiat/revs sendtoaddress RVUuV1vFbCqgKxyGMSMTj8GsnBKqV2rBoy 0.00001982 -fiat/revs sendtoaddress RDbYCxgNaWqSoF9kvNBW8JJbbghiuNzyX5 0.00002000 -fiat/revs sendtoaddress RCiqiShR1A1b6nX75ShjTGJXAC65LfSwmw 0.00002006 -fiat/revs sendtoaddress RFzM8bYcR6KRwe82JCYREyENhCpHm1TT1h 0.00002048 -fiat/revs sendtoaddress RBk6Z7NpvxhyozxvmeMpp8CFyVJAfB5UwG 0.00002087 -fiat/revs sendtoaddress RA7GaFGipRgMfAzrDV2ManTqxko8eBYfdT 0.00002202 -fiat/revs sendtoaddress RCm4f7FPpmVK9ij63SRUNNJXb4zN6FS2dT 0.00002225 -fiat/revs sendtoaddress RKNw8GjSnJFdHL7UfxLV65CbGLXkc57QMa 0.00002259 -fiat/revs sendtoaddress RBsi8XkTZ4DPstEntpcxReLs3AbugMRybJ 0.00002274 -fiat/revs sendtoaddress RKZraWzMT5EpYRUweWUjHvbGiuVV4kotGe 0.00002382 -fiat/revs sendtoaddress RG2Brh7qnEuGLUQwrDjhAZ7ERkxfzdrDWP 0.00002389 -fiat/revs sendtoaddress RMBbajkgz4pPFKKeph4gFsFUCNHqYwKzg6 0.00002401 -fiat/revs sendtoaddress RFSXXHhSta7HPnHSUd1gKaUCgR1tu3vsoT 0.00002412 -fiat/revs sendtoaddress RHZi2ou8uPkq8RnLVSAJERoRcf5EbMM8A9 0.00002439 -fiat/revs sendtoaddress RGb89Xv4NRsAasi9a8Go9Ak9SNkoFocrEX 0.00002448 -fiat/revs sendtoaddress RAQLnSLpEQvGxSQENjZhvQEgRawtn1Knfd 0.00002494 -fiat/revs sendtoaddress R9xXPukZtiytMoJ2c96Lfo4d2bHuWEpiTD 0.00002500 -fiat/revs sendtoaddress REb4UYJb1zgFpLDSdHDNwiVfc14E6LeF1V 0.00002862 -fiat/revs sendtoaddress RQJVk8faSX26tUDFtxDsTK2S3Eb8622iPx 0.00002878 -fiat/revs sendtoaddress RAQFyVPTev3dgo6HBmbdnip2y54zcjSKPs 0.00002882 -fiat/revs sendtoaddress RNwshUtVqSMo4KNzt5CmLWD7hYTocM6fqq 0.00002895 -fiat/revs sendtoaddress RFHamgN2yFwXqTTBe8eana5vUBqpBWabzJ 0.00002900 -fiat/revs sendtoaddress RL8oY411SPcAEwz8UYSqCLPLzqA1BdM379 0.00002937 -fiat/revs sendtoaddress RT3KckCS4CD3wLdu6buwCNG89cNhFmnyFt 0.00002943 -fiat/revs sendtoaddress RFBA1T8ZYzf7zvusNRDrsz7Zf1eiSwNAvP 0.00002970 -fiat/revs sendtoaddress RPr3fTxc3oks98aKn8rXgTBdv7cwAmao8R 0.00003135 -fiat/revs sendtoaddress RWm4FT7y1VdZdghQ1WdvdBJtwPGMtdHbB2 0.00003161 -fiat/revs sendtoaddress RMueA9d4Q9rvk4zPKnLPNGBE7atMNKRmQF 0.00003272 -fiat/revs sendtoaddress RAQED1CLWcDGMMasHWDS3LS7fYbf9k6HD5 0.00003304 -fiat/revs sendtoaddress RBfQF74fvJKrnQsr8S2fCYqhToLdGryEZu 0.00003317 -fiat/revs sendtoaddress RGSaceiRbhubQiTCTJhewS9tQt6JybcF5B 0.00003515 -fiat/revs sendtoaddress RXvekHM7S736eeTG7W1WQD3RaSir2iU8Sj 0.00003726 -fiat/revs sendtoaddress RXXZespQ66i6yNVJ6EZKwcvaduYkNJ7i1A 0.00003839 -fiat/revs sendtoaddress RFEUYbLDDwSMdnpUSVT5s8Vq4fdf3RFB7Z 0.00003866 -fiat/revs sendtoaddress RUipoo61X21mWDQRm1ZG6UVicVAxK532Nk 0.00003922 -fiat/revs sendtoaddress RSuZkqn9YPFqN6z9njjBQKQUB7AgWa9ujD 0.00003936 -fiat/revs sendtoaddress RHRcqMQiCoyGajCTjXrWPa6MSd5KifRtbd 0.00003966 -fiat/revs sendtoaddress RTroJ4jpPsLt8kXNLSsK9LDFDQicGQUGR7 0.00003977 -fiat/revs sendtoaddress RU3jS8EUp4587iaKJsLVeyf1h7BrZa1upj 0.00003992 -fiat/revs sendtoaddress RDxzBRShWxpdoS12upwviibwg3eZT9rorG 0.00004000 -fiat/revs sendtoaddress RWJrhUHS235xwXRKdvw8qcyFBxGqQuYh1K 0.00004020 -fiat/revs sendtoaddress RF244KfdJUgvcqq1TRumGK8dgUDS7Wh1SH 0.00004109 -fiat/revs sendtoaddress R9MqjbymxPXBXnS5YHuJ4UJQtDJXzrtXuC 0.00004152 -fiat/revs sendtoaddress RXzaCruKJarZmhtuqHEBxqyTMhMJGAk2hL 0.00004210 -fiat/revs sendtoaddress RLRRxpr36cMyC7bbogQwx6RGGxAnPcoUuL 0.00004444 -fiat/revs sendtoaddress RYWK7f9VvGCFvMt98tD4D7QFewbsjbecQg 0.00004558 -fiat/revs sendtoaddress RPPPCFuSRaVT3EA9C3wXtokmRccWU9HSag 0.00004572 -fiat/revs sendtoaddress RF9dx2nQezTAYHGEKVJpj9hrKTenbQKJkB 0.00004581 -fiat/revs sendtoaddress RX7n4TefbCjshd3A9U8F8Kxm9rP5gBkfMd 0.00004586 -fiat/revs sendtoaddress RUBjWwoYyC7frpQdyMBdbUE9C86xGDmNg5 0.00004589 -fiat/revs sendtoaddress RHiCh6LyRAGctcE84YdnhfBCcbYsUu1y8c 0.00004630 -fiat/revs sendtoaddress RH8JVAcFMAMnM6ZQYsYuAQLZe8JgVRbcbg 0.00004650 -fiat/revs sendtoaddress RRrzm8cQveGReepz1ZiXHKHmZXBeFh58bD 0.00004661 -fiat/revs sendtoaddress RWeeCifFxX7yG44E8raT8ZSE25DenWFUjx 0.00004702 -fiat/revs sendtoaddress RNxCorwBiR9GgGKR4Dndrb9HujXddeNS1x 0.00004745 -fiat/revs sendtoaddress RL4Y8L8LSvCnPyGjtmiVLzHuA59c74vEbY 0.00004769 -fiat/revs sendtoaddress RJFy1sALkG1S8LjShKU77KPb8sVZFEv66q 0.00004773 -fiat/revs sendtoaddress RTyxpHpgfRTPUDfjTTzFiFZbPeQfbcgU7C 0.00004796 -fiat/revs sendtoaddress RVzd7Hs5rwoVMcpZCS3kWuYQ4qd8fYFohx 0.00004905 -fiat/revs sendtoaddress RV7gkC43GHDRFFBSLA87B2WvaAe7LBkNz3 0.00004923 -fiat/revs sendtoaddress RSmKfew1hpi5gn3g2w7drLJPRqNJ6wVjg9 0.00004949 -fiat/revs sendtoaddress RC62d1WuiPJoHYCCCKgS6bRsWECsw8Tu1x 0.00004976 -fiat/revs sendtoaddress RSxhLHDdqmYnfLoZLfyFSGWMXp86BKyKsh 0.00005039 -fiat/revs sendtoaddress RKNVNZZWH2rT8kAV5LHgd4VdGPy3u7aLV1 0.00005139 -fiat/revs sendtoaddress RRH1TEd7uFTuAmwkcPKkwjWxuQUki1v4Fp 0.00005255 -fiat/revs sendtoaddress RMYvM1rNHN7mQJWZTtevLhJBtY4u3Xyagi 0.00005279 -fiat/revs sendtoaddress RL4fJTgrvCVPMpivbDLmPQPSqvt9eLeKVq 0.00005341 -fiat/revs sendtoaddress RCkZpYiMQoTFXnDhDoT5wvUFXYp1KKAsvp 0.00005347 -fiat/revs sendtoaddress RChLJ7Ujm547sH16PnRG655Pdr9EB581cb 0.00005382 -fiat/revs sendtoaddress RHJNkQYx1reTx7PdYwxmP3fceX1SVEaYZk 0.00005435 -fiat/revs sendtoaddress RTQfmCzCQX8naR55zUvvPnk8MNHLYVjjbN 0.00005453 -fiat/revs sendtoaddress RFtvv7j5qb8nkxqhLVnLZBv7TVa3ohj9uz 0.00005474 -fiat/revs sendtoaddress RSgNDtpL3AZdMRLL1qQZ6QDrxn1MgszRnb 0.00005490 -fiat/revs sendtoaddress RY3KRKwofQRpnvXW6TCwFd9JH1s3hwhfRW 0.00005543 -fiat/revs sendtoaddress RWgfGvB3CGTG4sQGgV7SDEApnA46A1CNEP 0.00005566 -fiat/revs sendtoaddress RU4jcPzB2BNWEna8EGtN7e9APD58pKDFSD 0.00005703 -fiat/revs sendtoaddress RGMaCgtGFCTLg1ujtBuACyvdTAwBNWrCEo 0.00005813 -fiat/revs sendtoaddress RXy3MnxCdUexxtP5EQkcv5uuFjzdFepQkh 0.00005815 -fiat/revs sendtoaddress RJnr2TJ9amRRLtnFDBtjd42oU2dmeauwtd 0.00005820 -fiat/revs sendtoaddress RYWBYwFkVE7HoD9ErQNXjB13iEznkbDJgk 0.00005827 -fiat/revs sendtoaddress RSnMQHwwabfV1hKFAbzPVAAMCpAwngsdQF 0.00005860 -fiat/revs sendtoaddress RR8rNjgPs6u2sHUWXTgDE8wruYYU8oNg89 0.00005884 -fiat/revs sendtoaddress RRnkFko89P9zLV8EfWYZzWZCy1riRLgir5 0.00005930 -fiat/revs sendtoaddress RB5jo3a8QQzubTrJoe8K9sVKTit9zwkBM1 0.00005955 -fiat/revs sendtoaddress R9XTAMpr2Sm4xxUQA1g1brxPZGaTvj9xqp 0.00006000 -fiat/revs sendtoaddress RQhXvYCN8QFUQWRiuXsngVNdJBf9A5dhR1 0.00006028 -fiat/revs sendtoaddress RWWDmPz88eMtG6Mx3ogDM8YWXysUW6Yxyi 0.00006069 -fiat/revs sendtoaddress RHLEcakuSGyq4aHvhtHzbkWRqp936Xpwtm 0.00006210 -fiat/revs sendtoaddress RAhrxJkfbSYcgU6nwQ5ETi86kDuquwCLRR 0.00006251 -fiat/revs sendtoaddress RVsJbwxu6Kuf39Q2tybRfQt2UQrJKkiY7V 0.00006266 -fiat/revs sendtoaddress RUMwXP2wSBp1idyP3BKYYyzit8M92oUwqy 0.00006271 -fiat/revs sendtoaddress RBm87npjn6LeYFKUrYRnqfwgcEXcu2zra6 0.00006528 -fiat/revs sendtoaddress RXq9ajw9VFixzxY7H7UDbNwz4qp88yQWSZ 0.00006645 -fiat/revs sendtoaddress RAEPjxxA1TTRxZQkUVuvZxAZ8eT8eNfSy6 0.00006650 -fiat/revs sendtoaddress RNBahLwXky6HKpE3SD3LTAA4FeJaEpAFR9 0.00006758 -fiat/revs sendtoaddress RUxSNXNXsva7Uh7xf7uERU6uQARpK3mfEz 0.00006837 -fiat/revs sendtoaddress RFvLxx4uyCUGQPQNj22ZwdwVcpXeGKotdk 0.00006945 -fiat/revs sendtoaddress RFiQMkRhh2TycVBdKm7u98qMx1fcsDQxoF 0.00007072 -fiat/revs sendtoaddress RJum5gzqti6KdZ3LawqBVHvGU6XiU22tx7 0.00007091 -fiat/revs sendtoaddress RCfdNuih9N3Vz4319T5As6tHxA1aAUkTJV 0.00007157 -fiat/revs sendtoaddress RVVg4VJTjh4geWT9Qh6v83FQ6ALjBi75Qw 0.00007233 -fiat/revs sendtoaddress RKxVArHqv4ipKZYB41TGng9eXkDBxfMwbj 0.00007284 -fiat/revs sendtoaddress RMYqCuReY5JpDW6E8WNNm7ATSaimeSS7SV 0.00007394 -fiat/revs sendtoaddress RQ7oEUSUYACHw5YjoLBjD1LKfAihAjpLrg 0.00007460 -fiat/revs sendtoaddress RVKk8cP7FBfMka1EW61i4pSKoMH8QKtTnA 0.00007482 -fiat/revs sendtoaddress RKrqDXLHV9afCwPKxcWzqPdB36w3zRfYkt 0.00007493 -fiat/revs sendtoaddress R9eT85WNshKv1ybLbwv7Yjc59ZWcHGGftS 0.00007558 -fiat/revs sendtoaddress R9jK8J3TFEZovqRRsf62MgcdMSpkCjaDPH 0.00007695 -fiat/revs sendtoaddress RUF72mTDn2oBJkHQguuqreBaSmYudsonCi 0.00007723 -fiat/revs sendtoaddress RHBYad4xVeDHBQLiGXYXZCpnD3crfa5dcG 0.00007753 -fiat/revs sendtoaddress RTV8t5UH6nzWXaR4JUjAqwyojm1VrxucQD 0.00007787 -fiat/revs sendtoaddress RT5Zjy7f8KBKx5ZCzTZaFL7vFHSfTsbBLh 0.00007825 -fiat/revs sendtoaddress RGDEDYpP8UsHt4RrufGtcvSUPrdtmdarsr 0.00007918 -fiat/revs sendtoaddress RKBksxs8KxRPmPttsZcwR57zQSRsMzDZUo 0.00008020 -fiat/revs sendtoaddress RXBMAA46MugXDf2nmbg1uvtp3Q2M8xq1sE 0.00008219 -fiat/revs sendtoaddress RNnkUuVyh2UBcED8rewmXFwLTN8pLduDVo 0.00008439 -fiat/revs sendtoaddress RTs6tV8yehKde5DF2Y7LauPrwpgrzKgThZ 0.00008566 -fiat/revs sendtoaddress R9KzjfUFzEpbJ1SEEDmKYPWov8EJSg58rC 0.00008782 -fiat/revs sendtoaddress RDSsfVK7WVkE9kSpY5uiyN4w3yGUF5oPGZ 0.00008808 -fiat/revs sendtoaddress RA6sc7iKG58ApJBzEaLHAiXSNX4WVPLFts 0.00008823 -fiat/revs sendtoaddress RP15gmfqVM9HBRWuTNRUoUuGeyZr4CakyU 0.00008935 -fiat/revs sendtoaddress RCQDcAtGkmYieGrBTcS2dHghvvM7T2FpRj 0.00008985 -fiat/revs sendtoaddress RDJ2ac7va5cvovEbGefbrUCc89HzyRq6tj 0.00009163 -fiat/revs sendtoaddress RMpCZombfy31QopCRBjSVrn8soXp6YHdAU 0.00009291 -fiat/revs sendtoaddress RVhXmTYuhysffVgBskStkE83mgT3bMxob5 0.00009299 -fiat/revs sendtoaddress RGuaVaqU8LDhXBmM5P44hxxb38B8L2JaG9 0.00009474 -fiat/revs sendtoaddress RFfTqthyzQS5NMJJZyEdAeBv65c8ukn6aw 0.00009488 -fiat/revs sendtoaddress RP4iywcpw5BnwnACknk3eRPbWpADohWd8u 0.00009507 -fiat/revs sendtoaddress RWLp4oyrQhotMi8gJwsTHpxNU4w5aJiah2 0.00009528 -fiat/revs sendtoaddress RG6BQtSNweM5hrMLFzrLABb9kXBKfMqAcn 0.00009561 -fiat/revs sendtoaddress RNCsE19sXLq72H8eroiYbM59VdATEk7ABR 0.00009575 -fiat/revs sendtoaddress RVkkRKRbk5JK5Z6JzRSHPvFJX5DEyf5uWx 0.00009685 -fiat/revs sendtoaddress RREnM9kocjC3eFh5NM9MA7TyxiepKvp6eW 0.00009751 -fiat/revs sendtoaddress REiy5UfZM7mo5KWXWBjb6rhQUaTTo8jr5z 0.00009764 -fiat/revs sendtoaddress RWZZq2w4wLKjFaaoAAmYUkTHsF4AZmdPqu 0.00009800 -fiat/revs sendtoaddress RV5vv83Y7NncedfXW81ziNJWaxAY66fTYJ 0.00009959 -fiat/revs sendtoaddress RBZPYJrgHKzAcU2GGLXkiyxt849URLtSNT 0.00010000 -fiat/revs sendtoaddress RFu65oz4xfNvF5u5phvaVPWTducTQBvWhN 0.00010049 -fiat/revs sendtoaddress RTFJ3mnPGQdQhWqiLeN9us8aTYGv8R9ZyE 0.00010173 -fiat/revs sendtoaddress RNBwXJmgt7GqENKi4CRpfAUhUSZLQJgtCX 0.00010197 -fiat/revs sendtoaddress RNCrrg75Y73Cgg68KmXm7sYRqps4TdkgLd 0.00010200 -fiat/revs sendtoaddress RM2B41m3QqC3wFHzW5qCD76tvYpmmhKd35 0.00010398 -fiat/revs sendtoaddress RGRVfETBAbM1LVdQ4KPE3AQfvzWSbptbCV 0.00010400 -fiat/revs sendtoaddress RMu8vypx3uu5twJGuqEe8k5DY8D9UooynJ 0.00010418 -fiat/revs sendtoaddress RSzz47XiG5jAF3U297Tx7qC9DEXFXDcSUX 0.00010420 -fiat/revs sendtoaddress RR59terANPSYm32BKdLLpPFMdHzgkiZLQi 0.00010564 -fiat/revs sendtoaddress RPr4Bjdmn6KUZm1QptArNYYkcT38SBpQP8 0.00010593 -fiat/revs sendtoaddress RDNnRnb259RCBXog6ZTGWNTLnBTqNXtcoG 0.00010624 -fiat/revs sendtoaddress RM4F39frKUuhpPKYgUSpkzvDaBochNCYGn 0.00010700 -fiat/revs sendtoaddress RQi6W4YPHzPPTCixrPXjMJwScCe6ibWqKV 0.00010797 -fiat/revs sendtoaddress RXNBDyRQGFFu8SHZUuvqpeXyiH56pu5gUq 0.00010897 -fiat/revs sendtoaddress RV1qXeLHr9wuxBDFnAK2e8CbxT6Mo6qjqm 0.00010922 -fiat/revs sendtoaddress RLokWwedwdB2L9WLw5sMfy2kVPcikGyKvZ 0.00011100 -fiat/revs sendtoaddress RGX5syv2xs22mhKRNPZbdutHbjGhQTxoja 0.00011161 -fiat/revs sendtoaddress RLiovYaTuagqK6NxrCuytABw3uTpfpKLEV 0.00011200 -fiat/revs sendtoaddress RA3oNn927hzMoCW4aUSQJaVd6VfkAbEAw2 0.00011278 -fiat/revs sendtoaddress RF6w3c8FH4nr6BDQPVZ3HsRiGpRkQ4yQUD 0.00011285 -fiat/revs sendtoaddress RExohxuhiwtkyrfiUdKQbc1znMxH2YHu6G 0.00011300 -fiat/revs sendtoaddress RVRkh81hnbFTTvdFSK8mmy3pfNwQZm3NqR 0.00011421 -fiat/revs sendtoaddress RJ5RXcmhX4AcvuN553zDR5y6qW2BpcUrtv 0.00011500 -fiat/revs sendtoaddress RHaLJLwq7gcoVkQZBq5VeeFfC4SRTUC8sE 0.00011627 -fiat/revs sendtoaddress RA6d9ghonjGVXbaJYy4caRVGMUV6TckgWX 0.00012050 -fiat/revs sendtoaddress RVCgpVJRb59xixFCmUj35uyu7iTdVq7DFE 0.00012086 -fiat/revs sendtoaddress RUwLLu5WhTc3Yci78r1j4Qe6WBUo1oFxZJ 0.00012270 -fiat/revs sendtoaddress RQtBfRx6ziRc3hcXD4ojxXXzAGrVRPkukx 0.00012300 -fiat/revs sendtoaddress RCcTANrkKH28mRGadpek8bSmkTkjFieiLx 0.00012400 -fiat/revs sendtoaddress RH9XLWzmHiYDx1Am3jV8uQQC1zc3XnKmCQ 0.00012468 -fiat/revs sendtoaddress RCvaKWEJnPJafL93HM2DBUtwp3q2dGeNz8 0.00012566 -fiat/revs sendtoaddress RDUzmUQ7NyDaBE6GEaPHMLSesp7mjT4fK4 0.00012654 -fiat/revs sendtoaddress RLeZQfQ1kxzvNPFnmMT5R7kHukGLCTvzL9 0.00012700 -fiat/revs sendtoaddress RP2thMCLFKNTJYjCf5hF1LKdxWbb8AnumJ 0.00012707 -fiat/revs sendtoaddress RWFG1qtfRNvdkd1GQQv99HR9bkiiZL1CW8 0.00012820 -fiat/revs sendtoaddress RRCxZQ4xDAtqrrsdX9whDGdDqpVmQeHX7Q 0.00013000 -fiat/revs sendtoaddress RXAeLAwCtDtQBicEswUubyCgqHk3TFa2dd 0.00013025 -fiat/revs sendtoaddress RSCMyRn9DofFcFCzaYS45wRQswtGBU3YUV 0.00013103 -fiat/revs sendtoaddress RKLqobybhy8KVw5iHR3nsnnZRMQU9qQLMS 0.00013182 -fiat/revs sendtoaddress RXmUQadq2mhJSY2mEbQeoijSTjKZMXdJZw 0.00013240 -fiat/revs sendtoaddress RFCTiLs5jmk7jRWbBj9PkcGSKoerFTcZFh 0.00013370 -fiat/revs sendtoaddress RJVzd9vChSGjUQ9Qen16NEJAwfpNSCsBeQ 0.00013395 -fiat/revs sendtoaddress RUNPGSY1XAM1kztGfLapySnoHufmGYm3r7 0.00013433 -fiat/revs sendtoaddress REYkDVHw5BoGPkMAzzyEzdjErmVKxC1EPw 0.00013749 -fiat/revs sendtoaddress RNJLsgmUSxtDAYsnEyRoT99qsz9QSp5T3Z 0.00014100 -fiat/revs sendtoaddress RXPsGoSfucXZtvbqAdQMjJVEcXDhzHKAF7 0.00014187 -fiat/revs sendtoaddress RXHZcRrz5UqZob1qEVr6NeJZ2YgyCXQmQG 0.00014300 -fiat/revs sendtoaddress RP84XLiKF4inVT73CeMWnqDASVqK5cdURs 0.00014364 -fiat/revs sendtoaddress RGGcGxUkopPQwgoaBF6sdgr9damcBSXJ12 0.00014543 -fiat/revs sendtoaddress RGeDBigvuPU4L5txmxTamXSvZV3e93P82M 0.00014600 -fiat/revs sendtoaddress RMsphJU3BfaEJmrj5yiLoBXdg2LWgNiQ1N 0.00014700 -fiat/revs sendtoaddress RPbgS48n9x43pZuLooDXaPFKoRzxYscmJ8 0.00014800 -fiat/revs sendtoaddress RKv1eu5CV1HtpxnmoyqHKEvQThGCGysD9p 0.00014812 -fiat/revs sendtoaddress RTdN6EcrbAdNUwzszGfasiVHdSRoS1ei3G 0.00014899 -fiat/revs sendtoaddress RVfWp1sWf7r7v6Mh5kWsyUExYrVUVCetE5 0.00015041 -fiat/revs sendtoaddress RYYkw4gLG7R3uZnb1N1cdPZJ892CgxTmEf 0.00015043 -fiat/revs sendtoaddress RMpif3pyhMpSy1KrCeb9tZMYM591gPEd8Q 0.00015116 -fiat/revs sendtoaddress RVWRgCFWxwz6HfGuJ3rbURRBztc3WxBPFW 0.00015192 -fiat/revs sendtoaddress RN24s9RUkUct31jtDqzZdDAg8z9nx1St8s 0.00015259 -fiat/revs sendtoaddress RKHUGrnZCpjgwXuV92iCvnRAhck6btZZD3 0.00015534 -fiat/revs sendtoaddress RKyaTECc2mnxFLvjvc9W5MamrTPPdi2R8Y 0.00015600 -fiat/revs sendtoaddress RBNmMoBXPNrc1exmQRvhYnUpsjzmdjgH2G 0.00015787 -fiat/revs sendtoaddress RVV3ZW5obk276mnZJomV6sK7XgDQsZhAP2 0.00015935 -fiat/revs sendtoaddress RDKMrkNVddNBxgJbS7o8xt1kvStFFNMe22 0.00016150 -fiat/revs sendtoaddress RUJNt1Ren9W1kwXygUTGM1aXSrckZtuti2 0.00016168 -fiat/revs sendtoaddress RJVwAUWfVywR6u5gvvs6yyqnc14LGG2ezZ 0.00016200 -fiat/revs sendtoaddress RHwBRZzbETNR3nyQjuVWgaLdaBNBu3gwbw 0.00016400 -fiat/revs sendtoaddress RWwvVkTfHRyQowpuKm11pp3SUtpgC4HYFb 0.00016412 -fiat/revs sendtoaddress RP2Hxo8p5E1rgosqWkiQabRFxkCUDfbTbC 0.00016421 -fiat/revs sendtoaddress RX51FmwiSUDADmi4hJnoYDDP6bLAqpJkMn 0.00016440 -fiat/revs sendtoaddress RJFwFMCtSbczH6Kbq3Nvtja131Vh7SCGph 0.00016515 -fiat/revs sendtoaddress RBzSY7hWxG7rAToN9bzCfi9W7ooqeYWvVC 0.00016600 -fiat/revs sendtoaddress R9Q4A21SUiQpNPzuAdMUVNRMNphrtmae6q 0.00016793 -fiat/revs sendtoaddress RQcBiGNEL1gR8Fs2pjXBuTMQHWdFHLQsnp 0.00016840 -fiat/revs sendtoaddress RFwBn7UNcUmaZ1aPcHhgw625gh8qHwMUy4 0.00016842 -fiat/revs sendtoaddress RGMsA6FvecfVLpejUGAnsRDC9vt7ndCiVV 0.00016862 -fiat/revs sendtoaddress RWvn6ecgtsYVLJNV55bMUg8C3mQzHGKHLM 0.00016874 -fiat/revs sendtoaddress RTyavseweCqpmQhyPBTJRNYKCcD4WPdrTM 0.00017201 -fiat/revs sendtoaddress RWqbt9TG9DZ4nqQRTzPTJbpnSqSJQqUrna 0.00017316 -fiat/revs sendtoaddress RGXW4h53qnDaLbwmN42j5KCLjMAG2Dcbuh 0.00017420 -fiat/revs sendtoaddress RJfxf49L8NXk6dag5UwnRXDpsXhqZZEcaZ 0.00017473 -fiat/revs sendtoaddress RCNriTESutj8Pd9J6BNgFNxt4k31S2irrz 0.00017474 -fiat/revs sendtoaddress RCZj1JY5GmgcL83QkhCV7PhcXVoG7cQPVv 0.00017500 -fiat/revs sendtoaddress RDrrRyAtXpVazC9i5s5mAL3HzVaRhyjVQW 0.00017898 -fiat/revs sendtoaddress RVsMJMEFzY8UgVb5YpELYawXxwkjy9pStB 0.00017930 -fiat/revs sendtoaddress RPmnhJYhHhQZ39cN4a5W3Xkyd2ZFXJDg77 0.00018390 -fiat/revs sendtoaddress RRGaN9gmZdz9ee1dvVZiuJkfja2Qr1s4mt 0.00018500 -fiat/revs sendtoaddress RKFagYgGukbWyxUM9tvCQR8XmmsUFXXHyA 0.00018700 -fiat/revs sendtoaddress RGTRaauLGy7MN8mPLk48iAEm9WzrXmc16S 0.00018872 -fiat/revs sendtoaddress REL7GBtuzpYdZgZcyXWjwUdYG3QQcZUkYr 0.00018993 -fiat/revs sendtoaddress RFqKp6eVqSV5zyP61YiexE3w52nEkVayeY 0.00019118 -fiat/revs sendtoaddress RSApPvAtDRpec651R2cCmvorEyQDKCL94r 0.00019254 -fiat/revs sendtoaddress RJZbh4kbAbFUvzz7bmwEUhTvFR6d7W9dR2 0.00019300 -fiat/revs sendtoaddress RRcGgGnkVLAK7YRqxkk4Zs4gmZ1JZYvmFV 0.00019304 -fiat/revs sendtoaddress RQW2KDsQ5wj1Bb2Bx7eZ8jLMzJcKYBuFoZ 0.00019318 -fiat/revs sendtoaddress RFwyjN4ycfVFEEq1vBTQuKkhg1UnBj3c73 0.00019502 -fiat/revs sendtoaddress R9JQZkM6BpaFJX3kmrc2XXeNT9P9yxzCLz 0.00019600 -fiat/revs sendtoaddress RDH8n2KmzD4SynF8QGoZtGrbVEg731xSk9 0.00019625 -fiat/revs sendtoaddress RYCHZ7Jhsohiq4VtAsjNSryFUUsF4rsFnZ 0.00019700 -fiat/revs sendtoaddress RHENj6QDXC4HDaqDiJTwcPA5TAGBA4nT6a 0.00019800 -fiat/revs sendtoaddress RPPtKZRE9X9roG9T37YEEdzWUBazb83g39 0.00019919 -fiat/revs sendtoaddress RMhRNRBr77g3vmrqZCP14aZg5onKyYsmE9 0.00019932 -fiat/revs sendtoaddress RV4jWUpzWtWUTnsztuGaAUb4qZPNUeFQnx 0.00020000 -fiat/revs sendtoaddress RES8ueqKHH1Ai1XV47LViBgbT4opXK9gDG 0.00020009 -fiat/revs sendtoaddress RGy3u1vNvERbYqoCGC3GskkWfjAYE6zaGV 0.00020262 -fiat/revs sendtoaddress RYVr35FGcFZZpC5i9jzzpoSoNJ8YMLyMsc 0.00020410 -fiat/revs sendtoaddress RFWfimmePwC2eDbKNVPaTGFg8ujasw8msJ 0.00020566 -fiat/revs sendtoaddress REWeLgrnbB6bhs9n6RQru33VDeuiLGgjMQ 0.00020654 -fiat/revs sendtoaddress RSrQ4PmYBqzNRGep9uKJnDEm9JuoL1KyeE 0.00020931 -fiat/revs sendtoaddress RLomQjxzU6p4mD8yQ2Btekcm2EjnyUcfQX 0.00021040 -fiat/revs sendtoaddress RCsWkWiVL6VjhasC9LqNZ6UaeWfTCB6yB9 0.00021418 -fiat/revs sendtoaddress RWTcRAhN7E3xWB8Ku1fjAtoADLr7PV2CUj 0.00021494 -fiat/revs sendtoaddress RAS6dK7ZWXhed7zoKAyr5Kt83dVNJqEtBE 0.00021518 -fiat/revs sendtoaddress RR4mphasQsGxLmVu3uurezcd2khCt8xedm 0.00022200 -fiat/revs sendtoaddress RG1k87G4Lc4vcCmYU4X5v6MbsjohuD8MDb 0.00022618 -fiat/revs sendtoaddress bGy9WrrZBdSaGY6LMNNgm3gdkRqLeCxm61 0.00022623 -fiat/revs sendtoaddress RGdHfuLNK4n98m3EmpWFQ8ytBsCy6j3eLn 0.00022843 -fiat/revs sendtoaddress RDep2dXyAeW1tTja8riEnpUBnfujMc5NiC 0.00023468 -fiat/revs sendtoaddress RVhU83QQaXkXAdKt1cQpy5dUXH1ZwYFbyg 0.00023650 -fiat/revs sendtoaddress RELN19aTNtohzdBrroLujUTFnrMKXTprtX 0.00023896 -fiat/revs sendtoaddress RR9nz5y3KHvVcWWCNhnp1Q4jVw4Fo1H4D7 0.00024000 -fiat/revs sendtoaddress RXQ9z4g646wMAsZHnmCy36c16hSqMQgZ6p 0.00024336 -fiat/revs sendtoaddress RQQ8KdZgiYg1zvukN3nWjDdeMskeDMMAng 0.00024703 -fiat/revs sendtoaddress RJkJH1aBxw9XPvQ5MCmovjGng6kxtf3wJm 0.00024783 -fiat/revs sendtoaddress RDQdh2WxpLhdpCDQkPWRTePZ51JgoLq1pp 0.00025263 -fiat/revs sendtoaddress RBkZvRiJU1Xnb9xF4M4KnvMbAoCfUJJcYh 0.00025506 -fiat/revs sendtoaddress R9P6iUPpj7xUPxCEcMRpri65XbyUAc5KLY 0.00025645 -fiat/revs sendtoaddress RLrxZkA8ZUuF2Pw3pRbmmQHH6Kv2fqWG1x 0.00025833 -fiat/revs sendtoaddress RCVBxtzy4eFaqAwjBTTuF813oc1zYHB5eg 0.00026232 -fiat/revs sendtoaddress RCWEzEkD7M9i6GP5bwdwMoGLMQdetJDYjP 0.00026300 -fiat/revs sendtoaddress RBgXc1AhHnRMgXLUEiZsaApW8yTubBZ4xe 0.00026500 -fiat/revs sendtoaddress R9y6LHVU1R7NsbQZoAPDysANmYzHGEBNjE 0.00026730 -fiat/revs sendtoaddress RGoSxM3SjksGokUgBm5gL6JRUBLutN7dRr 0.00027425 -fiat/revs sendtoaddress RXbMBK9DcErkyURPehGHPNbijzUcZwh5j8 0.00027456 -fiat/revs sendtoaddress RVeuAnXX9JnwmG1Sz47wtZHXmRqDe6XhY3 0.00027584 -fiat/revs sendtoaddress RHByz42Mp7kpsD8Zdyy1vtnrfGMJx2NQdc 0.00027983 -fiat/revs sendtoaddress RAGSfKMJR7ykJwLo4gNV5djRBzAxVR1N1P 0.00028197 -fiat/revs sendtoaddress RUJcGyu9NzQTKPpK5j6NMyoYNdfdkTZC9B 0.00028515 -fiat/revs sendtoaddress RHWNjDt9aDXYsfgBjoPqEmDmoih8D2VjyL 0.00028894 -fiat/revs sendtoaddress RUTGZ5tL6HFD4Fi84eVP485M79tsEB87Nu 0.00028911 -fiat/revs sendtoaddress bSCjHv7erUYZHDUhTcNMSoC32rs3VdFfjK 0.00028917 -fiat/revs sendtoaddress RSfE6W7tS6UQtymLftxdBEeRtsbojEmWjo 0.00029055 -fiat/revs sendtoaddress RBVcbV9KHRPKffmqr8zj5A7u35oedrbgDK 0.00029144 -fiat/revs sendtoaddress RUoYayU4T3K7eQP1MDtkNwTqDL29EKQZ5v 0.00029162 -fiat/revs sendtoaddress RXoqH3qww9btEUwU4a5zJqxCpXK6BwNMep 0.00029967 -fiat/revs sendtoaddress RMKB8PSEWzecH1yhvtGhJc8RU3xEs4Wya2 0.00030000 -fiat/revs sendtoaddress RP6LRdtkRaGvMRRgiPqvhbdvtSypjrMd8N 0.00030024 -fiat/revs sendtoaddress RAEk6aPLQkGGkKpvif3VJQuSGVqQcCA94K 0.00030140 -fiat/revs sendtoaddress RTKbRYQVuCGMxjiKv6XpBUwxSvcsAMFcRV 0.00030170 -fiat/revs sendtoaddress REMTXAs7SN3eBU9EVkaa6tkFx1c1TeBfpk 0.00030192 -fiat/revs sendtoaddress R9NmBFc4S6WkDfTu3Z3HEZ4ThJassp1eEV 0.00030228 -fiat/revs sendtoaddress RCbW3RiCRY2PGwzW4sk2fXr7NsNPgxfKiz 0.00030775 -fiat/revs sendtoaddress RXqrRnFRooXEcE8Maqgt5ju3mcM1E2RbvR 0.00030951 -fiat/revs sendtoaddress RUuEnh5gAqsFstmWkXT4U65JUJnjgjLavU 0.00031908 -fiat/revs sendtoaddress RBzzn4wSCx4a1G7QQuQiUA5CKJMYQvLvMY 0.00031909 -fiat/revs sendtoaddress REf8iU1vMyH3c4DLqb5rWYPd14qBA2qWoF 0.00032174 -fiat/revs sendtoaddress RTUew4Hn7jccDKXn7RfuztWsp8p8qJaRXU 0.00032325 -fiat/revs sendtoaddress RMpXKd7ofLwKPyivbAbjR6ewSh4ML4kCsb 0.00032382 -fiat/revs sendtoaddress RQKk2c8DC5SYyRKHJ4bHfQwD4UixfiFxsw 0.00032614 -fiat/revs sendtoaddress RVpY72VaxECmpM5UgvVdN95TLWB45mj1FK 0.00032817 -fiat/revs sendtoaddress RUxt81ufksoybiAsLRFy6tJBX7QKHXuxBK 0.00032822 -fiat/revs sendtoaddress RCbnnEkwBWBeVdutVWdPQQ6To3Y9H5ecSy 0.00033171 -fiat/revs sendtoaddress RAprH6u6PVZkCFWqaYs4bkaSizRMAvBism 0.00033335 -fiat/revs sendtoaddress R9b9vj5Pc1ve9bSKQT9DvBdz7uT24zRY7M 0.00034000 -fiat/revs sendtoaddress RT7xsUXURD2AXME7jwibPv41Q7kMs3ZiyW 0.00034055 -fiat/revs sendtoaddress RWe1DBaD5hjU2nUKHyLNKP5xLHZRis9RnB 0.00034261 -fiat/revs sendtoaddress RTFzsJDW6oe7GDA7PmohH6dRgByhxnet2a 0.00034725 -fiat/revs sendtoaddress RVaMPdn8NEn3iMr9KRzi3CBfVkVqG41GcF 0.00034844 -fiat/revs sendtoaddress RUmJ6JTXBDe3fzH1D7yzE4CNvmFMxCtj59 0.00034845 -fiat/revs sendtoaddress RPbUxtjZnA22p7WnU1gzuJ6GxgdrDWqJNo 0.00035249 -fiat/revs sendtoaddress RTNWeqKm9c9VfDSX8WCo52UGnLffwtXiNr 0.00035613 -fiat/revs sendtoaddress RN3LXqKQ94gTJLzRZouHMA4m32JrJiqq5m 0.00035620 -fiat/revs sendtoaddress RVk7PeWMNenPifXCWniTKmeKGLfTtWBSyM 0.00035702 -fiat/revs sendtoaddress RYACamis5fN5afsdGp8w1nymQdXb81mHQh 0.00035800 -fiat/revs sendtoaddress RJrGKiUGpwWdi2gTYctLDZjU9Cw5cFHbQj 0.00036676 -fiat/revs sendtoaddress RMi2bJiUij8XLmgy5PrZ3qZgyZpzEoLP9Y 0.00036745 -fiat/revs sendtoaddress RH2NF3q2VqNCEfCfkTypGytV6dRTxg6VXf 0.00036800 -fiat/revs sendtoaddress RRJsyam4zDRrSPqqQcYtERup6P4gnw3XeC 0.00037090 -fiat/revs sendtoaddress RGXE7JdtnkSKvfAMLPDL1zPcZCTcgvCNzY 0.00037147 -fiat/revs sendtoaddress RKpwJBn5sFkSHNonE3XiDRmRAaq3ou2ysU 0.00037168 -fiat/revs sendtoaddress RDnFnjZAieKT3a2TFA96ufpKhULpzfy8L9 0.00037382 -fiat/revs sendtoaddress RAsJVZuyccCecL4SqFheRwdfNfP6bfQXia 0.00037479 -fiat/revs sendtoaddress RRRykkkUcsbK5Domz5HGsGg29qygJyd4n4 0.00037900 -fiat/revs sendtoaddress RJhMCo7cnwQk8eFoYSCX77Z4B6G3k1p6b8 0.00038000 -fiat/revs sendtoaddress RQSc1gsmRzVDwpdALRpgeTYeRKspTJsqfi 0.00038878 -fiat/revs sendtoaddress RSBL7pmCmAU3XLFduXtjMVT487xKv95zej 0.00039000 -fiat/revs sendtoaddress RCDifkKiXv3GDJviT2uHB7UEEevmwLbQg3 0.00039180 -fiat/revs sendtoaddress RQxCSeHUcHqkhcux814bvLG4FyKMCY7J78 0.00039659 -fiat/revs sendtoaddress RKf9wUFuorRaRcjyAKYq4xgmviMpQ2tdFv 0.00039699 -fiat/revs sendtoaddress RNEi9CxYrWMWxCqmchUdPJde1ZjWTTWw6S 0.00039945 -fiat/revs sendtoaddress RECw12mh5yjaVJad13dKdLc13kqcQ99XQM 0.00040000 -fiat/revs sendtoaddress RFBujPidqD2uNW3ceFhqiVodrwxW73gWDr 0.00040120 -fiat/revs sendtoaddress RMuYUy6N73f7XdUnPTJpTzWqni1Rk1gNXr 0.00040166 -fiat/revs sendtoaddress RRKp9ugXgpEqdUVMGhbKVzMSMVCdUZewun 0.00040418 -fiat/revs sendtoaddress RBUMvKrd3by4sDw42GnNb6TkTUrfqwvYMP 0.00040534 -fiat/revs sendtoaddress RNVzD8zjMXBqL2vg9PkB6DDo98qkBHVQEQ 0.00040700 -fiat/revs sendtoaddress RNfHTs3a6VEAzw76JsHSNfdyR3N2kwaMXf 0.00040931 -fiat/revs sendtoaddress RFDwyUBee8xG2bcbi1LP624TkyEsj4v7se 0.00041433 -fiat/revs sendtoaddress RXvMLwzd6uGjWmaqoCVzBS9KgVTkAiBdJE 0.00041764 -fiat/revs sendtoaddress RGbVyHSKJRxhnvvEpATt8Xn3NH3oSFDW17 0.00041881 -fiat/revs sendtoaddress bEFCnzFMhd8wswdRBiLb6TVbr3y7aCD4EV 0.00042397 -fiat/revs sendtoaddress RHtRYM9uawkJrxZW9mCcLMwsiTstbD3pah 0.00042595 -fiat/revs sendtoaddress RSPzxkLp1qk23rxdUMN3JVdAU3PVNpFWoR 0.00043130 -fiat/revs sendtoaddress RRJsVZLGdrrv3h3jGxK67MUetJiS6Eygi6 0.00044032 -fiat/revs sendtoaddress RYS3P66cGhzcjte7aebSxaYaHcdvT4HCeT 0.00044095 -fiat/revs sendtoaddress RLyPZoYmeAHxdsLN72erLLdd3bNeJoicdL 0.00044284 -fiat/revs sendtoaddress RP9m6VFieRR5H2uWvFyFjfVUCQfKnCcRzZ 0.00044644 -fiat/revs sendtoaddress RGKGABQLeJ9iA8ZUK6zcduvQk6WZ4gNHvF 0.00045000 -fiat/revs sendtoaddress RMhxYmextHYkAUmDsDDfQU79yDj33rDBe2 0.00045038 -fiat/revs sendtoaddress RG7Qh5pqcu2TMSn1jzk5Q71P3NAVwQZuZh 0.00045244 -fiat/revs sendtoaddress RS5r47TrTXChDaYUWaaHjwiL1m2SRfHxcc 0.00047503 -fiat/revs sendtoaddress RLhvo7mgjq51rrDi2dTzcWWNecNmZrBPRk 0.00048100 -fiat/revs sendtoaddress R9joCtbKPoWKyhqr3LhEeJA3szoGn8qYC3 0.00048446 -fiat/revs sendtoaddress RCh8pEpLF4c4ZKJrP3C5rPE4RqGFoUrMMS 0.00048605 -fiat/revs sendtoaddress RD2mayg6m2WaNRUHYKeBF3ppmdnMHUrU5x 0.00049156 -fiat/revs sendtoaddress RWfcsRLR2QbJndAN1NTyAaYdKEXfrrMbVe 0.00049366 -fiat/revs sendtoaddress RVosvAjhJ9TJ83tGHX6WFGWR868XPG2osa 0.00049762 -fiat/revs sendtoaddress RMDvTbzrSy9swEj9UUqzu9yCFEKMVEAGrZ 0.00050000 -fiat/revs sendtoaddress RWr7NhsiuRe3koWQ2v9mzZRCFwDXJd6JKd 0.00050101 -fiat/revs sendtoaddress RDHjzDqd7mNz9kXeLmaUWuZyvuTRomhXyC 0.00050127 -fiat/revs sendtoaddress RTivqJFPbNXyTCMy8SSpgV9Qpp3Ao6k96f 0.00050200 -fiat/revs sendtoaddress RJABadkNEWBG9azyqtsQoXQSLRvfzebu8h 0.00050215 -fiat/revs sendtoaddress RMRJ1AczZeakHxnJMSDg2ghiFZfxFVPtVi 0.00050527 -fiat/revs sendtoaddress RCxBj4KiR8STBXfsRq1YrW35maTviyS6jf 0.00051223 -fiat/revs sendtoaddress RCbvWo9TMm9AwPy2FwJk6dVRhnKch5Hpfx 0.00051260 -fiat/revs sendtoaddress RRJP8M633zhrHCxUhTFf6hrtEomKzgDTjZ 0.00051603 -fiat/revs sendtoaddress RJaXy9FXjKuFTKPbaW4FYRfnmumuBUQR1a 0.00052014 -fiat/revs sendtoaddress RLFsKzbg6ShdponqZJVx96hxtCWVsaSxTf 0.00052077 -fiat/revs sendtoaddress RHaxtuqJU1JmS3kt1BSjY8AzYaiDBymoe9 0.00052092 -fiat/revs sendtoaddress RCx74DtxhgWndqf28jbiXPSuxn1M5Jvg3F 0.00052195 -fiat/revs sendtoaddress RHNtSBmZbpjNCCDn8jX6XyvPsidGoarvEG 0.00052228 -fiat/revs sendtoaddress RYG7hG3E2ZtPXibeFj67yN1JCU6ygwi95d 0.00052436 -fiat/revs sendtoaddress RW5WuA2XA5SMRPzpiyXASXNdE4GZiGjAKD 0.00052633 -fiat/revs sendtoaddress REXHZbw7YHGvtmqARuUV5WAqhMAqQJ5DtF 0.00053333 -fiat/revs sendtoaddress RMqq9MbwApbpDHhtxh4kpYP7QtRH1m9vFj 0.00053531 -fiat/revs sendtoaddress RTEhKwgcgmdYbQkvt6iHEsczqisVdiLFdp 0.00054000 -fiat/revs sendtoaddress RLjEJSYFz9iLGY669MMFoGt2y7QSMwctXd 0.00054047 -fiat/revs sendtoaddress RNTZWWRe9sYQVvPWq1HWUirbFEM11bPAKF 0.00054284 -fiat/revs sendtoaddress RX6vBdUgdVMVR4zxDjYepmKEXkZMU7QeUN 0.00054745 -fiat/revs sendtoaddress RUs5uuCyn2GXpi91hM9d1bbs4sMGFLTAzG 0.00054895 -fiat/revs sendtoaddress RXV65No5DfAm4PG9xVYp3LUspGndFF1q6E 0.00055000 -fiat/revs sendtoaddress RLiDERt11STT9v7TmER4UVQHLDWC9ms8bG 0.00055143 -fiat/revs sendtoaddress RYTXmcxgmMdD2AWizgNGcsKkiYdGnRGniC 0.00056300 -fiat/revs sendtoaddress RUPe7BDLa8wDKhYE8ncbPgzKjvJ3GvWod5 0.00056510 -fiat/revs sendtoaddress RE4UAgm4ecLQg8xNjpqNgoBDwPqUeU9Zzi 0.00056788 -fiat/revs sendtoaddress RYYqKsjiNJ2zTg2dfJgbm3iooGzu9GksXU 0.00057281 -fiat/revs sendtoaddress RE9G5cYjFmib6Jx5JZQQm8rgWPS2ubDzNz 0.00057759 -fiat/revs sendtoaddress RLL1EiC2sRWqEyamcjZbtiQZC8abAyDWRg 0.00058300 -fiat/revs sendtoaddress RP1Uyzyqf7yD85DzyzXRMPjgrhDvV61xKP 0.00058613 -fiat/revs sendtoaddress RNhQ2bzDwgdN9Ud6Tv6dPLQiEaEfhCczhB 0.00058648 -fiat/revs sendtoaddress RE6xDHcgrfqN2Pa25XepxuYmhrqz3uawZR 0.00058771 -fiat/revs sendtoaddress RNL8toUkSDA94sHHJPYhHSqA7NDkpfZXXn 0.00058819 -fiat/revs sendtoaddress RPEcWtSLeFNKWn4AUQhZiYxaVNnE48u2T5 0.00059701 -fiat/revs sendtoaddress RFg9XWeAtGojAYcEapXor2BintD7QXL9zS 0.00059792 -fiat/revs sendtoaddress RGx9Yt4E6H7hQSgPMNnCaCyyn5fcYmv5Kq 0.00059800 -fiat/revs sendtoaddress RYYANuqdpgV2P6St67MrtyAHLhwh2511ao 0.00059847 -fiat/revs sendtoaddress RF9J7qdxhoBnG5UwP1muwEwyHgBaTcjYHf 0.00059863 -fiat/revs sendtoaddress RFr324TVHDCruNAic3yJjdXpcq6Vr5CPQF 0.00060000 -fiat/revs sendtoaddress RPn81TxgJXUsg1ZfShTeW9qEFNqQCgWNkn 0.00060158 -fiat/revs sendtoaddress RYDZ27PvzTifmuDz2tEBEPCYeTe7N9wDKT 0.00060189 -fiat/revs sendtoaddress RVdSbSzv6vrWquenBbEL9LwRWfmPpNd4QP 0.00060231 -fiat/revs sendtoaddress RH8ahGELGnpHvZzKk2eiKixRDQ87DVjTyP 0.00060288 -fiat/revs sendtoaddress RK7h5Jq9NRLcHnrxoAxHz3uQkVy4iYpRfp 0.00060460 -fiat/revs sendtoaddress RVPfC2aKiS9i9kYxKb3Xt1s26F3Sm7jPxC 0.00060579 -fiat/revs sendtoaddress RVch5Hr79qtnJp8e1aUGnmZEPJyZKkevFa 0.00060709 -fiat/revs sendtoaddress RJDXdw7hY2PoZPCG6BeTcYhhcHFBbG3WU9 0.00060951 -fiat/revs sendtoaddress bVpYYMBADg2rVhVbEQBEjjVWA9QXBrT4Fm 0.00061663 -fiat/revs sendtoaddress RTWB89MpXbKHVFc1mxvvMHh86bW1mLg4Fy 0.00061804 -fiat/revs sendtoaddress RX7KrPMDmXbpvaATrME2FNxgNKoELMobbp 0.00061808 -fiat/revs sendtoaddress bM7wZSxKMfPZDBVpeUwrqCgoDHwCiAAfGe 0.00061858 -fiat/revs sendtoaddress RE2aEJVFrB98HKvkLqPurCVtBF2Ewm7tFB 0.00061950 -fiat/revs sendtoaddress RGQRR95r12G8ELDHF3NiCHdYbcAAvDRC5j 0.00063553 -fiat/revs sendtoaddress RJsdgVpLEgyNA4YpeE2mR4jrXydPjjkMfu 0.00063617 -fiat/revs sendtoaddress RUfxYBebjmhF3REoFoUL5BWRRfp9e63MWb 0.00064647 -fiat/revs sendtoaddress RCqLMnGHK9f1CFQRozzCQM9VfZozHpmpjL 0.00065137 -fiat/revs sendtoaddress RXaK7vPxiYAxkf2T12sqCyqRkVq8q5qm3p 0.00065666 -fiat/revs sendtoaddress RGDHJAq2Na37e6UN1PSQ8NViMPgJwppNVq 0.00065790 -fiat/revs sendtoaddress RNGjNgRdeXVd6A9GEefNWN3jBFEdmCESrx 0.00065976 -fiat/revs sendtoaddress RUcE3gjtKcbxPSMm84SP4powmJj4mcxtNs 0.00066425 -fiat/revs sendtoaddress RCxKoTih9DKGiKoT7wpfwwEpGb57L2eTYX 0.00067250 -fiat/revs sendtoaddress RRDCCocEEYWavYSjhc3Epk5CEqy1rENok3 0.00067441 -fiat/revs sendtoaddress RHnHjFVXsxky2uYQeBqKWZ7JQjBmh5cnju 0.00067500 -fiat/revs sendtoaddress RCgVTmHU9VXwKEPZytva99ZSgkQoAY51xG 0.00067622 -fiat/revs sendtoaddress RUZ6gqJnYU9pvByC92zc1Ls2wPQB3e8JYE 0.00067638 -fiat/revs sendtoaddress REkSgNVYr4e27Rvn68ZsH3zGRjTshCG7kG 0.00067683 -fiat/revs sendtoaddress RAE4GcdtEmMVMfvCoYw25nw7ynj5dEZ4sx 0.00068339 -fiat/revs sendtoaddress RRe5CaifEtfXVg1ve2qoTYxfqQ58TnCHRi 0.00068447 -fiat/revs sendtoaddress RBiP6vFRJvgKXxXaLn3jFkcqFaGqWCbVRg 0.00069050 -fiat/revs sendtoaddress RCEKCKYZoqGBzMDw9j6rp6YQ7sfqgwU2ix 0.00069153 -fiat/revs sendtoaddress RHC6p72Jbu9mgDcqq1KhmY8qtPZryR6Frg 0.00069586 -fiat/revs sendtoaddress RJWPpaCzAyQHHkjFUkC2HkDvcaPm152B2j 0.00070000 -fiat/revs sendtoaddress RQkCtL9mvhFk7ETDd2R8fMziwxhybxst24 0.00070084 -fiat/revs sendtoaddress RN8fN2dPPVQpMdXeRZDsnkf53MSru82U7U 0.00070165 -fiat/revs sendtoaddress RSicQrtycErAgf8qaAq3ByBYotwDbuvKPR 0.00070295 -fiat/revs sendtoaddress RDvR8qPDrSVgteZMxBgamwx9DaAkuHhzWR 0.00070753 -fiat/revs sendtoaddress RYB2rGDaYFADLL42PQg7NeYvVCFLtLG8CG 0.00070764 -fiat/revs sendtoaddress RKFoZSctnPW9LNiys2n2q63amsM6EZQ3dr 0.00070874 -fiat/revs sendtoaddress RDJoySywzhZUQdEprL4RHaPwvc89SojpQo 0.00071028 -fiat/revs sendtoaddress RPvB7t4Ss81kbCpSVCfctXKcddD7ABtzeB 0.00071399 -fiat/revs sendtoaddress RVKEKLeEwG8kM5rqGQKpfRLuvce1hyNjQZ 0.00071491 -fiat/revs sendtoaddress RNWKASYXdK3p4sVQPGHHrCE6j6P7F7Lhtm 0.00072253 -fiat/revs sendtoaddress RP8MJGK5oRCMurtTB8NgyNoY68oATYLZ1k 0.00072408 -fiat/revs sendtoaddress RWU6mVQv8FsEDKQoTBusT1CfnPxkStPpii 0.00072421 -fiat/revs sendtoaddress RQFnJB2aApdYDjVAKAbU72yih534HPBJHD 0.00072540 -fiat/revs sendtoaddress RBgShoibtXKfLgSFcsyixBTBiwRJUWrUBR 0.00072575 -fiat/revs sendtoaddress RY7SszF8RFpAA6jfcyaDsG3hbhZEM21dLU 0.00073024 -fiat/revs sendtoaddress RV5R8ucTbgRRFFRPpYX69zoeJJsVqboW29 0.00073123 -fiat/revs sendtoaddress RJUneq4osGJvep6YRwaAj5b6koBpwBLHsn 0.00073418 -fiat/revs sendtoaddress RWDiUKGWww2SAcHAfLyycWfDkMyA4p4nDh 0.00074330 -fiat/revs sendtoaddress RP2PWmFr6nd4ZrW6KuX4Ecjaqwe4QCQM6P 0.00074424 -fiat/revs sendtoaddress RQQJNSwKdgXeD5SuCSNfYBVefzq7FGHQyp 0.00074466 -fiat/revs sendtoaddress RTKha5JFx45yRZ4gx87MqqYTHvqh5oSbEB 0.00074499 -fiat/revs sendtoaddress bXAEygALC65ZaqPJG242GBVNqUVjkdCeQ3 0.00074933 -fiat/revs sendtoaddress RJdGqPiZGoBMLBqP33zZDmMGYaBaM2gNmT 0.00074977 -fiat/revs sendtoaddress RV8kRDPNZrKBr3dqNcFto3fccYTpFeNkvA 0.00075238 -fiat/revs sendtoaddress bQYpa4s9Jh9XJ3kf3w27LchrhuZjrS27cN 0.00075817 -fiat/revs sendtoaddress RGnTRvge8ZvQXTuytgonu7BzMNv3cTCPRy 0.00075893 -fiat/revs sendtoaddress RXaZkWZaWfXykfUXQViusSBDND7b2aiBoE 0.00076000 -fiat/revs sendtoaddress RV9V8P1wTAHBhTdMV28Xn4g3Lsco51AL8e 0.00076630 -fiat/revs sendtoaddress RDAr4HKgmj11Sb4j5pvF1AHRxXWNzYw6vi 0.00076725 -fiat/revs sendtoaddress RBvX3akN9pAapqHBtUr7FP9srsgov7Z8HK 0.00076733 -fiat/revs sendtoaddress bEdcruAqmSymNH7GKjPa3iGruKPtREuaML 0.00076963 -fiat/revs sendtoaddress RMKg4pYPCANhUJ9RiQJMxmU9R4MbMP3BXb 0.00077580 -fiat/revs sendtoaddress RVGvu7rnVSfWHr3DPawLSHmn9D6SsaqsMc 0.00078402 -fiat/revs sendtoaddress RFT5fMUcJPTJEnWsSXcKmAGHUpaijgazHi 0.00078945 -fiat/revs sendtoaddress RL3USx4G6gEbsawLxGUNFBNX2JxiKnKam8 0.00078982 -fiat/revs sendtoaddress REqtGhNcfVmi9UNQmeRj1v69asjAr8akLC 0.00080000 -fiat/revs sendtoaddress RG4JWqJUKcXLu54yui1e5GGcofowyGzSsJ 0.00080015 -fiat/revs sendtoaddress RA8LeJBS5zFWRGjbysdQXXcnEuM9t28wLq 0.00080459 -fiat/revs sendtoaddress REgcM5jonZwANwPrrdCNQYkvrxybMFPUJs 0.00080731 -fiat/revs sendtoaddress RB5a5ptCABZnX3MJmLEueBFDf3CszizcTH 0.00081367 -fiat/revs sendtoaddress RUfhxdaVXiq9rS3dVXWNc2X6pXLhrpiAA5 0.00081440 -fiat/revs sendtoaddress R9yruqdTF1Pgbist9rN1EHmAbuSwutVuAh 0.00081739 -fiat/revs sendtoaddress RCeDhfX8TnCDjfTkn1waaaxRXE6EgPWCQ1 0.00082450 -fiat/revs sendtoaddress RLzyQnxLdRuhzXCBjYJ74AjvpkQqYAHfqa 0.00082503 -fiat/revs sendtoaddress RRnWXXUd7wG7a5TTGmcZR4DCSNkxLgvtjC 0.00084349 -fiat/revs sendtoaddress RTuMVn5H1sNDsEn1DwtUM5cX77LFA1468C 0.00084471 -fiat/revs sendtoaddress RBKf8KRNxgsJgFqz197A2vXn7NKp4iQiQD 0.00084529 -fiat/revs sendtoaddress RF9pebXtFA3UgLvLMRbkZYp4iXjswSocta 0.00085426 -fiat/revs sendtoaddress RJkrH9MrVsh93KJJnaCfTzgYx1tyeXHJ4w 0.00085541 -fiat/revs sendtoaddress RJrLhnWWgAThcxiXUkAhD5q4MTDuGwvHTD 0.00085670 -fiat/revs sendtoaddress R9gwEbUcg8NzCMSeKYgKQkGf3T9FsFFifo 0.00085883 -fiat/revs sendtoaddress RGvdn1mogj6fPJw679NAZFwB7g5V4ZBCP8 0.00086187 -fiat/revs sendtoaddress RFMh735fiExcqLpFhFt1SnpUr4tiGJDLEi 0.00086200 -fiat/revs sendtoaddress RAMvCR2p6AS8fhwyyTLpyWXES2UR5Tcmoi 0.00087514 -fiat/revs sendtoaddress RP5xF9csnJQjPK7P3vDbzzCx5rHdsdjKtt 0.00087757 -fiat/revs sendtoaddress bMiMfY6CB1HrFT1nT6ZLKuiSz1JT77K8p3 0.00088271 -fiat/revs sendtoaddress RCK5KqznD2G4Hw6kXEwwJ5CM3s5eXEyxTx 0.00089116 -fiat/revs sendtoaddress RMK7JA8V3P42nB9wZDYnWb15hek9ojrTHd 0.00089120 -fiat/revs sendtoaddress RQkKv7Emjarb6UgsvwCU5XpmN8QoPZhGcM 0.00089315 -fiat/revs sendtoaddress RQTZoBvPJNXcvFgmCRbpWDyiwLG5d2kFKB 0.00089416 -fiat/revs sendtoaddress REvJcweRjX7CizTr2NoWYbvFwWFsTbVxNm 0.00089541 -fiat/revs sendtoaddress RWhuDWp5UwwPCXMpvM9ecWaN4FkKqWfra7 0.00090000 -fiat/revs sendtoaddress RAMrN8D6FLK1D9YN6NvuySj1rKR5fD5wR8 0.00090070 -fiat/revs sendtoaddress RHYE8hJygggwwfuhr19QhrkXv1dwieMYv9 0.00090100 -fiat/revs sendtoaddress RJ59LZ3wqPSa8JR58mduD7K71ngv4h5wGv 0.00090758 -fiat/revs sendtoaddress RJkd4uKAfNMatWzkhgq395wCBazeH2jZ3o 0.00090969 -fiat/revs sendtoaddress RKimhBpxoTifqSvujKmLW9LDiFdUeisfdp 0.00091040 -fiat/revs sendtoaddress RGi7RA2WYynwgdMj3tJfyf7fHtCQ1bWiSw 0.00091844 -fiat/revs sendtoaddress RWLYkYmfdyLfLmWn9A6u9hHYpQJpJjpr3y 0.00091911 -fiat/revs sendtoaddress RSQuD1vLvbQfTD1ZbwQ3uEUvpsLHH1fKPg 0.00092317 -fiat/revs sendtoaddress RWDTHAfHMZbfMRhXjNiombEKT98rUzeMiv 0.00092393 -fiat/revs sendtoaddress RWpp1fhUErcLkJB6kTESZgSnzxih5sSd3E 0.00092723 -fiat/revs sendtoaddress RTAd51pr5YFqWs8MRnYbkkkYAs5T74kwAe 0.00093156 -fiat/revs sendtoaddress RXZDx67Cbx6uxs1Q6UohXfs8e4krHmm9HJ 0.00094000 -fiat/revs sendtoaddress RYNUcznURDzm6whpB5t6e3GW7dTDrT3WAf 0.00094167 -fiat/revs sendtoaddress RHu6LoinchwLr1vqKqzYsTzfAs6e3Dzney 0.00094345 -fiat/revs sendtoaddress RABwuF2QmgAwGWAah5qfxUbtaJ73EkJAa6 0.00094550 -fiat/revs sendtoaddress RXVHhcn9LK3hxZZTr5PkXPbPn91vfAQzzR 0.00094948 -fiat/revs sendtoaddress RDQNYvUfsN85TULMLk7Q2x7DacC79hEyta 0.00095192 -fiat/revs sendtoaddress RRby79a4b1YvyzEDphp5ZALs352MTpXsTQ 0.00095406 -fiat/revs sendtoaddress RErggqzhPXF7TfeE9rfohzRXZMr4uz6g5o 0.00095452 -fiat/revs sendtoaddress RT4gdZXNQYcgCXZKa56rBKLNPnkaUgx47T 0.00095499 -fiat/revs sendtoaddress RQfgFhunKd8bhzoRwPP5G7dfbJ1xHouw9E 0.00095798 -fiat/revs sendtoaddress RHJZQwuV5151jvcMLo1XZqwjt2oB6fGZ1a 0.00095887 -fiat/revs sendtoaddress RY7Saaz42fsphLJK5KstcXJBDtBFkas8zC 0.00096235 -fiat/revs sendtoaddress RPyPmToCDgmuZUuUxfYkZ976QcZ4hdVtVs 0.00096707 -fiat/revs sendtoaddress RCRTpjHq9n78feLyz2GHTedCaWNX7cb3yY 0.00096718 -fiat/revs sendtoaddress R9ZmSiyXLXtzhjnD2UEcTds8HEGKCsnQSx 0.00097394 -fiat/revs sendtoaddress RWbcn8TFZ6dBEakADScBnXYdhQWrnWpxh3 0.00097410 -fiat/revs sendtoaddress RUpNKfGUuadEXGGng5HEATstbBiVLasBNi 0.00097682 -fiat/revs sendtoaddress RFa9TdVgG52CWE6GfrYHyHDYwVRjGNZnpR 0.00098068 -fiat/revs sendtoaddress RDvw7pNuvdVhxro1KH8eaeJTmFuZDge1k3 0.00099179 -fiat/revs sendtoaddress RGoCH9AM9njTLhB841TyoV7uqnuUsXVSEz 0.00099866 -fiat/revs sendtoaddress RYMJ7TGtpPsud4EqUWwVo1WcjkoqawFspR 0.00100000 -fiat/revs sendtoaddress RXjjesrXesx212E3b7rZreW8EXXMfh85Pk 0.00100499 -fiat/revs sendtoaddress RN6qxPwf9o5s4MPuNwgFVPjZCz22hNqTAa 0.00100826 -fiat/revs sendtoaddress RJ4SEsERSBk7UiLwAQ9QMrKus5gEDsSfDW 0.00101050 -fiat/revs sendtoaddress RB7stqBVAq7LwbFyJzAbYN9g3usQQA3nHH 0.00101628 -fiat/revs sendtoaddress RG2wTVsq6wriSRJiGBaVkW5Lm74Ggr9rnD 0.00101881 -fiat/revs sendtoaddress RVoSeifwHqaUCv6ZqvP6SrXUBog1eGico3 0.00102000 -fiat/revs sendtoaddress RBcUqXYA3tYqwCrWFKUfbT5qBceTE4Yt3f 0.00102117 -fiat/revs sendtoaddress RDPDpzbEfsTBrD9GizgY2j7TJTonVmd1Wu 0.00102161 -fiat/revs sendtoaddress RBtNyxzT7y5FrVBaPEmvovKmFf9YuqpmHb 0.00102193 -fiat/revs sendtoaddress RTDFx5D6w1c9mJaDwzyFjt3H4X42Tbn6qN 0.00102322 -fiat/revs sendtoaddress RSe3v4kdwbAkHocxLednw3RqrA4ALhqMV7 0.00102493 -fiat/revs sendtoaddress bUV5MoYe6d6iKAFMiLk1zt1uBwWcDQQYQv 0.00102628 -fiat/revs sendtoaddress RNUyBuiiCAaJqcFNikLkGnaYtmZNu3L4Nz 0.00103228 -fiat/revs sendtoaddress RKeg7sfZkLtmkuQoh5wYFdwmDf22PGwC1W 0.00105543 -fiat/revs sendtoaddress RYSqArowEwE9psjRWiwWHPd8YHGKzhRZZ6 0.00105720 -fiat/revs sendtoaddress RFeaFocPpVyqrp6gMvWFFZcEkPJ53VwFx6 0.00105999 -fiat/revs sendtoaddress R9rZHhQmqHHE8eXBcY8H2Q9ksGVvLYQpBo 0.00106356 -fiat/revs sendtoaddress RMqNpE4xiR2KM5pmBvDoKMBtG61AKk9N51 0.00107342 -fiat/revs sendtoaddress RV54BJehmoUq7oF3o2omfj2Qy3Zrjqfo7L 0.00108000 -fiat/revs sendtoaddress RSP233fQLPmw3LoJS3gU1ktfu5y3Zokmvo 0.00108278 -fiat/revs sendtoaddress RVnrPsX2eFrvZNPYRm7xpPJpBtW4X8yK1Q 0.00108851 -fiat/revs sendtoaddress RPVRCZkcWBNZ2zDVfZfyYsw6NsUCySyrjv 0.00108966 -fiat/revs sendtoaddress RCs3DPCS7eitMkzwpR89MG1JdmdCkrB3EG 0.00109750 -fiat/revs sendtoaddress bVvm2PEEcz2ZA3nyWjo3UcRPhNLpgWW3En 0.00109937 -fiat/revs sendtoaddress RHDVkq6vDg5tLZPsVx7hGDGd8d44HV7BGn 0.00110000 -fiat/revs sendtoaddress RMyUf1tQdkitnBku8JPSi55WPxj9VPHLCL 0.00111410 -fiat/revs sendtoaddress RYRvcFSsQx2taRx7Wtnp48xeUWjhapzFZJ 0.00112000 -fiat/revs sendtoaddress RNZ8NYMj2G8Ft9YvGqLuseWyTVGRYkaQwP 0.00112015 -fiat/revs sendtoaddress RBtHCK8pgTGHQemvv88G8dtKPAvVidwxY7 0.00112077 -fiat/revs sendtoaddress RBJc17RnWR38RR1nTE1Kin74Esys3kHMUe 0.00112157 -fiat/revs sendtoaddress RY9VBtD9a8x2cPfFVn6MVYPUuiaCDQ1gza 0.00112184 -fiat/revs sendtoaddress REZAMSG5kbcnJUJfDjwE5mG66bD2duP7Yw 0.00112379 -fiat/revs sendtoaddress RLv2A6YQYUfcxva4SpDkaX9zQ6ceqXumt4 0.00112457 -fiat/revs sendtoaddress RLHCNBdenBC99kWuQwuF3pKRUmATvzLhYo 0.00112500 -fiat/revs sendtoaddress RMv1m3DSRUroKgMRmwh95Pn3hL8L7t7UkT 0.00112954 -fiat/revs sendtoaddress RVqEqAcanMoM14DCHJpss9xDS6sRmJemhx 0.00113316 -fiat/revs sendtoaddress RFDPvEYvtvcFF4tCuM2A5EQdLF7dQoKULp 0.00113722 -fiat/revs sendtoaddress RDTShj6oAMvXn5UsvtGV2gQA13whDsBRtK 0.00113789 -fiat/revs sendtoaddress RTYYhB8FsyaTVPiRUksrDkz2u4ZrkL4EM6 0.00114196 -fiat/revs sendtoaddress RSkdGEfLPAvmWxBoNjVha2U2MjSBgXJpqk 0.00114220 -fiat/revs sendtoaddress R9eW4hVmhGYCExBSJ15vX61fEoENgDvHhj 0.00114474 -fiat/revs sendtoaddress RH9Bfv5eqq6bxdSC6aUW1MgzWeE5yDvyAX 0.00115100 -fiat/revs sendtoaddress RKxXKAiACPiYnQGdpgww6hgkgKRcXCsaUF 0.00115291 -fiat/revs sendtoaddress RCBJERdhw26qVkpyv5Gpo6bkYmHuSBD7hH 0.00115459 -fiat/revs sendtoaddress RFLfsRGBKcshg2Agsaiy22HYtxUZsxqH29 0.00116000 -fiat/revs sendtoaddress RHmiZgYDY2UXXc65hHp9o1urBUtgcHjDT9 0.00117000 -fiat/revs sendtoaddress RR9UL9qbzp2QmorbYMy77tdCGTn7Htw524 0.00117253 -fiat/revs sendtoaddress RJTfjsppmP7fHyxy611qSnAWh1XH1fo3TY 0.00117419 -fiat/revs sendtoaddress RV2CJA9Nx9qKEZj513r8qPGg1E8x9AJM5Q 0.00117906 -fiat/revs sendtoaddress RWVi2CA1L7oSDLozSNeKM9oRD14PQdtvAA 0.00118050 -fiat/revs sendtoaddress bRhtXeh1QdhP8ffbDD4eUBcuEmvXMdWLMN 0.00119077 -fiat/revs sendtoaddress RVRvm4eMSv63wU5ydE7ozJtDEdKrey4Fdn 0.00120000 -fiat/revs sendtoaddress RAHqWp6WMAU4YjxjV7gpMj9gmutSZXmFe1 0.00120129 -fiat/revs sendtoaddress RUBqTKa6qPYtUERRUouMLM4vcQi1ZXRo8h 0.00120211 -fiat/revs sendtoaddress RBy9V1tBN5ZMXkD3MKkCvpdh9E1WgpqVF2 0.00120607 -fiat/revs sendtoaddress RXDReuAEZneRBqMqtC3XaDsAwwoMQMB3j2 0.00121214 -fiat/revs sendtoaddress RPwgb35yyqYCb7jnPr6soy5eG3yKmyrE1x 0.00121500 -fiat/revs sendtoaddress RJZjwQy4ZYeP2bVAKp1p6JPZeQYMgiBK2u 0.00121903 -fiat/revs sendtoaddress RHCHMSCK3wTCWkp1mRxu8HD6gLkb8ebmTV 0.00122536 -fiat/revs sendtoaddress RTc4SbEqqzPrfwF4CoiYNQgS2aBF2QCbVr 0.00123825 -fiat/revs sendtoaddress RWDcKDg7ybVXGx5DsjBR731BaaPULtTJoJ 0.00124426 -fiat/revs sendtoaddress RWFv11rU7XgFxtdHrB8PVLY6Giem6icSwk 0.00125000 -fiat/revs sendtoaddress RB7sSP5grUz9uBS7xEAdxcjEr7mx425qUK 0.00125992 -fiat/revs sendtoaddress bP4PKdxQyNz6BuSLUartBBfgWkNTPUqyTK 0.00126050 -fiat/revs sendtoaddress RK9PCfvRri9cQKzVL8PB4jiw6YujhVhb1N 0.00126185 -fiat/revs sendtoaddress RWoZFsgSXDz5oqEuu6SJAJzC2ddyjogdbb 0.00126264 -fiat/revs sendtoaddress RBUTmA69NXGBvkjbDTj4aDhj5ZjdwNoUdH 0.00127220 -fiat/revs sendtoaddress RFiBBFihu6VXNgugZYzUEpcwEELkkgo7TP 0.00127450 -fiat/revs sendtoaddress RUd6cz6fkb5fLNZQ3u6BBKXwL9PopbTW2h 0.00128110 -fiat/revs sendtoaddress RQJKriF3sdCzoDzn9jHFkkHGtThBdRA2Wh 0.00128159 -fiat/revs sendtoaddress RGQqUgpE9yCYnSh7rSr8UyrJCdXiyQPYHv 0.00129697 -fiat/revs sendtoaddress RKy9nB5frvgtCKvfkosVGtRH9xJVEuCEfR 0.00129729 -fiat/revs sendtoaddress RXvX1hNmDfsGHeqRwv2fBxW4DUmPtPEZ6q 0.00129979 -fiat/revs sendtoaddress RCoNG66Yi97QS5RoGzmEi6wzbyqxFuqVXW 0.00130000 -fiat/revs sendtoaddress RMTy2CPmBDDPhrM7o4HSaTBJjMVHfqzRnV 0.00130078 -fiat/revs sendtoaddress RWn1V4Z7XjwRBSkkNNwWCT8YQsvsodjs3V 0.00130788 -fiat/revs sendtoaddress RSnPJHvyykq2D7U9fZdn5Nb4XqvXMicdjb 0.00132832 -fiat/revs sendtoaddress RJfqkQ9mTevmALSvL4KJP7Rhi33YCwdkZi 0.00133333 -fiat/revs sendtoaddress RTp74VhxTjBFrYWQdo9zq1H5FrRehq6XgJ 0.00134093 -fiat/revs sendtoaddress REDGpkFkcNDSZkqNaU6orv9xhLV7JrwZaR 0.00134598 -fiat/revs sendtoaddress RThY6h5nmpJ4mZGGHodso6eZGhGPesFohT 0.00134621 -fiat/revs sendtoaddress RFza651NX8k61ZSChgLR1fsKJVkL6R9fnE 0.00135000 -fiat/revs sendtoaddress RE6aLu3qTf7gJnTMG2KB4WWYQ64TPDtNYm 0.00135695 -fiat/revs sendtoaddress RS36TAf4GAyZgrzqjG2bQq25EigBGBKx1Y 0.00135906 -fiat/revs sendtoaddress RQhYeke65hDq9PEBAhJg6GGSW2rX74oQ8X 0.00136000 -fiat/revs sendtoaddress RLNznYPvDoeVkvdoomoUbf1vQoKzdLXwj6 0.00137215 -fiat/revs sendtoaddress RBJ6aCCVX6x4ouTcS3NmYEohvYB67iomWk 0.00137398 -fiat/revs sendtoaddress RGurnYnS8q6a9t9TLEogjMNMAWexQ8GBBe 0.00137410 -fiat/revs sendtoaddress RHEg7rEq6qBaR8piqmzmY9aer54AKJxgqD 0.00138857 -fiat/revs sendtoaddress REaTKxEtv8h3aXyPRLnBrFUCBETg4wahvi 0.00138860 -fiat/revs sendtoaddress RW52z7Lnmw6uAYCvFJUxDZsBUmvmNCXHtU 0.00139082 -fiat/revs sendtoaddress RKqwuNjkLMH8wUKLWsGxRVqPg5SZgpNjgY 0.00139100 -fiat/revs sendtoaddress RPyg5WVyPMaAGmPHTwDBazH7WGjZ1fCX9S 0.00139250 -fiat/revs sendtoaddress RGD6D2fkP2ujAHWUidL6Ldy2vR43BXGgoB 0.00139263 -fiat/revs sendtoaddress RNCvV9bsZHvRrTxbbdxcKfLUJ9PXcoRWCr 0.00139999 -fiat/revs sendtoaddress RYFmyVtYRXVCsBDadqHL9m6tH7XfjE3gNJ 0.00140000 -fiat/revs sendtoaddress RS6YgXwoXE7tjG61LAoaoGN8muKLvyZE4d 0.00140056 -fiat/revs sendtoaddress RGH7VYRLZfUvC84TxdE6AWpZmBH6tsLhEp 0.00140300 -fiat/revs sendtoaddress RQzUtcXnFFbZpNriJgyfk8irYQ33VnHbhb 0.00140357 -fiat/revs sendtoaddress RLG8nBiYYAESM84x7QQMq4AfyygcfmjYfA 0.00140781 -fiat/revs sendtoaddress RC5wCpt4UPNAKhV1zNNXC9BzH3p7Y7V1An 0.00141077 -fiat/revs sendtoaddress R9M7UCxaeWd3zQ2z4aehY9zkAwCpXkJ6q5 0.00141800 -fiat/revs sendtoaddress REe12MZFdWuuG5R2T5AhdzcvXSY1yBPK1e 0.00141801 -fiat/revs sendtoaddress RUFG6SKsNeHdYjpKWj9DNP67YRaJuRLSdo 0.00142035 -fiat/revs sendtoaddress RDdYMxYEpkhuXoqAqqu4hkQNm1KYgfXBy9 0.00142811 -fiat/revs sendtoaddress RFaY8baeGYeMm3rdxSF2Sitb98Ly8C8kUo 0.00143333 -fiat/revs sendtoaddress RWWQre7BrSCAL3ApjBN3sjR4Cbc3DqYKtu 0.00144000 -fiat/revs sendtoaddress RNv2PMk6a818pjKCTbkivcxA5XbUeqB3Xy 0.00144146 -fiat/revs sendtoaddress RRnqbhAn1QmyLZ4wq3p7NjPae3P91yW5Ej 0.00144507 -fiat/revs sendtoaddress RHoSzjL9CVoJixgD8s8UpP3Gcng1GxmAux 0.00144661 -fiat/revs sendtoaddress RXSbVFuguub2y98xYAiDUAbp14GWA65R1X 0.00144815 -fiat/revs sendtoaddress RRFTDCTj55M5HsqrAfECug9dFRdVbLvGJf 0.00144970 -fiat/revs sendtoaddress RQWhJJE3tbeiaPCButucaQ5j6JXZ8z9auK 0.00145036 -fiat/revs sendtoaddress RH7XSviZpEcnTTLMs2i8TdL7ULdDWznHUh 0.00145164 -fiat/revs sendtoaddress RPc8AUYzynLaFpmTMevuVY4J1TqT5h7UHW 0.00145431 -fiat/revs sendtoaddress RJ9jYGEL51hVbHXFngejcrdNNXSAaNeyRm 0.00146215 -fiat/revs sendtoaddress RQkmomyRnrhmdfDZfZiZm4poJC5gwwboSV 0.00148451 -fiat/revs sendtoaddress RQsXxeSEk3wMn6m6VB1jCFyiR71UnMawB5 0.00148547 -fiat/revs sendtoaddress RHi8DDS9FqDdtnt9nC6xceKJVFT5D3Cc8Q 0.00148561 -fiat/revs sendtoaddress RTNX7wpYoNdvUoSMRdPNWQzL3AMDST36rZ 0.00148577 -fiat/revs sendtoaddress RRVoAUgBRJsiL5CZmS1nRm9NqUQgWuJ6uj 0.00148608 -fiat/revs sendtoaddress RLKNFzuGy2dWGxQ8iPupq1jo7UsNr8bdA2 0.00149988 -fiat/revs sendtoaddress RA37kiuoH7ijrY3Cs3odni86pTCJAeGa5C 0.00150000 -fiat/revs sendtoaddress RJWmGzaLg5a79FQfA3fXE2mPqAzS2gokX2 0.00150698 -fiat/revs sendtoaddress RP3TH3wS3X4mNFHmW5juiGei116Q21VyU9 0.00151549 -fiat/revs sendtoaddress RNALvsX3e3yNBy7JGCepvjh72LuxmnBGdA 0.00152000 -fiat/revs sendtoaddress RG2j3GUPNDrCJNLkPJUqg7aZhHrac1tScV 0.00152441 -fiat/revs sendtoaddress RRy3EUvjPJNqdswvTBhoYF6pZWKukXZB8r 0.00152494 -fiat/revs sendtoaddress RXCn6KJesqRR3uqabxhFJt6YU9ThM1ViUX 0.00152837 -fiat/revs sendtoaddress RAZ5BeXSdwtpMcwGE6Bn8zb7a9Niem9TUB 0.00153189 -fiat/revs sendtoaddress RFaWPeWNBbAsfccbX7xZb9ULNzuoEYhjGW 0.00153300 -fiat/revs sendtoaddress RDDksM8G17qGSztTDVvr24PCZ2EZMWLmEW 0.00153393 -fiat/revs sendtoaddress RXYmQH26fYDfUT3ygBtRtwqhY6zNX6oEGN 0.00153673 -fiat/revs sendtoaddress RMDsMSo8KPKPJG4dbvHnD8phviLxNRxrPU 0.00153991 -fiat/revs sendtoaddress RN39N98tcKKcZa3hQMcnB6ytSenFa5aQey 0.00154389 -fiat/revs sendtoaddress RNmgrHHSs1qG2U3CJd5a89rX9GKLGaGpfN 0.00154576 -fiat/revs sendtoaddress RApLUFSpBEQ2inmZy1yheEuzBBoNbj4HrU 0.00154579 -fiat/revs sendtoaddress RRMDHYr22f6smxKCySRawaPZRRz6DeBhjK 0.00155044 -fiat/revs sendtoaddress RSgKiE5od1cGV8htRpgrUyBMsmctjyPjB6 0.00155159 -fiat/revs sendtoaddress RPXjZp7sSJG92M9fWcuAyxVS6fNNo1H3ki 0.00155355 -fiat/revs sendtoaddress RNbjwxgpXrW6hr8dx22LruZAXpoEdeiFdc 0.00156576 -fiat/revs sendtoaddress RFDqgJ2yXB4L3TNebcLVdCGm3vU5FdgUc8 0.00156602 -fiat/revs sendtoaddress RGPNzV1MFCYhi9a1oLJFUfnQxcjmSNwygP 0.00156757 -fiat/revs sendtoaddress RGNddQ8oqqSMSLMYRBeHPAQvyNLzH3sNME 0.00157287 -fiat/revs sendtoaddress REmwDkMpq1CYrmyqMYB7oPsTcug7zLWzQj 0.00158088 -fiat/revs sendtoaddress RNRYMiXY4HgdPuHWbPiRqFSZSH5PBSGkFZ 0.00159044 -fiat/revs sendtoaddress RGm8zNcoA2ZGr52KEA2jbTUZeQm1V2Et7d 0.00160000 -fiat/revs sendtoaddress RXqsSBHA3trbtRygCAe6GnUV4zVkDUnWgf 0.00160889 -fiat/revs sendtoaddress RV8dbiG29i5M58WAgLPdvN2B3yMhUun1J1 0.00161329 -fiat/revs sendtoaddress RKvxxfU8yBvfrUz6ucip8AvUBA712dNrEn 0.00161373 -fiat/revs sendtoaddress RM5HTwVGUDGgTeZG45tRBPLK2Ago3Ag1Rv 0.00163333 -fiat/revs sendtoaddress RQ7jWY5kE19hpCEsZ3dGkh6gPT3nC5HBtU 0.00163780 -fiat/revs sendtoaddress RWnXw1DVmoGRNLYsFTSaJdUNmv49LC7XQd 0.00163974 -fiat/revs sendtoaddress RMKrBDwzMGsnan3EeEtxQsM1evXsUsv1b2 0.00164654 -fiat/revs sendtoaddress RRnWPs3gKZsP4gVoKi3QRSRsZC3DuFGKRL 0.00165409 -fiat/revs sendtoaddress RBTNh41REkxh6VysAn3K2vLJAKU7JBYX3v 0.00165564 -fiat/revs sendtoaddress RNqn76tnLVjfPZUVkVQvnYkS6PHeSfzTbo 0.00166000 -fiat/revs sendtoaddress REwn1pUyDsWFr2Hnfm5Dted9q8EjL2XGNc 0.00166359 -fiat/revs sendtoaddress RV37MfeBD1QTeoLHteab3j4mFVrsSaGMJx 0.00167000 -fiat/revs sendtoaddress RDCexddsQR1p9TBUHh2gsuTUqgrGyShEMP 0.00167100 -fiat/revs sendtoaddress RKDdR8Tu9MN3pvuDw7kQqtYxAWk5iSF9cD 0.00167115 -fiat/revs sendtoaddress RJ3FKYWoeCYvz1jmcnpS534nPeApKfbqYK 0.00167445 -fiat/revs sendtoaddress RQeph7ZnBNh2puoVxPb879yGuvoGkyupcg 0.00167600 -fiat/revs sendtoaddress RWskZWQ2HV5S8kXaoTyVi2X1TJo7xL7usL 0.00168697 -fiat/revs sendtoaddress RKVkfF3VQvHP6M6hFPUREH2szFsjCcqQDc 0.00168960 -fiat/revs sendtoaddress RAkmrQM6tqF9caHbFyq5PaqdaaR1UeMceL 0.00169608 -fiat/revs sendtoaddress RFgfhL7GhpDHbPgJpPXuRY7CmKHEuejFDj 0.00169698 -fiat/revs sendtoaddress RNe4w8ecJBKXdorsbEP23VfJuZFSuU5D2g 0.00169786 -fiat/revs sendtoaddress RH3LUtGCjvYah4yLbEj8LvHeTfGPFpTAEf 0.00170000 -fiat/revs sendtoaddress RCgdtQ53mXryEgwwYqrjvdHV86PJJ9b9BM 0.00171654 -fiat/revs sendtoaddress RFSkQDLjcusMZj66zMfmVTAfxH2qNHQMyt 0.00171884 -fiat/revs sendtoaddress RCkMDaPzgfJtQBuN6jSGRPB8iwqA5Ky1Q4 0.00172670 -fiat/revs sendtoaddress RShDitn777KWUDdkTcLHNWRuwGYuyNZbnx 0.00172766 -fiat/revs sendtoaddress RWMWtYZzMJA1SyUhA4XkZcvcdrcBnJ3bzN 0.00172927 -fiat/revs sendtoaddress RP3WL1cy3VS6J2tYyke81MFzwBUja1eKA1 0.00172936 -fiat/revs sendtoaddress RKJcnBJsj4yGehCjinQsrL8VDaaHZ2Sg8f 0.00173333 -fiat/revs sendtoaddress RSzXUBKxQyVXeZcggzYipyAaP8HBSr7xcL 0.00173355 -fiat/revs sendtoaddress RTMYHupJHZcNdXNFEN8D2GMfzj54wuQDrr 0.00173993 -fiat/revs sendtoaddress RJnjSMUN1R5V5v8HjkdAs19UScgdSCoKsk 0.00174135 -fiat/revs sendtoaddress bJ5spiPdoSqTpAYAvJwNEEMHGb5LdePCGv 0.00174497 -fiat/revs sendtoaddress RASakeki9bt2H1VJ31fwVLY7dh1xXCiY9h 0.00174905 -fiat/revs sendtoaddress RX3XQsK6ECv4ju2bVMHpStYrPv5mXVdChp 0.00175812 -fiat/revs sendtoaddress RJ4XxnUrRhdMUC4AHQ6FCuN6nQMRrom8mw 0.00176083 -fiat/revs sendtoaddress RGQET7YQnpd6CCT2m5VBrEWQuzEo9gfGWA 0.00176279 -fiat/revs sendtoaddress RRx6NXa62xJQvnagsoDLWXfyYMC5aypG42 0.00176353 -fiat/revs sendtoaddress REjBNXxCA69F8ZwZvuRScRcGaiNUG6KGy9 0.00177339 -fiat/revs sendtoaddress RQwpS4fRptjEvMawGRUbAu74vMLhzryFAX 0.00177458 -fiat/revs sendtoaddress RX5ESnNxB6gde34pu8rAyD5B4WMbMTM8dT 0.00177505 -fiat/revs sendtoaddress RPJY9xxYtp5Nojio6bhsKcW6qRHaLFjQXi 0.00177933 -fiat/revs sendtoaddress RV9DVNCSdtq5PRDSFmu1cJT7vXtNU9eUJE 0.00177997 -fiat/revs sendtoaddress RYTk5XMNjeds4FXw5z693LGreCuTLke6FD 0.00178240 -fiat/revs sendtoaddress RAT43A36pm2yvgcz14xUnW775dRPGVLawh 0.00178273 -fiat/revs sendtoaddress RS7UwqXVxjBqWVzzVJ7sHgUiVcib3ZmwK9 0.00179087 -fiat/revs sendtoaddress REUb187i9zTAE5Tny1N3Hg1Z7hFfP1sWEU 0.00179136 -fiat/revs sendtoaddress RXFp6rtqqo5WVctcZKNGs52mFYaoaxCJGj 0.00179541 -fiat/revs sendtoaddress RLx9NQ54z9R65rBusU83R4bFT6qmNNHkkm 0.00180000 -fiat/revs sendtoaddress RVQFx6vdjLhx8wRFiwtdrUmHdz76aGpDog 0.00180530 -fiat/revs sendtoaddress RCSg8zE5afYkrfVDTL2gxsgVQ6xzUFyhUC 0.00180566 -fiat/revs sendtoaddress RRfWYAfp6Rwna7X7L3gcF9kM3xKpM9uGTk 0.00181056 -fiat/revs sendtoaddress RTG7rUtVu85A9t5qSK9p9pkzUvVH68SHW6 0.00181160 -fiat/revs sendtoaddress RBXfuevGTVKpxiMYmC6Rr3AhCVzWCTxrA5 0.00181206 -fiat/revs sendtoaddress RSbp4dsvMVu6K2cyQbRjgtxFJWV2L6nb3v 0.00181502 -fiat/revs sendtoaddress R9qfhG7LNMHHfVqLkuyxGk6K1UmVeBH7os 0.00181766 -fiat/revs sendtoaddress RFpWX1RYTsdSGmefDLDWwhLAzP9ZwbmsCd 0.00181924 -fiat/revs sendtoaddress RH6KoiuWtRjandXha4EziHP5PYrRLEmdXY 0.00182000 -fiat/revs sendtoaddress RFbU2c1w9BcCw3WSHMiPXikG6VPW3t17Eg 0.00182485 -fiat/revs sendtoaddress RMqtG9aQ1mLoY93bdwEXXo6zinzYbzH7L1 0.00182577 -fiat/revs sendtoaddress REjUG1UBHtiLUKFtoThw6tvsKtS1DEUVb7 0.00182762 -fiat/revs sendtoaddress RShqK83q4QBNbPJuR3ysa3Kts6MZJg61kg 0.00182899 -fiat/revs sendtoaddress RGvwfCTvfM7GBy4QeQbqALa5NphrMSXE19 0.00182929 -fiat/revs sendtoaddress RRzF8NaS5X4PPTCuTnyJmzAaQALeN2ESKy 0.00183611 -fiat/revs sendtoaddress RKUHmY7KFPY8DPARxtsQ2JpVx7XtxMrSkX 0.00184000 -fiat/revs sendtoaddress RFwinMVEPWFQRFxwDf4ZeYr2w8ttV3jynV 0.00184045 -fiat/revs sendtoaddress RStakmXa3CsCVs18n2tZtdic9R8guLNdep 0.00184106 -fiat/revs sendtoaddress RUWNgi46VAFtMEvS7S7RTbh9DCUR5PAmC6 0.00184439 -fiat/revs sendtoaddress RTTpRrS8RoSDXUExRuU67Cw6LQ8n4pJYXV 0.00184500 -fiat/revs sendtoaddress RC2yPp2r1JNgjk9c2KwxJ1A1arifhQ1gkY 0.00185426 -fiat/revs sendtoaddress RLuGgzU5GCiwCM2CkAFuWSsprUhg9b1Eiq 0.00186231 -fiat/revs sendtoaddress RRQpyXT4CokzFR7dnNFt471TNrvo7hvoqL 0.00186311 -fiat/revs sendtoaddress RWYa5g7u2cDemm9Yb6ZdwVWLXDy9is2jSy 0.00187455 -fiat/revs sendtoaddress RQdtzfkyPJCpki6SWv5nALAAJY7ucQCh2u 0.00188008 -fiat/revs sendtoaddress RULtdK7Y6voGiBG8w1iiiZd47istMDRFEF 0.00188348 -fiat/revs sendtoaddress RCgq8eFejNHoXSadwuecYffguqyFBBmrku 0.00188768 -fiat/revs sendtoaddress RKFekgD6MAMYpPT3SimfKrpbYmWLJn9mAT 0.00189000 -fiat/revs sendtoaddress RMkJJV42BbE1QKfjxB3257DKf2JN7oGPC6 0.00189442 -fiat/revs sendtoaddress RMhuTyUELSw9wMKsbqiW3s7FnLiav5uBe3 0.00189719 -fiat/revs sendtoaddress RGx9anjQba8UE8LJ1fSxQVV6AjkNr6WFnV 0.00189863 -fiat/revs sendtoaddress RVZYP4ZQzAVCyhSqtT72eUj9bVm1TxPzPM 0.00190000 -fiat/revs sendtoaddress RAiK849uoN4QHZgkNH4jHxAv8P1ZEaYodR 0.00190134 -fiat/revs sendtoaddress RJRAfaYJHw1ihvhAhXYvxRWXwSSadSGNb6 0.00190385 -fiat/revs sendtoaddress RNZ4nGZBF5tvgwSQgNNqhqYoFpb6bUbCTw 0.00190815 -fiat/revs sendtoaddress RMmD2aL1fpZb8rkLmR1twJM3pAZxRb2f1p 0.00191899 -fiat/revs sendtoaddress RUGY2tyJYVFrj1p7e2hVFuzZZiSQPwBgA1 0.00192110 -fiat/revs sendtoaddress RAV7QoiNQoQRdi2ZMG2GA5bawDjwd8CLX5 0.00193500 -fiat/revs sendtoaddress RJdS9utHk5kVNtNnrKwuf4s5pspd5MZPJf 0.00193501 -fiat/revs sendtoaddress RYYbhgAQwfQvAgbCrSgg7WvxQsfNgA8JGj 0.00194330 -fiat/revs sendtoaddress RUzqovHqDaMDRozDQkvB3ub1f3ZAfiEJCv 0.00195038 -fiat/revs sendtoaddress RNBuo6Dwhdf7bGN1paXuB4MVqezgGvJqZc 0.00195512 -fiat/revs sendtoaddress RCkX7xEnJM8NVFkEbXUQzpaEUrAVjcZiXx 0.00196000 -fiat/revs sendtoaddress RDDyDjBsxfpGE5Z5bK1SX5fCuW5VdrG3f9 0.00196552 -fiat/revs sendtoaddress RAm9ceogNJv5Ce95ZYp4WqSm6eiqRcPZdi 0.00197074 -fiat/revs sendtoaddress RAxUWnciUuHbHcdmvTu7YbUvebWW8x7aBK 0.00198000 -fiat/revs sendtoaddress REKnkrbpQYFT92oWinHRyEAQyyDXVH1kHr 0.00198589 -fiat/revs sendtoaddress RWx9Aa9FmSbeM5oH3APSdXYUd6gqnRFiWw 0.00199947 -fiat/revs sendtoaddress RCrUqKoodLH45fPdAU1yf5HRHjMJ2cpiij 0.00200000 -fiat/revs sendtoaddress RB8QJBwGeV94xHSghzMAzAHU4bghiFygyW 0.00200097 -fiat/revs sendtoaddress RUhhdL8cmTjReV4AgSptJHfAwTARQ9uuHv 0.00201096 -fiat/revs sendtoaddress RTbq9Y3ELg3yXjiRGzGu5oeaF89ngFXQjk 0.00202124 -fiat/revs sendtoaddress bVC4WDsetBA62s9FJ3qcgZtwatu4SABNgo 0.00202350 -fiat/revs sendtoaddress RKGPi64sn4raAAturuwFTnZtS2G3huXxwz 0.00202500 -fiat/revs sendtoaddress RSfYMSpamdfbucwdRaLGSxc96wuQ1n3jhD 0.00203461 -fiat/revs sendtoaddress RWNYSGJs4raeSXD9x8XQrRucu3Xq7C227x 0.00204000 -fiat/revs sendtoaddress R9QQv9F9b4rm1zER9yUdfwmRStiF78FvDv 0.00204814 -fiat/revs sendtoaddress RY7dox4TpmvRHDYqKtae9M2TW4SWHyncyV 0.00205105 -fiat/revs sendtoaddress RFqp2Zpx4gG8v8pc3P7vGVHiboDHrDoVDp 0.00206565 -fiat/revs sendtoaddress RJTKsexemHUL56qicok2QRrefbGCn1TPN8 0.00206874 -fiat/revs sendtoaddress RQtvERR5krE57raqBtR1xDwrRtmADWUQfu 0.00206917 -fiat/revs sendtoaddress RXvRVY6YF4AHXiVE3vv5WDBKB4Tsf7C1YK 0.00207000 -fiat/revs sendtoaddress RKgjr5nK7AkFkXHvFGUVcN5P8Aurihy7Tf 0.00208653 -fiat/revs sendtoaddress RMkSWmcGn3LzWkx3BySBnqdZ3qqbjpa9af 0.00210000 -fiat/revs sendtoaddress RLVjYeyEZfJh2Ee5zMugPF5TwtPGNLhyhK 0.00211335 -fiat/revs sendtoaddress RXAfhUXp1tqaZZqVr8UxoQQkYSPXD92SsW 0.00211741 -fiat/revs sendtoaddress RVqryav1QCJgZnAGejqkggennp6dKDeHqw 0.00212967 -fiat/revs sendtoaddress RQMpzX58t3ERid92MYbY1dddGaFmsjvGvr 0.00213643 -fiat/revs sendtoaddress RC8URnszMKkWFNzXQSKrZtNnf9pephHUwV 0.00213965 -fiat/revs sendtoaddress RL72hip4i1Gx2bVvWaYxc6M2HskqgLZBLH 0.00214489 -fiat/revs sendtoaddress RX7pjR2f8smjvjxkLyiKy1RjA7ekVqNGMY 0.00216760 -fiat/revs sendtoaddress RCwpbz3g4Ck7GnPPNUksXPTZ1NP7GaRToh 0.00217068 -fiat/revs sendtoaddress RPM8Zo4QW5NMecCc6pAFSwktyXX3ukE4C7 0.00217223 -fiat/revs sendtoaddress RCPUh6Fse45PELuQUDA5HGFhVBNFu82oWt 0.00217331 -fiat/revs sendtoaddress RHD7XADLT4YHs8Ctx8HdxTo6XRyEnYRGZJ 0.00218171 -fiat/revs sendtoaddress RCoKFFNrT2FTDyu1EfoHmhViJrRXGvBCMj 0.00218453 -fiat/revs sendtoaddress RKerSY4eucCyncBd7BdWSZEAH7VSu1HdPf 0.00218517 -fiat/revs sendtoaddress RMRJteo9sr51uVrpQEaqgczeueoqqibzbK 0.00218967 -fiat/revs sendtoaddress RGSeaJwkpyGHTe5pyXEyJcKp3gnmJqB9Zo 0.00218970 -fiat/revs sendtoaddress RKqRZXRpYE3cbfk18K8V6Ln6AU51kVXRXY 0.00219017 -fiat/revs sendtoaddress RSMwojiXo66Z6ktfaJMsYpqHyTJViBfHZv 0.00219171 -fiat/revs sendtoaddress RRJVbQkUrBvmm8hKJq5mh7NTbuv8wHWz72 0.00219922 -fiat/revs sendtoaddress RQbjTibwdi4E8ZR2hTo1L6MMsbkvJ56KWe 0.00220000 -fiat/revs sendtoaddress RWEg4HBjwcp73F5mUMnk78WP67h2cdimfi 0.00220532 -fiat/revs sendtoaddress RLxaZTUtVXND7tPKjNyNF9Abs42Jq4Dudr 0.00221244 -fiat/revs sendtoaddress RFuk8k4uk6Tmw2YtoPScoZgbvDuJxDH3Jc 0.00222241 -fiat/revs sendtoaddress RNsT5eUypd6hqVXRjy28RdJnMkoYWAdq42 0.00223431 -fiat/revs sendtoaddress bRg1qs6zncvPRUSNmDke5jGpsNonZVhh3G 0.00223573 -fiat/revs sendtoaddress RQfnBQuszuEquT7Vxuh5gWedoBZd1FoSjS 0.00223741 -fiat/revs sendtoaddress RA6yit6Hb6pciSd8FUVA4eTT9yEP3rrk7T 0.00225000 -fiat/revs sendtoaddress RLy4gVVxcy6wXEgtAyyR8Q4JWfTJp7EuPP 0.00225079 -fiat/revs sendtoaddress RKiiEMQ7mZHnVa6MJQNwp6LYeRK619qFUb 0.00225564 -fiat/revs sendtoaddress RV54t7YcKDpnpNRgyhK4H2yAfeQkAt9zKq 0.00226000 -fiat/revs sendtoaddress RQqFkBHLA2Q1pJZodRYMzyLc1nxS6DftwT 0.00226666 -fiat/revs sendtoaddress RBLBwYftLBgusK3vAgjFdqbMMHbteoZsc3 0.00226894 -fiat/revs sendtoaddress RManxVAG4KoJmKmAfyjfBmq112Fq9XMfsu 0.00227445 -fiat/revs sendtoaddress RKtNZyssCAMevnTgC5A1wGcE3WkLcqta6Z 0.00227700 -fiat/revs sendtoaddress RXsJPpt8kRYxxzzpTAkpiWfvrDdDohP5SX 0.00227727 -fiat/revs sendtoaddress RPhQs3H1kghT1ct6q9TECbha8NHQkJBMNx 0.00228856 -fiat/revs sendtoaddress RQEoZfgtEEoTt3uF6dFvZCRHbfrrzp4GhM 0.00228948 -fiat/revs sendtoaddress RCU71uBeuTkreciooCUjCuJQQ5vU3p1TT2 0.00229142 -fiat/revs sendtoaddress RB8JA6Q2RzMeJ8ybQpAhWStC13yV2WXTeo 0.00229164 -fiat/revs sendtoaddress RF8yWqxMgmP3opDURLV8V7CN3X5YWPrezT 0.00229176 -fiat/revs sendtoaddress RDpF6k7whMhyoH5Mk3FazWGrVLpoo5D6vU 0.00229306 -fiat/revs sendtoaddress REb2upmLdpLbyjxmfSUGMUDjNs8Ajy7Pr6 0.00229319 -fiat/revs sendtoaddress RYNCqaarRS1j98fzzN3Bjxfir5ugR8qyrU 0.00229813 -fiat/revs sendtoaddress RLUQmN6Doni6kojns7vGWn8P96UeLPVnak 0.00229964 -fiat/revs sendtoaddress RKRiSqUTCMikriCzjww8PJ8NwEtW2gnNVZ 0.00230000 -fiat/revs sendtoaddress RLD9RztMbA5c9CNefGzzfeGVuNzdw1MEFC 0.00230499 -fiat/revs sendtoaddress RFEJ6pj96T4hUReRAuH3sctPASczv9gd5z 0.00230697 -fiat/revs sendtoaddress RRqJHrMGyum7vCCkJWuxCQ8QJtX3U2XuDc 0.00231868 -fiat/revs sendtoaddress RDweVb84aPfmycqzc6nH3LGtZq8nYC9ofL 0.00232000 -fiat/revs sendtoaddress RADKNZ4VegLqCpzfRJrMN9WX8Nozn3wHzM 0.00232083 -fiat/revs sendtoaddress RHWMLChrFegKbi7jL7egzzt83n5cKhX4pR 0.00232238 -fiat/revs sendtoaddress R9NGQG351faUVAN52DXyyvxc8TYF7tyShJ 0.00232484 -fiat/revs sendtoaddress RRCktF4kViRKF1avqjiozSXVeYtwcesfpb 0.00232803 -fiat/revs sendtoaddress RGzJiVwYpJzdNTgXApC5A5GWNCNF82pEMh 0.00232927 -fiat/revs sendtoaddress RXcryu5hzDn21F81tK9sz9oz7vkCFpNhhc 0.00234000 -fiat/revs sendtoaddress RJyK6vkXs5WwiFXcW3yJwF5PV68vEmhHYs 0.00234273 -fiat/revs sendtoaddress RWKYEZV1speUcKFPaXswckGAfE4YnfwF1y 0.00236033 -fiat/revs sendtoaddress RSrs4rnCwM8uudGGGGyE8mq5i66o6AKomM 0.00236104 -fiat/revs sendtoaddress RLmzCjkSLXdWNgF2cZJ458w2SACFVGwtG2 0.00236188 -fiat/revs sendtoaddress RVf12bJccGNJMuBJTk9c7dPXEs95HaoKyA 0.00236578 -fiat/revs sendtoaddress RLTQZgmuzoQPTpJjPwxQ7h8KVoxbK7iMuQ 0.00237099 -fiat/revs sendtoaddress RRLvRXrTyF7GSxjKM417V2AnnvNASrQktA 0.00237500 -fiat/revs sendtoaddress RCUK6raZWheYe5Qyxp3EdFHUmRuziqbu4U 0.00237663 -fiat/revs sendtoaddress RSWfdwk7FVdWVTA2GC6bDdJVM5zdEoSbaZ 0.00238126 -fiat/revs sendtoaddress RJPdTgWcynP98j2cpwUUTnwfeWQJMze9a3 0.00238500 -fiat/revs sendtoaddress RCNunRZo4A5hMeXBZvyahbvtwZtBsfeCkY 0.00239509 -fiat/revs sendtoaddress RKB8KG1WtgFQhW6JsrFqQUJiLE5sLfVMtW 0.00240000 -fiat/revs sendtoaddress RQf2Ppqf9H9hWsNKyFw8JNbNcnvji3QiXY 0.00240007 -fiat/revs sendtoaddress RYUdXw4Cf3UjPtD5yoZ7rafQEGMbvW91sy 0.00240162 -fiat/revs sendtoaddress RDWfz17bFrzfakebU1pmZ6HEPmST2Dm6mh 0.00240950 -fiat/revs sendtoaddress RUjv1FB736TdSLX7fx5bCDjAEoPx2Zrg9C 0.00240964 -fiat/revs sendtoaddress RK5oBLryFmPGbY1uZawvrPdffUAYbpwktd 0.00241214 -fiat/revs sendtoaddress RKmUsB2Co2DJQcijvitns3KV6ZxiJAKpDx 0.00241999 -fiat/revs sendtoaddress RJZzbb12rUwBQGAFyHX1QzErs8chJVLDSW 0.00243774 -fiat/revs sendtoaddress RQ3GxUYwrT4fPE3DmsUjYmg83nLEBThjhe 0.00243907 -fiat/revs sendtoaddress RTkhSkczroDP628UoM9DMqKwEyi1UUjcZe 0.00243914 -fiat/revs sendtoaddress RLD6nfQxEQgQGesxPhetM61hrsZwtqMaYh 0.00244000 -fiat/revs sendtoaddress R9Wxst3iqtw3t5HMmnWFVkYwkQoyh1W7TR 0.00244362 -fiat/revs sendtoaddress RRh7djUq9f3Ry2AAXUE74M9TQmXgpUc3EZ 0.00244544 -fiat/revs sendtoaddress RVYsacwXZLJLCpS1z5qDN41WuTnmNGpj9B 0.00244911 -fiat/revs sendtoaddress RUj8eGRRVt6WsSGYo2CzBYcnEWKTCQU7iE 0.00245293 -fiat/revs sendtoaddress RHnFcLNqW4npFaePSFuZCxffpy7inAoDhC 0.00245375 -fiat/revs sendtoaddress RLijmmWphW6amF9LuZxQxW8fw9YaZRdZxT 0.00245834 -fiat/revs sendtoaddress RNQZvqFxJtf38oLDuXJqLA25oef5rXG269 0.00246389 -fiat/revs sendtoaddress RSrEodXFdTv2obMZkUaRiLqMyXVc6KJw2b 0.00246852 -fiat/revs sendtoaddress RPfvDDUjay6EDhnHsNsQ7PGodLo5tnq2nu 0.00247300 -fiat/revs sendtoaddress RW7d9pNJopJrYREvkt1D7rNgktxRT9NPhc 0.00247500 -fiat/revs sendtoaddress RVkUKd4qzfNUfMvX6oWVxGkTxm1e2FiBEk 0.00247673 -fiat/revs sendtoaddress RHVhxGa2kwmCZVfx8sHhYAMUCi53amv6VH 0.00248962 -fiat/revs sendtoaddress bKVAUiwEweNtBRSGjG9RSri3ARbeeb2uge 0.00249709 -fiat/revs sendtoaddress RHDEqszVquC1v3Mh3W3346ErJXYX44CtN9 0.00249758 -fiat/revs sendtoaddress RDVTxW7PR1M2vqKYZRvk6f8cGSb8ikjvkN 0.00250000 -fiat/revs sendtoaddress RQVCCAukNHw8TZ12AhWvWoCRjnvMi3wbUy 0.00251325 -fiat/revs sendtoaddress RR8QX3VXRGzgpjjRtjcbjJt7nHXcGNL58v 0.00251481 -fiat/revs sendtoaddress RM8kHqr6vfkXvNDA29promMe8ZqMXYGLRT 0.00251794 -fiat/revs sendtoaddress RJxesc43RSWFekeeCrAuZmgofNX7w3KU5n 0.00251860 -fiat/revs sendtoaddress RYcJTiry3by1WzEn31ytPq44CV1QxS1ZbU 0.00252636 -fiat/revs sendtoaddress REhg6PWAGhNCDyf5b6iDQxNHeAJVesfu5f 0.00252848 -fiat/revs sendtoaddress RLQPLcmvz3E7b83Kh1HMGg6qJUyBHCz5tV 0.00253309 -fiat/revs sendtoaddress RJ3rUEMhEcSegV5RGVdQT2RgxjE5w8fkjQ 0.00253384 -fiat/revs sendtoaddress RBDCGXPgEFuxBnr2HvkpAdLPAbqknF23tT 0.00254152 -fiat/revs sendtoaddress RMjb6nX9PyLmJs2wFb1ahcbvTpPSjjm6pa 0.00254592 -fiat/revs sendtoaddress RHW4E4ySe2CguuNDhs562zgk4usVAeHjSZ 0.00254693 -fiat/revs sendtoaddress RR2HTV9hk7EuNASnq1Ew47DRHK2qzZVUKJ 0.00254715 -fiat/revs sendtoaddress RTodUjKG8EeAvYEMDruC4sP7JGRVJsMVy8 0.00255500 -fiat/revs sendtoaddress RA9M1PN1UmJQWsGw9PJrjPTZZABX62V8iS 0.00255704 -fiat/revs sendtoaddress RQUfAnNchraV79FEFqViF62H1xQcVD7bRL 0.00256000 -fiat/revs sendtoaddress RCH4ptYxW6yCV8mEbk5wdLRWzBMGYqsoNN 0.00256500 -fiat/revs sendtoaddress RNsMgfmVWNNh2cLQoEyVyszYJC9EXCX9Rt 0.00256995 -fiat/revs sendtoaddress RXHfHkL9UqfZF5WutrUwtmxwPRgBApaUew 0.00257355 -fiat/revs sendtoaddress RG3g3keHreRZpQMwMNfn5DkhR3hJ6NxsEh 0.00257714 -fiat/revs sendtoaddress RTZWhKuf5NsFexExGModXo9H21BNXAE4ny 0.00258446 -fiat/revs sendtoaddress RU5aWh9E47LZrH44KV6ngd5WWecucM92yS 0.00258484 -fiat/revs sendtoaddress RQt61MBKuMdBFCiowAqrztzqmwprn2e1Ba 0.00258972 -fiat/revs sendtoaddress RMW4Fg6Ln42CUBwxdTrcYRUXsBnyu3viam 0.00260000 -fiat/revs sendtoaddress RTjpxjzq2dbzfwUKo6jSti724WLizs1d2P 0.00260517 -fiat/revs sendtoaddress RLQkvTkNvc5Q2A9A5jH5KiuFs2MA8mddtS 0.00260601 -fiat/revs sendtoaddress RXHKWgWyKWjJFUt76KXdCQUPJd2ZUNSvXJ 0.00260756 -fiat/revs sendtoaddress RGcevhq4L6UuYHsxKmAtZ5wyLip4KSUT67 0.00261000 -fiat/revs sendtoaddress RFB29tb7XYj4KXpEd14RwhqvcUj4nqymQ6 0.00261040 -fiat/revs sendtoaddress RCmf3dywrRtkh4VCEjMN76oCQ8oZ8HS7oZ 0.00261743 -fiat/revs sendtoaddress RDD9JqrBhu3L2KvPfxVYK23WCpbQaXKG9j 0.00262116 -fiat/revs sendtoaddress RN4V7qp2PL4ZqirHVpi4gVuVmAGq27qcS5 0.00262658 -fiat/revs sendtoaddress RHcSm2JSwLDW2uXurvdRmUDom6kY4SsBSY 0.00264000 -fiat/revs sendtoaddress RSsihcBqpnVhfRKLshBgqUYktbRVYFduCA 0.00264152 -fiat/revs sendtoaddress RTxqJGt142bBPHDHP7E2hJ6U55rhQpSeq9 0.00264809 -fiat/revs sendtoaddress RQEwhs2fp2CEmeh4NNoJPnqukHRTUX4tZ9 0.00265248 -fiat/revs sendtoaddress RLvLChTLchoK5RbF5pTFFD2UtRFbavYvZt 0.00265377 -fiat/revs sendtoaddress RSAAFMcE7petktndwnUaYnruExywX5YAZv 0.00265500 -fiat/revs sendtoaddress RYL2QA8uDcXeyt3B8trsmN13Y6cDadH9yQ 0.00267291 -fiat/revs sendtoaddress RD2xhvXyqys5U84G3aBcjKoucjLnRpSr2a 0.00267867 -fiat/revs sendtoaddress RALSGi7hiYS97ma397xJpA18PfRwc1Pv2V 0.00267869 -fiat/revs sendtoaddress RN4CNfvabV3TNrnELBwtitb9EHjoSEJ9qp 0.00268000 -fiat/revs sendtoaddress RHKgvMnYcvJuG3BpYidfDuMGRQTbG5dQKu 0.00268294 -fiat/revs sendtoaddress RLNjx82pYhJ1H1SaTPboSTRJ4EemguJC1s 0.00269242 -fiat/revs sendtoaddress RGaMPMLL9GofpEs6u97vKmKPcw6pL31hKC 0.00269327 -fiat/revs sendtoaddress RJ3AvmEHeJoUejHAgt8knncKrZoUphWPo9 0.00269650 -fiat/revs sendtoaddress RVrj3f1TEGbYbTij2WmtsQGkiDCb5DboLe 0.00269772 -fiat/revs sendtoaddress RG6a4Ppjz7Zh7swLZSwDnycw8cPcomuGnD 0.00269865 -fiat/revs sendtoaddress RGJypgJ4xStf4HCA4fjk6H6aBZ9Lna9Udh 0.00270000 -fiat/revs sendtoaddress RDg5NyRDUdJfBG3Y6nNMjvVPWemArtwfsz 0.00270842 -fiat/revs sendtoaddress RFm2FQe6B52MRzUZ28oLZCSWjiKeBshr6f 0.00271852 -fiat/revs sendtoaddress RCqouNoqgVGEkveV1ZtY6efp6wm39Vn7s6 0.00272000 -fiat/revs sendtoaddress RBegiXSemGuzvc52zbBtEhTU5L9Dk2TJFh 0.00272697 -fiat/revs sendtoaddress RMGJczat5zynm5eWkrHGHFkQZgL9p3L2KD 0.00272729 -fiat/revs sendtoaddress RCiWJJYxMCBc12QAzQQoZjsweRJVQzfhgN 0.00274000 -fiat/revs sendtoaddress RWuHrzqNrw7TiCJtQ65fuFnnH3ababCczH 0.00274212 -fiat/revs sendtoaddress RBx3Zk1dT2Sp9giMrJ7QRTVExeUXHBkDg2 0.00275053 -fiat/revs sendtoaddress RVTHiqcRLSDexYfTPjDFYbsVuWvMm8h1zA 0.00278000 -fiat/revs sendtoaddress RTTH3A2eydEhGCD5hHVsr7LxGBzkZ59nNS 0.00278164 -fiat/revs sendtoaddress RWx4nWBN2pczASrDkv1godyX7YPCqU2UoV 0.00278540 -fiat/revs sendtoaddress RAsBZ2bumxh4Q92Sp3mtfkHJDrzqwDYD5h 0.00278880 -fiat/revs sendtoaddress RJWX53bWkYLdLQjZghfMot4j17sscczxN5 0.00279387 -fiat/revs sendtoaddress RDL2bYU3vZqDhCSz6CGExR3JuKhdnQG4RY 0.00280000 -fiat/revs sendtoaddress RWpP5odtz1SfECM3h8kmi67zQBPRYezbmZ 0.00280112 -fiat/revs sendtoaddress RJqv6MSyDg9snNcQBGBSZ1AN5xkWkf1hXb 0.00280482 -fiat/revs sendtoaddress RNygcEUuzamyZMYwzcrbsD9eG3Upe876aH 0.00280771 -fiat/revs sendtoaddress RKogDUQ2Pf5XNcUx8iuBBmdst92RxWvKxw 0.00281285 -fiat/revs sendtoaddress RKNm2p4pNe3QJfwJf2auhrGJGp3u9z1nff 0.00282000 -fiat/revs sendtoaddress bQT6AkTbeKTKRpUEu66mCC57jfZSJCQfTo 0.00282872 -fiat/revs sendtoaddress RP35Vw22WSoqfMVG5Zk4sUz1gQiv5Luvrn 0.00283506 -fiat/revs sendtoaddress RWhrRQ6e5QBb9TLsjGoJ3M3ZHEYGBdoxbU 0.00283554 -fiat/revs sendtoaddress RTikf18UdK6WfY8dNhjwHKUvFAzAK68ULW 0.00283589 -fiat/revs sendtoaddress RK5fF3gCswSMfKrJ38y1mGVApu9qAZa8We 0.00283743 -fiat/revs sendtoaddress RTeBWUV8NBFGkgSqeR983kAXGDkNPrKmBk 0.00283891 -fiat/revs sendtoaddress RASAveaALmjVoioiiLzDvo6s2BmKFBZexb 0.00283897 -fiat/revs sendtoaddress R9anQuLfNbMFr75yqDaRaKP5HUXrjPkjVM 0.00284052 -fiat/revs sendtoaddress RPepYn4f8mRW5M9cMkZSgffjuD6eVeEbp4 0.00284469 -fiat/revs sendtoaddress RTfnvGuX9R5dc8JHVJ2WeeZnsbaQ2Fmktr 0.00285055 -fiat/revs sendtoaddress RUeAL3WAJQR54n48jRsRhC8w7cf8CVgxjY 0.00285239 -fiat/revs sendtoaddress RJ6Rpq2ur45xFzoLAe7kPTzXynxY6AyYgb 0.00285511 -fiat/revs sendtoaddress RFLjtj8hj21c2E3keck8UqEnkxSp4dpqo1 0.00286447 -fiat/revs sendtoaddress RMt141AJ7dLKbcnehMZYnfMpVadQajxMo7 0.00287040 -fiat/revs sendtoaddress RPwmiVRHxDFMaFY6Jmb3ta7MqfJRK6Nfo3 0.00287728 -fiat/revs sendtoaddress RFg84ojsR43tWd8CqT1A9dxXh2hPNJmwNq 0.00287810 -fiat/revs sendtoaddress RNpnF2ugepX9jrNd8fiUuKdD2RRqAJKNQU 0.00288000 -fiat/revs sendtoaddress RG2wSMcA9WRtZm8X8zLQRU4uyT5Vt7SGzb 0.00288817 -fiat/revs sendtoaddress RLx2qoMreNRrhqRytHaJkxd2P35b7ARu71 0.00289322 -fiat/revs sendtoaddress bUXz35P2YKqawWC6YnEP8mBy7FUfzNswD8 0.00289397 -fiat/revs sendtoaddress RQcjVSe3N8xEB7FPy33W9Eik9PRfh9FXiY 0.00289477 -fiat/revs sendtoaddress RRGQjtnB56VjwXKQsXitq63tuAXdAKf99f 0.00290000 -fiat/revs sendtoaddress RHqY4Kyi31fdxojHU81Qzgs1YEH16yG4Yi 0.00290230 -fiat/revs sendtoaddress RDt7Xnb8C1ngJoUcxC3ZHaFHEFLuqSmHra 0.00291641 -fiat/revs sendtoaddress RFHiqWAwGN1dsESgJe7namsEbXJ1RqLrtj 0.00292656 -fiat/revs sendtoaddress RAWDGvZ8kwrSQEAZzJzYzVTkrVEv3o8WK5 0.00293586 -fiat/revs sendtoaddress RC7QPrxPPwcC9CnSvEUhD5nFbsouK9vyQF 0.00295684 -fiat/revs sendtoaddress R9HfzxGSPiH4GwAsQuKvpSyXqDWKWZ8H2V 0.00296000 -fiat/revs sendtoaddress RJaoxw2bMJSDhhq2nC93hLXC2vhw56wJNq 0.00296058 -fiat/revs sendtoaddress RLj5iMZ9WFvHQz96jzQghCN2RVv9cndKd1 0.00297349 -fiat/revs sendtoaddress RAgiAKKkSFYqWUMbqDo4sXk6LyNVtuFzDq 0.00299240 -fiat/revs sendtoaddress RWPnfpC8TTZXHGab3NXoxBH3fiM2HB7cRq 0.00299302 -fiat/revs sendtoaddress REbYhVuDNd2Vx6QGJu3SsU92x9LutCjqCg 0.00299666 -fiat/revs sendtoaddress RU9s1QXdShWTWsTsE9DzR4SQ2SWfXFMCTm 0.00299974 -fiat/revs sendtoaddress RF5GRzPVz1q8KyeQEf2eMAxA6pS3wTFNwr 0.00300000 -fiat/revs sendtoaddress RHR12n3D8mFz4KSwEKYats2umh7H6g6ih2 0.00300030 -fiat/revs sendtoaddress RNE2Zp4TrSf8G2qoge7SwJ6BCW3K3tUTuK 0.00300185 -fiat/revs sendtoaddress RUknfYhxg65S7zV2ZQ9g2q3d1FTqqovBQn 0.00300324 -fiat/revs sendtoaddress RBDAo4MNxfAziHu7Ti5ENuREz8KkTgffCF 0.00300696 -fiat/revs sendtoaddress RT87kuAqRJZPnPEny2485iQiFW2z7hN56G 0.00300705 -fiat/revs sendtoaddress RWzzGFM57scbiA5okY4WGnMa2sSRxzwnfK 0.00301417 -fiat/revs sendtoaddress RLnwysQ9jnUBPGU4Dei9dgZKoUKLQq9Ciq 0.00301572 -fiat/revs sendtoaddress RSUWLrZhxAkgPXbPPW6JvESeEMXxEK4Xxa 0.00302066 -fiat/revs sendtoaddress RV7PKuJ6xv9ei2GKxx59QTx9jz11Cfuz75 0.00302221 -fiat/revs sendtoaddress RNm8CqSXkatRZsuUv3V99G7H62yqHi82Xb 0.00302400 -fiat/revs sendtoaddress RDACou4SqjUVxXkxne56Vdp6RTkyNKbHBp 0.00303191 -fiat/revs sendtoaddress RFYrAC7Se4b2foviKcw7dfq9vLz5DMrwic 0.00304000 -fiat/revs sendtoaddress RJDyve3D81gGa685m8ZgwCjbQdTMp7nJnb 0.00304491 -fiat/revs sendtoaddress RKCJ967Y6amxMsXdsU16oCuRKH2Tr5d4is 0.00305646 -fiat/revs sendtoaddress RPESahexcVEhudCmtNW68ABj4P2FR5pUke 0.00306527 -fiat/revs sendtoaddress RK4LV9jgkaUXgcWzTCjJNQZpYrcmTbK3Tf 0.00306786 -fiat/revs sendtoaddress RJboJnf45RX3LRChkCXMuGdEa6EvMBr3xC 0.00307708 -fiat/revs sendtoaddress RKrcyLAsvYUkXd8fAB36akMDLNoZzAinEw 0.00308042 -fiat/revs sendtoaddress RBGwoWaZziY1LvmZ7QWTzDzkFyBuFTS3xD 0.00308287 -fiat/revs sendtoaddress REDy9ovbtk3zHvNd5AeamztwvaG2BKbec1 0.00308441 -fiat/revs sendtoaddress RXvD3Kj5CBoNdHmkuJ7SAK2SjCB8HiL4KJ 0.00310000 -fiat/revs sendtoaddress RTNxWTj9zV8vV6JQVcwQHmksE1emAWKmed 0.00310066 -fiat/revs sendtoaddress RP4g8TzPeHCPbDfnCyw41WUizqAQjF9QYz 0.00310224 -fiat/revs sendtoaddress RE3Ht2vBAEjWVFLDaDKKj38YTfZQUCkQjd 0.00310379 -fiat/revs sendtoaddress RD6HvD6heVkHUKdSrfLLmuUnEy1V1wHbWd 0.00310659 -fiat/revs sendtoaddress RXfPDZmWUZfQiRco4DLNbjQXi82npAHctg 0.00311920 -fiat/revs sendtoaddress RRAX78vs7qPz6K9ftaHuR8f1Ayjc2fxw2D 0.00312000 -fiat/revs sendtoaddress RB2viQamir8exDniy4kSgsFxcavPakn8vv 0.00312260 -fiat/revs sendtoaddress RYVT2p8o2eikCijYxUjbSD9bpaJtCG9qaB 0.00312388 -fiat/revs sendtoaddress RD8MDDSQPK5wbUyrYgAPTnByhyDXQgtMfA 0.00312415 -fiat/revs sendtoaddress RBxQ5oqzwb4SG7e83TNCDjk2ubsxXu1Vw3 0.00313078 -fiat/revs sendtoaddress RFjhZwdawxMFNyN3kgp3Bkn8TSpbh9xrik 0.00313204 -fiat/revs sendtoaddress RRLrQgMkx1yprcMHXV13x8GwEzCXVT9rZN 0.00313217 -fiat/revs sendtoaddress RS3czW9vak4Co2dTs7TjCyStDK8fZ1R4mu 0.00313473 -fiat/revs sendtoaddress RD7MhtsXKSDoGEZ3PqP4rEG69moMjKY5K3 0.00313688 -fiat/revs sendtoaddress RWNYwb3KBotvtvaj5s3qqPQsHs7upgDjHt 0.00313930 -fiat/revs sendtoaddress bJyKFQ7QZku1v1rF3jAKMWQQzSL3bBALD3 0.00315000 -fiat/revs sendtoaddress R9pznwu4BSwfywtoiyxiCXnFxcma8d7hrg 0.00315671 -fiat/revs sendtoaddress RGm3YoaURQHvaSZWVdDqegXBnysgyjZ5JM 0.00316587 -fiat/revs sendtoaddress RQoYsX56kA3mzEvD1DuXedNmHsA9ToJEQu 0.00318623 -fiat/revs sendtoaddress RHQurM2V1umP6NxT5fbMZaEDHocfDB1Mgx 0.00318797 -fiat/revs sendtoaddress RWhUTpLZuJqvMPPXG4fnaVkjGuo4EJb8sQ 0.00318950 -fiat/revs sendtoaddress RW5b7uhVAvBCyQoDSA6FThATcG52ki6dZh 0.00319105 -fiat/revs sendtoaddress RA4f34yigL2F5LRshwimLUa2pGKEjd3Q1Q 0.00320000 -fiat/revs sendtoaddress RCftG6jPbamTVida1uvj27kWhEdWQucKUe 0.00320138 -fiat/revs sendtoaddress RHtK82AohB9HvykGZW6KV8dRnVw8qurs94 0.00320382 -fiat/revs sendtoaddress RJA44JoPbXrpCbKG8fK8YUJ3dq95VU35zC 0.00320537 -fiat/revs sendtoaddress RMsXXmHR6hhqF75nh3VpNzsRV4GWa95QTK 0.00321390 -fiat/revs sendtoaddress RPkzXoSpsbowRhT3oNTDhf7beqFvDQuD1R 0.00321915 -fiat/revs sendtoaddress RCcDrgvJNVuajkQjRm64BeC1Yrmsc7sWBD 0.00322166 -fiat/revs sendtoaddress RMpGXTgY6oPtKQGgoNDGLCRnKu9FXVbZkp 0.00322303 -fiat/revs sendtoaddress RPsfWRiGKXU8coSZcDGEyBQWkWd6gPPcjX 0.00322475 -fiat/revs sendtoaddress RYJERGzbWYyTXHA8AWdwUnZ6rVgfgSgRe4 0.00322969 -fiat/revs sendtoaddress RVeANnBkWWgreuPZq3kUTXwfqXkDCmZvaf 0.00324000 -fiat/revs sendtoaddress RJo2jrYPCcXo4mS8UcPYidG1yuEyXJUKj4 0.00324048 -fiat/revs sendtoaddress RKCyupD36E8NtPvYfdHcCHfuniYZpbAsg5 0.00324177 -fiat/revs sendtoaddress RCLSe214qvF6H4qiguixLFG6FWPAACg1pf 0.00324511 -fiat/revs sendtoaddress RYTWcUZ7fXmLFbX6ihaEEb2p16734MUUAQ 0.00325313 -fiat/revs sendtoaddress RW85nV6Lf6Eq9Zdq4Ek5h4yrprByuhb42G 0.00325344 -fiat/revs sendtoaddress REMQfmHbLtYZZbgUtf7JRAy4N9rrVxLujJ 0.00325563 -fiat/revs sendtoaddress RPcU1gzFtbQJGfsuqiTM1tMhMy2wQFyy6n 0.00326026 -fiat/revs sendtoaddress RGjV5EF8puKa9QAxQbk9CxzMoHPcmYi7bJ 0.00326063 -fiat/revs sendtoaddress RVB5DpX1y3P4DtZn3YK71MQKYpKNykZ6Ft 0.00327430 -fiat/revs sendtoaddress RMpvppcdkaNnyTbZoQftLXCER2aWCXa9DZ 0.00327697 -fiat/revs sendtoaddress RAq9VoX6ZouCURwE6rpTHzyTa2ivPhQVQZ 0.00328945 -fiat/revs sendtoaddress RSKDdYmdrW45hyLy6BFi1rPD7DDgCcZXSN 0.00329189 -fiat/revs sendtoaddress R9qHsV2KNDWj1nombesBWD24xzVcJNT7Jv 0.00329344 -fiat/revs sendtoaddress RCJuFtudv6LMScxTTSLKqCxz3soR9wWuVZ 0.00330000 -fiat/revs sendtoaddress RWLSmoYB62JgjzasDCWvvZV6fWeL4qEeqF 0.00330606 -fiat/revs sendtoaddress RMZzsKJ6qvS42nqRkedxmzb7QoVFysrWw2 0.00330738 -fiat/revs sendtoaddress RD4SRsqtSXz1iqQRaEnMQ7sTLi26koApB8 0.00330918 -fiat/revs sendtoaddress RExcQ4518BfgbZqPstcz6nMnaa86Tj1kqw 0.00330981 -fiat/revs sendtoaddress RCc1AJyKd93ZioKgpeChwjWwzDf4Sk98TH 0.00331048 -fiat/revs sendtoaddress RLujoAieAXuM3b3vfurvjFbGJsRMxhzBif 0.00331201 -fiat/revs sendtoaddress RDXjjcCdicDHfvrJF6EP9Z95FvvRFCck9t 0.00331225 -fiat/revs sendtoaddress RXADqVWjxDV3AZnC1C9eFAUBpMYs6HyQUJ 0.00331380 -fiat/revs sendtoaddress RA7Vas28kdB1VxH9UZ1zwhNsXAVoAc5cfq 0.00332855 -fiat/revs sendtoaddress RVPkUqh3Sbav6xJADkQ7SZnbKxFu9E5BCo 0.00333163 -fiat/revs sendtoaddress RTzLLc1UjH6i7S9PNL2QK1P5LHEUZxtULx 0.00333318 -fiat/revs sendtoaddress RDtrExPNncHj156YhzCKmf6b5dimbEH1UP 0.00334120 -fiat/revs sendtoaddress RYbiL5s2UXRLQhTwwZVdavFxJR6S8ZhfyA 0.00334370 -fiat/revs sendtoaddress bLKKV2oyh4CZ2FbcWpXUDHBwwcEn47eie9 0.00335968 -fiat/revs sendtoaddress RQEzhDpAskWVusZQauue997ZygndWMq159 0.00336156 -fiat/revs sendtoaddress bc4FLqhsFNxzvFJqedcUoXVHqVTbDguUD6 0.00336832 -fiat/revs sendtoaddress RVu2unVH4h8BtAEaUTarWAFgrS7hTtJ4dt 0.00336869 -fiat/revs sendtoaddress RMJ9br5tbSofWZ8dXBt6DhqAZsKwgJGorb 0.00337490 -fiat/revs sendtoaddress RKmyNJpeDuCbHPnQXyCCGYy2RR5iRBWnhm 0.00337808 -fiat/revs sendtoaddress RMR4z5X7dBzd1Zr6EGQgnbjWkopU7eqvVQ 0.00338000 -fiat/revs sendtoaddress RGAqGYBJQgSgEeexUmFTAZ9LpxqKUyr9Eb 0.00338391 -fiat/revs sendtoaddress RLqSfeLRarj1TTRrbhJmVFXwBDF9urhKXJ 0.00339323 -fiat/revs sendtoaddress RY82m4YGjw4ZdHSYkRc3vKH5K6paHbzBTd 0.00339545 -fiat/revs sendtoaddress R9HyBeunLeEpoTsTUScvPRfpUgpTPsD6hJ 0.00339853 -fiat/revs sendtoaddress RXzKnvsGTFXx9dvGf4ySj53X1vxVEDLQ9E 0.00340000 -fiat/revs sendtoaddress RKrG3XVoJxuXExt1qQ5eeE7bAapdgSyom1 0.00340008 -fiat/revs sendtoaddress RB6zdhTomFZ9yPXQFyewdg6oEUXkRZ2DpR 0.00340201 -fiat/revs sendtoaddress RAMWKFm2bZ4Rdp3TeESMdxi94uoSELMRo6 0.00340833 -fiat/revs sendtoaddress RBGAwzqP9xFVbnreDjeiBjnivJPezGqW5D 0.00340882 -fiat/revs sendtoaddress RA5ctwvqxaUBo9oPi4BBSrL9nikbARDmBi 0.00341285 -fiat/revs sendtoaddress RQwU9CmiTBt8c8VbqXWZdYBC7CjndAfpQ1 0.00341581 -fiat/revs sendtoaddress R9qXNHL5ayvZp6bbXCJKWkQ8fgrPW79BRT 0.00341801 -fiat/revs sendtoaddress RAxzrvxbN9AdN2fKH7PWe9iH9bHt66E9Ci 0.00341967 -fiat/revs sendtoaddress R9yD91SiZoubVKt4rx3PrnQRTomZeDX1ok 0.00342044 -fiat/revs sendtoaddress RK3TCw2VCY6eCWxBC5wxmf6rsxfh7iG611 0.00343308 -fiat/revs sendtoaddress RXZgVaAybmutXXp3zLEt3JpzpnM6M8hdvw 0.00343616 -fiat/revs sendtoaddress RWNb1vPi32TSHBxpWZg6XKbPzM9G6eMFYq 0.00343764 -fiat/revs sendtoaddress RBf2zxQKEUAGXqH71Ke6LiMpre2WXWjGrQ 0.00344122 -fiat/revs sendtoaddress RJSfjYRXMhPxLwaK4qZ7uJVQ82KvquF7n8 0.00344324 -fiat/revs sendtoaddress RPEgYewRXhtJddfNpW6ssTkd6WvNWhkBmE 0.00344451 -fiat/revs sendtoaddress RKbx8ic6Uaz3kxoydBgvU2CgZ4muH2LPvU 0.00344519 -fiat/revs sendtoaddress RVzkgRr94enWVUvdetpgwBbgSJqoQ9HEyf 0.00344950 -fiat/revs sendtoaddress RUTcFSoiyPTwiVaZFuWbot51fYVMLPmoSh 0.00345854 -fiat/revs sendtoaddress RUeSB53fRLH9RRzDV1yEiPKYzHDyLvxBM4 0.00346296 -fiat/revs sendtoaddress RA774LGRKhvzo91F84o2xovYE5LVDBHN2F 0.00346465 -fiat/revs sendtoaddress RSjMZ4PAnKZJ8sSgxLSK91d93MWHjMd2Mn 0.00346987 -fiat/revs sendtoaddress RDUeuszDduCVghPWwsastpRhz5fpknBaLf 0.00347566 -fiat/revs sendtoaddress RDUvA438idQZtEoJ3vqUGfE4B2bN1ZTdUv 0.00348151 -fiat/revs sendtoaddress RURts4V8FFuZxacbs5UdX4v5YcXQWX2qfo 0.00348501 -fiat/revs sendtoaddress bFBdzYLEv664WiuZkjt3sPsDx2cFFqCmCL 0.00348751 -fiat/revs sendtoaddress RWvHc8TYjviYB9ZNKf9vNX6tznUoKfdQcp 0.00348991 -fiat/revs sendtoaddress RNWcRfp2YoEX2DJ6JXvGTRZ8UoKPUXMs4Y 0.00349039 -fiat/revs sendtoaddress RVpxCZqnntnKb7dVThF8K9hHW5pJJYBsb2 0.00350000 -fiat/revs sendtoaddress bGRufvxn7jLw7fzh9f5yEn2cYMucixVMqA 0.00350065 -fiat/revs sendtoaddress bVK3br5oFHJqNRW5RDceULcnZZEqEGuRyT 0.00350751 -fiat/revs sendtoaddress RH3MMorufh9xJwM2581qxZNmWGUVU5nP71 0.00351640 -fiat/revs sendtoaddress RS7BgBXLGvDWL8yyJZwGHPqW18xFMZkGvp 0.00352128 -fiat/revs sendtoaddress RBfuHzJFbk1N12LHYZEKTwRAVKV3KvaYdM 0.00352752 -fiat/revs sendtoaddress RRxtu38NR9m59zqSVVPupis2veMdKe7nBg 0.00352799 -fiat/revs sendtoaddress REAyb29UqJRTKfYXUWkDV5b9cTnecaUZcd 0.00353546 -fiat/revs sendtoaddress RVydo9geUsahwfuqWNeeEiSseAA92Vonjt 0.00353676 -fiat/revs sendtoaddress RLwbaDRDZmt3bZnhrP1LaD6rGMgw8rMaCC 0.00354445 -fiat/revs sendtoaddress RAoZ6bc4PJZrecVznte98fNhRtPTjGvUAf 0.00355125 -fiat/revs sendtoaddress RLJu1Efu5EmPtAofLhqFso5hyknZ59FuBR 0.00355191 -fiat/revs sendtoaddress RQjVsPZZH4rUrvXiVA9Z83iex3J3gLNZJG 0.00355997 -fiat/revs sendtoaddress RUuDWakFxCoG32ujJEcUkiCzLq2ADNqAfk 0.00356000 -fiat/revs sendtoaddress RMKSRvdd4oTjNCmVmF9MVFH1h4j479m3UK 0.00356305 -fiat/revs sendtoaddress RBBHyR5HXfvGNtkE48Q7AX2dnme2VY1euE 0.00356521 -fiat/revs sendtoaddress RWKt887jVXwwE5UFG3WqhBymCrQpWZce6F 0.00356546 -fiat/revs sendtoaddress RJ3o8drDPKHnhJMpnvKWfmiZMWRubUhKLt 0.00357045 -fiat/revs sendtoaddress RCANTBf9TphKJiQduNbJbNVVHo6bQ5NSbM 0.00357308 -fiat/revs sendtoaddress RS47FzoMT9jN3Ts6ChkuxnNSapErY3yiMX 0.00358616 -fiat/revs sendtoaddress RRddWGyEWR4pYA1TgKwfYoHm9yBjxXH4E3 0.00358697 -fiat/revs sendtoaddress RXF5HS8qgQH84nYz5n8VXSUhY8jShLMKUX 0.00359313 -fiat/revs sendtoaddress RTTvk6VqWnnfGbj8spPyKS8xtW2qiUmAh5 0.00359332 -fiat/revs sendtoaddress RQuoJkQajba88HTB2afRNxTTSyyGjzvm4G 0.00359477 -fiat/revs sendtoaddress RMmvVYQLJC7cCxNhfR9UJQusQbkK6HgqC7 0.00359949 -fiat/revs sendtoaddress RX1VBkCxr3ZJpgFoutRm36CgR5Wru7ZTpx 0.00360000 -fiat/revs sendtoaddress bPgwBaAYZXzhZJoLmvBwy9D9iCoEdcExF9 0.00360340 -fiat/revs sendtoaddress RU7rwu2Goet5wEjSTHmJKJPBkVm8CRPahy 0.00360728 -fiat/revs sendtoaddress bLrxBMiXF2idtzrX7ysGvEXqoefkc2XQxb 0.00362029 -fiat/revs sendtoaddress RPf5ypFknqZri5JGpwTb55UVJmUn1BjpPk 0.00362038 -fiat/revs sendtoaddress RSJbcMmugChDoYKhDyXaZq2iEc5sf39ZvF 0.00362410 -fiat/revs sendtoaddress RQWJBLHNgQr1MrNzC3HJECbrf7nTBbsb4T 0.00362483 -fiat/revs sendtoaddress RH2yeL4xQsmJCvqReecFVRFhN9BTskDcU8 0.00363477 -fiat/revs sendtoaddress RFVnDe2fvGiDYBQA1RGsT6BsL71uTMR9s7 0.00364101 -fiat/revs sendtoaddress RAGRzvSHE8rCcSnWjLtPirUWnDJkyTc8Jo 0.00366034 -fiat/revs sendtoaddress RQ5fTTK1BZr9SnHDweMHXRcooL7bkNzVzK 0.00366697 -fiat/revs sendtoaddress RPTNoGrRDVNUmVzGcJURQneYmmXMmjgMsz 0.00367253 -fiat/revs sendtoaddress RDDstzwuGU2rbzhRWrw7fCZ7KEkyyH1fWA 0.00367500 -fiat/revs sendtoaddress RP3hMTA3uEBoeQ76xUVFuupC9ZMQaepqNU 0.00367938 -fiat/revs sendtoaddress RHYxTcAKdDkCRv5pcVAPpNuftg9Hk6jmDd 0.00368246 -fiat/revs sendtoaddress RLFSJK6QJsbfCpiysbdxsDbMKaqTwDvTfu 0.00368401 -fiat/revs sendtoaddress RGqbLpDtFtqnUPzb8pjxp6SSBSsqr5AtpV 0.00368895 -fiat/revs sendtoaddress RK3EW27yFPSAWdD8sS52U6SjNSuZHXnzuj 0.00369404 -fiat/revs sendtoaddress RAp8NccXqZExxvZ3xnNRt7wLgYodBowXEB 0.00369531 -fiat/revs sendtoaddress RSUbaoR3kifgKuFC8N9VJy4mnuRx1bGt1j 0.00371475 -fiat/revs sendtoaddress RTyApaBZbzF1Vgge1gHSPpwtktYyohBSHx 0.00372227 -fiat/revs sendtoaddress RGTHYxmotZwoSwJqaGBj3phJWMKshf8t25 0.00372284 -fiat/revs sendtoaddress RE2Ju5UaYUDLnNGwK1GQaGgyVe3oPNdJeq 0.00372492 -fiat/revs sendtoaddress RMXLQ4Khrid32dgYDwjPFxPUc9H4uMFnFy 0.00373117 -fiat/revs sendtoaddress RSoYeq7RkSUvd9jcQ1sihWexW4xHmrETA2 0.00373278 -fiat/revs sendtoaddress RRn1TocmSwvfPimiVqp3vQK3CiXbBdc3bJ 0.00373333 -fiat/revs sendtoaddress RQCZWXNKyFpssTZor3JGLssNrmGiAj9SFZ 0.00373671 -fiat/revs sendtoaddress RM1wsNcFM9kqdaJZpJnXfVEwhSJKpVhqqw 0.00373964 -fiat/revs sendtoaddress RNLheefZ7P4c1S4GrMguYNHrrWzBoMAApG 0.00374000 -fiat/revs sendtoaddress RNWagkBt7WV4mn37DW44DFg8E4QLByoEHs 0.00374579 -fiat/revs sendtoaddress RDc3N5CZSkfd8Dj6FYSuEQ6shXJh6SSDnH 0.00374752 -fiat/revs sendtoaddress RK8cegcRzf6oKtYJjMhkPu86meSTumFRFA 0.00374783 -fiat/revs sendtoaddress RMdjtiEnJEeVWpkkBCpPrZeciNkr4aq4T5 0.00375130 -fiat/revs sendtoaddress RJxJ5ifSmpEZVijaJ6zSQ8ocVhBVTLGWyu 0.00375270 -fiat/revs sendtoaddress RKR5VKvFXxPM2PvuhqXCwsWvEM5k8qXWEZ 0.00375779 -fiat/revs sendtoaddress RXBRtv2y2BRhXFM3TVGQ51CuizHZZEJzfh 0.00376000 -fiat/revs sendtoaddress RJ2PzdHVcPPVcoZYEyVWMdTB1koQcC6JyA 0.00376094 -fiat/revs sendtoaddress RNx4cYoXtquxRhsEeFgzNgdZt7C2fypFp4 0.00376499 -fiat/revs sendtoaddress RKtr3y7DoZtzTrAW639NR3kPLk6ajGzYJv 0.00376745 -fiat/revs sendtoaddress RLFkT2nUngVmaGMTEcSJyobsTqqjdGCQyw 0.00376899 -fiat/revs sendtoaddress RLZxdGZdnQhgqHTbEEmZtLzEqXmbF8ciyu 0.00377053 -fiat/revs sendtoaddress RSn8HBYqTgohtmFcawbgWSHCzNRnFifXhF 0.00377478 -fiat/revs sendtoaddress RQt8DKibJHy9MBYZMpKRPPHBzxHVpWCixG 0.00377536 -fiat/revs sendtoaddress RX2EF3PFvyGWtcgAbWcnkuPYgcfZdEtriQ 0.00378130 -fiat/revs sendtoaddress RQgYaq1VQqct6hnEhswwjgyZ1gkAWFNZ8k 0.00378760 -fiat/revs sendtoaddress RQR1d9quaC2sT3CG89q1WD3bYpUFu6xdXd 0.00378781 -fiat/revs sendtoaddress RTxRRLLkcxpK1xZQVuoBT8gabPscBNR6kw 0.00378935 -fiat/revs sendtoaddress RPZmhYsMmfuMzcKyAWrX4G7QGgLkXyWUrZ 0.00379089 -fiat/revs sendtoaddress RHMmNXYd6Cc3qCmyMQMM689nEVFqQsiz9k 0.00379244 -fiat/revs sendtoaddress RJwn5w5zkTVto6fB96ZRQ8LSpgwpWuNznY 0.00380000 -fiat/revs sendtoaddress RNYDWkDNcaWLaKQqir61pnqAxkxxZXSkin 0.00380695 -fiat/revs sendtoaddress RBwWfzwuSBixPhRPMvbSuV6Ru4bxPkmXUE 0.00381003 -fiat/revs sendtoaddress RUhjsfkmmCw5d5MnS1DSMPuKzZASfnoyfJ 0.00381158 -fiat/revs sendtoaddress RRddGdoRwiLG81MYawT1M3ukZPhUyXPWfS 0.00381686 -fiat/revs sendtoaddress RQBGKiLg9eakwVmLb1oGKtXVCA4XvgCw13 0.00382101 -fiat/revs sendtoaddress RTcYYcSHdZM6JC8k366UqCCsPTEN4pkbnw 0.00382478 -fiat/revs sendtoaddress RDqoY3oc5dmgrZHYQYZe1njeyGUiUm4QVL 0.00382941 -fiat/revs sendtoaddress RJmvGe4hXpZX4uHpDJm8GhLjuzjyc4heoU 0.00382989 -fiat/revs sendtoaddress RKza8jg41KZ1pLQJqX7ALyFXuNmQpGQ26b 0.00384379 -fiat/revs sendtoaddress RB4gY3XqUEUq2mW6cxsNueo5XY8GJ3xtU8 0.00384514 -fiat/revs sendtoaddress RJY2mkavWX144Q6QEhKtxCP48Rzs4eHoDv 0.00384669 -fiat/revs sendtoaddress RDSQhVmspq5cjstFS2w3jLLiNYDdRBoDLW 0.00384823 -fiat/revs sendtoaddress RU5T5KUNQDsfgmXBZ2JkMn9qMy5ZFVKanq 0.00385625 -fiat/revs sendtoaddress R9vcHVzw8Lx1YqM34AiUhYWsjiCg1poSRT 0.00385765 -fiat/revs sendtoaddress RFYHZuU2VbBisXH3UnLA4xSyt1sSEC7YFB 0.00385779 -fiat/revs sendtoaddress RH66H9bkMVcSSdM9tvv654Mn7cwZPMmaHc 0.00386415 -fiat/revs sendtoaddress RBcfB9G88stgaVtcZ8ocej1MbDnt2uxtCm 0.00386914 -fiat/revs sendtoaddress RSu5wYPabEwQ4AZtBEXMgfZp37cmiepEej 0.00387157 -fiat/revs sendtoaddress RGBGDVMoipwP4uAXtQ7PGzj5A3Tzju4PFT 0.00387930 -fiat/revs sendtoaddress RGcSspZThnZtFj8JmNLQHr1p4cLqmk8W1j 0.00388000 -fiat/revs sendtoaddress RUqzycz5BfcmWa7FGXy35i5y35vbC8nkD1 0.00388380 -fiat/revs sendtoaddress RCtVCaLeFZzbr4CHZu43n7EhhEmih5UBhr 0.00388535 -fiat/revs sendtoaddress RV5Zc8yw4CyC1czgpktaFgutKu5TPEJHh2 0.00388840 -fiat/revs sendtoaddress RMns6f2i1p74GsLrwXTbTMLY2z811USTJd 0.00388995 -fiat/revs sendtoaddress RDd7uYZTwASBoAdBRVaMnpU6rCeYSEcZ5W 0.00389467 -fiat/revs sendtoaddress RLqbR337eHECZvJXAYTH44ZiToaoQC84CV 0.00390000 -fiat/revs sendtoaddress RJ3Nd1E3s2ggwdUwnSxWEntXFNWgeb3aNT 0.00390676 -fiat/revs sendtoaddress RXwxxXPzMYNjbtfa7zzdnCCGCZo8NxJEkp 0.00390876 -fiat/revs sendtoaddress RHFzQTCr73Px26ewYxBvYUKJdHsKfygisz 0.00392000 -fiat/revs sendtoaddress RCEUagqaRQ491zXgoRYt89vYcAbrD6Kbii 0.00392063 -fiat/revs sendtoaddress RCqX1SssJCEPWxVwkPWZWnUh1E1F23Baf3 0.00392391 -fiat/revs sendtoaddress RHKAykHzwz4MsssQVrVn5ht6c13jyMqNxf 0.00392636 -fiat/revs sendtoaddress RE8CW4wYditnYighxngeAZqjF3oAE7cwtk 0.00392790 -fiat/revs sendtoaddress RLRsCuM5uUV71Q7pyAVxe8FFXTdj7jps1k 0.00393105 -fiat/revs sendtoaddress RDx4GaFxFyswvXvT9uShP6ymBsKZh3RxJn 0.00393421 -fiat/revs sendtoaddress RJr1LQnG4aXPupmzKL6FGGaNoubFj2zfaA 0.00393619 -fiat/revs sendtoaddress RFyvjygrJaE9SM72h2BkqqVwgLTQZ2MtXs 0.00394573 -fiat/revs sendtoaddress RHAWZ6F3D5e7JZNHnwGu1twSyiK4zoUbCL 0.00394728 -fiat/revs sendtoaddress RPCSuQ58bLd1efswMcLvUYLu1mrWqtscZw 0.00394986 -fiat/revs sendtoaddress RPCKf8N5ij1Nt94LfnkCcbfMgmK8cPymp9 0.00395020 -fiat/revs sendtoaddress R9gSifaaFE2RiPySnZayryby1ouaLaqfhE 0.00395068 -fiat/revs sendtoaddress RSmzCunwnRkDQRUUnsmsK3MsQywL9bvJSC 0.00395375 -fiat/revs sendtoaddress RUPYL2XXxTS3PdwwXQ4QLT1mCyEYBThqA2 0.00396456 -fiat/revs sendtoaddress RXBo7Ki2xfXo9psHGpQeQJMmtJTNSiXJiZ 0.00396609 -fiat/revs sendtoaddress R9QvkiPeeagatEmn6HkLe67LYkaV9UeqmJ 0.00396723 -fiat/revs sendtoaddress RNCQZNP3CfU8PBhuVtEcWG5BCdGVb3mmeq 0.00396733 -fiat/revs sendtoaddress RJLGkvBzMwe4bj4nBqHoT7DSBH4qEoCQC9 0.00396763 -fiat/revs sendtoaddress REFSkGjNXQzpeZsSbtGeBGQVm5S2Fn8tkD 0.00396935 -fiat/revs sendtoaddress RVFtauAxvM9xvxXczg642wSrtDDauBFeoZ 0.00397566 -fiat/revs sendtoaddress RKPUCRNwcAmaXHAiEHUBffjKSP8P2FEnGQ 0.00397690 -fiat/revs sendtoaddress RLu6Nbnp9R9W2r995irHsnRbCRsLiNwhad 0.00397721 -fiat/revs sendtoaddress RF9yKKF2aCtm6r1854ZreGfu5X9sogwfJo 0.00398054 -fiat/revs sendtoaddress RSvKP11zKzj37UsrAkXHxJJGPBm5Vgthg5 0.00398124 -fiat/revs sendtoaddress RADccd7ipB3J67Zvn8TxRjMrWwhGLYwB8D 0.00398223 -fiat/revs sendtoaddress RVGXSzh77sYeWpA4v5xokn3FMW5wLZ81Rs 0.00398279 -fiat/revs sendtoaddress REiDyNAHZ42SJxXAMBZP4S5m7X7e5XDpVK 0.00398307 -fiat/revs sendtoaddress RBNhmacFxGvvWckLmF7eMMcAjSNaE6b2jX 0.00398337 -fiat/revs sendtoaddress RX2WwRQRvbHniQEfLHbp6MAXBFKWYWtStH 0.00398773 -fiat/revs sendtoaddress RKxXDHWn22qKaT8aRHiMx6Q3nkrEfCMPaT 0.00398952 -fiat/revs sendtoaddress RCkbnZrWp5quVEiMVwpfEK2f9AND1uQAja 0.00399683 -fiat/revs sendtoaddress R9d7bXP7foaGzPT5Jdi6iKwknJ7WPbtA74 0.00399838 -fiat/revs sendtoaddress RPEz7SQ5qn3F5A1uXkab19kzwDf3ryvhvP 0.00400000 -fiat/revs sendtoaddress RPxxqgPEvUELzhuisSUNfF8oJjSGgCUAqE 0.00400838 -fiat/revs sendtoaddress RNgfZKCBi3sejtrJsiwbq2mKaqPF1dBWdq 0.00400935 -fiat/revs sendtoaddress RGXrqbxkgMKzuCZ4zyCWNsdrSm1yK3ytfh 0.00401443 -fiat/revs sendtoaddress RAijRZe3zjHCSy2WRasdpu6nEg1nL4G4mk 0.00401563 -fiat/revs sendtoaddress RLQKLbFd499YVG4y21XbTE7bDBNeEoarmr 0.00401597 -fiat/revs sendtoaddress RJXT2ysjYMStqZ6zjttwTnhJkaSntyEYDS 0.00401602 -fiat/revs sendtoaddress RRMoWgfbVRhgRwJTRVg6qecM6rQ7o93Cyk 0.00403234 -fiat/revs sendtoaddress RPNhuDtX683L3RXjp2GMP9r1U9eNedVrs4 0.00403299 -fiat/revs sendtoaddress RVXht8BZVuWa9Dp6z5DDHhf2Qg1sgwvZRg 0.00403400 -fiat/revs sendtoaddress RQANWwd5vFk7PYJDVQhV6xaQ5ELkUyaw6D 0.00403453 -fiat/revs sendtoaddress RJ4XSpkstLhXqspYqakgs4mq9VKtwHxr3u 0.00403633 -fiat/revs sendtoaddress RWC2evEd4Q8ksWpPrSTnD5YpnmXiq54Fti 0.00403863 -fiat/revs sendtoaddress RJf9KZcmZBVyPbGKHjATWPrhM8vu6ywbfb 0.00404884 -fiat/revs sendtoaddress RXyWb524WQtHYf3tJnCHgvGB5dsdTvpoDT 0.00404990 -fiat/revs sendtoaddress RLWzAwEeMD9XPoEHGRjBdZzG7AGfNx9TcQ 0.00405147 -fiat/revs sendtoaddress RDfE5k6QR4xxfLN1AKiHRqsvWde1EUngi4 0.00405243 -fiat/revs sendtoaddress RNi7BkQuMEgeEqHDUs7YvA9k252HLuX5My 0.00405416 -fiat/revs sendtoaddress RV3BeEw5W6NQAURMCKsjWfTkW6fQfVnF1g 0.00405424 -fiat/revs sendtoaddress RSKxxHYbP7aE1SYfVAZbVr3cmZ4SRRooeC 0.00405570 -fiat/revs sendtoaddress RX6i38s12N1zgWEjyc233t2bBaxeSymbim 0.00406000 -fiat/revs sendtoaddress RHJbSuZ7bLRTyV7VZC17aTivjnHYjXpjrw 0.00406373 -fiat/revs sendtoaddress R9HVNpipWDH4qUB4noBDqTMkgMJtYE4s8f 0.00406528 -fiat/revs sendtoaddress RHUYqjgUF2iLAMMxf22fCUfY3c2vPooHsz 0.00406823 -fiat/revs sendtoaddress RWmKiKyeao8CdM8xaNUKVRM61Q4i3QEtn8 0.00406931 -fiat/revs sendtoaddress RAjhhhYNAq7MkBemgGrC5PMPY9fRGFHqLK 0.00407086 -fiat/revs sendtoaddress RW6icLLdivzDmvNZs5bRaKizzZgtYR4K5C 0.00408396 -fiat/revs sendtoaddress RBbBbynhxNZYp2qdEX7nhrsEoBPtSHzhFe 0.00408409 -fiat/revs sendtoaddress RJodhMK5N37DGTqrUf97mVtay2SoUnC3cg 0.00408564 -fiat/revs sendtoaddress RTL8QaiEQMEhiYgE8b5suDXGq98T22Snhn 0.00408704 -fiat/revs sendtoaddress RSmvWa88P9949PZNTe8D619t7NrgtE3QfU 0.00409122 -fiat/revs sendtoaddress RXTyFcYHoZuUpLcrhGECFaMu4RFi3rcG1R 0.00409923 -fiat/revs sendtoaddress RXbXz2MskTrBZp9Meii5ChAoK5ecAGH1r2 0.00410169 -fiat/revs sendtoaddress RQxijD1byHjLRueZkaEQaoWsEjptjb43J8 0.00410323 -fiat/revs sendtoaddress RBWJhPQkZmjEJ6R6nYgj8yZ5JEEvMUm9jJ 0.00411492 -fiat/revs sendtoaddress RNbpbFpH2kuUq1FLMnxVih6dic6PkCwzSG 0.00411600 -fiat/revs sendtoaddress RUFVwxKTGGixYkSmKRk4X77izGCRzTmESU 0.00411779 -fiat/revs sendtoaddress REjnL7RzxYkgn9iTVc8Yig8mYUqgrxXEAB 0.00412000 -fiat/revs sendtoaddress RCQN4mvbqfeYVNGS6BH4fsU8jTmkafPiAq 0.00412106 -fiat/revs sendtoaddress RMZGMMtBziMFNg1kJY6kB58k5pW5tVHo4D 0.00412194 -fiat/revs sendtoaddress RUZinZDDZMV8NkmmvTtoFHbxgDK8fMH6az 0.00412900 -fiat/revs sendtoaddress RTwrCdXNCG8kYn28Ge57C1SQPnKTH4bULM 0.00413000 -fiat/revs sendtoaddress RPo1JUJZaFUFzu8grFpUA4RN3AFisV1eem 0.00413294 -fiat/revs sendtoaddress RYP36LAZeptBqxELTNZbHbB8MadtCWbDMu 0.00413538 -fiat/revs sendtoaddress RGEWTUWxFyqATcpmmWR7df6opa6eYhH881 0.00413693 -fiat/revs sendtoaddress REdzVY2DroBfQgpGUy9WmSjcrjkVRd31Mu 0.00413700 -fiat/revs sendtoaddress RFSy3pkQ2ZtcBQMHavyBxJptdHRFpXKTvL 0.00413784 -fiat/revs sendtoaddress RD8cGZQViKuLFw1qYMaL8okqPKT48Lwdiw 0.00414142 -fiat/revs sendtoaddress RXAUAVQSh1tNgTsNebMwURzynSZUoqwess 0.00415330 -fiat/revs sendtoaddress R9wZpGJWh2LR1eahJRiAD6te7KoxduwJS3 0.00415729 -fiat/revs sendtoaddress RDsRp8hbd9Je5XNoPEd5fZ4dqeXW9Ujyj1 0.00417204 -fiat/revs sendtoaddress RDEydheLsFmJ4HJYHj6keSDYevMzJmErP8 0.00417358 -fiat/revs sendtoaddress RRe6oJ2zBNZRDHooeFtMXdb58ggs58hx3j 0.00417491 -fiat/revs sendtoaddress RMsVCRFW4Jsg1ghcvbaeLZ1tGyAshWrXQ5 0.00417512 -fiat/revs sendtoaddress RGRMKRA7ibiue2mvMhw7HJtFrnyMDKRans 0.00417667 -fiat/revs sendtoaddress RCqsKXK88bHzJaHhMq44Gk7hcRZGcYDGnm 0.00418060 -fiat/revs sendtoaddress R9HJ4ZF5cqMAJEo6K45Dkr273pCZgDAEb8 0.00418423 -fiat/revs sendtoaddress RPsa7mSnXHEJvcwT2P1NWKEffLbwbGYrkK 0.00418469 -fiat/revs sendtoaddress RDsejGJvCvYoytNF7tcCkmCe5cMM5zKu92 0.00418719 -fiat/revs sendtoaddress REufWkdQiZVMamFQLGdFwX6BGUoqcK7Nqy 0.00419182 -fiat/revs sendtoaddress RXtKekvEMCTUryVboWZKJScSgB44jLMaDf 0.00419676 -fiat/revs sendtoaddress RC7ZDKNz22AikJpQwdf7Veu3Pfu5damgWH 0.00420505 -fiat/revs sendtoaddress RSqZsenA3NbZwij6VWWp9BA9hgUitXuP8B 0.00420730 -fiat/revs sendtoaddress RNgUni7MJMse5HtncHL1LieGQvAzx4LLW3 0.00420755 -fiat/revs sendtoaddress RC27tDss3bY519c2UYHVmBBeAgpm4DA3wk 0.00421218 -fiat/revs sendtoaddress RMNaT5ziTiA7QzBHnwtVQ4UMp8PphZ9VnD 0.00421292 -fiat/revs sendtoaddress RVL8sdXbaUNSL1GqjxbULy5UM5wXyyZmEK 0.00422020 -fiat/revs sendtoaddress RJ2J3SJx619g72M6YijnAbxmcPw329d8hy 0.00422264 -fiat/revs sendtoaddress RLWYmC8Tt2RoQzJGgwy4Q7uetJjnyQNvKP 0.00422419 -fiat/revs sendtoaddress RXgV52uqeopxj5ob8VcB3q6sP2L1fJvwxQ 0.00422499 -fiat/revs sendtoaddress RUkwdj2ALaFnxxgPknZbEZDhN6JFspotVb 0.00423500 -fiat/revs sendtoaddress RH29K6D63WuWd47pqkHb7wckvJ9cwSuag2 0.00423894 -fiat/revs sendtoaddress RGRpgPwkg6W7zEUKvWdWuwGnCczShY3eoc 0.00424093 -fiat/revs sendtoaddress RF8MS7uYDqPAmD8HdcoCXcHVEYwVFJi3y4 0.00424137 -fiat/revs sendtoaddress RMKxuBjsAE8ae9HpmagfU2gHYZZrXfrXcN 0.00424381 -fiat/revs sendtoaddress RDnFQtNGS9qqenHto1inXm2bF1xiSD7QLz 0.00424536 -fiat/revs sendtoaddress RWdQaKcsEf7h9ULUoPFrQmMy6mXoT8tDqL 0.00424600 -fiat/revs sendtoaddress R9ZCWWhRpd4UgX7JfpX5Cy6h7VdX81jw98 0.00424754 -fiat/revs sendtoaddress RAZstPXuwhgtk5qmUPWPFNnGoXwMUWUHjC 0.00425302 -fiat/revs sendtoaddress RKcstj6sbbA6mGAp9ZLuq2L8bTmWbNW2Tn 0.00425930 -fiat/revs sendtoaddress RLM1DaCS9kJ9e7EcyHHXiuw9DsgdEFxU12 0.00426084 -fiat/revs sendtoaddress RNUWzEVEGLVaJcMWbebXnrjrGDMJSYupQC 0.00426393 -fiat/revs sendtoaddress RQovRDk7PM593h5Lpojfc9rkZTPSmoyqvT 0.00426639 -fiat/revs sendtoaddress REhzcwnU287XgZRxEnR5Amp4rnKePXHnNe 0.00427275 -fiat/revs sendtoaddress RBMFiC9kEXXYXzoEDAcsV3vSsjNu8TjfnK 0.00427932 -fiat/revs sendtoaddress RCDTNWRiJohghuXmHenzf9XFae7jA7jJ3x 0.00428000 -fiat/revs sendtoaddress RGmQXKJqBKLWW3Gw7LDRfyVCcHHDxaAY2j 0.00428087 -fiat/revs sendtoaddress RBAkwTnHNeett2VkPm9pvm57teHgvX9SEf 0.00428404 -fiat/revs sendtoaddress RDjvGkM1TmyUBjzuDopC19SLJknYZq4sQD 0.00428559 -fiat/revs sendtoaddress RGH2kZobPpNFwqmuJR6xkDVt9ZB2J79foj 0.00428867 -fiat/revs sendtoaddress R9qWzdN4227QLuzHt1uhj2Ek7BGDbwCrLC 0.00429312 -fiat/revs sendtoaddress RToGxpRU1VamGftxzdsorPtc91zTp43ZdQ 0.00429562 -fiat/revs sendtoaddress RDYnJpD2mVCFFmZDGXamZXZPBe4CM4gaLF 0.00429870 -fiat/revs sendtoaddress RKmM2oFfajXbxjdnGRcdNFYCQNSumJEw1m 0.00430025 -fiat/revs sendtoaddress RJYUhxLyGYjKXmvworGHUzAB9b5TNeqK4E 0.00430827 -fiat/revs sendtoaddress RWbQ2quimkmgTJKDeY1megXtQ9wjhkJcSY 0.00431071 -fiat/revs sendtoaddress RY9DiAbkDrVwqW5ybU8h2HhXWWRpV5U2Zi 0.00431212 -fiat/revs sendtoaddress RMrEatZhMXGVHqbpCYyFVptuDC2nBiFEW7 0.00431608 -fiat/revs sendtoaddress RRo8jkqgNWKPcwYpLLYym1cgNUFhoKCeFb 0.00432000 -fiat/revs sendtoaddress RYacbsSzXmajBGTGenbkxLoG9k9yq4Bz1L 0.00432716 -fiat/revs sendtoaddress RMH1RhvZjGJUQsvmxcYydghY5ZSrAsGjAp 0.00432863 -fiat/revs sendtoaddress RVxLomSQnKwNjcgBMjJHwoeYbrkoFfcuyB 0.00432874 -fiat/revs sendtoaddress RSSxfKvfM6bQNTmRraKSmnuX9ftCarsz4n 0.00433000 -fiat/revs sendtoaddress RGhp5i1aUuWNZATmEgoNF7rZkCKjwa3nPj 0.00433261 -fiat/revs sendtoaddress RKxmRT2bmCX3vcZf7pobCnfkxAAbJvBCeS 0.00434891 -fiat/revs sendtoaddress RHSrby7vY8GNm8rpq8Ch1agmtso2WCL6eE 0.00434910 -fiat/revs sendtoaddress RAJB3sUiAB1xJoYs9TaCZvDi9mJJ9qJuaP 0.00435758 -fiat/revs sendtoaddress RT7hhKzqrv2CebmzaeLyKziG3uWjkQ6Py6 0.00436193 -fiat/revs sendtoaddress RUwgTYM48J85Nn3iU2ZB4PABAbtgJCpxsr 0.00436252 -fiat/revs sendtoaddress RCEFQ9tDcPzeLxhuFn7TkHj3YVMkpa6iXR 0.00436674 -fiat/revs sendtoaddress RC7PHvw4UTanbgJ2yiWR4CUzsTDdMv5vCZ 0.00438024 -fiat/revs sendtoaddress RHwsH4gMLQAcqHsr5jQakADifdC78Y7geX 0.00438288 -fiat/revs sendtoaddress RBETyHAWDgTtMzHiy9XT2dyD8K9g9iKc8Z 0.00438529 -fiat/revs sendtoaddress R9TQd3pngHpd4QGvRi7QmcCohuXfmcsozC 0.00439493 -fiat/revs sendtoaddress RMasR4MrSchjh3MjagFojiH72uuehsLbwR 0.00439496 -fiat/revs sendtoaddress RYEZ1VdiFxLthKKLZzU5iDHNfgX4EiCVNc 0.00440345 -fiat/revs sendtoaddress R9X72kDrnoUbQCAVbpf8Tcuh9hJYR1pD7Y 0.00440499 -fiat/revs sendtoaddress RAkhiNVYxvYNuohtcMqeLhuCFRGvhMVvZm 0.00440654 -fiat/revs sendtoaddress RVg5D7nLbBdZB5RWd9qXLwEkWLFoZz9Jvn 0.00441148 -fiat/revs sendtoaddress RUdvffBBT9rvhN9SF5ZLDjKvkZi36etcPA 0.00441190 -fiat/revs sendtoaddress RPKmoEXnjoPpFMFjAHVburYeZApuaY5Ct2 0.00441657 -fiat/revs sendtoaddress RTcE4yEyRYbsRbTVgsjDHd9VwsBpnNv7ET 0.00442927 -fiat/revs sendtoaddress RShVoQsDeoTQ1QgGm9z9ZfgejKKS3q3LRA 0.00443061 -fiat/revs sendtoaddress REcdFywnGhvSw5J8yzEacoNT76XbfE6unR 0.00444000 -fiat/revs sendtoaddress RWfQKLnB9bxa9Bbwot42G1Dp7ecnBUNfY6 0.00444351 -fiat/revs sendtoaddress RW4A1Y3x1635uR4LuWubnkwt3fSoNwzKcW 0.00445190 -fiat/revs sendtoaddress RFAjXfcSJbD6hn7egF7CpHYRgvfJgw4NS1 0.00445535 -fiat/revs sendtoaddress RFLFcuLH3eE33h3VwGWMYhvpSJ3s9yjBnN 0.00445683 -fiat/revs sendtoaddress RFygZSv1MqAUhMPT1BFcVW9RvBVkcLzEGp 0.00446000 -fiat/revs sendtoaddress RKvvczrKZf1LmoxxGRgw5BHsRaSGmhrjX3 0.00446387 -fiat/revs sendtoaddress RUNDvZZsXDs2PBmEdEWZHuRjXYfDBPnnfD 0.00446832 -fiat/revs sendtoaddress RUydwWTmkT5fy6sTTc3RWvFhTkPWYercsu 0.00447523 -fiat/revs sendtoaddress RMogYXJaWYHT7YYrVu5xGhXn5en5htetdv 0.00448000 -fiat/revs sendtoaddress RGvX5bBwHub4dRShG8msDNjvi4jFySyRA2 0.00448347 -fiat/revs sendtoaddress RJgkpy65J1udj22TKf5SgvRA6GjT7PUgVL 0.00449153 -fiat/revs sendtoaddress RHmAjcTUat1zqDtbFdeds6fhuC7VvjRWQp 0.00449461 -fiat/revs sendtoaddress RREqEdFYLp5YiNb6WNedjyerEkXhj5Nv5S 0.00450383 -fiat/revs sendtoaddress bMsoi9E8dwf9fpQswLTVH4TJfEYjk6VV8h 0.00450786 -fiat/revs sendtoaddress RQ9Y9PSRLhHxosAjBPMg1quH8AkcqCfCVL 0.00451189 -fiat/revs sendtoaddress RVFmhV8RM72zrmagYQKYjUXWhBDcGGrChi 0.00451208 -fiat/revs sendtoaddress RK4U2hmHTav4HeqAi2LJpANvssQRRKshDs 0.00451497 -fiat/revs sendtoaddress RRndcVPhULXwkATZeMqun2DLBacN1Yw6gx 0.00452481 -fiat/revs sendtoaddress RX96txFWgnMwJWfEGLoHhrQA1BUR88WfNf 0.00452594 -fiat/revs sendtoaddress RGTnH4GvPgAvtEt1v8NrL53jX7qcv477PW 0.00453411 -fiat/revs sendtoaddress RFmWjLtRbPN2Gc5b11MPXjyRaGCTq894dJ 0.00453845 -fiat/revs sendtoaddress R9rT5fwGQwima2bezrK3Ps67cZ5DGm56xr 0.00454059 -fiat/revs sendtoaddress RWdFXvZ5m7SEnUv6oHSarQCEAKnBMf8Cji 0.00454501 -fiat/revs sendtoaddress RQwceFzgNRsUfnrMB2rJKUA5riStS9jDE2 0.00454521 -fiat/revs sendtoaddress RAWfYRjTSwxNrnwmMhQ8vKCQ8E9q56cxRW 0.00454759 -fiat/revs sendtoaddress RK5jr6CgJajXqzRQjARyo9NRiP2t7YwbDB 0.00455003 -fiat/revs sendtoaddress RYJvsk8vM1b492QHNTieTXfKY1xfTQB4z1 0.00455041 -fiat/revs sendtoaddress RQQBaPt5GmeBVEwimdiJFW9CWyyYYFF12Q 0.00455194 -fiat/revs sendtoaddress RFoWXPxV21Vrf2rZj2N4kDZecQMAnQBERZ 0.00455669 -fiat/revs sendtoaddress RX5E3bQbQVZ8x8yWPN62vAn9dMTMTy1JqY 0.00456140 -fiat/revs sendtoaddress RTz2yWcvs6pGcAWfHydeKQd9hLmemJdz9q 0.00456576 -fiat/revs sendtoaddress RUXptbPnBn2YRRdyC49gcaJDHubiA3YRSB 0.00457230 -fiat/revs sendtoaddress RCCpnrdKsSf2sT9jCwiv5rHPPfKrv5Se3J 0.00457896 -fiat/revs sendtoaddress RY5UbbhHznD7Q7oCUv1231jH6q5dneAZ2F 0.00458031 -fiat/revs sendtoaddress RX22MaJJikZHLU5wLpCcbhkwuhbPsdLjku 0.00458187 -fiat/revs sendtoaddress RJYZrP2PUg4ntsTEXwj3FAmS2e9yvjJZUY 0.00458900 -fiat/revs sendtoaddress RSSgUZFR6o2WphL5FsMcYkwW6nJvTdCbua 0.00459394 -fiat/revs sendtoaddress RGJcgAurvRGtU2HsFdZtpctXz7ca3gLF1E 0.00459464 -fiat/revs sendtoaddress RQLJ4TEq3Lpc2Cdsa2RVKC8tCUWzHrHERV 0.00459619 -fiat/revs sendtoaddress RKYD5nqo9QVEW9qZBixJZCPFjWg93GfpU7 0.00459650 -fiat/revs sendtoaddress RSDRFHuBjnYjiaZSZmKghNdhRvyn6DPtZN 0.00459813 -fiat/revs sendtoaddress R9dCUd361akDRH43xEYQUANJXXGmFbyWFC 0.00460000 -fiat/revs sendtoaddress RWnKnrxKT5iFPorQ9rTwkDi98G2ViwEDAu 0.00460178 -fiat/revs sendtoaddress RGKXVvMevEMvNi6ZLAAmeRAAw4WmMASoQy 0.00461094 -fiat/revs sendtoaddress RMXS3thPxDw3xgoHV6151hLqtqsxdMjWuC 0.00461199 -fiat/revs sendtoaddress RLpertN87EHT89h63YKXxui1TvrnUJU9af 0.00461248 -fiat/revs sendtoaddress RQLHF38zBbRwBZfEe97rafZP6ccNT4FztX 0.00461402 -fiat/revs sendtoaddress RMAu4SQFfMyCYC2SU5r2yTc8QjdSpEufs9 0.00461571 -fiat/revs sendtoaddress RDwH9vSZWmhXpFDipK7wHFmFji4eHn7aV8 0.00462051 -fiat/revs sendtoaddress RPmunhpDRhU112ZRuehcDCkoBorMkDJrdt 0.00462244 -fiat/revs sendtoaddress RCAU86vZ3WY1Rb7EswZhGHYEcUDKWC4uZ1 0.00463130 -fiat/revs sendtoaddress RBCdMvoTU8sFdjwrUhBauhqzjGcBAqfn8k 0.00463593 -fiat/revs sendtoaddress RHv8ffodSzj2KeZMxobwBWkNm7FVwCBZ5z 0.00464166 -fiat/revs sendtoaddress RXNMmgH1e4kiBAYn5VbrKzAb1MmtFXwjX6 0.00464645 -fiat/revs sendtoaddress RSxaHDg5tnxSatJed7hEZfPPWVRQECqeJY 0.00464698 -fiat/revs sendtoaddress RVvkX3g1EctA8JBFde7vRh5F1ncVCCqcYH 0.00464943 -fiat/revs sendtoaddress RXgyjejNhnieT2mPe6mfc6Ri4W8jWHNfPU 0.00465044 -fiat/revs sendtoaddress RDUjW3cSMHn6gTrqRJSLMTngq5bv5jxULa 0.00465266 -fiat/revs sendtoaddress RXuZtaSzQM2LFKBbt7s322yuJqxCu9uEo1 0.00465352 -fiat/revs sendtoaddress RQk5CmWpV4PpJ5r4R3ZuA7ajen4YFVHPuf 0.00465383 -fiat/revs sendtoaddress RG9DkA7R616ZwpcPo8YYNDojtm3wLUsB6s 0.00465507 -fiat/revs sendtoaddress R9NAUaRbTx8rjeGAdh5fuKvZZ3jMdqzP9V 0.00465778 -fiat/revs sendtoaddress RXpoatD9ppTTNApz3irfRg3ooardjYNjYr 0.00466521 -fiat/revs sendtoaddress RSKhx9YrArTGfReEcCqthNwCebvFs14hhf 0.00466827 -fiat/revs sendtoaddress RSdtTSEpaJdLDrAnhnB12Stj3eSAqdYuXr 0.00466982 -fiat/revs sendtoaddress RYLzY5ndAmAcKctQMT23jqCXRk3RsP2Dt1 0.00467476 -fiat/revs sendtoaddress R9oBwETfKqo9RGjPJAZn28MQF1Tycg5832 0.00467509 -fiat/revs sendtoaddress RSv6unQQuvEG7vtt7oTkNTB6opuaMRbo6m 0.00467574 -fiat/revs sendtoaddress RPmFpMNsSrZt66YuzLz5RakFjsw9KU5Xu6 0.00467981 -fiat/revs sendtoaddress RSCVCb7Dia6STAtCzx78sZyztaHcq1oy7n 0.00468001 -fiat/revs sendtoaddress RYGkvtWALDceJmhhdZcn8qwBbJr6hz9ejr 0.00468271 -fiat/revs sendtoaddress RSF2SejLrsUvvezQThQH6vSytCn7wR5GMu 0.00469820 -fiat/revs sendtoaddress RVNACvSZoyaP5dqeBCTi9DJtruxP5w3p3v 0.00470283 -fiat/revs sendtoaddress RJPtKJnYkWup6yvufUiEJ5TGed1uq5qifE 0.00470307 -fiat/revs sendtoaddress RJA2qpC6R2sv1D2p6gWg16vAvq6eWTaRhG 0.00470378 -fiat/revs sendtoaddress RN3oWYmBpaTTFLz9VE18a4zNETsZMULBUo 0.00470462 -fiat/revs sendtoaddress RRDYxvrHhJxBSWbdoMibH8sRtSZyb8WjDe 0.00470533 -fiat/revs sendtoaddress RDfTqDgfogqpbFia4Zks7bGWgn9ifUNabt 0.00470649 -fiat/revs sendtoaddress RMWL4Kga8hxuEUc99dXGLHWdrqJNYYoDkn 0.00471286 -fiat/revs sendtoaddress RRBWrhyiQwVxS4LhvpxvkARCMMH6EWRp7A 0.00471893 -fiat/revs sendtoaddress RJ4hc2rdF58StxQvyqxstsHY9pdgyRGwn2 0.00471937 -fiat/revs sendtoaddress REmKtHPNzQxbtNfGtsCn29kXRxLo9nWWgw 0.00472091 -fiat/revs sendtoaddress R9MdUSMpbdbkNgLDwTmhQQDuFbuoH3w6Fu 0.00472106 -fiat/revs sendtoaddress RVBNzbJCeMJNped3zvT2bnmQZhAoKB7Xiz 0.00472373 -fiat/revs sendtoaddress RWJApo4pDN8oUWrNtPwvwWMP8JPEccEzUX 0.00472400 -fiat/revs sendtoaddress RKDsdPTyL55Eregm1wMLSeV2Sdb7xa6eBU 0.00473851 -fiat/revs sendtoaddress RSXDphHP7H8deDAweN5qR97ueA7kBH14JE 0.00474406 -fiat/revs sendtoaddress RW1RwxMoz2iP3fvnkciC3HyRvfvWfc3JAs 0.00474742 -fiat/revs sendtoaddress RDgGtDSEZuuihrnV9XATQRJ8LDVfw5EZ4X 0.00475488 -fiat/revs sendtoaddress RCaQR2mhDU7XacDawRPkmArPVNP8zy7CAz 0.00475553 -fiat/revs sendtoaddress RJVyoVdY4ZoNpPCGoYwTDEj6JCN7bjaFwm 0.00475887 -fiat/revs sendtoaddress RHL4U3kedPoCqVVZL8zCajhxb5B788pYA7 0.00475951 -fiat/revs sendtoaddress RRdnfNmLqe25qYYE2kV6Fqy4o7zCEEcDP4 0.00476350 -fiat/revs sendtoaddress RWAA3uPKrBcCgSweCBQVHpKwtskMaA5v1Q 0.00476997 -fiat/revs sendtoaddress RAuEow9YMVqi9V6x7WQg6qETc7xcqjFhLM 0.00477138 -fiat/revs sendtoaddress RJhfrTBnbUyff5ExdccAxVdbAvHTovQGrQ 0.00477152 -fiat/revs sendtoaddress RMp4u6GjTS1iTU7aEJBgWtWCk9URFWDiSo 0.00477300 -fiat/revs sendtoaddress RMjK6VjdYQ7p94qGhK1dsfmJyzqbjnxeLv 0.00477634 -fiat/revs sendtoaddress RNs3Hteha9U9eHvsrjW5wXxvcRdpBue86L 0.00477670 -fiat/revs sendtoaddress RAEfPXfP1UV2eJaEzZkGo1u5xBiJa4jkUm 0.00477825 -fiat/revs sendtoaddress RWZKGtPieRwnApT5QPKeByHyEyQzYY7EgT 0.00477847 -fiat/revs sendtoaddress RWv4k2LvS764tR9FcQSoK1MQp4WJX2JkQE 0.00478097 -fiat/revs sendtoaddress RPuWuQ41iArhN8GNqZaMQjAQVEwNGbtMMT 0.00478133 -fiat/revs sendtoaddress RKRuE87HEV8E5pNKTCv5fzo7hh24p2P2tb 0.00478781 -fiat/revs sendtoaddress RTnLNP9QiiVr328n52brLERaCPvb2t4ibf 0.00479571 -fiat/revs sendtoaddress RKpnxZduejRoiyfWpyLxbhYUnksJAbf3VN 0.00479661 -fiat/revs sendtoaddress RDPJXQx81opjhFVnmqiDKLc9TNRDnGt2Ff 0.00480000 -fiat/revs sendtoaddress RNyGjhbAPz89bj8xSAt7TSDP3cFEjAhRbD 0.00480367 -fiat/revs sendtoaddress RR37i87ANLa1cyG2GUxMmRoDk6VNz5biWK 0.00480663 -fiat/revs sendtoaddress RMMNZBw4qazpb57FPqL2HdprgG8tm2RMLg 0.00481221 -fiat/revs sendtoaddress RUhUtaQZ1GM5ayEaSVmv5VjYsZQYEHiEz1 0.00481399 -fiat/revs sendtoaddress RG4D4UZRMJetBFsCCH2n4gA7gmuC1TdL7Y 0.00482577 -fiat/revs sendtoaddress RBHWyhUJGybw3gELYnHnxmY9vUM6oq34as 0.00484032 -fiat/revs sendtoaddress RY8xkfP74A8D55L4TANYrNkUvsngHBGtNY 0.00484076 -fiat/revs sendtoaddress RV7ZDSEy5Pfb7Gb2PbpxUrP7vxtvyAZ9Xm 0.00484187 -fiat/revs sendtoaddress RDkr39dwULFD4yrTBvZFM3QjG2Xn3s712K 0.00484360 -fiat/revs sendtoaddress RL3NcfFjRcpUjNxJgrMkwXD4msZ8LYZYZJ 0.00485547 -fiat/revs sendtoaddress RKbVQAtC1KrKQ8WaJ5wuuW5vmMeQfZv34M 0.00485578 -fiat/revs sendtoaddress RXFouW8RAFW4qLCrpYV7871iUtDA6Xsgk1 0.00485946 -fiat/revs sendtoaddress RW4yHSPmF54rjoc6ybkAriVsArDTWEsfos 0.00486396 -fiat/revs sendtoaddress RWXz8D3fpYsYJuxDRadmGPzfGemtHQ17Sj 0.00486551 -fiat/revs sendtoaddress REdYQismk5AAV7J7ZbwHj1JT2XjF1VQT7R 0.00486771 -fiat/revs sendtoaddress RKmMTZ8FfnHFAkCrcWvKzJ6WVHUbwB3Fir 0.00487583 -fiat/revs sendtoaddress RHFQpcGUzjfpZkeUFoZHeqXyngHn8xSRoc 0.00487802 -fiat/revs sendtoaddress RQL1AYbGhCQcRVkLiPN24796KDpZJRSay5 0.00487982 -fiat/revs sendtoaddress RJDJJ22wn9mvyPpJs6i5TBZoHikZfyd27C 0.00488804 -fiat/revs sendtoaddress RAMsENHisHeiMrww5JJ3n9ti4MbD46VQsH 0.00489092 -fiat/revs sendtoaddress RGJDcdch265PkVgCFop6RsWmrqsZEL3MqM 0.00489093 -fiat/revs sendtoaddress RKwryzd16NBAQeRKMBp7boYy15Dn26WyB9 0.00489497 -fiat/revs sendtoaddress RNHhsPw9H47TEEXqhcnGTF8g9XfXCBkEL5 0.00489553 -fiat/revs sendtoaddress RMoGHbScgUPFUe7GmTwhNPyTkvB7tQYAcC 0.00489765 -fiat/revs sendtoaddress RW1VrcEdke16oyC7qb4AhV9btiABBz5avS 0.00489920 -fiat/revs sendtoaddress RLKcb2fS7k6jUtnJbY8Ega5SrmhDPNK765 0.00490000 -fiat/revs sendtoaddress RBpgoc8p56XLW699vHvLAkxEvTXZWUUbL8 0.00490075 -fiat/revs sendtoaddress RAHEQiViFnLgpjuZ52JswYmXni2j9gKKPG 0.00490359 -fiat/revs sendtoaddress RXC4TFYx9Ryyty8fy2Wab8aiWuzen5pdpr 0.00490722 -fiat/revs sendtoaddress RYAzLUGC9VBLdpZQjCUWXb4GE9f8KxMPZ9 0.00490926 -fiat/revs sendtoaddress RMkEXYJUcZufQ1XztN6goHLD4RFw5LhjJy 0.00491210 -fiat/revs sendtoaddress RJabmmnFYCL2bfUV7G7Wnu9uyKco8aqayG 0.00492758 -fiat/revs sendtoaddress RG7pBm6qYi9mW3RUnZcTT8Yr3ztdXjdxY5 0.00493316 -fiat/revs sendtoaddress RJmgJtGXxZe5Rs9RyBRwka2vhyMGExHQFn 0.00493471 -fiat/revs sendtoaddress RHahynuEia4YEKBKvd8QrZtK8MkuQwz2rF 0.00494273 -fiat/revs sendtoaddress RSoGXJSH1vWzcm5BaYnejDf8U9pcKH9D8d 0.00494672 -fiat/revs sendtoaddress RCwaRGQ7JggkYGabHPLtCM3bUutWJBS8Tm 0.00495565 -fiat/revs sendtoaddress RKEsXgXVaHAJkbFPHPEW8qgu3gMenLgLK4 0.00495572 -fiat/revs sendtoaddress RW7moH2kMVTtSZ2VRPwGJGpbM9ib38evDG 0.00496235 -fiat/revs sendtoaddress RBUAe4bYLiHVZAsP9tKvetpEohgmf4azJk 0.00496390 -fiat/revs sendtoaddress RLpb1MpQHdU7xPA8dSdnPQVkWcmdAomiH9 0.00496610 -fiat/revs sendtoaddress RG7e5ZkfD6bRni1mDro3J1znLfgFbhfXPs 0.00496611 -fiat/revs sendtoaddress RQS9HyKitJL2R6dmvPhs8RHJa9yFgMfzeW 0.00496789 -fiat/revs sendtoaddress RG2nTR2k4iX1b4CE9pCud85m15458xvzHK 0.00497098 -fiat/revs sendtoaddress RAhKirPq9RnUxmzRPWAeomZj5m1f9J4tXm 0.00497900 -fiat/revs sendtoaddress RXBMHuo2nMUUvjTzhAaRESJmKtiC7T3MUu 0.00498304 -fiat/revs sendtoaddress RCE3DeFwgy55g5guq19i5L8WQ5zaQH6fZW 0.00498338 -fiat/revs sendtoaddress RGcmxW47g24fiWKqWuGkeg7sm2nVo9QNVZ 0.00498491 -fiat/revs sendtoaddress RCCz9XHDt9p7bJuDGGfrWh4v7NUrEvQ56R 0.00498646 -fiat/revs sendtoaddress RQKZwiNGAtbaYyPX7MyNpRCRzr72h6Rh7B 0.00498700 -fiat/revs sendtoaddress RCHNofZQ4bGuEMhzWaCZwuWKobUjf2j8Fp 0.00499149 -fiat/revs sendtoaddress RHra77mQsxeixSd4nvxuTw2K5EvEQv3Xfh 0.00499673 -fiat/revs sendtoaddress RQszvZQyim975ZdDKvjHSvif4bjcvTFXEd 0.00500000 -fiat/revs sendtoaddress RD93aH3a5RHqU6nGjEfqia2qPbh5hVcSkM 0.00500340 -fiat/revs sendtoaddress RRXAyY54zDRsHW6eMzLkbSuz6EzRLKAUJJ 0.00501069 -fiat/revs sendtoaddress RPRGX3yRMShJypfdY19SUpCUkBipzB3ohq 0.00501120 -fiat/revs sendtoaddress RWziMbwToUpEbMBqJ3LtVDEiYaeKM1bwLk 0.00501565 -fiat/revs sendtoaddress RJSZk37z4Eqzs2nAE13TW1Z3MNrmkKCWjv 0.00502077 -fiat/revs sendtoaddress RJq8rD9k8M6Nm6VFZKfuS4J4FGMXHACsZT 0.00502278 -fiat/revs sendtoaddress RKcL6TonjeM7mSws2cQbP5NQL59YrNBXiu 0.00503080 -fiat/revs sendtoaddress RMnsLrFGbMJkbX42gpTkMby4EmqsHTgVeb 0.00503479 -fiat/revs sendtoaddress RTHBnLmsY7X2mvTDdGos8Eknqwf2kEMccw 0.00505116 -fiat/revs sendtoaddress RUpupDRWoTK7oSHkPdi17Zx9ixPrFBv2QX 0.00505515 -fiat/revs sendtoaddress RTsEWiZFw9FMRbyRhADWUD5Gp2meG3xMaC 0.00505824 -fiat/revs sendtoaddress RNJ6QNgkuu3fWYb89H4FRSCRPwKG2Kwe9K 0.00506799 -fiat/revs sendtoaddress RHcy6mzGaY5KYL4sn29dfQKW1atZUcH3Xt 0.00506809 -fiat/revs sendtoaddress RGW1y8DJy73JVGU1x2UZV3rLpQA4FkiWL2 0.00507030 -fiat/revs sendtoaddress RCvyGJSY2B4MtyS3nnDZVAWJbsG3g8wHSR 0.00507453 -fiat/revs sendtoaddress RHaJ9wer4RXefypKyBDosET3v5hjit4Evh 0.00507894 -fiat/revs sendtoaddress RDULTE9oAKdjd6LdBbYWnNPqCAjWW7ZZjq 0.00507928 -fiat/revs sendtoaddress R9ZZE5t1eqHsthXnnpeynF5GbdRzr68EtF 0.00508486 -fiat/revs sendtoaddress RK8dsMRYKgn5HX4i7fABVp4vyCpBPfRppa 0.00508730 -fiat/revs sendtoaddress RBb3QHpkeD6Voh4nF5hoG9vo3mAbKEkxeg 0.00508885 -fiat/revs sendtoaddress RDajbcURaEYoBU7YdjWHCPQxE1iqMoTRhb 0.00510278 -fiat/revs sendtoaddress RFs4BLMxs9dgBZcbmzAZqAUXwZBKGoC3g3 0.00510400 -fiat/revs sendtoaddress RAQo39ZrSWd2mfRCQEC78kMmxB8iAuBy1K 0.00510586 -fiat/revs sendtoaddress RACNJ6LB5i1g4fpSLStcPXbgrdMV8ppoSw 0.00510849 -fiat/revs sendtoaddress RRjTEAiX4kqRcn19pC4Qw7tBcgDvRzXQBC 0.00511004 -fiat/revs sendtoaddress RSp5CKy7JDaA5Y6xkww2NRpWieWuGys1f7 0.00511309 -fiat/revs sendtoaddress RWvrbDaVxFDgSZx5o6gWVJQ78y7dNytNDP 0.00511829 -fiat/revs sendtoaddress RVkbbFrJ37GSkPUXwUWdeXqktMRevEjRyP 0.00512435 -fiat/revs sendtoaddress RHhCp8yGM3T5EvaXC3Tefn9Mn18Pfy2TXo 0.00512440 -fiat/revs sendtoaddress RR1d7camPuRttBTuH8DZfSQMAv1yBEd5qU 0.00512753 -fiat/revs sendtoaddress RUYDbpXuMTnyppSAT9mz33ppdZQtPBP9fQ 0.00512908 -fiat/revs sendtoaddress RTr4BXv7JDvZuxmHEfJHRmEjLr1PMuEJZh 0.00513216 -fiat/revs sendtoaddress RTokq4CCjxRjmczmgtokSzjt3mzM96NnAj 0.00513661 -fiat/revs sendtoaddress RHBvawcyNzoCuY7pHPMhfN4KcYijg2aP9U 0.00513910 -fiat/revs sendtoaddress RGAwj6hkszAVPnTb6DVpXMkBWcq6CodZnf 0.00514000 -fiat/revs sendtoaddress RMF9svwjhmBnTL1nEW7cQ5aChR3pDRRxz5 0.00514219 -fiat/revs sendtoaddress RB9Q4eXxUNTWzatTX8am7ZmYe54ZWXBAc4 0.00514374 -fiat/revs sendtoaddress RCobS7kVDYzYZyoiUKam2tCutd9Fb3gLxC 0.00514701 -fiat/revs sendtoaddress RBJnUdaMjcpTb84WotYyXZx9p4vbwQMp4G 0.00515420 -fiat/revs sendtoaddress RXCPD8NNeBxP16W3wHVyPYJFGckwvBRoBw 0.00517212 -fiat/revs sendtoaddress RE7uDjAmfLagq2i3Yd5fAzsBDTGsBz9J8J 0.00517611 -fiat/revs sendtoaddress RHi2w1ZQV31ZrViToLHT1y7L42j6DWJq31 0.00518641 -fiat/revs sendtoaddress RPRawtQVkCHywE9yHJD4gS6in4aP8R8cSv 0.00519086 -fiat/revs sendtoaddress RX72BNXUU744DZRu6AHetsHyFEK233tsqe 0.00519240 -fiat/revs sendtoaddress R9N4STJyCXR1FEZyGnmpk31RrFdhYMmMLM 0.00519549 -fiat/revs sendtoaddress RS61zTC8vz24LRVUPtLPc6JBsgmnU36KHF 0.00519777 -fiat/revs sendtoaddress RDUAyWJLVrGoPzx7xXwXD4uwJAKd3egW4t 0.00520085 -fiat/revs sendtoaddress RWNzWikzawbNUEHDu3SZTvjTqk3oJwDDuf 0.00520555 -fiat/revs sendtoaddress RN1XWaZzhYtTWvbVBzLcibtYPUroyRNCZB 0.00520601 -fiat/revs sendtoaddress RULx9Gez9CLk1qykmSuG9TnFBywAcNE3eJ 0.00521243 -fiat/revs sendtoaddress RVZPAKx9f3wnu8LGdFn6S9jAtSqzS4hDj3 0.00522333 -fiat/revs sendtoaddress RPdR7qhDFxWd8221q1jy63LxJ9EzrzHipg 0.00522500 -fiat/revs sendtoaddress RCbn4Z73M7zY5cR8rGY9byu9Ltyu6nKyEg 0.00523294 -fiat/revs sendtoaddress RVQ8fEgmgYHut4b7ZqByCrhD9aqHAKQG5W 0.00523405 -fiat/revs sendtoaddress RMNNsPpdxS9EXMg3gMCpZmsD8r7zD3D2gB 0.00523596 -fiat/revs sendtoaddress RUPYunTAZ95jmrnBBhLwAqp6wh1dW9xpAB 0.00523823 -fiat/revs sendtoaddress RGNzJabn31n637n5ho5RBJez6oms7qhQy7 0.00524662 -fiat/revs sendtoaddress RM6YZykrrMFCezauwZGJ5dcoYtXy7XuwCy 0.00525002 -fiat/revs sendtoaddress RHiv6ELg71ExLufEsGwoa4SqPg3m6Jn7kF 0.00525200 -fiat/revs sendtoaddress REw37PyfZsnhWUhkTAWx9pPT4haCAkKK79 0.00525400 -fiat/revs sendtoaddress RCFKiHT8QX1a9APMUwyweThEEnVXo9Ags7 0.00525438 -fiat/revs sendtoaddress RFgSMNYok9y9kVcpz9bZDxdiFsUHfE6GUW 0.00525665 -fiat/revs sendtoaddress RGdvn8hpe6C7ctpruSV38kLCMkh96tkVzK 0.00526263 -fiat/revs sendtoaddress RHBhjUWT8Egbd9S8gKLa2VFpH8PZs4rxUH 0.00526395 -fiat/revs sendtoaddress RNyp5PfhpFq3iya5ZdpLVpVD2giVQ8616t 0.00526418 -fiat/revs sendtoaddress RWjJHjVp26QQfbhjdRgihanP1LkyTYiXnH 0.00527164 -fiat/revs sendtoaddress RSvuN9j3pwZYf11Pq635rfBTNyKmFUc3QR 0.00527411 -fiat/revs sendtoaddress RDeV4Qiqh2aao2wYXyK425SVw8Z4t59kyK 0.00528085 -fiat/revs sendtoaddress RJf8qA3b95GMuQaS7RrfCmkwchiLqcxLHD 0.00528973 -fiat/revs sendtoaddress RTSwekeFTTunRRzNJucYxf8jhMmmuPVkbD 0.00529218 -fiat/revs sendtoaddress RC7hsJmvH5KhLnrNQnpPyXza2CktxAEhMN 0.00529349 -fiat/revs sendtoaddress RXGm8xrpemJD4F8dnZB1QgZEWo1PwoYmcm 0.00529484 -fiat/revs sendtoaddress RAf3uG4ir82h19dJtvAeV7n6ykbkhDkKt7 0.00530286 -fiat/revs sendtoaddress RH694adu2WN8H9yRUeHcPpLPcqcGNbsGDN 0.00530436 -fiat/revs sendtoaddress REpWeg3McwdU8V2wJBaf1yuwan8rq8aVdT 0.00530441 -fiat/revs sendtoaddress RQyVFrUxBxzegSttLg7sHUPK3ghkw2bhRJ 0.00530888 -fiat/revs sendtoaddress RVgisQnjhvXs5Xh9aM2tWwaLX2p1vpTgdP 0.00531338 -fiat/revs sendtoaddress RCyTpzcarwwCtC4QpeKXTmbai1mpksAUt4 0.00531385 -fiat/revs sendtoaddress RMKa7FtauxzY1S2ctFdesYQwW76ZBLx5LG 0.00531718 -fiat/revs sendtoaddress RYXmUZ8HevJhEKAJRWQo4fpt1Xrd1F49q6 0.00531872 -fiat/revs sendtoaddress RK5t5k86vLn9mM9i2vp4YfLmoCDVsKwqzd 0.00531907 -fiat/revs sendtoaddress RWtGHaN215h9WHna65Sghpg8b9pJMeAGYM 0.00532181 -fiat/revs sendtoaddress RRvJ7mq47ag8nr3z4SLEpaDE6So2j2NpzL 0.00532212 -fiat/revs sendtoaddress RAxehmDVPL9xDKTYE71pexZ625MNASM2jY 0.00532900 -fiat/revs sendtoaddress RBa7SBKDCZnYwKoTQ133FoeCGwrcHMrmrd 0.00533655 -fiat/revs sendtoaddress RSueebkCEDRjCgQUNZnXAvToThSM96QyDV 0.00533810 -fiat/revs sendtoaddress RWTTgzcHUUysWWDdFv7MtLgxkyadh3oSkM 0.00535304 -fiat/revs sendtoaddress RDRXb2XLd5pqSjyztvRQcC9miVb1oAfwpb 0.00535691 -fiat/revs sendtoaddress RWQdiKTudFqUnX7LKG3Lb5H61RxKntEzgK 0.00535734 -fiat/revs sendtoaddress RFHoaGLGA4auj4PWY7Qrt1ybi8JrJHP162 0.00535846 -fiat/revs sendtoaddress RN11EX32s1um9qPvqAQiAusJA4D4QTxTuw 0.00535950 -fiat/revs sendtoaddress RVpm5qZJZ86MKjXKq2jkFAVtdK4rNvecf8 0.00536174 -fiat/revs sendtoaddress R9VnVnNf5g5pzebWhqKVM14ky4N7cfMoYB 0.00536218 -fiat/revs sendtoaddress RBzSyWMNSCA66zPSQjnjJwJfxUf18AsdjS 0.00537361 -fiat/revs sendtoaddress RNnHQpK6QtfAxqyBufPaTzmp5sSTD3BS4N 0.00537760 -fiat/revs sendtoaddress RApPJM6M8nSvbcrrYv48qVLcG1TmaFA5oY 0.00538100 -fiat/revs sendtoaddress RHDXduCiGfv818DEFYeT8R7VQ7akdSdng4 0.00539543 -fiat/revs sendtoaddress RGCe1jBHfNMXsZvDxvuiEn27BSYr5smqej 0.00539592 -fiat/revs sendtoaddress RVLzPp7NR8TCmpgWmZDA5BK43R4YK8NUcd 0.00539673 -fiat/revs sendtoaddress RPUyucFjHKCpoHcEwgCfyYDZxU5PD5TfYs 0.00540000 -fiat/revs sendtoaddress RTXXRgujmKPznwtFSPWQGoW2WscwgKWHpH 0.00540525 -fiat/revs sendtoaddress RMVm3xBYNDYG8sVrQiRasBgjVmzzYMRfgf 0.00540679 -fiat/revs sendtoaddress RC8bFZtpFCYfVc6UqkTNk3bQ7QrLsa969v 0.00541579 -fiat/revs sendtoaddress RLiYhmwSbVHj93Ha9xWerdattyYASwYTEt 0.00542228 -fiat/revs sendtoaddress RAg92KKyZnNPzjtdghVMft5frUCgQAkqZ1 0.00542381 -fiat/revs sendtoaddress RMqQGGy2gMXaoeSbTXF7r5QtTAPo5c9Pce 0.00542432 -fiat/revs sendtoaddress RQnfZdD4CaVEYwc1PFxeZKUKJE323Cn35D 0.00542561 -fiat/revs sendtoaddress RLFCCKwvhqwevRNWg2jK1HDJMx4QTXAbRj 0.00542715 -fiat/revs sendtoaddress RW4UMFKHeXSQrUKAbEKE8FPgFLuy75neoz 0.00542948 -fiat/revs sendtoaddress RSxDBjXYhNqnPP5x4Z1TVHALJ9m7SJENpk 0.00543024 -fiat/revs sendtoaddress RMxxSTxiMuFjREqRPHDg1MYRmrvP2YzefT 0.00543539 -fiat/revs sendtoaddress RBK3K2CQXHq3TwY31YYP6pheVtvKmCwqBB 0.00544000 -fiat/revs sendtoaddress RDtfBJqFNfrrU4PPvWjpYxkRz1oQDusBsU 0.00544230 -fiat/revs sendtoaddress RFkk7WFFRUe3G9ipFyqgxPxtCurWMSDvMZ 0.00544498 -fiat/revs sendtoaddress REZUvozgDCgG5XCpfSB92dLX3BRTkAtz1L 0.00544653 -fiat/revs sendtoaddress RACCxEgmQ2HEnD2igCCny5aArtRQSEopjm 0.00546168 -fiat/revs sendtoaddress RCbCEFCd2KfiubJfFWW8XzyX3k5eRdDpcE 0.00546400 -fiat/revs sendtoaddress RPkzJTLmG21SapsR8bck15oonnTfxUeqeV 0.00546413 -fiat/revs sendtoaddress REJ6Ea6sds7NENnVxQL67DQ74gToPELTFf 0.00546567 -fiat/revs sendtoaddress bbaffqvZobXnktsDx8TBAqrDU16xiqMJo7 0.00546724 -fiat/revs sendtoaddress RWSCRotTj2kbJvt2VUHrLE1YgNzHCQXeNo 0.00547590 -fiat/revs sendtoaddress RWoJeHpUNsPdfieE4g6dm4qVyFHXUSASgx 0.00547632 -fiat/revs sendtoaddress RM2ZKDYJ9AsHus1yhBsfAF1xh7iUvvqJc5 0.00547885 -fiat/revs sendtoaddress RQN8Z5vbBgpUcUhgpq7oe35EEPctbPTqKb 0.00547895 -fiat/revs sendtoaddress RHoRPU4FkBehSjhMxbrosY1pBPugbRLudj 0.00548204 -fiat/revs sendtoaddress RFBoHZfiECkZDbeUi2tG6ZThd9KNudYCfZ 0.00548269 -fiat/revs sendtoaddress RQsuzuUMTPLgNU15fzk2QdCbwDQGAsoMqS 0.00548603 -fiat/revs sendtoaddress RJGHy83EjKznQ4o7sPwUsL6wqmwv5uVJbR 0.00549251 -fiat/revs sendtoaddress REoZrsMV9U9vEgtaGBremJbcVV9WuFvccR 0.00549392 -fiat/revs sendtoaddress RRiCdUzijAE1bqt3udYovVTKdxrwF7QiuV 0.00549405 -fiat/revs sendtoaddress RHzBzvCaqd3DNEMDkbz38Bu2FDv6qy8TfB 0.00549732 -fiat/revs sendtoaddress RC6U7HZ8vJWVEVmgKS36mx57XPpkU26Npk 0.00549887 -fiat/revs sendtoaddress RAHVKYQweJjQs4Pvi9CJ63rLJR2vEXKPvF 0.00550000 -fiat/revs sendtoaddress RVDDcn2cUBaprCAFhh8FMJ1YoHYnMNtGdV 0.00550118 -fiat/revs sendtoaddress RXTY8EmDwyUyAxBw7hT4DzDWFCFA2kh9iq 0.00550386 -fiat/revs sendtoaddress RGy4WeA6FUi3JZ3iedPR34w2xSHo7xud27 0.00551188 -fiat/revs sendtoaddress RMCDJuXg4DitW7rd3FueWfYKisqLigfR7Y 0.00551343 -fiat/revs sendtoaddress RGN6K6waQKXyZoz6ygkdTC7fXWDZwUAuch 0.00551626 -fiat/revs sendtoaddress RUT3LLF9uMq9uM5vit62EVbJnPw7UHC9Lw 0.00551768 -fiat/revs sendtoaddress RCSFW9XBSv1XTkJPszz3Hjbu1z9MXgTXvE 0.00552000 -fiat/revs sendtoaddress RNyHRwo36KPzJHXXV4zma2v6ZtYWiBzYJi 0.00552620 -fiat/revs sendtoaddress RYMgUqnNmDx33jop3346MGM5uYVNiX5P8t 0.00552775 -fiat/revs sendtoaddress RSfACTKVLGicV2UMjN8CW8riwkoVtBaC1K 0.00553224 -fiat/revs sendtoaddress RTjLhDRyU6XUGnzE6jDBoUsMNFBj5FYobH 0.00553379 -fiat/revs sendtoaddress RYPpiYFtP4TZjAT3itSLZdk2fKKQ4UJdEV 0.00554656 -fiat/revs sendtoaddress RXXe6GhctoCqMhEPDTQxMTxjVDCjZdpLpW 0.00554811 -fiat/revs sendtoaddress RLziDDqN1gLsmykXnMCrwKh3LwtdtMACac 0.00554842 -fiat/revs sendtoaddress RA88pWed96KSJgm5gcgYsb8g2VUfZt2sae 0.00554894 -fiat/revs sendtoaddress RQokSgWu2ALC321QuAshMVZj8ZY8BaMpgg 0.00555139 -fiat/revs sendtoaddress RBPctRXcxsrs85Lyf4vqJkU1aq4Khw5MMq 0.00556286 -fiat/revs sendtoaddress RXRJDjEbTAayaU1MmJ9GTrQeRVCEoNmtbE 0.00556326 -fiat/revs sendtoaddress REBZbg2qgMNg1wnq8vEUsmx7MQrnjRkV35 0.00556594 -fiat/revs sendtoaddress RJt2MrPxwu36ZC8FNxUsBk2HCCqEwYhPTV 0.00556749 -fiat/revs sendtoaddress RL5HtFd4vwhbFCvxoraDLjCAGQ8fgnm7Ey 0.00556816 -fiat/revs sendtoaddress RYAhaeB5r7qdKSd1n2sgnxjM3JtSU1Q1Ht 0.00557801 -fiat/revs sendtoaddress RDUyJqFYmPx8ampPXoi5JKShJTfJr3mMsU 0.00558200 -fiat/revs sendtoaddress RCrSxNTbCPELJgzRa5FrUHWoqTxX3Yeq69 0.00558255 -fiat/revs sendtoaddress RADhQSqyrmb6g242KUnMNb9zxUDmzGhpVJ 0.00558264 -fiat/revs sendtoaddress REXY4MYifbJAuwqdkS2jABCUfJaoFuhnsb 0.00558663 -fiat/revs sendtoaddress RVqJ5hi17YjUfv1ZcmsqpbzCfpy2kaREMN 0.00559837 -fiat/revs sendtoaddress RKgju2EHMUw96CDiWEM4dNwkAoV1xPwano 0.00560236 -fiat/revs sendtoaddress RJcKxYa7Pt1VSACX7TwHBQasnVAZApVgNG 0.00560300 -fiat/revs sendtoaddress RSndd8vymjMPaBtasXkiGihVRv3oYB7L7R 0.00560699 -fiat/revs sendtoaddress RUtupvGgPXcatGTgtGwhLXJpo1Frbeuv7C 0.00561501 -fiat/revs sendtoaddress RBHpyZowvPr9V9BXD62kDGmmUfraroFYC3 0.00561751 -fiat/revs sendtoaddress RRCDc3W6ZSQzJNYiTt8quAApNA5P5YXGG6 0.00562019 -fiat/revs sendtoaddress RX5imWhK7EsfbMZU6bUSjK3b1sqEhbhLtn 0.00562174 -fiat/revs sendtoaddress RCngZzyNjKzSimDUAWgeTzX1dvgGNe7av9 0.00562482 -fiat/revs sendtoaddress RPhy1FYjhWUpPMJ9KVo5Mqf3ENBWjtzVmX 0.00562976 -fiat/revs sendtoaddress RJSCQkx8rAvtGJ5udgYNaog5m79ewssBB9 0.00563130 -fiat/revs sendtoaddress REVYiZt92vbwaXuvdJEqUhJE9NgPHJNCJB 0.00563284 -fiat/revs sendtoaddress RU4RxyhQHZcnQTvk26qcceEP78nS24qU9K 0.00563295 -fiat/revs sendtoaddress RF4GdzKJQTo4j1tNjozWyL7QQVTaBJtAai 0.00563439 -fiat/revs sendtoaddress RDf7A7L2rG9CBvCUQQ8wyu9TXVTxPAkd5x 0.00563534 -fiat/revs sendtoaddress RUn5Gj621GJSJpiJa9DKbqxtDMnxFWRcNv 0.00564400 -fiat/revs sendtoaddress RJhFS5jJTmRWopUpqzh2ccE6nfgWqt9RMJ 0.00564978 -fiat/revs sendtoaddress REUkycwUciwbAeSCq96sbCKfRMCwRsUvpi 0.00565012 -fiat/revs sendtoaddress RUAwyRDXtsv7B3GVU7Gbyis187fEF9Q1Vb 0.00565320 -fiat/revs sendtoaddress RGrrZZkEEiupBfCKU4YZWezT7TdcFaiWn2 0.00566527 -fiat/revs sendtoaddress RKRzK1Yn78NiHGCRCMUf1EKz5RQoeockXN 0.00566926 -fiat/revs sendtoaddress RHzCdDtVepZiUfdExgYAKFZv7E7HA4oPSb 0.00566990 -fiat/revs sendtoaddress RBHTwfj8wW8tPJncNZoQpcw38vFiGEJBmV 0.00567014 -fiat/revs sendtoaddress RS5MdXH5LmnjLRRYNH5FWvsEW81XWiXUmk 0.00567051 -fiat/revs sendtoaddress RXoqyFNdk9fQuBbGirpWqPxzZuVUhM7oH3 0.00567108 -fiat/revs sendtoaddress RCeSuUcPLGcyMX5gYLrtXZKmXTKhYFvVPL 0.00567169 -fiat/revs sendtoaddress RUMreZrGhcd5zYNjdAz1jDT5FTorLwnHr7 0.00567234 -fiat/revs sendtoaddress RXHgvXSXHiRcw8s6BdbrujcuDDYpK6oAkT 0.00567265 -fiat/revs sendtoaddress RUrrpG3n7jdCn3fMKCHa4bbj7BoQ2YeAFn 0.00567389 -fiat/revs sendtoaddress RL87PNyQdyjp2mHJ33xz2EhmUcmwkaB4P3 0.00567593 -fiat/revs sendtoaddress RQfi4xtCHszA5jZqvcAfAmbWBz24hJrF53 0.00567660 -fiat/revs sendtoaddress RKHmefbFrEasog3gBpL9Ezut6wQtg7HeTf 0.00568000 -fiat/revs sendtoaddress RGwJoxxk1buGxFpJMZ7LrwM42RLttXA2vD 0.00568380 -fiat/revs sendtoaddress RGMuge1u1y2efD255hJqLjGZRgsjBhD5Cw 0.00568586 -fiat/revs sendtoaddress RYGngvxBbxuGzCMkSCMWUFQ4YLxhaKbUvF 0.00568644 -fiat/revs sendtoaddress RVtA6b3uFMXnM6uu9TvEGCp9QAZPTp1cyt 0.00568864 -fiat/revs sendtoaddress RAaU1p7LS2oYhkcZhgAZbxVe2dpDksxsrC 0.00569008 -fiat/revs sendtoaddress RCvmCwW6SGK9kTaWuAHmULy3d3BiSWz6he 0.00569043 -fiat/revs sendtoaddress RSBWYwxkj5UcHeYezxGnQV3wDS4qJutsap 0.00569107 -fiat/revs sendtoaddress RHopxtJrppmEzGEt1eW29NxJUHTohWcjjx 0.00569274 -fiat/revs sendtoaddress RCdG7wLBGBeQjsTMJ9AE7dx78TtzUqckMi 0.00569351 -fiat/revs sendtoaddress RKmGMx8nGViW8X4v2kEPzm246LZpuJFa6x 0.00569506 -fiat/revs sendtoaddress RShWa6t5V5zM1RwWRK6io1xQYyxDUF8Wxn 0.00570153 -fiat/revs sendtoaddress RERVcLF1ncNv9o1DLYeVuN8kMRNaocrmAc 0.00570294 -fiat/revs sendtoaddress RBhou3pXrCqL6CZPJczz4qqDkDc3B8cb3F 0.00570900 -fiat/revs sendtoaddress RWUw9sWfSYfnBVYuZxM3ZwsfoBg92ipkii 0.00571021 -fiat/revs sendtoaddress RBtmAxvSuR7QQVHnuuVSfvS9xwZ3w1BMaC 0.00571782 -fiat/revs sendtoaddress REcBnbSba1X24upRSSKXHUkupB8yj1Phsu 0.00572189 -fiat/revs sendtoaddress RHgsnkAmZuEuaztYRvd6yuJNHBeJXzLhWt 0.00572594 -fiat/revs sendtoaddress RMZ7Wet5MhihAsJh8vfBW9yfkH8dn2u6Zw 0.00573432 -fiat/revs sendtoaddress RTAVVQRwvm2BMyNWyfLjiSTbstuH31K2nj 0.00573819 -fiat/revs sendtoaddress RN2wkFc9Ya7RMz1JpLPzZYbhoTZ8CT7yqW 0.00574127 -fiat/revs sendtoaddress RDQddTwdrAgY1LE7sxDj1FP6Ny1S9fzJSZ 0.00574532 -fiat/revs sendtoaddress RUT21DYRbHii1QkL4GetgMHD8d2aCe2DX4 0.00574653 -fiat/revs sendtoaddress RRzZJ3y1nEx1VPZn3DmPchTwGbcoWsJvfR 0.00575287 -fiat/revs sendtoaddress RH7zQHUx2sZrf9mxM3dDcxaKMDDURHF4BT 0.00575454 -fiat/revs sendtoaddress RGhh7HnivEXL358iSjBVqghF6QHtDp9Dbs 0.00575733 -fiat/revs sendtoaddress RFoNCjyEahfVDKueP14QX4JKtTCzugv7Hd 0.00576196 -fiat/revs sendtoaddress RQXzuj5pfDtZktvsxM8nYW79zJDuCUUbra 0.00576500 -fiat/revs sendtoaddress RTdWAVUTm7FSPhLu8vsWUXSfNKTAwcDxtb 0.00577145 -fiat/revs sendtoaddress RTTENuQWEs8Ck9xBNhg8dNdQDNMHFMMhCL 0.00577187 -fiat/revs sendtoaddress RKmaGpSmTewDAXoWDdSwF9B99ECXE8CtJB 0.00577370 -fiat/revs sendtoaddress RKgFQu2Jj7fYt5q6sa4iQD4Pp88hzsgqoG 0.00577833 -fiat/revs sendtoaddress RBLhG6BNucW71xf8fYHFy3P5jqhgWvfiuB 0.00578600 -fiat/revs sendtoaddress RH9Uba9kXxeCwRrPsgAuj6MEzv7zsD3Pm1 0.00579101 -fiat/revs sendtoaddress REAQiyXDUhR21fNnx6uig423kPSgL6k2SZ 0.00580000 -fiat/revs sendtoaddress RN3Sr93qCZXU99ABUAWZdLvUcr3RUwToyM 0.00580739 -fiat/revs sendtoaddress RS5chW9qNZTkUuEEy2e5778Q9r9dtRsXao 0.00580808 -fiat/revs sendtoaddress RENegCvD4UMnGGd9PSf2konTMXiF2aAaSU 0.00580984 -fiat/revs sendtoaddress RMh7zNGrr79AfVkbo5pG4YAL4Mp2v8iKjx 0.00581138 -fiat/revs sendtoaddress RUJeTkc9dxKZciAM5zsea8b4g2HuqQzkQg 0.00581645 -fiat/revs sendtoaddress RSFT7cWvdv6ZMwEYAzAYJZP6NEe6pfhRd5 0.00582000 -fiat/revs sendtoaddress RGWUhxfCjjdp4emPuMZgssZdAixJrbscYG 0.00582653 -fiat/revs sendtoaddress RDr7T1BCN31PTL664PWeP9BwTbASdtF84G 0.00583563 -fiat/revs sendtoaddress RS9WCPzBTzfLU4PDaSS4SFPfUQoNb3Nptn 0.00584026 -fiat/revs sendtoaddress RXYnpgUBid7nJ8BXvbmormkZiZggmnMqYg 0.00584613 -fiat/revs sendtoaddress RFEdC2ibjTYgCeb2SThkSoWvmm4DrSTXZu 0.00584689 -fiat/revs sendtoaddress RFQUGdqpqAbqspigb6KG5gMVvjLgPsAgrn 0.00585469 -fiat/revs sendtoaddress RDMWBzyYgWDyv25djHvDhr4kDPNUeULYgP 0.00585604 -fiat/revs sendtoaddress RTubTpvqYgAXYjki6XawjFMDh2Bmqu6NYz 0.00585914 -fiat/revs sendtoaddress RUcPLvqgwUetUEQj9jpAXsJyrGqSuv4x8E 0.00586472 -fiat/revs sendtoaddress RHh6gffEPTSXKQs1fEP6J1mcPcRqaiCts7 0.00586541 -fiat/revs sendtoaddress RN8K2whGzrPHUNkCwiAavHdB1fR4yTkwMo 0.00586627 -fiat/revs sendtoaddress RDW2aon7rrsAY2dish95bKYSH9Q73voJcL 0.00587194 -fiat/revs sendtoaddress R9k2QAczeowuiqrqiTdZ6RwMQF9TaCrSF1 0.00587429 -fiat/revs sendtoaddress RWLnLH2nBiRbgA8MHmovfbL3n11Xu9jRkx 0.00587828 -fiat/revs sendtoaddress RQkbZ423z6SeFttXUTFcC6urEZ72Gyqrp5 0.00587951 -fiat/revs sendtoaddress RPQ6hwP72NWBoyfhKutHVgkXdHxFv6TJR4 0.00589451 -fiat/revs sendtoaddress RDUthxE2DP62HCTbkQ4V4uzpsjudFHZkQ8 0.00589465 -fiat/revs sendtoaddress RUytQohDwGyf7Sg1XVbiE5oiWNy4Pdbwrh 0.00589710 -fiat/revs sendtoaddress REDELjMmxd4D9t7XH445NPritmivuuR3F8 0.00589864 -fiat/revs sendtoaddress RKSwbPEfKe1hkxdEA7bhSqkVvsFT2B1NGM 0.00591200 -fiat/revs sendtoaddress RCWwNRqWRwq5SKATCzuWbJmayEmo5H513e 0.00591379 -fiat/revs sendtoaddress RKEUA3hMjcPuWo8nuJr12ndtmKjkviR6bz 0.00591400 -fiat/revs sendtoaddress RFBiCQCdJ9wUpL9QjFDJjNNv4KXUVZ1bRp 0.00591494 -fiat/revs sendtoaddress R9HVek69iLhLBqCsc4eY31DVX8792yNDDr 0.00591647 -fiat/revs sendtoaddress RS6T9QqCoAWMFREMagyRUGhEEbGyH9pzda 0.00591802 -fiat/revs sendtoaddress RW7MxqVKZQgjMy8bXy8jGtCXDRwMVh5yuY 0.00592000 -fiat/revs sendtoaddress RX7wJr26p8J37EYuLe3UkXkDYiKekTfaEk 0.00592493 -fiat/revs sendtoaddress RVnzxA2UhDq9MCqEFcrJpRdAd6jC5Ktauc 0.00593496 -fiat/revs sendtoaddress RWuHTP2GxQ6ru7N6CM95Nyp5FL4mRYwbWU 0.00593805 -fiat/revs sendtoaddress REgmJSujr2JS137Qb5SBrLCxK9UEd7mtgG 0.00594000 -fiat/revs sendtoaddress RUzSBXwqyaMLqb4RY7pRQgYHtkWwwy7BuS 0.00594276 -fiat/revs sendtoaddress RCUNekMDiux79LzKuSF617kog1X38cWfa6 0.00595353 -fiat/revs sendtoaddress RUmANCYTfoYTEpwSipJKtEDtnDnj6CBApj 0.00595869 -fiat/revs sendtoaddress RLTRxdHcjewmqAQj36skATran1M2v12ft2 0.00596312 -fiat/revs sendtoaddress RSNXCCP4LtU5gr36Agvx8zNu719HJPTRmT 0.00597101 -fiat/revs sendtoaddress RRxzUTHbgr9oX7LbZnkjimnwbdKznaZ7Tv 0.00597559 -fiat/revs sendtoaddress RWTd3ntMZ1E8Lx3WPYmpRhQnFMVWxY8ACK 0.00598671 -fiat/revs sendtoaddress RNdSaLsi62eJcVTiKZT21gjzWfuijnSVVu 0.00598980 -fiat/revs sendtoaddress RQYZeEweDy3zrzvJSJp7NSnKfLyBv3eF2c 0.00599036 -fiat/revs sendtoaddress RKpXuRz5fZ73xXQUDFy1S3dDLgBN49hpkp 0.00600000 -fiat/revs sendtoaddress R9eHbVUveaaeyRjp7rH5y5gofwwpyfeDN1 0.00600341 -fiat/revs sendtoaddress RREaBJb4otpyyFox6wNC69WSSi7xQRfn6Y 0.00601546 -fiat/revs sendtoaddress RJVh2LpxjQSQwvJnJCq1zEHTM86fTBYpj8 0.00602000 -fiat/revs sendtoaddress RCTmtFr6rvXSt5UyXmYs8SbBwGs1s7ovrm 0.00602639 -fiat/revs sendtoaddress RVaP72a9usi4kuP4ECpWofwjUWjfxqu2B8 0.00602791 -fiat/revs sendtoaddress RFraV1ZrsDKnTp1NV1s5PKxSD2FtNf1y9p 0.00603002 -fiat/revs sendtoaddress RLurkJ7JhQzd3XQY1Fm8zFAvpbEUE9aN23 0.00603037 -fiat/revs sendtoaddress RH5gJxgXEQWsCmk1SQi4FHmAyxSGJmW5Dy 0.00603434 -fiat/revs sendtoaddress RGoK61REbeuAUs48BMphwb6eDnup6U9WbR 0.00604000 -fiat/revs sendtoaddress RKjVCTjw2tAQv5VcQjtztRteypf64SXvdR 0.00604126 -fiat/revs sendtoaddress RFKaZ3wCwRLfc8tREo1tvXevhKFGfec46k 0.00604434 -fiat/revs sendtoaddress RGF3VjD4vUoFEqpuBQccJMBmare35EfynH 0.00604589 -fiat/revs sendtoaddress RMTbeBcrx2FKibFUZfgJfFihEgR9ouTWNx 0.00605400 -fiat/revs sendtoaddress RMdztKP1TUo4xJqiSNKupxaXtztUU7SzNZ 0.00605437 -fiat/revs sendtoaddress RHKAoeiqaMZd6Xsdat4bXyyNm9KGAxFt4F 0.00605909 -fiat/revs sendtoaddress RPJ7WpdDiJ5HWQycUoZ6iyvBFKV34aE8ft 0.00606372 -fiat/revs sendtoaddress RBSpALna55u3NarVFV3Nbb26sL1gUSLqLo 0.00606400 -fiat/revs sendtoaddress RD29Em6t9zBQmATLxr8dJBJPtfdQZtyjy7 0.00606501 -fiat/revs sendtoaddress RW9NyFFTxG1ikRKy4bokXW62mzpELEot4D 0.00607387 -fiat/revs sendtoaddress RKyueWPFeSy2asUaMXAq1GqgYKqfTYnw45 0.00607485 -fiat/revs sendtoaddress RMAChTg2nsEcdRnqAQhufLTFYcrT1XaLkd 0.00607791 -fiat/revs sendtoaddress RLG9aKSmeCPz97uQDQwo8rMFw3V4xBE6Dh 0.00608000 -fiat/revs sendtoaddress RJS3KKDr4qx3CGdhDBRqm2Hn52ww8H57Y6 0.00608038 -fiat/revs sendtoaddress RArFUYsWVB8mzKGxkRnjG299jHJWhTuJEt 0.00608100 -fiat/revs sendtoaddress RK1v3eMdHHUnxjY3s5nwzeSKMKeBWNZZq6 0.00608327 -fiat/revs sendtoaddress RHLw3hgajj6W97DxQ1wvAijYXP4ysBa7NT 0.00608408 -fiat/revs sendtoaddress RVNMJQHKVRi84AnwfjstrWwrUpg6Pu71jo 0.00609460 -fiat/revs sendtoaddress RG1xjAK4cfgVR8wmTQVkGvPcCPZJsVMinv 0.00610000 -fiat/revs sendtoaddress RFKbCF9P2YC3jSuR3W1X7cuVDnhA4AqwW7 0.00610612 -fiat/revs sendtoaddress RSRq5jZZdBLm2K9Rakbps2XN99DDrwaa8V 0.00610767 -fiat/revs sendtoaddress RKR45xhjWW63EYpW4A2ebJUGb3TMUd3YtG 0.00611797 -fiat/revs sendtoaddress RFrgao9JNPkNARCnvLh4kSsHBzivwLwBed 0.00612055 -fiat/revs sendtoaddress RBps5cjNm2jQAjwN1g4RSAEfuFyFG6wrAy 0.00612311 -fiat/revs sendtoaddress RQ7uMgMUStCw8EzCjS6aQfNSroHFb9eEXs 0.00612389 -fiat/revs sendtoaddress RANVZ3MKmjM58y8zjAL7tZ4T144xZEfW77 0.00612898 -fiat/revs sendtoaddress RBWEbnQTjV14DvW93iVm7pm7mT8WEXT22S 0.00612933 -fiat/revs sendtoaddress RK6eiUSELDHCoauaDoBVrhLxePDgfDxfc4 0.00613396 -fiat/revs sendtoaddress RKbCK7L2X5UHNp42CL6qLkaqCsjmi5nxFn 0.00613572 -fiat/revs sendtoaddress RGVYTvM3j8tiDSHdA3FYdWDgcfRb6NQzN7 0.00613833 -fiat/revs sendtoaddress REsgN22ARUdG6YDKZ9myR88aJiuyP89sb9 0.00614318 -fiat/revs sendtoaddress R9yd18YhsHQKKPvtjiad9EQtPhwVxa3UWy 0.00614790 -fiat/revs sendtoaddress RKycTGLvrgbf1EoeLBBAAmG9QieRKA1iuT 0.00614969 -fiat/revs sendtoaddress RFR13w6KSepyffuDMywTxktrGPyuKXfskP 0.00615277 -fiat/revs sendtoaddress RCpjHYGRFSh1aCFTALiZTe5PEGj1CExHSP 0.00615432 -fiat/revs sendtoaddress RYEuZPZydLuGAdRD56XzAQuXmn9Sy4D1Ng 0.00615997 -fiat/revs sendtoaddress RUwRn3XdXSumRpv59xYHLQ6UbxTQqEoREj 0.00616253 -fiat/revs sendtoaddress RPcD9qy3BBKeMxsXaGsQB99zGmeaVHstET 0.00616484 -fiat/revs sendtoaddress RATZoBcMgRoL1vidm8bnvzKYAwkRaVTEYr 0.00616535 -fiat/revs sendtoaddress R9THt9dBAKweCi5tH7eMxfVvtU5w654Yq7 0.00616561 -fiat/revs sendtoaddress RJvjSVHABW8FdtA1x2QxxnH51cfWvDcsXs 0.00616583 -fiat/revs sendtoaddress RW1EDW15H3DELV6x9dAQ76ZFas163qG1wR 0.00616752 -fiat/revs sendtoaddress RVo72ueDubQLPiPtY9nYHGGDHmcjRsQtLK 0.00616792 -fiat/revs sendtoaddress RTtAZapqfm7fiUP6CWiSycgDoWtbeutanW 0.00616907 -fiat/revs sendtoaddress RGDEHH67ictZ6YYTjnahqgmJhwkpkwxa8Q 0.00618821 -fiat/revs sendtoaddress RNKxupVAxo75x73qTde6HQM4TnH7w56UUP 0.00620001 -fiat/revs sendtoaddress RV1s8sBEUBQuyQz3hFqrEDzrmYc8Jron1E 0.00620039 -fiat/revs sendtoaddress RUhXyy25oVrTCYR9uqQzEuNXytrj7J2S86 0.00620168 -fiat/revs sendtoaddress RLb2FtdkuSueuwpEFMBpvSRte8G6ENMr3G 0.00620458 -fiat/revs sendtoaddress RV4LwSb2woPQDLCnkzZ1wv5HS6Sd5AxagX 0.00620680 -fiat/revs sendtoaddress REVBC5Ug2gJDQjmkBneBbuUvnGfF1rzsQX 0.00620857 -fiat/revs sendtoaddress RPifMVu6q6rrdR2vWTaDphc1Vx5iYd9HXi 0.00621317 -fiat/revs sendtoaddress RASTNkPHMKcTzXQSmmB2CctNMvMTHsMGLT 0.00621659 -fiat/revs sendtoaddress RRHLrxx38r8m5HqXpwUwvkTCZhaWs5N2AQ 0.00621967 -fiat/revs sendtoaddress RE4rFPpDn8daJ5f79DduhYKV37WwuvUPpE 0.00622347 -fiat/revs sendtoaddress RWYBK7PxHqk1t9d6yvuVX8oiGpG5xMMZwj 0.00622388 -fiat/revs sendtoaddress RCAJr3FGfTD3bjUKMginAezJ9TGmAAZyVG 0.00622640 -fiat/revs sendtoaddress RADT6mhQ7Qr5qixxMkQyAKYUbRxjw3KojD 0.00623442 -fiat/revs sendtoaddress RXc3s582ExKKWzpE4DTXimn1zi8XRjyFiC 0.00623597 -fiat/revs sendtoaddress RDgfnvEVi8gee9eCDoPor97YJ8hWPV6QrJ 0.00623891 -fiat/revs sendtoaddress RA46tKefmRb2V5C96X5Cx28Jcuka3MTHSx 0.00623905 -fiat/revs sendtoaddress RGmKbdTQRe2YvpXMHZ2tQXQc4nNEzyoPwX 0.00624022 -fiat/revs sendtoaddress RK91ZMWDEugaDYpMcevEfx7xqLex8mbfWw 0.00624118 -fiat/revs sendtoaddress RML4fdFzZiRVth5LnmYe45BQAgy2xya4EN 0.00625028 -fiat/revs sendtoaddress RGpyHoP6t4CYffEydw6nG149g4uU4M57Pk 0.00625478 -fiat/revs sendtoaddress RFHkSw2QmyeF54zveN88LALn4R5KF4H6H4 0.00625787 -fiat/revs sendtoaddress RCVNYDmQvkopysryzoBFjMCK5B4Qs4WCwj 0.00626655 -fiat/revs sendtoaddress RMcycooaPXTkogEGH5E1sBHppssejWy5U7 0.00627064 -fiat/revs sendtoaddress RSokdbdPs5JUvgEb6mxvVL3aRq7YJjY1sj 0.00627096 -fiat/revs sendtoaddress RGx9MWBuvUFU9umq1MDrWtwcJST59YM16Q 0.00627333 -fiat/revs sendtoaddress RLagh9sfYv6oDtgWJbCmqdyrKv2VRsbNNB 0.00627404 -fiat/revs sendtoaddress RH4Ad9fYXiPU3EXyHRoLN6MUSYJHA6LsP2 0.00627599 -fiat/revs sendtoaddress RK9xdzARYYLUCVQmGNuhMmjFDLaoUtw5qY 0.00628092 -fiat/revs sendtoaddress RAZvG4BnvdtspNT5WSZuhATiVwHuiitQ1d 0.00628579 -fiat/revs sendtoaddress RT9g8oqbaXv8gKGqmTid4wVthWi1mwd3u5 0.00628694 -fiat/revs sendtoaddress RHPriUPYeq7SeQ2f1gXoMH3C1qo9NSjV2m 0.00628847 -fiat/revs sendtoaddress RWSAaEUuPKyJhosUFi3eVXYD9Ed7TYxVPb 0.00629002 -fiat/revs sendtoaddress RXeDu9zgNHkC25Ci1gW1GZoWLhyENXjJfW 0.00629686 -fiat/revs sendtoaddress RAb9RzWVhv4HF8PS9potAN5cTJWmqaYEyG 0.00630362 -fiat/revs sendtoaddress RLfWXKA6mGBSi5EKqKyqopPayJV2kddRE9 0.00630431 -fiat/revs sendtoaddress RPEHs4gu686xxRqoxZMojYr9s7ovgmcfjy 0.00630517 -fiat/revs sendtoaddress RYMiyLnCcAdPrUhyhWHu5CWxafYeiVtV2x 0.00630762 -fiat/revs sendtoaddress RL8jtKHYzWRKYUFFWxRGBogupnXBmbFDsZ 0.00630855 -fiat/revs sendtoaddress RDCZB8QPeRf7AcMUdWYtznxNLgwCsELXiD 0.00630916 -fiat/revs sendtoaddress RAmirk2JfBh87RkuuudgSAm3XrXrPBbFQm 0.00631410 -fiat/revs sendtoaddress RP4SPXXPk2Ect2nQzN9MhPPiz6mQr3kzL7 0.00632553 -fiat/revs sendtoaddress RP4PkSek4tymDKEzApZ2z4c2VcooxR5DdZ 0.00632952 -fiat/revs sendtoaddress RTtyTYcKm5brKHJFxHMsMNx8RxvPWeLgdx 0.00633754 -fiat/revs sendtoaddress RBhEKuvWMjzTEDWjvznFbvS8YsUhbzYEAq 0.00634063 -fiat/revs sendtoaddress RHRzKDsGw3EKV1rEUD3NFFHE66GFGK37w3 0.00634467 -fiat/revs sendtoaddress RVtFAbk1Ktj3o7M9XWhbtUBNgZomHMYQF5 0.00634735 -fiat/revs sendtoaddress RTWhRFtUThPQSfRmvaxcX2THVCtqmXTsed 0.00635537 -fiat/revs sendtoaddress RW6FLKwVoSB3SnzZbZSTSQ7K27bH2kLmq8 0.00635692 -fiat/revs sendtoaddress RSDJDtWvR3QqVmkRV3Nr8DtfS5iESXsHpu 0.00635717 -fiat/revs sendtoaddress RWAbMnQU72nUsFRr1ab5h4jR5BWR9mKE3Y 0.00635837 -fiat/revs sendtoaddress RRLRWNsu2a3TqyfhcAxJiNYAEzsQ2YGX3X 0.00635871 -fiat/revs sendtoaddress RB9vtBamt9D3jpwydGcT4po2bmFJx1LF4c 0.00636130 -fiat/revs sendtoaddress RRFUMy65uiLVGTchLiN4sLSjotsVHTuDet 0.00636140 -fiat/revs sendtoaddress RJQ67it77fBymXPyRKPgg1vLpgXf5qvAuZ 0.00636180 -fiat/revs sendtoaddress RTTHb6oSFD5aENrE4jrRZSawTepi66srXi 0.00637123 -fiat/revs sendtoaddress RECph9CpB6nGQAE2YmARkRYUCWtkCaXMxC 0.00637258 -fiat/revs sendtoaddress RSbPeQeABAqoxArp2CiyDR2nLrojdEVa8k 0.00637386 -fiat/revs sendtoaddress RFsNeQ1Bq3dNLqArk2ihorT6zhBLssmxQS 0.00637573 -fiat/revs sendtoaddress RUCKoGyss8uQvW1oS7kn7jTAArZRm3GrM4 0.00637728 -fiat/revs sendtoaddress REJQMfN1yj8wbQkMZNTi7mEexFYS9Xk1w6 0.00638286 -fiat/revs sendtoaddress RF2uZjrcEBAYhNCNbV6chSzQMhbkD6J88Y 0.00639422 -fiat/revs sendtoaddress RMxAHyBP6DswUoy5KP3AQSbi7nhX2eXzrr 0.00639642 -fiat/revs sendtoaddress RJcqRuYBX6rzURQaqRHhrD3PMuqk8BUJyq 0.00639800 -fiat/revs sendtoaddress RYVpaeWu4eBVrpiJ1tkeNcdhUg9VWdc2kw 0.00640000 -fiat/revs sendtoaddress RG3PTGNe3jRzk1EvGzAZLUWtoKUEChKKTo 0.00640540 -fiat/revs sendtoaddress RTMD1kt8mtQb6SWi2tog5AR3cD45EbGoP2 0.00640637 -fiat/revs sendtoaddress RGuktPmJnFqWrfXqKB6DP4P4Cb5astvzcv 0.00640942 -fiat/revs sendtoaddress RM6GKtsy7qzr9sdLgLfPBNnv88uoYMvMyc 0.00641205 -fiat/revs sendtoaddress RHKMsTaYyoBuGJiYEZecbJZJmXC7xUtJDY 0.00641262 -fiat/revs sendtoaddress RUeBz4x1tcrhQUQd9mGbU4qCfZis1p8SNb 0.00641360 -fiat/revs sendtoaddress RWpfkXKFz2CwmeptmgCX9i7JVzouzyCn8e 0.00641759 -fiat/revs sendtoaddress RS7MytBw5caUVGWVDo8to68EEVVKgVeLuy 0.00642000 -fiat/revs sendtoaddress RHUo72QtYFG2vcQhCLrAv5KQNGZcLgvwVE 0.00642116 -fiat/revs sendtoaddress RUNBTwpNR8rnDT6amMKZBwUTvctRN8tPvp 0.00642407 -fiat/revs sendtoaddress RAZE376Uh3Mpdamzp9tBbHSMK9HJdMbisK 0.00642548 -fiat/revs sendtoaddress RF8vxCuq8HwJXdwFdfiKcBAAXoY4ETcov9 0.00642561 -fiat/revs sendtoaddress R9NpjmJQxpMSUHFZb8tpxcAurjz6fKmzy4 0.00643274 -fiat/revs sendtoaddress RKcTfnuJ1uGoKCgRen9T8errNN6ScG6oHb 0.00643461 -fiat/revs sendtoaddress R9Z61J7pMhR6K7eYD94FEx8o1BPhYDzNhJ 0.00644597 -fiat/revs sendtoaddress RMp4Q1sQLdakmZpwFc5mqxRWHCeY6LSdFY 0.00645310 -fiat/revs sendtoaddress R9K3nvj3iQcSYTWJTmvBpJwS7dX8AUW2fK 0.00645547 -fiat/revs sendtoaddress RGm91Js4VBW5ioGX9ebT7AJpKoLAReCcMT 0.00646004 -fiat/revs sendtoaddress RC4As2c2DgDY7UEuHx92wwpmY5E5qQANyJ 0.00646380 -fiat/revs sendtoaddress RLgYLzt4kMF3S4nAqgtkpMBN9QpAfw1BT3 0.00647093 -fiat/revs sendtoaddress RGmBRE8nv3Sk8UW5PqSyb9pu1scqPTNMQD 0.00647812 -fiat/revs sendtoaddress RL8mjPyuwcKmgcwEEDVcLpMuiGDZY4KuMq 0.00647967 -fiat/revs sendtoaddress RXN5PTgDVttu5kx6Nwasa64Y6mxPnp8KuC 0.00648050 -fiat/revs sendtoaddress RWSGyy5Pd3f2fxFVXGJiMDkBZpBWLk96U5 0.00648449 -fiat/revs sendtoaddress RB4iYmSGu6xQ6ESKksND6aVSXTMpwrHAwQ 0.00648995 -fiat/revs sendtoaddress RHVRaCGYFrfpqrbtuJuTGRePW3jCS1ZLyF 0.00649327 -fiat/revs sendtoaddress RNNu93yzN5tttmjZwRkwhTfSzxjLsFc9ub 0.00650086 -fiat/revs sendtoaddress RSh15VrZ6DN6rJ2kSY2piJgD5ecEBgDLbu 0.00650208 -fiat/revs sendtoaddress RJgcKCBNhzLdD9aydW2jLdhJmacaJGwycM 0.00650485 -fiat/revs sendtoaddress RCkvsVqMEyCDQZ3w2U4CqYyBiHcpQL8poa 0.00651310 -fiat/revs sendtoaddress RV9x8WPs6JqEXbSVKMsRBrUcAmDWBvh1TM 0.00651518 -fiat/revs sendtoaddress RGL4yq1iy1b5N1FwTdKDnK9sBFJYwnAyPX 0.00651614 -fiat/revs sendtoaddress RSc7UZ2Q2H2GeMRCQKx57x1Q5sMLnvfPZN 0.00652268 -fiat/revs sendtoaddress RTiW2LsdB6sgzcukcqWJR4JyXCCSPv9AKN 0.00652771 -fiat/revs sendtoaddress RWFAAciz2UBjbTiuhP6KBmyHUpwU4uojWm 0.00652976 -fiat/revs sendtoaddress RXxtSbTHkiyD5DqQ5VUBiFbadfwshKeivt 0.00652993 -fiat/revs sendtoaddress RAfW9W5puoUYHgTa9aWcehMHnd9n9ygSZr 0.00653392 -fiat/revs sendtoaddress RHT3ZQcWwPDJcgMaLiQu2Nqp7ZXDB32yEk 0.00653456 -fiat/revs sendtoaddress RDCqCmSjRnxT8cnZEshZpkhr699rTh6M5j 0.00653650 -fiat/revs sendtoaddress RKY8ojaUh9JWepJ7HRQAudpB3MaTdtmnQU 0.00653700 -fiat/revs sendtoaddress RWXhD1sXKQWk8ovfrt1Fda6J3ZyLYKiXy5 0.00653855 -fiat/revs sendtoaddress RMzcg9dwnYP6pNbNKS5mWcpDZCue5vWy11 0.00654502 -fiat/revs sendtoaddress RAHy4ALEmwfJyJeyPYiDXpeuWq7bPU4aKp 0.00654657 -fiat/revs sendtoaddress RQXR5UGXzgBvpNw8GXtyoj64hQAxoGcEbp 0.00654788 -fiat/revs sendtoaddress RP2CSxSApEGov13daoCtjUUathBd2Y31SK 0.00654907 -fiat/revs sendtoaddress RRJp5H1sHQPLoL61YGPeH8cTiXm1S6UJa1 0.00654998 -fiat/revs sendtoaddress RC5noxhCnS9MPNh7zVeqBUUrjZVDKFLohh 0.00655246 -fiat/revs sendtoaddress RDQw5C2TMNRG88pnGSbzvpgvcRoH73tVFG 0.00655370 -fiat/revs sendtoaddress RNd7UWHekMKKAod1Q24bb2Q2ebSHGpyM5U 0.00655397 -fiat/revs sendtoaddress RJefbJ54Z9UwXHfchfyDJ4qoACywquCKFV 0.00656279 -fiat/revs sendtoaddress RR9QAZuRNKHgHrQCuWNVb7jJT8sQc1swyC 0.00656693 -fiat/revs sendtoaddress RDieBZEnevSoY2s1R4VGSrmZxXxCyQU2Bu 0.00656943 -fiat/revs sendtoaddress RSk1x9bY7Vb2WXjQwrbLBWAeGTjdvVrMBj 0.00657251 -fiat/revs sendtoaddress RUwfQqmJxpavJLHZtBGY2E6cKTjPkkhjeP 0.00657406 -fiat/revs sendtoaddress RWxBr6KmSWUssYDuku3PYQwpP33CRdhNxV 0.00657723 -fiat/revs sendtoaddress RRtjhz8NqW8fV5CHnnFTs4kLPFa75j79xh 0.00658168 -fiat/revs sendtoaddress RPFQkLzCSPR2Jr2faidZen2kpnSSjJbWNS 0.00658170 -fiat/revs sendtoaddress RJ4PRstDQx1F1g3yHLb7FTsgFamNRSZFkn 0.00658200 -fiat/revs sendtoaddress RTtSjCUVu4r4VJkhRmLHcHrArPX4Sqejju 0.00658322 -fiat/revs sendtoaddress RHPv3RdqFYrmiqM2n8Snz8h5h9gsDfBRAR 0.00658476 -fiat/revs sendtoaddress RWZTZZN2BqoNuVvoaoKdBqDmG67ujL5gbe 0.00658556 -fiat/revs sendtoaddress RY3z6awDDrwDApATAi34nhtyePUV1nBJMc 0.00658631 -fiat/revs sendtoaddress RG5bMuU7Rkip5KNiLvrbbAZ5Ntonc1Vzuf 0.00659035 -fiat/revs sendtoaddress RMa3fu9Tp5AfFSqRFtNvQuYpQJuYQbNaHm 0.00659636 -fiat/revs sendtoaddress R9hmM3cRmPf7XhqS7A1g3bGvKGoswJF4Fz 0.00660146 -fiat/revs sendtoaddress RWhn5r44MYZZJte6QgKwqBuGxKXVTcN9zr 0.00660325 -fiat/revs sendtoaddress RXeMEvp2JyVCCHneHvYv4ZeAFum64BqRXw 0.00660545 -fiat/revs sendtoaddress R9tfZQ5ievWuGoG4rVgZNDXwtTmiantGie 0.00661719 -fiat/revs sendtoaddress RH3VSd1STmkpjeFzh7Fz6HHS5VbXxEc1YN 0.00662118 -fiat/revs sendtoaddress RD9TknT8wMsUPxtRi8jNnqtx3ByV8DQrbC 0.00662164 -fiat/revs sendtoaddress RD5BuSTiLFQBdrPw3o4XY2GuxS9MmqEGou 0.00662581 -fiat/revs sendtoaddress RN3KAWhLfgX9YkUb34mk2kaDobobASrBrB 0.00663633 -fiat/revs sendtoaddress RSUDsREWbdonjbBKpAW7TK2ntNai1hfvgc 0.00663679 -fiat/revs sendtoaddress RXpuSVm6DFAyznbQHH5yrgrmFsFMyn9DX1 0.00663901 -fiat/revs sendtoaddress RFmYKqkFAh2ce5DC1dGwhWeSR9z19GJoHH 0.00664056 -fiat/revs sendtoaddress RLxzd1PnQkUnr4XDR8cg4mj1Uqv5EikaEW 0.00664364 -fiat/revs sendtoaddress RSX4dPnYKpfMxw7oBJGxFU5Hn9hBvLiVJJ 0.00664747 -fiat/revs sendtoaddress RMfRVpFf7dcwsyxg4nfFYBPVqbqn4o2Z3j 0.00665332 -fiat/revs sendtoaddress RFLLYHzT51YcagocsjhfLu4XJhmmnDQQyZ 0.00665345 -fiat/revs sendtoaddress RVGwq1TkWF48ciGRu69cMaW5XLmwpzA2Bx 0.00665486 -fiat/revs sendtoaddress RQzvpTRmWK2HDLcYYbk2tRHWTtLnb69VPa 0.00665500 -fiat/revs sendtoaddress RLxYVEC2BxpeTrcTabZTWF8f1SqPfEYcdt 0.00665750 -fiat/revs sendtoaddress RFTYqU5JTx1JPx5aeEC3JWjJZ28FdaL2Qn 0.00666100 -fiat/revs sendtoaddress RSRHysVcDULMkx1QFXoLCKUt8HdnqCx4WZ 0.00666213 -fiat/revs sendtoaddress RJXMZW3jV3ZFS2JNr6kB1XRBfUTRFPzDJD 0.00666493 -fiat/revs sendtoaddress RAxGekZX53YbYyGuBypnJQrGPEcm7SxAaL 0.00667015 -fiat/revs sendtoaddress RXeghW1JvtHnMGVxHNScwhJtGbyFz8AtJf 0.00668443 -fiat/revs sendtoaddress RSRY9Lnng5pKkP6oULwMUDGusw9BAgwU3H 0.00669817 -fiat/revs sendtoaddress RNpGuvessZzYy3hfGrTAU8G4K221c3AQ9W 0.00670000 -fiat/revs sendtoaddress RELcHib9zw7Z2RdXbodntfsmcQE1GEnWVB 0.00670100 -fiat/revs sendtoaddress RWxNP3t6pFy9xbfDiNhYp6JVcqXorvNQoJ 0.00670392 -fiat/revs sendtoaddress RVPxefC76ktac7WR81ikFCY2u6cmsU8D1b 0.00670925 -fiat/revs sendtoaddress RJhzL6pTEhe7FHVmT1aP1gj6999RsJL6GT 0.00671192 -fiat/revs sendtoaddress R9vVteS8LSdSxgg9VGkiRPYq7jeUAYPVQ6 0.00671233 -fiat/revs sendtoaddress RWhi9eNLTeb6nNs8L4bdykG1cnYXhA1VYD 0.00672175 -fiat/revs sendtoaddress RYbWaDdDtg68Q9vBd8MWRUA9E5gjFP9FW1 0.00672227 -fiat/revs sendtoaddress RFRtN6ZaVimRDk6JbfTEr6qfb5K6xTJbpS 0.00672817 -fiat/revs sendtoaddress RFmC6AFEwcQdiiZzneWE2x3Tk5sUNSyb1J 0.00673753 -fiat/revs sendtoaddress RRaaQsyTpWgMsNexbHRqR1qfRxvhPpiKnb 0.00674939 -fiat/revs sendtoaddress RXEmfqxLEDYjjSc8u6QFijkCNiVTL2ACAW 0.00675218 -fiat/revs sendtoaddress RHV3xEjqzRnWoT1mkgYrsWTtF2y2mk9FGe 0.00675651 -fiat/revs sendtoaddress RHy2eAfgKQMEDNcynfH6FmZWi2VjQL6Um4 0.00676414 -fiat/revs sendtoaddress RRgouDAzQQ4kwc9JC9QiFnWGuREcZG3TGQ 0.00676688 -fiat/revs sendtoaddress RVczkcejFHddZoX9SviAutcEhWLHRwhXKu 0.00676842 -fiat/revs sendtoaddress RTqpMhGXBtF9qzQk8TkLr2nXKyvaWUMGvQ 0.00677100 -fiat/revs sendtoaddress RUYA54boxyB6s2k4qNRbpHotXSyJ97Ldwp 0.00677629 -fiat/revs sendtoaddress RMEeBN8TxRzQac1Zp3YS4JGrqynHzsQyts 0.00677845 -fiat/revs sendtoaddress RA8DsSZJgy3TjfyM9jxgBJNuKWQWYrBn3X 0.00678625 -fiat/revs sendtoaddress RMdEy8dEfNGsVFwP3e4sDPdTK8PyyqGCTh 0.00678755 -fiat/revs sendtoaddress RJvz8rEDsy3hTtZr1SWKMeJe9hzfKgVwTh 0.00679069 -fiat/revs sendtoaddress RF8ryxNXnXGPe2b7iHvB6kB8877TNDdkyS 0.00679218 -fiat/revs sendtoaddress RPtjtALQzGM423ZuisfGKnxk5CRSZHNXee 0.00679274 -fiat/revs sendtoaddress RNgTuV8NJWLN5BHLWFTBt1hTbT6LoNb9ps 0.00680661 -fiat/revs sendtoaddress RQ9rbKW9mQDTN6uXreK3QHmcAe42adPQVE 0.00681107 -fiat/revs sendtoaddress RSMmauBy72MAi7DfBnMjvFg9YxaeXQBLub 0.00682607 -fiat/revs sendtoaddress RGZjgg2bnXpq5UHuD8MSmicj67fpnbceHv 0.00682621 -fiat/revs sendtoaddress RKeUdK9xGB7b3ivRqgyxREQZ7kzH9czMbM 0.00682825 -fiat/revs sendtoaddress RP11digcbzb6ktbpwir8qcSfbh9xQrfwR7 0.00682866 -fiat/revs sendtoaddress RFJVCTpxERj55MGUAWJsrn71zxiJTcAADT 0.00683020 -fiat/revs sendtoaddress RPLwPfC1KePQbZ5hb6wojgpUxANmSQpxZ3 0.00683329 -fiat/revs sendtoaddress RJLgv54AeP2qFraxrhVCajkrnJUp3zym6Q 0.00683602 -fiat/revs sendtoaddress RBj3Zsi1wZox3j9bSUrYzKCjFERRwnxU98 0.00684535 -fiat/revs sendtoaddress RSris7iXVMarJE9yYy4RG3BPuCapAPZd8d 0.00685495 -fiat/revs sendtoaddress RHfXF1qhYyHg2AZc9Q9KE2VqZqpAmdbQUe 0.00685576 -fiat/revs sendtoaddress RQgnsepPe7reykGfo7Vpm7vtj7vgFwRTeh 0.00685649 -fiat/revs sendtoaddress RQBZwARPpXMuacAQ7oxzUP9i9BNrcXsDMS 0.00686571 -fiat/revs sendtoaddress R9uhEkn195PG2DZ7LbtoxpqZw62oHNUyB2 0.00687351 -fiat/revs sendtoaddress RGTfnnr1x7rwabQTnXxYK668GZZEjKddcS 0.00687367 -fiat/revs sendtoaddress RHncZue4c4TeRBtfUZ95JjLNzkScyKvDZj 0.00687531 -fiat/revs sendtoaddress R9etGU54HYJUx3m8VFWkx9Uh8ayYhpX6Yi 0.00687685 -fiat/revs sendtoaddress RN9QgGRLCeMc6EWfEyXYZb3R9zVML2kkRQ 0.00688814 -fiat/revs sendtoaddress RAQzxDZumAuqnGGVFLggbP7XbdCeoyX4St 0.00688937 -fiat/revs sendtoaddress R9eZ1Set3JhXQZ1jzuhCAiehV5ZDh2qdcw 0.00689127 -fiat/revs sendtoaddress R9SRt8JffW498VAtZ5rWu7P7jj8V6yACsr 0.00689463 -fiat/revs sendtoaddress RD2uJ3xQjdVjCoo7Q2aAJVPnGaoXxpWQPK 0.00689468 -fiat/revs sendtoaddress RSkzxcxmtRrTsw1KfdBgozCxQpsLHx7W2J 0.00690029 -fiat/revs sendtoaddress RVtACnwNdoF14hc9kksb1Jj8FGvMp2XReK 0.00690257 -fiat/revs sendtoaddress RSbE1a25FkwNt5SK8qrNREQM8xxDoGeaum 0.00690412 -fiat/revs sendtoaddress RVM9mVcF3z5nqSA7PWA31buKYpPdQQbr7t 0.00691708 -fiat/revs sendtoaddress REPLPLpqH8BM8tHPA5sTszwzvGLSTYJGEh 0.00692448 -fiat/revs sendtoaddress RKk1zQr7gJxwvuBBDCRVWp6xYvuRNF52Mw 0.00694362 -fiat/revs sendtoaddress RNR4pU7PVRLXPcf7EYiiDKjEvWVNGLDWKJ 0.00694375 -fiat/revs sendtoaddress R9ksBXkHkJqkS2UDauPuFzrMrtnGYWhjqo 0.00694392 -fiat/revs sendtoaddress RQiSxbb1qxTHazYaMuYpqgZWTjhVAaRa9t 0.00695378 -fiat/revs sendtoaddress RUYwZwD7XfCCxVVgi5Xz4gzdt1w72Fw2cV 0.00695410 -fiat/revs sendtoaddress RGfgAuB8UtNHGvB3whz7sh3ioYhCA1tDq8 0.00696000 -fiat/revs sendtoaddress RErSf58VPWohZDaHR11TxdXERJJhPymNYa 0.00697282 -fiat/revs sendtoaddress RVzaMjir6dzYF1YEAtNsNBSXJqBC5XACo9 0.00697590 -fiat/revs sendtoaddress RKfvrf59NENoPRBjXWwAxuGG7C44m4AEzu 0.00697745 -fiat/revs sendtoaddress RKnuuD6meUqzNFTK4rkX3rGgdwibPrkiku 0.00698192 -fiat/revs sendtoaddress RRVp2o1hQ1jzNTq5RWzPHs7nbaGKADikeK 0.00698194 -fiat/revs sendtoaddress RHfrR919ZWshpnkj5YCMv24wfLQTKhcHMm 0.00699318 -fiat/revs sendtoaddress RPdUy73PyzhDVdDEySMXuqbvqZEdrwex3i 0.00699626 -fiat/revs sendtoaddress RPe2H2YsqKyCjLoBLW5xFgxdLkzAuBuG2B 0.00699657 -fiat/revs sendtoaddress R9VAxuL2BsQYzQ7PYANBcLMcjga9RXSmuF 0.00699781 -fiat/revs sendtoaddress RBQHTDrV8UWy2YQgYJau9THXUxQMCd9xQo 0.00700000 -fiat/revs sendtoaddress RCKZ7uenAeGAgiWvnoaJuyVW9sB4eb2pLV 0.00701101 -fiat/revs sendtoaddress RSJe4M8LAz3wst57SBWhcjTsPnToEReEAC 0.00701256 -fiat/revs sendtoaddress RFNamZQvfZFiq9diaozJjnEik7zZVDGj66 0.00701564 -fiat/revs sendtoaddress RRSPfaZizQuLGZEKPEGGvHixMUE2ShnLbd 0.00702000 -fiat/revs sendtoaddress RN7jNHJLAiLjVrqwW7q81GhqjyNW5VvoWZ 0.00703170 -fiat/revs sendtoaddress RB2jAc5R3YdrdZbUaPzFKi99TYLN9wrmXA 0.00703886 -fiat/revs sendtoaddress RMszdDyMxLCHHsVHHx6KodAyMqd3LqvALq 0.00705115 -fiat/revs sendtoaddress RVjj78Tu6F85S4GbLEfKmXXsd7MGk6yScb 0.00705206 -fiat/revs sendtoaddress RMoRWCro6CrPFh48T8h8mnKtvx7EEa9ctU 0.00705545 -fiat/revs sendtoaddress RS3SRR8grwxGZ4krZTN1hAaT49UNwTAkoB 0.00706000 -fiat/revs sendtoaddress RB7cbzcXgLp9byJPocHiWHLMhAKTdpTVDx 0.00706008 -fiat/revs sendtoaddress RTBzqJRFEGf6TrU7AaYFEfQSpH37Tq2ZDy 0.00706190 -fiat/revs sendtoaddress RDeagpAbeSoxpHgHCnsLJhfdpPgQEGjSer 0.00706347 -fiat/revs sendtoaddress RUoMPiYHrv8CBrQnhoXcDbetSdwVwZPAxa 0.00706501 -fiat/revs sendtoaddress RFrXHMPeP4SgSxenZZNoWWpxyTTQxLscBK 0.00706810 -fiat/revs sendtoaddress RAK9BNiFCwrXX8EHn3ndoUorjnwi1Hi4uo 0.00707474 -fiat/revs sendtoaddress RVkXqRT6UiAFAqzwCj8wYA131NJ3CyYRDu 0.00707680 -fiat/revs sendtoaddress RMSczwan6JS9Q9rYyqURLkeYp9LkUPccMe 0.00707791 -fiat/revs sendtoaddress REUMq1YCYZwUD5wyLonMR9Bwu6NXuJiFou 0.00708000 -fiat/revs sendtoaddress RUiL4XQTemxXSwEFK5SzsieSRMytHodyFz 0.00708125 -fiat/revs sendtoaddress RL8rnprc4XFS9RPtzPV6eYzDbdwwAifSbz 0.00708129 -fiat/revs sendtoaddress R9Z6sSB9Kx8Attjx3WKdq8ZSM88WTVQgTo 0.00708254 -fiat/revs sendtoaddress RTwh5RDrCMDvMu98s6s9KXr9t4EzdxLhX9 0.00708383 -fiat/revs sendtoaddress R9nsK48VgajtU6eXCRFRFfG3GAREUwTZq3 0.00708433 -fiat/revs sendtoaddress RLjNbSzr3fjKDw16BCNTk5mfov7RkPefLK 0.00708504 -fiat/revs sendtoaddress RC323nRL1gsT2WL6LdmsDdvj9LYe89bscj 0.00708588 -fiat/revs sendtoaddress RPrDEnijpWYPqVRUNemNCFAYBwbtuyQZR7 0.00709376 -fiat/revs sendtoaddress RH3oTm9j5i1nsB3sN4xbBuTVefmWkTTeRN 0.00709661 -fiat/revs sendtoaddress RPq35rvdbjFY7LWK8bemBp9pbMMpp2F2fE 0.00709827 -fiat/revs sendtoaddress RDA91xkHxZJyxEYFCWg3Arvd8K2Fokz52i 0.00709982 -fiat/revs sendtoaddress REgLA3UjMnEQohwYzFRienXba27YJsjDic 0.00710540 -fiat/revs sendtoaddress RK733AsqAiujW8r4XDscfJBpa85JAui9ny 0.00711412 -fiat/revs sendtoaddress RUAFZJrpeaLvFLXdaS2QbtJGJAi6LA1Vmp 0.00711497 -fiat/revs sendtoaddress RPRmAw79EUFd5j2PM5PZ7T5CiFSjUpX67T 0.00711896 -fiat/revs sendtoaddress RCYgJCky49StddVdG7SD4xQVAYW9B14EfD 0.00712139 -fiat/revs sendtoaddress RUyRfADBStQnSYUP3qBQEjs6X3HkHrWQts 0.00712235 -fiat/revs sendtoaddress RGqQVix3JEjg3sfxWXrGUfNnqSei6DEMGr 0.00712927 -fiat/revs sendtoaddress RQ7vPDwnerC2YQtfrGMXA5avDiofV4DjAh 0.00713614 -fiat/revs sendtoaddress RPLFKqE16XA2sr7fjQtRkBe2LGvRi2s75j 0.00714013 -fiat/revs sendtoaddress RGHp5G6yucitWJGt6kGr23N8xXU9MWSiUa 0.00714271 -fiat/revs sendtoaddress RGyxDCpqR9N2PCD7GjM2K6XmA3gF1vKr8J 0.00714815 -fiat/revs sendtoaddress RKVyNJMmm9qpUhr6jLRATrF8MPnzwDMqA8 0.00715123 -fiat/revs sendtoaddress RUpSop3cXWTzcvJAaYx8J6H4TmogQXUqG4 0.00715278 -fiat/revs sendtoaddress RPBEDQ7CSpyDnFRfcQafjTEoRpYYUTdbBr 0.00715360 -fiat/revs sendtoaddress RACMVQYsusiAbWmNGhizhdzgxVCTrpFY85 0.00715715 -fiat/revs sendtoaddress RHxnLKZG2mHgZxJtvGR6guMJ7f3J8gQTM4 0.00716517 -fiat/revs sendtoaddress RGkg4FpidPGh4xqa759P67cwdXDNQ9rLZF 0.00716851 -fiat/revs sendtoaddress RL5Sa6nd4nVeuHtHqGLdyatiJ5Kh1ZyfLA 0.00717159 -fiat/revs sendtoaddress RHzN2J5kB3idb2PynvusAp3Ndx2LCFeNfd 0.00717178 -fiat/revs sendtoaddress RRqoWR75sD8QBcRmqzKbnh1Hxxwu5856Dc 0.00717314 -fiat/revs sendtoaddress RSpdAXCP8zoBjLgg5ynPVeUj4aFbWGBm51 0.00718102 -fiat/revs sendtoaddress RCwhPVdnVELA9SWEJ2RG5mGaLFQjCWRgTr 0.00718634 -fiat/revs sendtoaddress RMQqgs8SfDS9ZMx5CqDA3xYmeUtemoPa2Y 0.00718789 -fiat/revs sendtoaddress RGHjPnbkLD5s648VEVBxS75X9Qwn2N4quV 0.00719097 -fiat/revs sendtoaddress RXFjBCT7EJU1o5Jy9esSBcCVtaE74ZUzzL 0.00720000 -fiat/revs sendtoaddress RMDo6d7ho7AaxXeXp24z6SwEQp4kJ2X4jY 0.00720001 -fiat/revs sendtoaddress RLmZNoSjcMJnyyo6qshYTd1WnTryxTyER5 0.00720066 -fiat/revs sendtoaddress RJK4QmsvR9ZKDXGPTKePreYrv9pfPxGtid 0.00720220 -fiat/revs sendtoaddress RH2qZLkAmEqYUab82Lsc6PnjENbHUbvrqX 0.00720703 -fiat/revs sendtoaddress RL92GyPKJqyZSHiBPMJJPSMHjxrwWaMrYZ 0.00721046 -fiat/revs sendtoaddress RJ1ChQoPRiGUQQjqUxxRipFx9v3uEhKL8M 0.00721055 -fiat/revs sendtoaddress RSLzdQeuQqq7zfCKyjfTYXsmc44vT4Kq8g 0.00721735 -fiat/revs sendtoaddress RDMQpE7EEm2K4x2sWeyqGNw9Wzfhoa3ADi 0.00722739 -fiat/revs sendtoaddress RHjuUW4BhGmwyHVwdHuNjeYfEQGUkTXyEY 0.00722986 -fiat/revs sendtoaddress RCrza2MVrfjJR58aFgoHv3V8jE5LYc7RYP 0.00723281 -fiat/revs sendtoaddress RTZ89T6Zdw4azox9gso5gjjarsUZtCKK1t 0.00723400 -fiat/revs sendtoaddress RYKgGLaqg93712CvgXxujBjHeV2DicEKdm 0.00723587 -fiat/revs sendtoaddress RKE4txxzi3yYrYkphH5qhZZ5oE8TTjM9hW 0.00723617 -fiat/revs sendtoaddress RKKL9gEGpVowwL8BEa3T9uNeJDVtbsXJfZ 0.00723771 -fiat/revs sendtoaddress RXKJwRnod61BSrYBWwkqPXtJNPWwZFTKDF 0.00724086 -fiat/revs sendtoaddress RD7TSLLFFk3FgU4HroPDgP9xcA73GK1jEL 0.00724522 -fiat/revs sendtoaddress RUMFthu5gJbyweeEHTyMZitxkZ4yy8rR7n 0.00724746 -fiat/revs sendtoaddress RCQkuDn6ij87qa7WTeRBT24JA2YS9sov5R 0.00725709 -fiat/revs sendtoaddress RVAZatWFcFgu6QE6YfnEyiuYZQkVRaVAHE 0.00726108 -fiat/revs sendtoaddress RYRbtn6jdxDGyuD3URYvb4d4u3xTboEX5n 0.00726756 -fiat/revs sendtoaddress RB7TbQPZGaCi5cRMtiDgTMPLDmTZntGgrw 0.00726910 -fiat/revs sendtoaddress RTYF4qZRqpPNZf6DbAZ2uBAiNRnYiDeSLe 0.00727623 -fiat/revs sendtoaddress RY8J25sc7eqvXFDCpUecZUZTHAnfHaMGhh 0.00728117 -fiat/revs sendtoaddress RF8EZSNghaAKAA8ZcXQsZVbCdSQratv73K 0.00728946 -fiat/revs sendtoaddress RRjBvq3uENdWu8YXb7QF7DMycbpZ8WSKp2 0.00729001 -fiat/revs sendtoaddress RSgV6Dnuz32UJev1psHyPDhztb9HMBEgpM 0.00729255 -fiat/revs sendtoaddress RFaiTu7tKJqKW8yBSd8A3Xq8UCieXLAF9T 0.00729659 -fiat/revs sendtoaddress RLEh61znnfqVcTfC3yHBohowrgersT2wqH 0.00730508 -fiat/revs sendtoaddress RF48kJ6PD1yeGts6G3hYHBTcRc6JhDrYt7 0.00730576 -fiat/revs sendtoaddress RUFtEpCDhoPLCweuZxWo8v1Zu7driCV8uy 0.00730729 -fiat/revs sendtoaddress RJLKxHJG8VKZpDUUwvt6ZujkasXCPh2arG 0.00730884 -fiat/revs sendtoaddress RMG85qp7sWNtiKmK2c186RS4sAsqKo3pGU 0.00731500 -fiat/revs sendtoaddress REqAt1GwRG7gDmREELCP57bSqrCrzdHnFc 0.00732226 -fiat/revs sendtoaddress RQw1G1JL37xPrYLXmWGewfjH6wifbmBLQg 0.00732315 -fiat/revs sendtoaddress RGumivWbrgvia5AyFpAzZEAEjKMvw1fPGQ 0.00732399 -fiat/revs sendtoaddress RJF4tYjZUoR1aJH34HdEA5xHcj324cM73M 0.00732578 -fiat/revs sendtoaddress RLWDfKJXvhqYtxQdmR9UVXa9NiA39zDoa5 0.00732644 -fiat/revs sendtoaddress RWSaCg71YvwbctYu3rGMPpZosKR2sZfS2f 0.00732798 -fiat/revs sendtoaddress RSqYvKSQHxDwCDq8SC5EzqzE1w73hPjAou 0.00733182 -fiat/revs sendtoaddress REHq2y9AXM6FWArvb5fwDdNSPFGJ7J888t 0.00733501 -fiat/revs sendtoaddress RE1KyLks7Jmr99uFkSnk1qzrzghbWd5T1u 0.00734073 -fiat/revs sendtoaddress RM71qHJ51bvygaeuJn3mXcCxgd7DQGBu9P 0.00734212 -fiat/revs sendtoaddress RRhEPfzF7HJ7MBiDAhiZYB7ZAEUcNuSED5 0.00734435 -fiat/revs sendtoaddress RA4AyDo2VdmnRJH66wTQCtuuvWKjqPDdUA 0.00734520 -fiat/revs sendtoaddress RRq9SyERGBdBXYnk2tuATUcBBYosq5ZNuh 0.00734834 -fiat/revs sendtoaddress RGPNAeZpmT4nH4rbgFra8jWKrzkbSkMEd6 0.00735800 -fiat/revs sendtoaddress RMmDpReCZvf1GRmEZePjJpDKBjQ9tzgk4C 0.00736349 -fiat/revs sendtoaddress RSAkR5fDCW8AQVnt18PLJL1ju2kTjvHNVN 0.00736479 -fiat/revs sendtoaddress RVBTuuGKjZ6Ltv3ceGgmCdoUGxCBHuuqjT 0.00736617 -fiat/revs sendtoaddress RKPZw6zezP1BMb2SnobTZSpMR6jjAG7dZj 0.00736720 -fiat/revs sendtoaddress RLRRaN1AjCurMiG1NuGRNhwoTKSH6qwUEv 0.00736758 -fiat/revs sendtoaddress RSSK8ZQkcjA3fGHMTBKM7tYcqXUNHJWgK7 0.00737599 -fiat/revs sendtoaddress REcpqEWaLtpU4pFn3FN6Pfid6oinnWtUdJ 0.00737740 -fiat/revs sendtoaddress RACVdFf51jxcydQwoYPhRMWy95WhN9CrxY 0.00737753 -fiat/revs sendtoaddress RBUr3JZDiHDA95hegLZ1EkxKTtidKK5A7Z 0.00738138 -fiat/revs sendtoaddress RSy32wt65ueFNKXSybgUThkh58aMYTb73c 0.00738466 -fiat/revs sendtoaddress RF1RK9ryLhHj3Au386FNjB9zSiUExeUS7S 0.00738708 -fiat/revs sendtoaddress RL5S8gQRwsNpNX6bn4GuD7C5jPWRfLnUuw 0.00739255 -fiat/revs sendtoaddress RSAgpFdSsfUxrySko4VXmHeTDNvRiTZxfk 0.00739268 -fiat/revs sendtoaddress RHHrrJ3RNsahgsTjQ4e5T2tsP2eEeM4vKe 0.00739658 -fiat/revs sendtoaddress RXjzSoEhKEJ4oQH8v2caou27nXWGzZDrqf 0.00739694 -fiat/revs sendtoaddress RRdVJ35N3hEDt6XMqabKYddvkN9bfxJCJP 0.00740000 -fiat/revs sendtoaddress RJ5QYyGUYxQpaC5jdasmxWMGxqGkPurg3Z 0.00741041 -fiat/revs sendtoaddress RBwJwKJKu2Kq3aJLibJkoHBzEYYyVTxhHS 0.00741304 -fiat/revs sendtoaddress RAcVkGs52co7vF4WVHA4RR2NMeWsUmXWyv 0.00741351 -fiat/revs sendtoaddress RXnM5vwDzEusabczbTeFLwqzBKhxF8aXZk 0.00741700 -fiat/revs sendtoaddress RV7rBgxcRg5WZgBSjypY1zeuwqGUyBq3LA 0.00741728 -fiat/revs sendtoaddress RTuF54jSPCPGRrB2ZirY3AYAc8AGjPE6Qy 0.00743087 -fiat/revs sendtoaddress RNFndU36YpFRmsd3oXCrfsahRgbMQ3JF3m 0.00743242 -fiat/revs sendtoaddress RMyFyY7Xi7hcYhwEvRk6FUC7Coye3c7FYY 0.00743500 -fiat/revs sendtoaddress RPnpD4RC9eCbA52TPESDGDAYq5nq5w7XFm 0.00743537 -fiat/revs sendtoaddress RMnivwRGvPzEWN4rGoCJs7caToamg3UuzW 0.00743641 -fiat/revs sendtoaddress RTS3NT4GV4SzSHPyaQ9WQ7Y7XB7wKAQYei 0.00744674 -fiat/revs sendtoaddress RKAP6BFtAk5Hopkkg6qtaUT5Eb4mNAqvGs 0.00744738 -fiat/revs sendtoaddress RUnesCqBUbmBLHf6PTWjpw3NkvMXgZ8A9H 0.00745388 -fiat/revs sendtoaddress RYZ12x3zSQeVopWxJ92VQVAMDt5r2E2w7W 0.00746000 -fiat/revs sendtoaddress RXkjv7PiFpG77ZygTXiG5vyeuERLH32ntn 0.00747192 -fiat/revs sendtoaddress RKQ6KpbwyYRsASADM25YZS1M8qAmRFo3S8 0.00747862 -fiat/revs sendtoaddress RBRuWGVktVjZ3pSj7oS8H9jpcbAgeVs79W 0.00748200 -fiat/revs sendtoaddress RFQxfRcAVMrohe7gjWyCyFpDHb5FpSPcfm 0.00749096 -fiat/revs sendtoaddress RHVp4biTjhP54YAgCEYk6WSytSC4KiLZqp 0.00749694 -fiat/revs sendtoaddress RXhmLhtAqTX5J8684X4fE7rcmTQg5QVRFw 0.00749849 -fiat/revs sendtoaddress RUHxoLvDkocewABhUGYfYTABCPyPAM5whc 0.00750099 -fiat/revs sendtoaddress RAp9Az5VxDVRJBy9hk4KQ6GTHBYKiEkWqK 0.00750562 -fiat/revs sendtoaddress RGg26YsJhT1sXJtG3SymWKMbc6BFpnrMu2 0.00750879 -fiat/revs sendtoaddress RE7VZ9kkEw8HnMXNXMTRGMbzckakaBfuBE 0.00751364 -fiat/revs sendtoaddress RYSAxdnTcnnQHjxqy3AMsgEdpXf6UQdxrS 0.00751471 -fiat/revs sendtoaddress RGybUuNF3xegWaRBbtrCcnyYKmXxvdmDn3 0.00752915 -fiat/revs sendtoaddress RPDoBSB6KDiTf4QBrBrjEDii6zJsfN7so5 0.00752939 -fiat/revs sendtoaddress RRHvh9H5KmsK4t7Rc6emPm6puWuHnMrrXh 0.00754875 -fiat/revs sendtoaddress RX2KrdXUTCoio5gB8ZbA4tVCzsMwnqB6cX 0.00755250 -fiat/revs sendtoaddress RNRVFYskmP1LExvd4EYyv1VgDB2H57Hb9b 0.00755274 -fiat/revs sendtoaddress RMK5UXNeoaMAXQ3y9vGrkr4mSzB4uthT4C 0.00755338 -fiat/revs sendtoaddress RScJ8vqduH9G5VJCZXbpjzxjJ1hJvYwCYc 0.00755582 -fiat/revs sendtoaddress RBLBEPrB2NgtoTsfwZcFy5qbWJ3ppRoKt5 0.00755737 -fiat/revs sendtoaddress RLEHvSBGx2HCQzjEYAPUb5FaLJaApFcAT8 0.00756000 -fiat/revs sendtoaddress RXkejYprJnozJVVZUZWfNbamdRAJjBQCeL 0.00757123 -fiat/revs sendtoaddress RWpVkKcHemAUFEvaZjZYHmysSMpdCfDjza 0.00757903 -fiat/revs sendtoaddress RHshoYRHpuSHJBX9hykTVjgc2CTRSNyEoq 0.00759605 -fiat/revs sendtoaddress RAQGRCfKPcozEo79VRoF84mXqgfyQYcaK1 0.00759939 -fiat/revs sendtoaddress RSuALm5XNfwvefey18obGmdc7jfsRrFi4Q 0.00761454 -fiat/revs sendtoaddress RYX7iL93sMSTrRfWQm52UFjs5nDCuQKhW2 0.00761685 -fiat/revs sendtoaddress REpWDuHdZspizZ2sRLeL3isHrBQ6E8m5L3 0.00761722 -fiat/revs sendtoaddress RTnwwg33VWfqcuRtmue14apfdwFYMpNsXa 0.00762193 -fiat/revs sendtoaddress RQnBTUYF638G4wEVk6dcg4WfcmrarPW1vt 0.00762207 -fiat/revs sendtoaddress RBPbwmCEetYufRMvw5EraoXdub8JhymL4p 0.00762231 -fiat/revs sendtoaddress RWhoy1XRU4EA7AyEniMerQtN2k6XfUSnjr 0.00763104 -fiat/revs sendtoaddress RVL9VUkHrP5iDb9GCVY9WXB6Sr2REHviwV 0.00764648 -fiat/revs sendtoaddress RLmpH9LAqC4LJhDg7AYRjHkLrc3oH9bLJL 0.00765584 -fiat/revs sendtoaddress RPNtLvN4ekHKJkv9t4fLCt7BYp3hpAh7fx 0.00766629 -fiat/revs sendtoaddress RWu23anyd9HnTccshYtTt2LygPhfAHjq4t 0.00766965 -fiat/revs sendtoaddress RMzZ84br8zbGAnbk4bXvcB5Vv2kppqCSxP 0.00766969 -fiat/revs sendtoaddress RFQ3SKvh6ExHuh9X4Z93u8fnAHkFfQxbFk 0.00767320 -fiat/revs sendtoaddress RX7Eg6EexNRbuqBo12fN6L3jV49FuejUjc 0.00767329 -fiat/revs sendtoaddress RXEBUCX5NuVPYLT8zK6fyZjGhfTbue517k 0.00767632 -fiat/revs sendtoaddress RKzrXQSRQgvaqwyqWV6v3tj5gjn3SKtqJr 0.00767644 -fiat/revs sendtoaddress RAAuDvZXCeXyy7o44Y9xh6q65FG8MfNJPD 0.00769794 -fiat/revs sendtoaddress RDFwiqrA635awy7HaKyydpvDmEa6pJazNw 0.00769844 -fiat/revs sendtoaddress RPt5fsNhk3itiXNJcJkVTJmctWttyQNYcJ 0.00769998 -fiat/revs sendtoaddress RRjxxN8RXLVpWxZm8DYgeUW9LCCS81PKi9 0.00770257 -fiat/revs sendtoaddress RTwtHnyZxRY7Sbkh5oDEVCyVz7dZe484mX 0.00770448 -fiat/revs sendtoaddress RRa5juWAMozEzpRZSye6wFygNZhKPJWxdA 0.00771880 -fiat/revs sendtoaddress RBiyS2jMrR6UF5Ydh7qAHG1faP2k9kVd4r 0.00771911 -fiat/revs sendtoaddress RBNys3NccX4EiEC9JsENkLY2x2fZkcpWdQ 0.00772034 -fiat/revs sendtoaddress RGfHem5n5edv5skKQqWAM5zmqzbqFhwisQ 0.00772522 -fiat/revs sendtoaddress RXLphAS65coiozXosSq2R2sA6T2jaWCPuy 0.00773549 -fiat/revs sendtoaddress RRnakZoHg8NrpnFFVQdjoU2bJE6jGsDej8 0.00773817 -fiat/revs sendtoaddress R9aEd9BeZMgeeHThLGMy9xLQhPFZgjG1g5 0.00773889 -fiat/revs sendtoaddress RRxHxJsSvmYJ6Upr1bRCtk2BCRnSeQ6Qxk 0.00774000 -fiat/revs sendtoaddress RA6poMxAQbouogWC3C83USQTWEBnzSnG5d 0.00774390 -fiat/revs sendtoaddress RBugYxUGaR2R8v14uZnsPF4U1oNv4fzoZA 0.00775332 -fiat/revs sendtoaddress RKjUSMUiqgFGFmxXUW29hRRZ62QfZEYhAD 0.00776864 -fiat/revs sendtoaddress RFDZ59vV96V8XE5qWiUCghfYFj7dhCJgzN 0.00778724 -fiat/revs sendtoaddress RMtsweyXSLtnXGhbF2ifH8h2hD4n4MXnYb 0.00779727 -fiat/revs sendtoaddress RWRREfT8AMYcgUCadWJhM4XXyX2otrySzi 0.00779874 -fiat/revs sendtoaddress RMSSMB5pEkNqdULwxFm2RzeY24bK97T43K 0.00780000 -fiat/revs sendtoaddress RW5LunyjChe8k739ztQn4ccHPdaje8ZG3V 0.00780507 -fiat/revs sendtoaddress RHjmNkep6qCF4eDFNoPj15RM63Kh3ttXzk 0.00780637 -fiat/revs sendtoaddress RFJVgZ9pbd8XNRkcG6Hxqpc2NG86rESbTK 0.00780841 -fiat/revs sendtoaddress RHEPv9p7rjja5hdmufMcoLox4uvrnJvpp8 0.00782356 -fiat/revs sendtoaddress RQB1pkzWmaHudwNfGvNbuRASv1wHseyf4E 0.00782543 -fiat/revs sendtoaddress RLJ26yF2jykcRuNFJmZ2zJAPne4xDKaPih 0.00782586 -fiat/revs sendtoaddress RTLSkvHQ4VurJyB34e4x9PJdRpZitaWgKZ 0.00782724 -fiat/revs sendtoaddress RKx9875fnPffAaKWDGmwmMkza6RsRVgLtV 0.00784000 -fiat/revs sendtoaddress RPxJcQ9MFMdEthhz3VRaR4nHc2mQPjtxjS 0.00784048 -fiat/revs sendtoaddress RDBg1js8BMboErsLg2k2FzjKHU6oVCxmjb 0.00784296 -fiat/revs sendtoaddress RCPP61vy2141nZP8PFfufZeZbCJV6VG4pL 0.00784489 -fiat/revs sendtoaddress RM3jSLgenhK4aQXAsjTM61vQhEwfbEcjtz 0.00784520 -fiat/revs sendtoaddress RRdgqQ81mvF1q2V8zya6YFQA15dDz7wanB 0.00785168 -fiat/revs sendtoaddress RQiFMPtXCVmHgzNc39KpT1r6PJvwSF3ivX 0.00785521 -fiat/revs sendtoaddress RCUzixDs9a1GkeafX2ELAEyntrTuNscWq7 0.00786175 -fiat/revs sendtoaddress RX5pvo8qx4iv3scsLhyzqxQ3j2A47sCh59 0.00786379 -fiat/revs sendtoaddress RGKPsJgtgHQX8bEa3QXG9qsq17967CigkD 0.00786843 -fiat/revs sendtoaddress RHJvHtG1QcwhthMeMe8Wv9RFw5Ahx5tQpP 0.00787531 -fiat/revs sendtoaddress RAMMxe77s9But8PCdwwmxC7vLAVgYvroRQ 0.00788561 -fiat/revs sendtoaddress RJhdLUJQRsL3VeGf4o7L15pRxB76ji5DuW 0.00789567 -fiat/revs sendtoaddress RCf834qg41ztvFP6U1TGeAqbfEkWhwLwpa 0.00789894 -fiat/revs sendtoaddress RBBeKkFAqVpb3wrF4XKPnUR22qkwVqmi4H 0.00790664 -fiat/revs sendtoaddress RLWuzP4kUVMtTDFtg4KxwCLZALLCufBb55 0.00791082 -fiat/revs sendtoaddress RLRQ9yTfgGZVKJB5xZq9dtYzXArDToHJ48 0.00791350 -fiat/revs sendtoaddress REJ1kMBNmqHr5zWGsSoR7nrhW7MnudWQcY 0.00792474 -fiat/revs sendtoaddress RGkyLMtSbDXnX8eKXHMJzzfgG1SV2DSq9c 0.00792782 -fiat/revs sendtoaddress RVjcHVW9PPgbZJh9Cfbz8HU6QFWUbR5BV7 0.00792937 -fiat/revs sendtoaddress RJAMWRgD9fvvjcqL79Pm848uR9PmSfkgNK 0.00793445 -fiat/revs sendtoaddress RE4AdgTWT3wEE61g7GAnenZZVrPUyEthYt 0.00793989 -fiat/revs sendtoaddress RGAV9tp8xxuerszXHx5yGoCBNKQwX5Hdbi 0.00794330 -fiat/revs sendtoaddress RRiGssMRcHbs3T7xiBRWa34UScFnQvs8Hr 0.00794646 -fiat/revs sendtoaddress RSCpT1223hKbVVahLDgiqcMb93nGy1Qf1Z 0.00796325 -fiat/revs sendtoaddress RDdVKbgExmfrKJd4RvDNjzR3qZemAD7rrG 0.00796364 -fiat/revs sendtoaddress RYAydvzB9JNY93B9uj2hjjMBhjXbqegrHn 0.00796488 -fiat/revs sendtoaddress RF7EJkKRbjjrTRwhWU7ZUgtMZYk6rPvfUN 0.00796584 -fiat/revs sendtoaddress RRB5ytqjGbDavwRFj6LgQ7tG9Hf83itbrF 0.00798362 -fiat/revs sendtoaddress RFd6JDRT7JMeWdqfBZNBAN5cwUpryzJNZX 0.00798496 -fiat/revs sendtoaddress RJ9NGCwsy2nJDEaEFUiszLZNDMTzZ7xsEN 0.00798991 -fiat/revs sendtoaddress RPxXVoCcodDvBHZTcxyUBbDwUoSuyPzRz2 0.00799164 -fiat/revs sendtoaddress RJ3j7pNnkA3W3H7efd9YEE3i9f4eFcKj5d 0.00799627 -fiat/revs sendtoaddress RDnNdHtLQEPq5Zqn4yS41RJGRCWEceNC9K 0.00799866 -fiat/revs sendtoaddress RWuZmSSxWMaR2wsV6rUHPTbzgJRynWLPCh 0.00799877 -fiat/revs sendtoaddress RN6ZWKv5HSULPRgMYPKrefvCQhjCpjZ3Cr 0.00799885 -fiat/revs sendtoaddress RERiyBC8ykm6b8bcFcF6CGnJsUs91N9kyz 0.00800000 -fiat/revs sendtoaddress RWUAPy8K3BGiTdP1yWhwpVtM6nxeM7A4mi 0.00801200 -fiat/revs sendtoaddress RXdwpGLG38SFN5fv1X3apm1RRZhT1tVEgd 0.00801246 -fiat/revs sendtoaddress RLWp55VG7AGQBE6oBmqxG2R91KLsiwMbhm 0.00801318 -fiat/revs sendtoaddress REG1oie7QG9tfHPHpDy2Yu4ohT3pnbVYjH 0.00801401 -fiat/revs sendtoaddress RXJosXAddcJydnzwwfTG1rNERd1JRbZm2L 0.00801508 -fiat/revs sendtoaddress REP4hDBZnm6ZJWVe2PA7PLTWqioaTtBu1h 0.00801539 -fiat/revs sendtoaddress RKqhLYRbEtfRZGLXcrXjvBw2MmF8RpBFyq 0.00801622 -fiat/revs sendtoaddress RM7799VPdVhv38BQ2yHoNPYP2ofAwyM2jB 0.00801912 -fiat/revs sendtoaddress RBSuyHCkhkt5hHuQhtu86Ny9NJmstj3aB8 0.00801999 -fiat/revs sendtoaddress RA4ZbUEoHSReWZUFMwXj9NjDtquKHRGtbH 0.00802983 -fiat/revs sendtoaddress RG3b93nkDkccx4EAbw8pfs19fjhDTkTBTJ 0.00803178 -fiat/revs sendtoaddress RSUejU4usEc7j3P9gEwWT8dRfgvyMmrk4Q 0.00803446 -fiat/revs sendtoaddress RAQnZTQ9xezLVeay92UieufP4QpHkofdyX 0.00804568 -fiat/revs sendtoaddress RC5nH6KUnzEs4QTjz3qDdKgBKMwt61R1rZ 0.00804653 -fiat/revs sendtoaddress RMMaRZqUDePvrWsgxpn9cJdyimH4gceWqn 0.00804832 -fiat/revs sendtoaddress RFhRJMUoRmGQPpoApu1t79tnAR8R2juDCU 0.00805052 -fiat/revs sendtoaddress RCk8VK7WtDTuJTEXUgj6fqXk3RLfKg1Mjv 0.00805295 -fiat/revs sendtoaddress R9w9bwpUkp64iHGZSrqTgiFnGMLqSNQXpQ 0.00805500 -fiat/revs sendtoaddress RL2p8NaTBhKJtcK5yU2nBr23i2SeLxhi7s 0.00806395 -fiat/revs sendtoaddress RQ7YcTkenerjH5AZ4ZCRMmH5unsi92VXCU 0.00806689 -fiat/revs sendtoaddress RWpiKi8oqQ5kZSdH9TUPZAEj2geaRnNRri 0.00807088 -fiat/revs sendtoaddress RL6LM8RXG7XP5Y5HzQw26bfEfgvVfmKfDM 0.00807427 -fiat/revs sendtoaddress REDtJ5A1JuA7999Udbv71VHCV4KR68Bhet 0.00808626 -fiat/revs sendtoaddress RReVQ3e29Vg7w7zoYvFNdSWgKc1qHrcRRi 0.00810000 -fiat/revs sendtoaddress RJnhyVs7z151MT4XX1f2Z57gmr81wsfKqT 0.00810007 -fiat/revs sendtoaddress RJEM3oQFcSGiDjs1zk6Z7jBNrbyRY1nuyv 0.00810315 -fiat/revs sendtoaddress REyD6qkykhvjtG52Mq2YTBYZG4Td9pixJN 0.00810456 -fiat/revs sendtoaddress RWgcQppz4GPvYUNV98zhTavz58Gke8mT9u 0.00810469 -fiat/revs sendtoaddress RVdUEayRBDerL3HsQdjKpryn6Pf8sHPixx 0.00811667 -fiat/revs sendtoaddress RVaLyQnUuc8msv7Vi3mQPcyFC8rG9DPdvB 0.00811732 -fiat/revs sendtoaddress RKBK6XZGPY18iexWmUKBGvrUjRhmq41rV9 0.00812882 -fiat/revs sendtoaddress RHszXPBL9iPbfMpFCwxDvR78uQvtcLJfAz 0.00813294 -fiat/revs sendtoaddress REPkBhxnNtuoAtqwAkVxe8UeeopUvD5CBQ 0.00813635 -fiat/revs sendtoaddress RDx2pxurc1mZJnXEH6ipFkWy31FEufzTBj 0.00814061 -fiat/revs sendtoaddress REb5k1iNPjucXhphrQUTZb6ikBCkRP4A19 0.00814348 -fiat/revs sendtoaddress RUjiM5KkqpfBh6yFrmeK6S4dbhqBFjvvCn 0.00815077 -fiat/revs sendtoaddress RP3dxHTF5whtwq5o5KNTfXgSbAT4yDzbVq 0.00815413 -fiat/revs sendtoaddress RPNowwJDgniKLEPWBVpbC9AtThJ4GyFBiM 0.00815895 -fiat/revs sendtoaddress RUGu35x9uyskZZLu6QMYrNVu8sV1dhz5Hw 0.00816346 -fiat/revs sendtoaddress RU5cqUuART8v7sHRd9NCLFnXBacmBirBtR 0.00816776 -fiat/revs sendtoaddress RCkbkkB4rCiR61u4HZ9LxK3pobUKPtVsVT 0.00816926 -fiat/revs sendtoaddress RPMBdMo9xQKR1A4c7Sccug56YVDfiWyEpu 0.00817375 -fiat/revs sendtoaddress RHgPnExS8MpXzivcQbWuDeAvqzYScp1AiR 0.00818804 -fiat/revs sendtoaddress RPNWnHrdxEmCFUJFG2tg18c2qZL84Yea7b 0.00819060 -fiat/revs sendtoaddress RT8Gn5vTk1VdFpfswyBwgqpU1UsLw6G9e7 0.00819156 -fiat/revs sendtoaddress RYNMuVVdw5wE4N3QLgGDymMn7uQi4PW2Z5 0.00819229 -fiat/revs sendtoaddress RYYXn2UU1d9FB45frFVo3PNAWuHpZuw6NZ 0.00820270 -fiat/revs sendtoaddress RPcYQiZsuBgBZYmqs5Hwf8U1XJ8AJjv8D1 0.00820608 -fiat/revs sendtoaddress RMhmgsmvAo1n8JfidmgqavjJo3mgB7Yrpi 0.00821569 -fiat/revs sendtoaddress RKmXbQQz5QrdR1LE5nCqJkNoeyuK1CyYeJ 0.00821948 -fiat/revs sendtoaddress RUnvaDE2movLCrPoyB55GoT8wriJreiwnT 0.00822102 -fiat/revs sendtoaddress RHEvSzrh8xjuJmhV36ScuQKPMQTKyq2rsh 0.00822815 -fiat/revs sendtoaddress RGyEFMQT69uzsS5qgXap4w4P9VvWpeoW3v 0.00823617 -fiat/revs sendtoaddress RNybfK28wt93pZfqdfviJ42wF5SQAM5Jod 0.00824000 -fiat/revs sendtoaddress RETLtyhmuQV1xTgLevwrEW3ZUoUJ6eS7xD 0.00824666 -fiat/revs sendtoaddress RG2hkKHekLtPBxkcrYnx5vcUFVTFzzJ61x 0.00825653 -fiat/revs sendtoaddress RPJDVz5645EQfib8X1xys3qywfRyJgDPXD 0.00826077 -fiat/revs sendtoaddress RPFr8HE9qgFgRvmkYLRzHaxyjTCYH3B2EW 0.00826874 -fiat/revs sendtoaddress RDTubAgSriyaj27ARLXG8a7rgBBKKfoPHs 0.00827591 -fiat/revs sendtoaddress RRyXn3CmDwtpVf3yfgp2oxcYyQ7Yws55Yv 0.00827616 -fiat/revs sendtoaddress RRhAYbexf4NXhXgqp8SLSN2RqwBti2wi6a 0.00827990 -fiat/revs sendtoaddress RRxiHj9zZzoQ1Vq3VsQMa2X1wX7WFmsCYk 0.00828346 -fiat/revs sendtoaddress RCUfwN4fFq58M9sTB7wCTgHxu8C7K7btxS 0.00829994 -fiat/revs sendtoaddress RFJh5qPRiNkZaqMHHShmx7iCUrsrHZGSZa 0.00829999 -fiat/revs sendtoaddress RHtX21qgeCHfAN4o7twCagwVfgQFqpw1R6 0.00830875 -fiat/revs sendtoaddress RGKmhfjJUhAqRGRL3HCrtfN3r1Nv1jDE1e 0.00831125 -fiat/revs sendtoaddress RUPUXaVzzdzx2jA1Un2UNWwHwNCRKZXkbH 0.00831541 -fiat/revs sendtoaddress RRSyeDTipN5jhGQuePR9sQkb5mEE5BGbQV 0.00832000 -fiat/revs sendtoaddress RACcnxQHFM5TkgDzrM8WLhYjjvUZZkumGP 0.00833784 -fiat/revs sendtoaddress RBbeTFSCCqwRhou3FWEnDJVTjgF1yvsH6h 0.00835131 -fiat/revs sendtoaddress RRhgFBDS8yoGZ72CcBW9WGqSmqunBSLyRT 0.00835820 -fiat/revs sendtoaddress RTb1y16Cax8JkGYsk4J2Mp6MBXMFZgZgmD 0.00838833 -fiat/revs sendtoaddress RCQ1hvK6A3U2mdzbqFFP4R8qxnLyVMYAYu 0.00839428 -fiat/revs sendtoaddress RJKduaoQCh4DNVKcLahMXC8iV9cNUGei1x 0.00840000 -fiat/revs sendtoaddress RGFG4BPGv4jAoTnPuDnDMsdqaD6UeVtJiL 0.00841500 -fiat/revs sendtoaddress RUWugti4pkDvYL5GhyrXCu6qUYVN9BSQnq 0.00842251 -fiat/revs sendtoaddress RTgoz3b37D2SMJW1KbcyDcfCPx4BM264Jx 0.00842520 -fiat/revs sendtoaddress RHsfFjSK45CQ9Eja7BTWhevaMqPmzWxq7d 0.00844000 -fiat/revs sendtoaddress RBf9WGZmu8qgQ48cvm9KpeZYDFNnqxX3SK 0.00844045 -fiat/revs sendtoaddress RGJcke6z2RA6Ydkvo5oiriqBFj5iPm3obG 0.00844288 -fiat/revs sendtoaddress RX7BGQbghx2S5zMBnCQWfLZFaQiVvXS8zc 0.00844569 -fiat/revs sendtoaddress RJTRoTgB2znJ4Lof686Q3k3w9AyqNXtSjo 0.00845560 -fiat/revs sendtoaddress RXtVpd4be8oCV6tsqiQewGCJBwNmZCozSN 0.00845803 -fiat/revs sendtoaddress RLh3YdnQrWxT3xCYS48MvN3tkQU6ehaGWX 0.00846071 -fiat/revs sendtoaddress RPQ6LvLZ6Ydmp25ULhz1aWejHERPXmEzGT 0.00846460 -fiat/revs sendtoaddress RALNBMirMEUAynYVwMWkQKSjeMWNgQ8Whm 0.00846517 -fiat/revs sendtoaddress RSorDjLHkFn6fqWjVNSc5razs3yUV1G5Qu 0.00846556 -fiat/revs sendtoaddress RQF4heVMrxpaTKjQtt7Nr1dcXgTdgkqDY4 0.00846952 -fiat/revs sendtoaddress RCK6pW38X23GDbbmQWo29vRtf3MEq5FuSJ 0.00848471 -fiat/revs sendtoaddress RMvLHTCAEqv2rdfCxim9BFkiNoUyC2rrwv 0.00849216 -fiat/revs sendtoaddress RQ3jWBn9xpqBwiZw4UiMaKvugurFVyBVqA 0.00849552 -fiat/revs sendtoaddress RR1EZUfwcoSXJ6sYdgpTwRoNCZqCePmoN3 0.00849917 -fiat/revs sendtoaddress RHJABdBwhzLd52ifVNB6Ect8JNya9jLEh5 0.00850412 -fiat/revs sendtoaddress RSGphNLA6RszvL872wkxhbqDy1Tzsvd4Ba 0.00850720 -fiat/revs sendtoaddress RVzq8et5fwswLjiRfaDTUkfFsUPMpdAqEh 0.00850978 -fiat/revs sendtoaddress RTw1dz4WLi3JAY2VnWsCQpaF3YUfpaBuC7 0.00851304 -fiat/revs sendtoaddress RXcxykWC8Vr2dupiXY9dnFtqWbtXqq9cXs 0.00852761 -fiat/revs sendtoaddress RR9P81bUYHKT4x5XoiUqQ2jiuqVG9Vujxx 0.00853060 -fiat/revs sendtoaddress RVupNeo6oNeDw1fVkibp1uDzd3fcSLU3Xe 0.00853095 -fiat/revs sendtoaddress REYJciNVNojwMFqiUGMgn2GASbWC89Vb3h 0.00853575 -fiat/revs sendtoaddress RHKgp1VuJdhmsT1b4w51xHnz2DaMqTwPPE 0.00853634 -fiat/revs sendtoaddress RYLT9bQAsNFHje9R9aCa4t27NcqL4CMp4d 0.00853772 -fiat/revs sendtoaddress RQGe2jq65T19y231Fdsx3Fe8LPa9GyoGBu 0.00854610 -fiat/revs sendtoaddress RN9WpZH7eBFSXNqMBvcsiUUxzxgMBKC8W1 0.00854797 -fiat/revs sendtoaddress RMAKmbyiLt9svbrBVcMrR4b6BaLm51mciy 0.00855001 -fiat/revs sendtoaddress RS49mUTdS2HNWZ6bxeWiWXjrpAVwmWMubd 0.00856260 -fiat/revs sendtoaddress RE4S8UCTyGUzGEnHNqjT7nzhK1UVh7SV68 0.00856312 -fiat/revs sendtoaddress RSC9QbKMjTxFiLRD3zkLL94uUC4XV9dBqi 0.00856356 -fiat/revs sendtoaddress RGiJ4UGGDnBEngCDk9HwyKfNvJp1Gyg3jt 0.00856382 -fiat/revs sendtoaddress RBJjobsJkPK9veHrHSvk7dKR93u6NwFLMj 0.00856646 -fiat/revs sendtoaddress RUvU5AnvSMKXrufCBGT9szjmxiLdotZ8F1 0.00857085 -fiat/revs sendtoaddress RPL2vJG4tqFuUvzJb3HqeuPGM947Wg6bU5 0.00857269 -fiat/revs sendtoaddress RGjYwQm5zAM5jrBPctP6CDhbsFfoJ6TXUL 0.00859500 -fiat/revs sendtoaddress RSN66CqvKWiL5er1PAGqjRzLYQEJX2pW3C 0.00859785 -fiat/revs sendtoaddress RAapgqgzEsKWqCzgmPYPKBT34n4ncWN6nB 0.00860340 -fiat/revs sendtoaddress RExWReKP6Wmx8mAWTXHf47vUd9f2v5TCUk 0.00861820 -fiat/revs sendtoaddress RQpxoJu38RXWhggXiRTS49zHzVQX1uwCwa 0.00862148 -fiat/revs sendtoaddress RSLvK4Q9SPLvfgbNtgpzhZdAEwPAEJMmWE 0.00862999 -fiat/revs sendtoaddress RAXjmxoYBu5Uo84Jc2H6cRoKofUU7GVrKU 0.00863072 -fiat/revs sendtoaddress RD476gsjNhvBCQCRHUzzKvRrfbDhXX4X3w 0.00863603 -fiat/revs sendtoaddress REnprh8p2FTVPzbssBGPmKQB2gBsWsZ2QZ 0.00864001 -fiat/revs sendtoaddress RTiJHot5kXAC1jm82r3Hx4MJanV6biRsZ6 0.00864275 -fiat/revs sendtoaddress RXsbbsoxahfe7scPPKXCpPSAWo5DGUCHeq 0.00864280 -fiat/revs sendtoaddress RQQCcdkR3PVgzvqd7ifKA7E1soZxT3BjNP 0.00864816 -fiat/revs sendtoaddress RSuzFdiL7RJbyv5F2twL5Nw3isRuFinXpo 0.00864986 -fiat/revs sendtoaddress RGwjGdGxxRE6eZ2eohYCbCU4pSAkXYU8zs 0.00865036 -fiat/revs sendtoaddress RDkaLhP8QiBwn5tDCbVDbKJ4EyxzPe1wop 0.00865190 -fiat/revs sendtoaddress RJEGUZYhks1EngHsdBixnxpUDEzgiQ1d6r 0.00865699 -fiat/revs sendtoaddress RVePYwr8V59ETuszSRSxs8GoCroXQALjnW 0.00866705 -fiat/revs sendtoaddress RG9pA41dvp3MkbC6Vy7csa4k8TmPv4WWMt 0.00866715 -fiat/revs sendtoaddress RC5gYYK4apox6josbUhoGpKLLYYQiBRVcK 0.00868500 -fiat/revs sendtoaddress REfMwda2HYM8ZKfd4gW2ns54QgWNLuW4X1 0.00868741 -fiat/revs sendtoaddress RRBXhAZQMzuqnZzRNjTS7UQUJ3Px43wETr 0.00869262 -fiat/revs sendtoaddress RTYyF2ZNu77MibbG888GYQQ6jxZrH2gTbF 0.00870972 -fiat/revs sendtoaddress R9UfuLobaRihTMT2qLFMtQH38xahnRsLC4 0.00871726 -fiat/revs sendtoaddress RT4aj7uv2WMzHE8wmPd451souBPXyuZ2RT 0.00871880 -fiat/revs sendtoaddress REwwuvG8AiyNeiRcCwTkhyPehdJ5xiHez8 0.00872374 -fiat/revs sendtoaddress RTvTRAKgbbe5UwP8LHBd6aRfgbP2p8sQsN 0.00872853 -fiat/revs sendtoaddress RNdnjh3zaY7FERALocApvG5cnzQHxwyjDi 0.00873762 -fiat/revs sendtoaddress RRypk1mqVyHrxfboHU4jbGH6yywx8X4JgC 0.00873916 -fiat/revs sendtoaddress RCxEMHhQNe2CVrMkVbmvvMPgQakHTQGfGH 0.00875015 -fiat/revs sendtoaddress RT6UJUdAzKw9zu7PmrCEuW56aby5oTqPwS 0.00875431 -fiat/revs sendtoaddress RBaoAnscs9Heven8QJdgM3TNBEbWPspG7Q 0.00875699 -fiat/revs sendtoaddress RGDBLuvx2w9zdfNwpjqxuCd8CmteGvQ6Vk 0.00877397 -fiat/revs sendtoaddress RMRNXbULeNDbneXVrbLbuJ5QqPGHFrZob1 0.00877548 -fiat/revs sendtoaddress RYAu6uWmG9gyjB6KyipJiaqMHavkr44Lyo 0.00877951 -fiat/revs sendtoaddress RU8WpBk3vDwN4nWAke1nhUFgBBpyfF7b9M 0.00878941 -fiat/revs sendtoaddress RA51Q6ufYB9TBCdLKE6mjQYjqC9ftAboS1 0.00879647 -fiat/revs sendtoaddress RAmHxBfYmjJFRxXTeoS46rPkDJqeRzhe8B 0.00880242 -fiat/revs sendtoaddress RDUevUbD8vxZmEE6XU2QPWoTBRETBsjyaW 0.00880713 -fiat/revs sendtoaddress RJNkuUMTgRWhtPJfsANUuXQD1PoTTDFcxc 0.00881439 -fiat/revs sendtoaddress RTbXtqqkX26U9HBjDEe7GjPzNgSGcx1x6E 0.00882569 -fiat/revs sendtoaddress R9eXrfi5bVUH2LeoudpinoEww751jPdidZ 0.00882723 -fiat/revs sendtoaddress RAystoTn1BcUZ3wU4VW2VPxwfEHoTZvnz8 0.00883762 -fiat/revs sendtoaddress RUyhGYmSYiMKPGDrXQxY8LpECPCbCyQr7W 0.00885888 -fiat/revs sendtoaddress R9yLfwaeN2PPydjTqAV3MuHz5HxGDme8hJ 0.00886601 -fiat/revs sendtoaddress RXoDdcRGwMVZDSvMyYdHfsGud2dViQo7r7 0.00887145 -fiat/revs sendtoaddress RVBEvUqAVQjBaTCG2Wia6EiXQDzrmVJ5qz 0.00887290 -fiat/revs sendtoaddress RN6CvLzAzDPskE9TuYMPrWnzSbsTbJwQC2 0.00887522 -fiat/revs sendtoaddress RKdMbCejmRxhCjZ6EYz3tgueLZ2vsoFCcb 0.00888000 -fiat/revs sendtoaddress RG3Cq1pn49JgfWRemrtFkH2fHx9insjWS2 0.00888130 -fiat/revs sendtoaddress RNt4hHEXWTzLnc28EX3a5x5QwWehWrEimy 0.00889181 -fiat/revs sendtoaddress REQbKnyzhTkvu2TWyHbUQVLCoBfGxygy14 0.00889644 -fiat/revs sendtoaddress RTVfGW7tRwPHWrKrUdNTzq1dZwyeNrHtcB 0.00890000 -fiat/revs sendtoaddress R9Wfv6PfMVj8ThofEhdLWQTYtXMhXXK62P 0.00890380 -fiat/revs sendtoaddress RNmMxK4Pia17Jj3TEFCnkuYF768g6KSpQc 0.00891313 -fiat/revs sendtoaddress RMYKb2i7VvX6toTjqVNUjUzkcuw5UcigVg 0.00891415 -fiat/revs sendtoaddress RSpiF9iYe6okm5VzwkPFNje8T2LxB3FoYn 0.00891436 -fiat/revs sendtoaddress RQ2fUTLAnFSMgreT5YvAwyKwz2K4Soe3Ae 0.00892072 -fiat/revs sendtoaddress RDkW5wnEC2nia4qrqopQ63RW6V1igHjFHi 0.00892086 -fiat/revs sendtoaddress RNHZ6GMawNLhikYUbChtbKjxn2XTVN1heu 0.00893156 -fiat/revs sendtoaddress RSEnDMfHK3CVkKR4a97rCbytU7GHbqkSiY 0.00894356 -fiat/revs sendtoaddress RTA3BowKXjUEogRr5Yy1rbC76oEtHWuvpc 0.00894664 -fiat/revs sendtoaddress RJjSDWPuzZGRAaNnfWYxWimrMRK3uzvT5Z 0.00894819 -fiat/revs sendtoaddress RAM3gEGu4ETnXCYgD4BgdJRkvEYoPM5fHQ 0.00895871 -fiat/revs sendtoaddress RMCFeXKScecAUr3mTqqfV8PgG1uiQwYyx8 0.00896100 -fiat/revs sendtoaddress RQAbXeWZxGqAwRyYrMxRrmE6jBfPuWFFpq 0.00897982 -fiat/revs sendtoaddress RDMkbaRygAsWihRid5bRttFc4qcUNRaurm 0.00898071 -fiat/revs sendtoaddress RTH5DMNMAMankR2G4rPYnWLSm6ptnApcZp 0.00899690 -fiat/revs sendtoaddress RUEbDZwfQzKcrZ6gaj5MNuPgiXVZHgZbQG 0.00900000 -fiat/revs sendtoaddress RAfMScMoNGevudBvmpjys88BbUoyCjqUCw 0.00900244 -fiat/revs sendtoaddress RJFPovT2PMy1AggGDeq8Cwu9JG6T51Lk12 0.00903871 -fiat/revs sendtoaddress RHq1UBj2ix8w3jDCVhZ8HMiNGWPdZZ5Xhh 0.00905840 -fiat/revs sendtoaddress RPf4AfyUhmbvJXh82yZJ1Jw6nC4EtT5GgE 0.00908170 -fiat/revs sendtoaddress RC8RSV2ttVR6tP1j4rCNfruwE2yZXPtWJx 0.00909499 -fiat/revs sendtoaddress RDwCyFA2rshfE6n7jKJMMcTXrgzbfK1CMg 0.00912000 -fiat/revs sendtoaddress RTAQNLm1Y9kt3nzPhfZmGrMX53kC2zV8As 0.00912338 -fiat/revs sendtoaddress RTRhfh9z8wtapt9Zuh8gogwgRUmNM26abZ 0.00912403 -fiat/revs sendtoaddress RWBQXYxfxhzazoM8TdFvFwQYitHeQuF4nq 0.00913843 -fiat/revs sendtoaddress RKy2DFo97kJQUTwD7iHsesQB4H64T9jn9K 0.00913946 -fiat/revs sendtoaddress RXf2PzwDYLVUjffvwtt4RrrVBJjYwjGjjQ 0.00914252 -fiat/revs sendtoaddress RTtXEaze1iUzyY2Mkox1akTQkLxuZ3uy96 0.00914868 -fiat/revs sendtoaddress RJyMS3kLj5Ud9govZaAb7a25FraAYtREQQ 0.00916881 -fiat/revs sendtoaddress RFV66pqYkrwGheh9AxpxdCqHQV4kxbHmo9 0.00918000 -fiat/revs sendtoaddress RTmA3WgHmAgLa673JzRzGScpCWRBGVEvKS 0.00919144 -fiat/revs sendtoaddress R9ZeUbqy7WWZoJWawuqvFEzwZZhJWZku27 0.00920447 -fiat/revs sendtoaddress RC8xNppuUVD9pWXtxKVEw73wwVteLufT73 0.00923183 -fiat/revs sendtoaddress RBaCvMfTG2PqasAjerxCua8HTgwA3amvir 0.00924569 -fiat/revs sendtoaddress RRKtCyoH7Y4dLDPaNHXLtfzm8ceTZoojiQ 0.00924697 -fiat/revs sendtoaddress RVFQr2xGmdhQE6DnqNpKF8HZaCTBzkJH6E 0.00926600 -fiat/revs sendtoaddress RLsS5CWKBvXrsMC7vBwNbLfCJdsdx61oQU 0.00927628 -fiat/revs sendtoaddress RHNyQWotmSfyETZJHvHVCmhqAEwtRRKtyK 0.00927789 -fiat/revs sendtoaddress RMmJqZALcGAbG61dy1auVBwhYQveAQZh1R 0.00927981 -fiat/revs sendtoaddress RDE3Z9SiXF8Tgr5sfCSTvi7WNcefMgg9d6 0.00928975 -fiat/revs sendtoaddress RFD43mprPFEGqY12rU6wwLEaHqMqEa9ukn 0.00930453 -fiat/revs sendtoaddress R9XcGMhiKEnqwjvHmaF4ApDUvJwVaCCfDJ 0.00932527 -fiat/revs sendtoaddress R9v4HPtRPQBYiPuD6Hxp4FfizVbWZpBXJQ 0.00935789 -fiat/revs sendtoaddress RBr2R4w8LmHS1Z4m16Z6U6ChHaAtDCy4Kd 0.00937444 -fiat/revs sendtoaddress RDpfErYbGdgrZsMtitCMvh6XN2cNu5xrtm 0.00938000 -fiat/revs sendtoaddress RBuSELrWwSfFE81AkE2EjmXT5frLFeddGD 0.00938959 -fiat/revs sendtoaddress RYDatcBKx46mjiFRtBEoaKubz8u7L2RYbd 0.00940000 -fiat/revs sendtoaddress RQG2mHk8MzUwXYMNaXc2UCF9YbSmTVs6Zx 0.00940608 -fiat/revs sendtoaddress RRvmaKynuo7Jm6tMfgSS3SRaGobWroTDWo 0.00940995 -fiat/revs sendtoaddress RDvX2MgtFrDE4DZZXZSTkxmx4J8QNxGeCX 0.00941334 -fiat/revs sendtoaddress RFrP8JMrSyTHg9q8uMCSxJjRz9GJpdeDYf 0.00941500 -fiat/revs sendtoaddress RUUGiHiT3PJK7dXHMfEHuefyeLLm16oJPA 0.00944134 -fiat/revs sendtoaddress RRCNUuXJuqtetjUS3R5iDXZ9xWCK3g4AUt 0.00946170 -fiat/revs sendtoaddress RNJ3nVhuD64TB5biKYFszTKKjNdaVqJVC1 0.00946421 -fiat/revs sendtoaddress RP92LbJVwdMFLVgMcatGXMQsf7UbZTeXF7 0.00947393 -fiat/revs sendtoaddress RCCc4Xnxtow2Gi82qFfMPruLYiEErn3sjP 0.00947953 -fiat/revs sendtoaddress RTbHPSJR53K4NAvousUGscUrx27n5pd6oq 0.00949538 -fiat/revs sendtoaddress RQTWPVJawsgf8gcJxTVdzDwuCpgiEP97ak 0.00949801 -fiat/revs sendtoaddress RFrqpUfU76sHsiqPpfmRJ5EaLkCTJfDurX 0.00950006 -fiat/revs sendtoaddress RL3fHoPKV6YP6sRm3CTHwUDFF5gqp6atYe 0.00951053 -fiat/revs sendtoaddress RNFGKndBzBhpT7DFKWJro1nykegV4ksjC2 0.00953430 -fiat/revs sendtoaddress RSyQQ4dBceS4NZFpEdRA18nJJsmZzKxd7W 0.00954010 -fiat/revs sendtoaddress RNbvv7ZMykGw31SSb9CJSTRUezSaQ35BFu 0.00954977 -fiat/revs sendtoaddress RFUpAR3YfrKfLhR2tPN76yrXboVjDK9n4J 0.00959591 -fiat/revs sendtoaddress RX7XaVW9cx1VhqecNYE6L6kJgZw11JiVj3 0.00960000 -fiat/revs sendtoaddress RQhoM6uRpeJYugvL14xMxrtxguibLaf9AS 0.00961770 -fiat/revs sendtoaddress RCVL5LPX3fv8JTic2F1dR7XD6TDxpYdLjE 0.00961897 -fiat/revs sendtoaddress RJodvSAyP71vBuDp95DpY72i43XkSF5sGM 0.00962611 -fiat/revs sendtoaddress RLFCmZ4eqP6cpdT4tYmTEgjihJ3zCxS682 0.00963749 -fiat/revs sendtoaddress RNGKmkq9bJ3vLQqZrLoYQLZcaXipWuUSMh 0.00964030 -fiat/revs sendtoaddress RBE7nz9czHumTubiBce86ifiQgjqiuLxU4 0.00966918 -fiat/revs sendtoaddress RSEkxixkVg1PVE1t5cjoF8TeujHNGbVbPK 0.00967072 -fiat/revs sendtoaddress REbmt57hnMfCT5YkhdrXYUkGawqb4dhDer 0.00967300 -fiat/revs sendtoaddress RLKfUZrUGfh1tL5VPX2pMBJZ36SqQs37jY 0.00968587 -fiat/revs sendtoaddress RJaZHN2KvUXdx5bTPnWKibh3FabjFEXRYH 0.00968864 -fiat/revs sendtoaddress RHhwbngbUSbFYsrAkwUPdYNSBHoM8UgvMV 0.00969634 -fiat/revs sendtoaddress RHWcgCYXT3XrVeifAxLb2v6iRW7YJ1SWXc 0.00970000 -fiat/revs sendtoaddress RDPnncV98nDdwKATdkS8oayswgrut75YGE 0.00970015 -fiat/revs sendtoaddress RWpRW4BcHNh4iKHE8cnJiR1vgjRe5jM3gF 0.00970138 -fiat/revs sendtoaddress RGrJzN7p6cTxcEbHz9JABV5FQiPkzjyAUX 0.00970623 -fiat/revs sendtoaddress REnb9ktz4pL5Jgk5uxBx71tjp8wpCKW4TW 0.00970891 -fiat/revs sendtoaddress RHwBy8EEhMG25VTPkXtSiR8XHajyimgF2V 0.00972500 -fiat/revs sendtoaddress RRob4geg5NXuwvgLp3vJUEhA6tKKc4ripK 0.00974874 -fiat/revs sendtoaddress RRvP1ayNzyXY6fn7gMzXq5kPgX6RaoqNtV 0.00975339 -fiat/revs sendtoaddress R9Tbp2pMC5fxPU8XnXNNcWEQMy1gJ67LjM 0.00976095 -fiat/revs sendtoaddress RJWKD7FeBAPiEk14XNDAqaEUYEXXu1YN4y 0.00977489 -fiat/revs sendtoaddress RKb2N8k7iRbuYtjJP9J11875McVbnKnpK4 0.00978704 -fiat/revs sendtoaddress RRNKvwed8misvqJJgz3FihEnHwHgqV4tmr 0.00980000 -fiat/revs sendtoaddress RDEHRF6oAG6c494kJKjB9kLyuRn2h8tjuT 0.00981341 -fiat/revs sendtoaddress RXVnzNVACfGnQPnsGp6dx7iFAgrqS8fWfX 0.00983689 -fiat/revs sendtoaddress RCDQQWaYqVr3oohdEvYkv6pqiNCi26xgin 0.00984936 -fiat/revs sendtoaddress RJnZpwxRwvDSa4NdLFNdUWdg3rYFMK7cnq 0.00986300 -fiat/revs sendtoaddress RQJFFCH1m4FGgEhz9of8obhjNXRCE8wpWi 0.00987870 -fiat/revs sendtoaddress RPgKFQE5YvCxNTT6Mr9xDAD591sJsZzVe3 0.00989858 -fiat/revs sendtoaddress RJKwx3Cfz9CRUm8mjuPCYPjbQVjbVsxvdJ 0.00990000 -fiat/revs sendtoaddress RRhU87U2AygX87EeBf2oCoda4R2ALDNDnd 0.00990559 -fiat/revs sendtoaddress RXbosN3F3BLxdBVQXtsj7d4yhzQoDoDx44 0.00990745 -fiat/revs sendtoaddress RT7TGBoc6GZ1UJz6ZXBSB9sNLbe6CXA6d3 0.00991093 -fiat/revs sendtoaddress RTddMhJQsWwiG97CUcHKLq5CuBHjiTrLPR 0.00991459 -fiat/revs sendtoaddress RFojvnNaMxinnFuUEvxh8sBBSU7sAdkHx6 0.00994548 -fiat/revs sendtoaddress RDW8F92PNhZCbXgJXVkWgoT8QnckrnPY51 0.00994648 -fiat/revs sendtoaddress RXdTPCeirJy7fhY4Q5auBnCaCFYjYFjHqr 0.00994860 -fiat/revs sendtoaddress RXEh4q2WnSqXasEcoQUAysksutFbzpFw9a 0.00996789 -fiat/revs sendtoaddress RK4KmA1v4T8Srkq9KTT1ebP2uAX7aDcpcy 0.00996951 -fiat/revs sendtoaddress RVv2xJwVjE352ejwyFSRDS3Ln7aGpbVoQz 0.00998170 -fiat/revs sendtoaddress RWcnGJXw3bhMZEZWSLC5GpG7yokXkori5K 0.00999773 -fiat/revs sendtoaddress RFwbpsbXPBfPmeHbN4xKtF7cpfX85mQf7u 0.01000000 -fiat/revs sendtoaddress RLyhywpv1J3Co1uPC897cyqTs6iWHDenkj 0.01000001 -fiat/revs sendtoaddress RJ8ijGPSvZZy5mdxZkpDYSe7uYczy61Hoh 0.01000002 -fiat/revs sendtoaddress RJSLTnwnCmrRo38QQsQJMYE8CQW8rNDv8m 0.01000003 -fiat/revs sendtoaddress RP5tmGBGZ5tH2bnYLjuY4FY3ztYKMoeHJ5 0.01000004 -fiat/revs sendtoaddress RJGkQvBovikxg4DcXDpfMHcZDn1QUj1Xon 0.01000005 -fiat/revs sendtoaddress RNzsvYGYnZc84ghLRXLbNB8pXMWRJTAZXY 0.01000006 -fiat/revs sendtoaddress RBB7aKyFQDreNz1mTUbmQjcFmuYjZF3JzW 0.01000007 -fiat/revs sendtoaddress RDCQJK6Gm76tzeGhSLqtPi6hUfoQhbzY5K 0.01000009 -fiat/revs sendtoaddress RLe8tgfifvYwbRzNEdtJpaiuRx9y3ee5X7 0.01000013 -fiat/revs sendtoaddress RJ2CQ69UpQod69yWPEiCC3fHwvXq9d7gCh 0.01000020 -fiat/revs sendtoaddress RMojNJfbxVB28KGHy9c7VbNr8abHwVnWra 0.01000023 -fiat/revs sendtoaddress RTX7fYY6ZYEtZD31k4WFWLSYjwxadxNGwJ 0.01000026 -fiat/revs sendtoaddress R9ZS4t7pUjXYbiuU3xvoZHKECi5ELZtsYx 0.01000028 -fiat/revs sendtoaddress RVF8a94KQGC6evGn2Dkyt2AQKoP1HwCVbu 0.01000033 -fiat/revs sendtoaddress RCzyb3XkPkeJupH2JtLaXkyAYXxwmCqEBh 0.01000034 -fiat/revs sendtoaddress RSQ682fKLvqo5NXbJHPMTdVE6X3MSGbE7r 0.01000038 -fiat/revs sendtoaddress RW2ohUcdFnqF4uigBtkqjSea6zMSCDMqjD 0.01000040 -fiat/revs sendtoaddress RBV2fAr7rZwmWiFtSox8E1iPMCc5Heu5sz 0.01000042 -fiat/revs sendtoaddress RMaPPnzZPBjyh77QSg2mFrBhG7wEiApqct 0.01000047 -fiat/revs sendtoaddress RSbnGPa1GsXsLsPFUV3tiA3a87Q2JrZD92 0.01000051 -fiat/revs sendtoaddress RPEtwqT5kceXdPQUyZvXpz7iXURhCeeu3h 0.01000053 -fiat/revs sendtoaddress RErh5CeLNShZFJW5XH5pN4Cokwj4KSJSDU 0.01000054 -fiat/revs sendtoaddress RGaj64wEH1DJA9Bc8UAt9kfTd2RXoQUYkL 0.01000059 -fiat/revs sendtoaddress RGRZAcUkcheNYRdsi61ZDAJ4sogibS1fv5 0.01000061 -fiat/revs sendtoaddress RNh1ajwXqQ9rCbyJj52Mpaug4wzFELuWSU 0.01000075 -fiat/revs sendtoaddress RYEQ6PCaGfRhRCcLHELrjzHhkU1rvczvHF 0.01000078 -fiat/revs sendtoaddress RDXvQW1ij5Ckrt9rzoSCPRUwFVEgNm915i 0.01000083 -fiat/revs sendtoaddress RB5QvQ3YbS5vwC5RtHoJZFhk1B439wRVKz 0.01000099 -fiat/revs sendtoaddress RC1w7sAMNqfPQnN5gWNczEjfX7iRZtmThk 0.01000100 -fiat/revs sendtoaddress R9SFnY8yWFYzQoUksWxVoZBRzLXHjBHumT 0.01000104 -fiat/revs sendtoaddress RU28bbjMeWmQ1egRgey4u8sgi2aQAzhPLB 0.01000133 -fiat/revs sendtoaddress RQVFnFyWzSACm94G991981E1HvwaHKS9Fw 0.01000137 -fiat/revs sendtoaddress RAARtQWzm1U8egais3zejSf8ZUdyxU281B 0.01000156 -fiat/revs sendtoaddress RVzeq9z9n1NT9af8c3eat5Fk2keCDV4dey 0.01000159 -fiat/revs sendtoaddress RFDFhZfmVed7ARbNndV9KKm9N9PQnyRYND 0.01000163 -fiat/revs sendtoaddress RE8dNTux1tdUXLTtmVj6aSD1MLeRCeswaR 0.01000177 -fiat/revs sendtoaddress RWYbLPBNfYPDgB9UaR5LTUduy7ByhAq6q1 0.01000214 -fiat/revs sendtoaddress RT2PGtAmPDsutH2wWR3Bx5BUA9XptXF9ZD 0.01000223 -fiat/revs sendtoaddress REEUCxzyWGZsrzayq17Hf5L6r9Dh4k1nL6 0.01000266 -fiat/revs sendtoaddress REokaRCVxXgeqhA3zbxz7h4d9FRhKefRpv 0.01000273 -fiat/revs sendtoaddress RE4YsCi3njdm5yDShHKfyVLCPsSy5pu8bU 0.01000282 -fiat/revs sendtoaddress RLBpa9pSeEj6qVB86qDVB4jS59iKBRDo3B 0.01000294 -fiat/revs sendtoaddress R9NvdQwG7Wocw7wqQ6w36FksisJvLXPJhY 0.01000334 -fiat/revs sendtoaddress RRyxQTiZn9MDCy5788GG4SSAxGZRgbZu5b 0.01000344 -fiat/revs sendtoaddress RTGwmZ3Ev9cgfmmbKmG1B2cCX1B9eMBiC1 0.01000393 -fiat/revs sendtoaddress RPnS2guiiUuzHaYPLPdbotHaVeWzaR83Xv 0.01000410 -fiat/revs sendtoaddress RUkH7a4hbdbADEa1hqke9WfxfLNH8wpCfp 0.01000451 -fiat/revs sendtoaddress RV6h8pSnw4G27zi5WP7dvD4ZMmMQFLv9vp 0.01000488 -fiat/revs sendtoaddress RXQNPnQqE8miKFNUdgywceB7Mtgso79RzU 0.01000577 -fiat/revs sendtoaddress RRzJNCijDwJ3rdNsBpE7syCyKduJoCnYKH 0.01000592 -fiat/revs sendtoaddress RGWvd6gwVUaLKyJMeK1bqJGkvo1afUTcPa 0.01000726 -fiat/revs sendtoaddress RBZniKXjrQEH7xnCY5dU1h5fAjF1M6bLXo 0.01001198 -fiat/revs sendtoaddress RCFh7HMEnbmUCxyiwmrfSqVRUyN7BKeUNe 0.01001302 -fiat/revs sendtoaddress RFbNfRDg41A4ok4PGwLBQfrAy6LBeJzmXM 0.01001658 -fiat/revs sendtoaddress RJMMLFY7JFbNk8qKAqjEBiLybiWAzQ74C6 0.01001875 -fiat/revs sendtoaddress RPNSdVCDY6xwRuq4v4qnbPQP8SXTazS2Pd 0.01001966 -fiat/revs sendtoaddress RCsLSfioGNaxfwoYTMhD6mYza4Bzz3oLEC 0.01002120 -fiat/revs sendtoaddress RXeY95UQJhMHPmgcQG9zyQzErvDRAYygtc 0.01002378 -fiat/revs sendtoaddress RJ8xyZFqSeUoGvw4BZudAtN6jbgGmXMybM 0.01002808 -fiat/revs sendtoaddress RSkAnttp6pECphdE1g9dEwXabHviFcWCES 0.01002868 -fiat/revs sendtoaddress RLR1TwFeSA4mg2SYARHCCMp8B3ewPDAoT7 0.01003057 -fiat/revs sendtoaddress RWdCd6yCLsZVinwcGRtoGiUAKRS4JY7KV8 0.01003105 -fiat/revs sendtoaddress RXpedEq1jY1PgriHhiRkNNYvZDfRD2pXYD 0.01003348 -fiat/revs sendtoaddress RSJ1as74MXwEHkGorHe7vzxnsibz7mte2J 0.01003503 -fiat/revs sendtoaddress RNXP6j1Hq1CmU4WCp4FRpbgBUr7h3tduhC 0.01003692 -fiat/revs sendtoaddress RUp1eF71wXbZ6H8Wv5KDSsdkVChSJV5s17 0.01003721 -fiat/revs sendtoaddress RRxMwVTtqWcvuW9bV91UYhcwH8ZQ1etavW 0.01004068 -fiat/revs sendtoaddress RTQLNBGyJurTkoAk8yM52S4D6AYGm71mHi 0.01004616 -fiat/revs sendtoaddress RA8YJq8YGLj4SmQnjboPKRmJCrpqJnBgax 0.01004676 -fiat/revs sendtoaddress RGsXkwc665F8pFpW3QFKTHgFxZ9Egzq9at 0.01005114 -fiat/revs sendtoaddress RDX9YewLd4qRFtxLCUqJbKN1LfreGyPmGT 0.01006496 -fiat/revs sendtoaddress RC4JsrwBsBYfPHKffWPSPGy25JhUs1KH1o 0.01006736 -fiat/revs sendtoaddress RQSADiPFv7DuEZfxd61QMaqCWwaSeXXAzH 0.01007369 -fiat/revs sendtoaddress RXwPdV7MYj5ZpANuWxUeWegLQ9HpEn9dSf 0.01007553 -fiat/revs sendtoaddress REvqYYRChgjhr8VJPB2a9BecAJNKbqa9AF 0.01007700 -fiat/revs sendtoaddress RBLEuM7cgoWHmRtC1b6U99ghgoZu2znacJ 0.01007706 -fiat/revs sendtoaddress RU5zLZuGWsa6BUoZE5VR2ptdyJTkcyppxr 0.01007770 -fiat/revs sendtoaddress RM1Dc39rGUuTSMptWyTw4sahfPNzJnUnFz 0.01008000 -fiat/revs sendtoaddress RXkAeKbwx3GL5kdao8aegj6rGWzfcUBurq 0.01008024 -fiat/revs sendtoaddress RQgky8HFTvDoYE12peHjzWZpPEKctiFKih 0.01008194 -fiat/revs sendtoaddress RBS6iJ1VzvLihpuJxBzjqXyzXDcWebxaw6 0.01008600 -fiat/revs sendtoaddress RMRbEesSADySwKwEWb8kpjeBTaDRkYZtHF 0.01009798 -fiat/revs sendtoaddress RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm 0.01010000 -fiat/revs sendtoaddress RCGTKLERJ9DqKezWU6meWB1ur3geSYkNPo 0.01011259 -fiat/revs sendtoaddress RAgnosAApQfPhqD2d6Y8JkCchgDin5P2Zk 0.01012000 -fiat/revs sendtoaddress RBzX1U7WWcmgHt6EFEJ5L9UXCyyXF9au9Y 0.01012220 -fiat/revs sendtoaddress RHFUWfDxKJm12Dt6gZwxXVW1xCDruiRMFs 0.01012526 -fiat/revs sendtoaddress RAJNRVijDQfiJFYyfrgJCHNvRhZaocKvdi 0.01013456 -fiat/revs sendtoaddress RNhaPhkC8Bk62EBQ8L9GF93YxoN4DTAKcx 0.01013864 -fiat/revs sendtoaddress RJrFx78JRaMJWA2w92vGqfpcFo5bQCKB1M 0.01014105 -fiat/revs sendtoaddress RXNNQ4preJUpZ9We2hPivV7TrfFmiyNBX9 0.01014403 -fiat/revs sendtoaddress RG2E65F26tU9iohqXPQEETxzpcRBSgU28s 0.01015897 -fiat/revs sendtoaddress RL3FTFhhsQyEPsZUf14bqq6ZtxxRKYmNV1 0.01016344 -fiat/revs sendtoaddress R9daRwcMmeHdvrCb9XLfhfik31WMbB4mBi 0.01016830 -fiat/revs sendtoaddress RUcXamHRY4Q4XoAjNSUwYXHixXtyZh95n7 0.01017566 -fiat/revs sendtoaddress REeomFVXGwK6um7bu9GMzmiwpBpwbVWJ4K 0.01018470 -fiat/revs sendtoaddress RSF3sXtNGCFdeuF97AfT7bqTNListq45NP 0.01020000 -fiat/revs sendtoaddress RJPNAVUf1zXP65H6iXkrS3ctoxwat1pN9o 0.01021501 -fiat/revs sendtoaddress RMjJduyXveBbnR5TJ3tf6xzeobhdN7jReB 0.01022254 -fiat/revs sendtoaddress RGb8gZ5sXm3doy4N96sJ5bXDS2EShvBhuX 0.01022531 -fiat/revs sendtoaddress RG2hTpwcnDc3q4jPySVu26nthEajK45dQJ 0.01023327 -fiat/revs sendtoaddress RJxu9LksP2r9fcQY6z2AJ3dgriCZt7A517 0.01025160 -fiat/revs sendtoaddress RMANxTBitUayx9yCygoyiQsWsBs64GvBxq 0.01025400 -fiat/revs sendtoaddress RHcw1ZgVCW961Jd1kYNYPkXp4K3N5W2iwm 0.01025683 -fiat/revs sendtoaddress RJsG3fyNHpU1gj9eTBkhx6Z6DcHQzQ6AH4 0.01025953 -fiat/revs sendtoaddress RQxjrQCW5uW31hhHsJF36uWbJmmx1iTWrX 0.01027379 -fiat/revs sendtoaddress REo3wCZEjSbjPXC8Ba3SU3a7fPnqehd3hQ 0.01027464 -fiat/revs sendtoaddress RCpbTkY6cYb6WQ993cWJ2cxk38m11Mcbjy 0.01027608 -fiat/revs sendtoaddress RBB15oUXKcYTSXvYf3wgx9gFdWhcuQDju1 0.01027609 -fiat/revs sendtoaddress RTYpKUgDhW7kqxEv5FNzy3fi6vmzAdvHcP 0.01027768 -fiat/revs sendtoaddress RNpvcFAbXRhwMd8oGQL32WwH4qoRbsCgDR 0.01028226 -fiat/revs sendtoaddress RJCmxRjWkptB1PAVvgJv5PF2NM4iB9cAcB 0.01028366 -fiat/revs sendtoaddress RYFNJ4GAMGtszeujuHduEBRzDQ6PgaQAf9 0.01028482 -fiat/revs sendtoaddress RLSYkqw4vFiT5V57Szth7CjZuQ2vfEVU4s 0.01028954 -fiat/revs sendtoaddress RWffYApYPncZ18BzKdGBJFwKx3XpFM6oEB 0.01029122 -fiat/revs sendtoaddress RBsqHLjGAeijHet5MGXPSnATDpAW4G9YHH 0.01029141 -fiat/revs sendtoaddress RTNZ3MxhxSuqLccX3nqXpKYobDhSEBawoW 0.01030118 -fiat/revs sendtoaddress RCW1WR3zHpnXjqmomieNTRgpdf2YnMJPWf 0.01030858 -fiat/revs sendtoaddress RAAK5LYHUJ77RbmubLUjzE5Nwt3wAzSvu5 0.01032044 -fiat/revs sendtoaddress RTeuURJ4VpcWYZQxQzNNhtjiEbD9cAHmor 0.01032549 -fiat/revs sendtoaddress RATdBj5meBWnmRo1EmcM6vJPVWozrLwnZ1 0.01032702 -fiat/revs sendtoaddress RF3WZk1NZq4ZjDVgs4yFSW5jDjJovbTZGN 0.01034000 -fiat/revs sendtoaddress RHYWHUCmdhvjKyZHJzsLHaVs1isZwTLJ41 0.01036299 -fiat/revs sendtoaddress RGZCtswqWZpFXqCZ2KQrYbWs4VpziyQAcG 0.01036379 -fiat/revs sendtoaddress RStgN6PG5Bu8uBo11W43Erz4T7QwrdK6iE 0.01039326 -fiat/revs sendtoaddress RApfaeAcJTe1GWXhUpq3vex5F5g38eaktd 0.01042000 -fiat/revs sendtoaddress RSyX1iD2UjZGuso8BNyr2cJEszuDyuenvH 0.01042126 -fiat/revs sendtoaddress RRkYTDKvHhMXCE2jH6wBfSJ9T5JTBw52ZL 0.01042877 -fiat/revs sendtoaddress RP73kSqMSRVFccWAi5v6SirVzc3qLW14DM 0.01043302 -fiat/revs sendtoaddress RTEFVKXDqAFicVt1JHxXinkEbuVkPfxjLV 0.01043999 -fiat/revs sendtoaddress RMWQWaUnuPk3MvhBLq6dEWPQrd9SpzFV1H 0.01044000 -fiat/revs sendtoaddress RUdkEWvGF5F5LDtk6Mhq8g1cJBEqu76yur 0.01045632 -fiat/revs sendtoaddress RCV5cLypyS8gfFto3CnwwG9BhRpg2bztat 0.01046000 -fiat/revs sendtoaddress RFMBbvMJeVM7wAgy53GboCUsy1D1MQBJot 0.01046802 -fiat/revs sendtoaddress RXtE6Z73YhAurhrt4s3LHAPE7pPHYXhp42 0.01048953 -fiat/revs sendtoaddress RN6M4ZUeemNve1iqk6nZs7AA9c97JidCDr 0.01049905 -fiat/revs sendtoaddress RQ94x1d4JnSySTKW3LBpcGozBtHw9m1Uxm 0.01051420 -fiat/revs sendtoaddress RW7Ui6cUsNgNQ79QNRpj8dBZy9bL9rWRJB 0.01051425 -fiat/revs sendtoaddress RP2X4aEafdYzNQhDkVdk1fDDtLLpyeNQWT 0.01051686 -fiat/revs sendtoaddress RVAW5R9ykvf8TVFMkbSqyGz1u9kX1GufCK 0.01052822 -fiat/revs sendtoaddress RBJgeFvV9KbKtiHFvjpRjhE3U3goUTg3UC 0.01053712 -fiat/revs sendtoaddress RHL3eqiPSM4odsyYEYysV8Ha25cdwKZdKr 0.01056000 -fiat/revs sendtoaddress R9XcgaaEjTV3wQUx4uxAbiFRXtu59TTmdR 0.01057602 -fiat/revs sendtoaddress RS7padSucinn8gmVoZxMBfH9JuiYt5acM7 0.01057810 -fiat/revs sendtoaddress RLmj8oxLpZgCBNCTjVVRaqsxj4Q7dDPC2W 0.01059314 -fiat/revs sendtoaddress RKTdffy1wLQfMQ9cFfJQ1sNagJF8fjcycL 0.01063390 -fiat/revs sendtoaddress RJ8xcXg5rdrwDzvmx3oXoJEx5kAnzaPghQ 0.01064000 -fiat/revs sendtoaddress RRSNq4nHzHfQCX1ssijsT7oGweWdirivGq 0.01064183 -fiat/revs sendtoaddress RAipBjtJ8WZRd8qL584NsFEJS2hRHxYMz5 0.01065014 -fiat/revs sendtoaddress RHVUiWiDS5YoC3CiTFxr1KhSTG1wcoZjPK 0.01067196 -fiat/revs sendtoaddress RXKVf44An19cTVemcpxiZY6EqDvzD1PbZx 0.01067364 -fiat/revs sendtoaddress RL687HHDiTqRHMcTbEoa9tYfGcxdLPmCnv 0.01067551 -fiat/revs sendtoaddress RCa91nr9SWGx44Uodb7tXCG9B3yzYqiGsr 0.01068804 -fiat/revs sendtoaddress RRTxmX96MkJqnxZohuM3Ce7HSvfUJ6hcre 0.01071467 -fiat/revs sendtoaddress RTxpZBsrgNr6Cq4GvRnoxVRYDoXz7mg7yr 0.01072458 -fiat/revs sendtoaddress RHFjRAk4cmrSiLLywRjZQYgZE1P6vwidjZ 0.01073519 -fiat/revs sendtoaddress RUEsddQc1BtZQUdf8tpHHQqLio45Trn8Nv 0.01075372 -fiat/revs sendtoaddress RQPGvEzLhE1kRFzGFNhc1AueEz5w46XssY 0.01078992 -fiat/revs sendtoaddress RNbiEMxDwndfBTbEAPLtdzRw4jL92DajZM 0.01080439 -fiat/revs sendtoaddress RRcTYzeRg5XPykYTdzzcxPCTAdNUC1vPuh 0.01080524 -fiat/revs sendtoaddress RWP6wdyToQK3yCPhKMosXiSiRBE54QebNp 0.01080578 -fiat/revs sendtoaddress RNptyue3iaDhe3UNYoTbwyr6xWVsL5KyXE 0.01082227 -fiat/revs sendtoaddress RUvTPLQpdd4SQJ4xPtLda46QzqvhJB9d6L 0.01083929 -fiat/revs sendtoaddress RKiz2KQsVLZ2kP8gt4LB5vHoP4vwjd8YJN 0.01085036 -fiat/revs sendtoaddress RNpXQ4ERcurLHisxkyFMrpcicfAsdxnVZC 0.01086712 -fiat/revs sendtoaddress RD5cP2cCEP7Fi1KjXYNWVxR5RBvVhCiAge 0.01088678 -fiat/revs sendtoaddress RJYdQ9g2cfBxKpUenvDC72QmrFDRNwmZnB 0.01090106 -fiat/revs sendtoaddress RCyARS3PQ9W13BA299siJgpQJzsNvHMHo8 0.01091314 -fiat/revs sendtoaddress RUhAqd4Hn85aedVAv2rBQ4tafE2htLo5Z3 0.01094903 -fiat/revs sendtoaddress RKgUeWb6JQeGVB5DxLojCfqQq42Aggxg64 0.01095503 -fiat/revs sendtoaddress RBcA1Pyr9BQk5cnEVG7xm6Ucs11YeYG5mv 0.01096661 -fiat/revs sendtoaddress RLpiUSfDcC4VvvnEQdd94Pchts4MBaBABW 0.01097300 -fiat/revs sendtoaddress RR2EsyiPbkMYuTVvt72LykKoj1y3ynWvbM 0.01097937 -fiat/revs sendtoaddress RRLVHCPmYpVFo6Bz24TKjdaV83pdeqPDNB 0.01098289 -fiat/revs sendtoaddress RFdgqCJFBhrn1UoGRPAPUfEB8MxohvHxjE 0.01098392 -fiat/revs sendtoaddress RPu7XF4VfH7n8DVMdYRRASG5J7Yi1fpxL2 0.01099413 -fiat/revs sendtoaddress RLevVUtim6wWwckvUm73UgLAu1ypcYuTHJ 0.01100000 -fiat/revs sendtoaddress RV7aV3qEXnmrzYrV1FhMVV9w5SMxt1zuse 0.01100991 -fiat/revs sendtoaddress RN2AjupTnv6F1ksdtvTnuyi38bKk6v9r9A 0.01102500 -fiat/revs sendtoaddress RLZdyfQFaiUP5MV4bFnUSp8nRiEHwz7WBy 0.01103112 -fiat/revs sendtoaddress RMWiL4KrtMZxTs3sxB1f3Uu83mxpqZERap 0.01107481 -fiat/revs sendtoaddress RTPukAQxm5LGgyFmW3iqVmbR64iGsyp8rU 0.01108511 -fiat/revs sendtoaddress RMutb7GC4SfvgWGYkopbfwchSmcEszd1Ux 0.01110000 -fiat/revs sendtoaddress RKhTK9Ugu21joCHpBsoKLBShibhbBj4vNK 0.01110933 -fiat/revs sendtoaddress RQM2Dc4s5LsxzWJJBgj9kHsko9voysLmb3 0.01111874 -fiat/revs sendtoaddress RUFhcugexBPQyFYLpstrT7xkUdLcHQBDdb 0.01114208 -fiat/revs sendtoaddress RAvSDNGyaiGicDkACQQZH9Rji5PYCApmup 0.01114402 -fiat/revs sendtoaddress RKU9xcofiRgTAJBgpPtEoDx79mQ7pW57dm 0.01114511 -fiat/revs sendtoaddress RU8XvWan4SGNWeNdtevFHoiA4uPRQ46Cv3 0.01116000 -fiat/revs sendtoaddress RP9DXTRy6hetxZ4neTrcRxGf9WTWh4f7GN 0.01117000 -fiat/revs sendtoaddress RRgxGKidYiYyj37smkJJT7Nw2JafD9LN9U 0.01118499 -fiat/revs sendtoaddress RLHjkcHyN9Xb2fbWZ4XtFhGDPcCGceXPaS 0.01120041 -fiat/revs sendtoaddress RCq52TQ5D3cYfL436oSrD8pTxio8mx1pBQ 0.01122292 -fiat/revs sendtoaddress RKBiQsfpcSSYwkKr4wjikQTYHJUBCnK35n 0.01123674 -fiat/revs sendtoaddress RW6L6CMWFgRLggN8hq7BWATFTpb451u2JK 0.01125000 -fiat/revs sendtoaddress RTGjn4oDZG2C9A5p6VfcMr5fSWZ4NdDJtL 0.01125458 -fiat/revs sendtoaddress RMKC1c5VjVUeTG2kgk4AP6Bt54z9ixdri8 0.01126299 -fiat/revs sendtoaddress REAKHonuUMxJmiHCqFQz6wA4wAGfwcfE2e 0.01128353 -fiat/revs sendtoaddress RLnunKg1CbXcTkuMhTCDURTzaSHYWQt8S5 0.01128865 -fiat/revs sendtoaddress RBW7JeDHC4xRWd4RLgPJZRuBRr8xGMkxdy 0.01129421 -fiat/revs sendtoaddress RV3k8FA8szypko6kPWPxMCHt37GetKtoLh 0.01130226 -fiat/revs sendtoaddress RDwgSNYmWqJPZKTQjsGi4J3YaphzGV5DrT 0.01134000 -fiat/revs sendtoaddress RBGz1sZr1WnBHrJdxLLxX4YMHWKjTpC2oC 0.01134100 -fiat/revs sendtoaddress RSMtCg2BMnRLVvRjeD8THkh1cmZAPhEZMt 0.01134186 -fiat/revs sendtoaddress RJ8ESHR2F9MqYY5DCNBZu6f74VfdTEkpgq 0.01136033 -fiat/revs sendtoaddress RW6hqX7ZJYfYmfnaKNFDuckxwcTid4xX4i 0.01136429 -fiat/revs sendtoaddress RYZgAYeBYnfMe3uNJBbENmdYL7mXEqesmP 0.01137001 -fiat/revs sendtoaddress RWiLGV7FCTUnjDp7p7gUozRKC8yAZGn8Ps 0.01138500 -fiat/revs sendtoaddress RPycRddbZKbQCyzvd4zM3EYEtfmht5bZ87 0.01141852 -fiat/revs sendtoaddress RRDrwmsUy48nUByV8JgJzndV7M7TMWn5S1 0.01143001 -fiat/revs sendtoaddress RFMzMkBCwjMo2YctGUxaqDYgjhv3p6ygUw 0.01143832 -fiat/revs sendtoaddress RFX6KeXSZ8ayui7HJAn4ZF5eYUsEYJ55VS 0.01145956 -fiat/revs sendtoaddress RCcNNPX37MkfKEWPdfgKtgJK7SGdDmSWkK 0.01146801 -fiat/revs sendtoaddress RXhzjGfvjoP9ceEdP1qybXxZaRA5tzR88A 0.01147501 -fiat/revs sendtoaddress RBqSrZGY1RBYGwpqG25fGw8AwZSBD74c2J 0.01147502 -fiat/revs sendtoaddress RXn3NeBAxPTCrQawAuZMjEEfyDu2i3wrjS 0.01147930 -fiat/revs sendtoaddress RQwJDXvtF2hpk444GjTfDPPw7fzxNTW9ZU 0.01149707 -fiat/revs sendtoaddress RVy7oPEWXnV9A4djxKQnBxzwPRn9vURcyi 0.01153748 -fiat/revs sendtoaddress RQdi66NKE3XQMDBHA4LYuak4gKesfo7Yez 0.01156501 -fiat/revs sendtoaddress RAia96ndimjuptAidvhqVMSudVxQgeaDQF 0.01157846 -fiat/revs sendtoaddress RPLKoXydFh3uMsouJM6qpVDbEUmV9ZENbu 0.01158020 -fiat/revs sendtoaddress RU83Y6n43XJ52VDWU5BaFmScAng7vv5YfB 0.01165502 -fiat/revs sendtoaddress RFmxsTB1QrPWAbfLZd8MRZt49ECK1CbDn7 0.01165515 -fiat/revs sendtoaddress RE9w3Kt51VWeud4YU1GH7VWLxXjwwjG3Ey 0.01167948 -fiat/revs sendtoaddress RCPEYofGbQjZK2ZXgAaH88jjrEDwXGEXb4 0.01170000 -fiat/revs sendtoaddress RJmuyc69L6dF9YZxce6Re6kPysSGsQGYGV 0.01170793 -fiat/revs sendtoaddress RCLy39aXP7HY9rBJjog8HhuhaRzRUVHGAL 0.01171871 -fiat/revs sendtoaddress RHS6z3o4r1mNjMfaxqmpHBJPkFrk5bq9TN 0.01173629 -fiat/revs sendtoaddress RXLBPQhHa1L2wN5U3Z1NEdoBpZjCtofvUE 0.01174771 -fiat/revs sendtoaddress RRtTQeuZYVk5byDjcVggXZu8akg9gVKa9B 0.01175626 -fiat/revs sendtoaddress RL1gmjmBgg2oP19DzZg4J4X6n4hoAWCuQp 0.01176126 -fiat/revs sendtoaddress RLPuVYfShzvjDWUJamZePLprQEGsoiL5wY 0.01177498 -fiat/revs sendtoaddress RKUvKLxQmtjGmYZgX6zUSB6HeWidFkismE 0.01178803 -fiat/revs sendtoaddress RV3hxHZbBSbLj5yYM7ehXDUCzKdFzNyzrB 0.01184000 -fiat/revs sendtoaddress RBK3MmGqRrguZggnXSvKbh8GdPJkqoGj3L 0.01188630 -fiat/revs sendtoaddress RFc3yja7kzcdPhVzQDWzanEKmz5qqx6Vqg 0.01190000 -fiat/revs sendtoaddress RD2uMrC7oNiXiXcnTWSkHbT6JVG4DrsxqC 0.01193587 -fiat/revs sendtoaddress RACwkWzev2zCoWgb2y1mAGNqWQe6TfbVYe 0.01194626 -fiat/revs sendtoaddress RVdu8pL8u3eGafRt8hXqkzR9UJfGivg1eB 0.01195092 -fiat/revs sendtoaddress RGxtEJ6yoGirGQxCBNk7BgPLAFsPoow3xR 0.01196799 -fiat/revs sendtoaddress RA94kpQjMq9fTh9egFirKcUehofXawNdRg 0.01200000 -fiat/revs sendtoaddress RUyFUkM5xmCpLmivktpYWR48EWki7oWKtJ 0.01202618 -fiat/revs sendtoaddress RUD77ARNfWLrU3yWftCZJ58sHpGkpYP8Ca 0.01203257 -fiat/revs sendtoaddress RXmFevixwxERHexyHvhQoXMxqykuCTyAnX 0.01206002 -fiat/revs sendtoaddress RN6gvgB2gJ8YsJ3QpAf2SXaBt8454YEtL5 0.01214476 -fiat/revs sendtoaddress RVaTGWcnmgAdX5ffC2TM8ZdjM1JHDE82Fs 0.01215002 -fiat/revs sendtoaddress RVCWpcqtjoYcKFpvcysZcCanxenCRaDE9Q 0.01217199 -fiat/revs sendtoaddress RMShV9EtLL2zzwCSgEJ5necR6R28ddn97a 0.01217245 -fiat/revs sendtoaddress RSMTYhjkhXYKSHQs5ScKyJWsJx3LoFcXNQ 0.01220000 -fiat/revs sendtoaddress RVvRns6cWeSE4jBnmBmQEXP44rWMRC4i51 0.01221444 -fiat/revs sendtoaddress RLfJRxi7vTUfvHVX1PomzyDKvYHGbF2Miw 0.01222919 -fiat/revs sendtoaddress RJgTVQRcytNNTUD3yabng5D6PXjkZ2BJpN 0.01223510 -fiat/revs sendtoaddress RW8jJyWjw4WnEZQXrrPKjidSULKhqECMz7 0.01227144 -fiat/revs sendtoaddress RETX681SncnSy7TNcb9He56NYuNBsrEJz8 0.01228747 -fiat/revs sendtoaddress RL5gfWHzZETSp95Q5VBoSxuQsvTiiFH8fX 0.01228948 -fiat/revs sendtoaddress RFaPRE2i7qSArKR3HVKCtn4o6GoJKFep98 0.01230667 -fiat/revs sendtoaddress RTEVv465rEmtdS934ZkiYGPbWspnGnU4y1 0.01240597 -fiat/revs sendtoaddress RFuGWjthZadaFEx3BfvocWk4z46UeLx1zy 0.01256000 -fiat/revs sendtoaddress RBnLj68n9anzKP2kLmS38828S5Qe6vtWGX 0.01260400 -fiat/revs sendtoaddress RBvrgs5vnuHFWj8F1uWtRP64ZtsQvBB9pS 0.01263357 -fiat/revs sendtoaddress RUqxwRuySGZuEy4vAXa73PofkuYNnW35ey 0.01263367 -fiat/revs sendtoaddress RVHYeSYW3aKmCrfsxdaef8fTMSBJy5E4fo 0.01264597 -fiat/revs sendtoaddress RAjM3t3LVZXoegaaM84471sBFWR29iMdJP 0.01265120 -fiat/revs sendtoaddress RKfgkmtG3WThbyNYi9wyV4fEpaibn5myhM 0.01270461 -fiat/revs sendtoaddress R9U9E8WZNjUvzdDXq3GCKRucNhfXN9vyU3 0.01271865 -fiat/revs sendtoaddress RPJjuaEAJM65VY9yfgPyWSsCXVUG2TXA1a 0.01275482 -fiat/revs sendtoaddress RH1iH66rNZZ5Hdq9uz3H2RvB9pyMpvaDbc 0.01277025 -fiat/revs sendtoaddress RQ4pp7Vsdxip2gtCp8eZpoHrSuyCmgFbwB 0.01280016 -fiat/revs sendtoaddress RJgeQbS731XZvFXrpBUQJ2oi4z48HpRKfz 0.01290000 -fiat/revs sendtoaddress RDjqaqeZoduHJxxXhVdvSciDxuMZGK79po 0.01294623 -fiat/revs sendtoaddress RXpH47dXawMfxz6ZHi7mW1oenmJi5e5sBw 0.01294645 -fiat/revs sendtoaddress RUviYgLt123noVvYF8zn5u3A77juLHxt59 0.01295000 -fiat/revs sendtoaddress RWbPBsuP8XtQ4gpftFZ9S35YZeqUYy4y75 0.01297670 -fiat/revs sendtoaddress RCcVAuTce7EGqxKQnH6okCF6oG1GYNzzRs 0.01300000 -fiat/revs sendtoaddress RRTbZ7anusn2v9qBXJdpRWLW9ph8xsMK7w 0.01306073 -fiat/revs sendtoaddress RCwwaUYuarCajH7oWADfWrMLBU17h2NU6F 0.01306886 -fiat/revs sendtoaddress RLsNHt8913WcLiQA1zYKbLpGFvhryNq6p4 0.01311000 -fiat/revs sendtoaddress RBDR3aXi2WNEbUzcizYQBCU8FtDPT1hd42 0.01314503 -fiat/revs sendtoaddress RPn7XYUcHAfznZtF6ixsw42oJx2RtQe2wD 0.01318951 -fiat/revs sendtoaddress RXxdWR8JcXRq9hb7ZLsRgvuicQ98CRbMHY 0.01325581 -fiat/revs sendtoaddress RDXC6KZFdYJhUgy2mxzY3Donngoo8yCnwR 0.01326000 -fiat/revs sendtoaddress RAekg6sR34dKBPNThSJ6DuUXgiYzWdzDST 0.01329528 -fiat/revs sendtoaddress RH8xtpXH2yuqPb3zgkwjGNAYU4BxPh4pAd 0.01331500 -fiat/revs sendtoaddress RFzuTAH8EaQJgt74AtPvMjgwQYSJLbDVNa 0.01331922 -fiat/revs sendtoaddress RRGt3rwAQ1ZoHqCmnKXyXUyYs83dzzGboj 0.01339345 -fiat/revs sendtoaddress RS7KA3GMTUKsPgNGAzx4NrbBJ2FBW57GcZ 0.01342617 -fiat/revs sendtoaddress RWYuLqKz3RXFgfiLG2UxX28cZ2fGe2sDoX 0.01346092 -fiat/revs sendtoaddress R9RczVxVXrLBHhYeCYymWzfJxvoRa3aDn4 0.01350000 -fiat/revs sendtoaddress R9XnMWSLkCV4G6D4p5phJmqW8zw9EJ5hW3 0.01362348 -fiat/revs sendtoaddress RRQkfRaXR4Th5hvrRaX9sPCRsLs2ebVj5i 0.01364520 -fiat/revs sendtoaddress RBuwLXxsXSF4hPYpkiQBJUpqNcDo473Yxf 0.01364568 -fiat/revs sendtoaddress R9b3rgiHpUUxnbV48gbbZQMffzFbLmLq8G 0.01366394 -fiat/revs sendtoaddress RWfn2V5rVpB7mxMygVo7CGPSngHiRzMFbs 0.01368420 -fiat/revs sendtoaddress RWtDHU3jLJpXZi1HVxKpUsZywX4mgsPrKm 0.01371713 -fiat/revs sendtoaddress bXfN7xkRtwx3XcGHyDbTXWx74BdWoUktJ1 0.01372253 -fiat/revs sendtoaddress RNKwG4PYQjr9W8CQd7DF6uBSkDKwgzz9RD 0.01374000 -fiat/revs sendtoaddress RSjtDUyNHYT7DYzjPSGSx7r6zyEJXGhnFL 0.01376281 -fiat/revs sendtoaddress RQFnEY9EeLobM3YYdUt5KjqAvFQBhchhzt 0.01377917 -fiat/revs sendtoaddress RL2XSfVaYkipZtv29Tc7n935F5RK7iAinr 0.01379041 -fiat/revs sendtoaddress RBBmbnvyyeUxss1uM2VMpqGtmAJaC9xg8b 0.01381675 -fiat/revs sendtoaddress RJ6DNwC8YgZT3PMDN24SAr8VRXjnJP1Few 0.01382000 -fiat/revs sendtoaddress RHyM3KR5fpbyA1wy7prjN1WBedBQRiUY2p 0.01388868 -fiat/revs sendtoaddress RMdZv8chTGGT15uZmLTxJJ2UWcxLqkJdf6 0.01393496 -fiat/revs sendtoaddress RC7etseYqoWg2JTVdmqTEXVRibSxuPKoLo 0.01395985 -fiat/revs sendtoaddress RHKXkyyKTKcQg5q2NFkp7nXQLmjKt3CUeP 0.01397416 -fiat/revs sendtoaddress RQQMj37DYBajnh7jRnCeJnFM749WiTvgcR 0.01400000 -fiat/revs sendtoaddress REEvfxwdDbjeSY4o2mM8jc1YYuxQgCMgNM 0.01403481 -fiat/revs sendtoaddress RWqUMjWroTQmMvTpJyziBaa6ZvL7TUGyZ5 0.01403710 -fiat/revs sendtoaddress RAxcBzADdyaY2aUJCxDtUHZv1WT7prP9sm 0.01404235 -fiat/revs sendtoaddress R9g4tBNBAthAQ6YmqyVoVULdUGJ8GRLgie 0.01407076 -fiat/revs sendtoaddress RPLqmpMjiMUuXaevk8Utio6bCbRkayZyHt 0.01408249 -fiat/revs sendtoaddress RQkEnZu7zeABt3u37Y5ghNMesA7JfGt4SE 0.01420500 -fiat/revs sendtoaddress RQ7P4BstQdtJn5CJ2PCZet1tuTbKd3gN7Z 0.01423420 -fiat/revs sendtoaddress RB1PDd7tdY2uhnj5ZMe3SeEWn1H4udVncZ 0.01428958 -fiat/revs sendtoaddress RTZj1bo69ZYM6LUcTRKZ67QyC82QJMbxHE 0.01431084 -fiat/revs sendtoaddress RJMnrDdSanaMMKuDHnVP29FoP3Np6tiGVb 0.01432640 -fiat/revs sendtoaddress RSDz7iHQXZedd6G1CrnqBXfg9W6VhHgEQe 0.01439928 -fiat/revs sendtoaddress RENhGeVN9teophMPpCZHtxzz4kFfPVP3Qg 0.01448451 -fiat/revs sendtoaddress RQGF53tgMdy92ywoJiQdW5V7QcyynnfocB 0.01456501 -fiat/revs sendtoaddress RPwGzya6GVnsAhCoJQndpc5BjkSNhqKPJj 0.01458287 -fiat/revs sendtoaddress RJaxRdovmztyWU5Yw7K9wvdBpVnDJTHrpp 0.01459142 -fiat/revs sendtoaddress RBhJKVtyAYayBsG1B7TmyrGZYEd6B39ow6 0.01463100 -fiat/revs sendtoaddress RDVA8Jxg4d2hu9AHV6Zpm22HVLT6K2h2Co 0.01463307 -fiat/revs sendtoaddress RAdPmw54B8JurSPx5Lv1VHc7iaUsTqoXM3 0.01466000 -fiat/revs sendtoaddress RR7JzXuz43E4WsBAV5vjySquvyGnyE2VJU 0.01470000 -fiat/revs sendtoaddress RYA4akKxpzygJExyy5xQ1i2QSddVXDHCAD 0.01473457 -fiat/revs sendtoaddress RAujzY1mExvHY4tsaGGSEebS45MxuaXjtc 0.01474586 -fiat/revs sendtoaddress RFPufXDnWuacGDZgNiAx98uspvPWan8NQi 0.01475282 -fiat/revs sendtoaddress RWHT1ivY84KHgS1P1SMvXjkJK32mgPHNwc 0.01477020 -fiat/revs sendtoaddress RJ12J7tmDnzMA1Z2NskkxrXv4iHPJky7q6 0.01477422 -fiat/revs sendtoaddress RDX6JQDhyn1gthF9rRPPrt4DAiaCNH2tRQ 0.01479481 -fiat/revs sendtoaddress RMMPJWqUCqF8rJhA3t6SACNtJRjFmebvTb 0.01483857 -fiat/revs sendtoaddress RDWAk6zkjgW6eR6JGdz2pUEYcEdyPVPNWT 0.01488162 -fiat/revs sendtoaddress RUhEteEoa3R8QMxYrzjLTSSVv2buBnNFxr 0.01490618 -fiat/revs sendtoaddress RJ6ySmudFnEuVZiBALBJtdTRUfrvV4FQ7t 0.01491627 -fiat/revs sendtoaddress RDJwabcnFbpo1P3jZnhCJwdPF85ybn4j77 0.01496000 -fiat/revs sendtoaddress bbQSJudmo13vUkLd8LuADf1R3cXy4VJKEV 0.01498259 -fiat/revs sendtoaddress RSGrxYezWyyFQNXDiRbJMCJ9sEnLmNVnHx 0.01508801 -fiat/revs sendtoaddress RKwjzxLeG2z811AFLQH785CxyWnRm4268a 0.01510411 -fiat/revs sendtoaddress RJCXNvQrVvuwUCvUS5HnM89T9wAEf8Yeez 0.01515673 -fiat/revs sendtoaddress RJAiuqXMgBCpnvaDyrchZD8yMRunTNCEaV 0.01518587 -fiat/revs sendtoaddress R9tWuunPiM3yftGazN1n4Xx4CaqdKEbo7t 0.01520641 -fiat/revs sendtoaddress RS27wLUeWyi94z3fMenSRWayiPKypsUgJj 0.01527137 -fiat/revs sendtoaddress RLoZ9CVuagNP8uznfDN9vGc5Fkv7NwJJpo 0.01527541 -fiat/revs sendtoaddress RKBpAw4HxbJ4sMHKjupXbJts5xDfbjgwGT 0.01530000 -fiat/revs sendtoaddress RWr1rNsYH4LjdFmJYFbR9NtYjPoE1r4oPE 0.01534000 -fiat/revs sendtoaddress RUi2SDgk8z2w5yxzCHEsfKwa77HXaQEDC1 0.01536410 -fiat/revs sendtoaddress RMug8fvgxacqQvaLyk8KR6KqBTAmrh5RYK 0.01536662 -fiat/revs sendtoaddress RR3xDZYUACDjhVWNCH3KfSUF94CAS6Fn6C 0.01537141 -fiat/revs sendtoaddress RPiLizCXvoYzAVY31mXhuHPf2v2JE4vUda 0.01540000 -fiat/revs sendtoaddress RTJu9pAPZnFKB1eNwVHznw2P1ZsGLR3mLW 0.01544426 -fiat/revs sendtoaddress RN523fr8VtqNL1hnPe1TdAR1tWpfjnNXNC 0.01546001 -fiat/revs sendtoaddress RXWy8dWUS8YxHjEUz6FTk2Hfe26joZj72E 0.01546447 -fiat/revs sendtoaddress RTqSHYaFJqfpcBcMSoU41qe8nxUBUywq1b 0.01547139 -fiat/revs sendtoaddress RJvpvfEjZ91vnAf1uhejqZyY2fF64TEqFd 0.01550043 -fiat/revs sendtoaddress RVhD4uPmZpDXNJB84Tyi2Tqa49gsvVwiMq 0.01550366 -fiat/revs sendtoaddress bU1qFKUDU7badk4PzqY7SqYGiP6yDVMzQZ 0.01552233 -fiat/revs sendtoaddress RC9GH3eNzVc1BpdYQD2k29hUF91xm2sZME 0.01556845 -fiat/revs sendtoaddress RLQxx5feZWkSFrGLyYYCp9tjh8bs1E9bJu 0.01557126 -fiat/revs sendtoaddress RFCuKb7EBWCmktv3Cz17wJTq7yi2afhF1F 0.01557450 -fiat/revs sendtoaddress RFzwtEjbKjSjXeUojJAcaMNPU6fh25iyQq 0.01559155 -fiat/revs sendtoaddress RPXGU8obqkNuGC3Uynf4aiEjc1oUAHXcqh 0.01564342 -fiat/revs sendtoaddress REr8gpgb27WrahGaRkBXrdXM7fqriVWv6L 0.01569100 -fiat/revs sendtoaddress RE8w7Hrtv7gr351TpGSAX9EHp4PRGEd3MZ 0.01576481 -fiat/revs sendtoaddress RRL3WWBGLHBFXoJY28iUc37BmNRGkfBSWU 0.01576883 -fiat/revs sendtoaddress RUGLBGGYivqnY3T8Tv7CVXfXRLNC4G3Ak5 0.01596119 -fiat/revs sendtoaddress RUfX4PxH3JVMY3G5WsoDrDee3vnfNRo1Wr 0.01596900 -fiat/revs sendtoaddress RAhMtmRUdqB6RoyjqmAsjrvaxJ3oCv74Sk 0.01597000 -fiat/revs sendtoaddress RE2T5GNjrDuV9WJL1XWqg6h8TtKS8PAqHr 0.01597327 -fiat/revs sendtoaddress RWUYiSWatJsXLTTnyanhUdX5HD536S1uP3 0.01598567 -fiat/revs sendtoaddress REcRMoBJLme2D87TGjzzE1b9LWFvtGSZZE 0.01599361 -fiat/revs sendtoaddress RUPPAsdJAUPe6qrt8rMtAPxRE6MDQVZXNv 0.01603999 -fiat/revs sendtoaddress RA8hbr9gDMG4eMTiUVD6RQKwBEc8nhFod6 0.01604519 -fiat/revs sendtoaddress RWmBbws8rhGtc8frghCcbZsZx6eevH498f 0.01619287 -fiat/revs sendtoaddress RHecLfna451jFKouyfJdgV14hd6RqfLBZ3 0.01621450 -fiat/revs sendtoaddress RY776kDDYPoqNdNbnaYA2MEG5iJAwik4DV 0.01624000 -fiat/revs sendtoaddress RLkw1P5w6o1ZBowghb2bELJu3qgiDbQbeW 0.01624590 -fiat/revs sendtoaddress R9fteCzpvinEY173RWKNWRksCTboozwfQ2 0.01627877 -fiat/revs sendtoaddress RV8odtnYb2YbDYJ7vAdes2acD6zTaecgNv 0.01629293 -fiat/revs sendtoaddress RXswHDbFge6kEFq9xm6Qgf69SxmuiU64e7 0.01633669 -fiat/revs sendtoaddress RF3XqrGLKMjboGvDXHcropVLCoURKDNgaM 0.01639459 -fiat/revs sendtoaddress RHNPEhpTo4Y6Z41BiDKFWQzAxVKP6FrLsq 0.01646727 -fiat/revs sendtoaddress RYSy4ePTnGYEFk6aWPRXw6aw2uubWLJMmR 0.01656767 -fiat/revs sendtoaddress R9sBjbA2trrxJHnKWvewqb9fscG9s3EtuE 0.01659514 -fiat/revs sendtoaddress RNwGHkYrd12zUoMnkUzpo494CzKFZsN6cd 0.01662773 -fiat/revs sendtoaddress RNqmxf5LNDVQjnqb7aKwwYcnnSo5ShqVzB 0.01666647 -fiat/revs sendtoaddress RVM5CyXsqjyGfEDmuv2WCg3iFLy34mSFwE 0.01668000 -fiat/revs sendtoaddress RA4mQUSyXDSD5KdrMshrvRnndzG31uGyJw 0.01671948 -fiat/revs sendtoaddress RWPSnLnXWoxgXeY8rjxUDiydygoMiS7D1C 0.01676797 -fiat/revs sendtoaddress RN4F2uhUUB5K2RdN3N3YaeWTwuaL8TDdXZ 0.01678000 -fiat/revs sendtoaddress RAs2gUfoJzLZJ3a1yxAxD3smrBqJAJRrSA 0.01688044 -fiat/revs sendtoaddress RC5WAsaeD8CrtTYXFjEX92zcL2wqshRBsQ 0.01688461 -fiat/revs sendtoaddress RMdvw6diWh9gAihBZixLccboS4bWDPEFbv 0.01700000 -fiat/revs sendtoaddress RXDWzYDLaC1DQgEja9GFKbz4gnGM7hmXNf 0.01707236 -fiat/revs sendtoaddress RHjDCoV3QRnHwfJxHZeuPKjjV7RjYXqxLY 0.01708070 -fiat/revs sendtoaddress RVpFSgsPaSqKsHBaEmyeLtezPCnZA3dpBp 0.01708742 -fiat/revs sendtoaddress RThtXup6Zo7LZAi8kRWgjAyi1s4u6U9Cpf 0.01710000 -fiat/revs sendtoaddress RPAt4zA9cTdvLaHy9Kmk1U8FD1sHCKQqxi 0.01714027 -fiat/revs sendtoaddress RTWdKZrkuUk3d7XRBcdm1zG4pDPyj89zc1 0.01723543 -fiat/revs sendtoaddress RSH3noPfhfGWAbL2rjeYt8ctzUF6ASVtZR 0.01723959 -fiat/revs sendtoaddress RNcrEmwYK6xSYQnr1rFMvAkpo6cXUdjoUx 0.01735430 -fiat/revs sendtoaddress RXTHPMprrVyxQ7HygtDsHq9BoJ12fXeXj9 0.01739999 -fiat/revs sendtoaddress RUHNretW7J7iCdMrTqQhCB92FTYG9yRPUf 0.01741380 -fiat/revs sendtoaddress RXPHsvb8jsYmD5v2Yj5DG7MmwjaQZJzMK3 0.01747963 -fiat/revs sendtoaddress RSuHCjEdvLDe9NUkVguKRNKmVzgJQPzdCa 0.01752618 -fiat/revs sendtoaddress RPyarR1kxXPAnwzrwvJajtjqXpotxSTWVU 0.01756267 -fiat/revs sendtoaddress RDZP4HpmWQw4dN3SPsH7Z5QmBuJWw1N1XM 0.01759503 -fiat/revs sendtoaddress RY8sWADq6mfd2b2ii92zdnEjtZGQgidFT2 0.01761406 -fiat/revs sendtoaddress RFYj3MEqWt67LWsqtV3eXJ8RpzkfM5fwZ8 0.01765097 -fiat/revs sendtoaddress RNRkSQuCZC4jwY5Y9sqA8UhnRZqBimC5Ez 0.01768000 -fiat/revs sendtoaddress RE1j15yqcWX6NZJ5n25v7tEYGehNJXDnza 0.01771462 -fiat/revs sendtoaddress RWqxwkPUKucvLwdRPoGJYYFDE4nra1hBjV 0.01774742 -fiat/revs sendtoaddress RSH2eEuZTYE2jk14hk7H6KGkA1DzMFVvSA 0.01775985 -fiat/revs sendtoaddress RKNBHzGuSXaiKy9U3hrxXZvuvLgPTxSXh8 0.01779522 -fiat/revs sendtoaddress RQLeXkbykDtoVJYLxsEwkHwheiQYs2gjbZ 0.01780000 -fiat/revs sendtoaddress RN4CF2JEpSLL6gLfS2KAEFAMmaHitsqYbJ 0.01782567 -fiat/revs sendtoaddress RNjNTBoJ8XUPSgpxa4UXXV53fowLJ7unZK 0.01787844 -fiat/revs sendtoaddress RAJ2LcBi7nBkoDqc4hKg59dke5EmNtTpe8 0.01798437 -fiat/revs sendtoaddress RN3KYdWJKoH9EfvbXA8YHC6XJqvfBrqCff 0.01800000 -fiat/revs sendtoaddress RKegatsNVgYXzA9JfMNcEXQBoFdBPza4M6 0.01802970 -fiat/revs sendtoaddress RJLNPVgWkY7LcYJXmww491MxuzDtQ2ZoGQ 0.01804923 -fiat/revs sendtoaddress RFX1SMnDzZDX16k91wDJGn2bNceHwDVjTo 0.01805681 -fiat/revs sendtoaddress RDa1aTWwT63XNFNipvv9MQ3X9DB2GUkpm7 0.01812000 -fiat/revs sendtoaddress RUvegHVrZg6QZWWqFeDaEdGdnSXMtNpr4V 0.01814227 -fiat/revs sendtoaddress RRfpAMy44dYRNsABm7K7p8XLWP2GK8zWKZ 0.01822763 -fiat/revs sendtoaddress RDBE77kJEkTXJfWgNpKgxDhZrjmisvVucW 0.01828000 -fiat/revs sendtoaddress RSaekb96ocrh3VPbw3PSaPuAWCUFupe6s5 0.01841933 -fiat/revs sendtoaddress RWjwsaGt5qzk9ecg5GTGQNejXutAy2jkVB 0.01844466 -fiat/revs sendtoaddress RRM8G8rZLrkXKVXQgf28p741AMeVX6JKm8 0.01858002 -fiat/revs sendtoaddress RABXMD4MwK5qoMKBG7ucCD9qAmaUencXKU 0.01860922 -fiat/revs sendtoaddress RYEY3TAco46qiHWvMUb6V3CTFiWd1vzRV5 0.01863221 -fiat/revs sendtoaddress RXFdqo3sakuXZmhT51bkhNzuwLyjHfCtdz 0.01877352 -fiat/revs sendtoaddress RGPxheWfyPE7BQxh6yeMVrfWPxA4P3TT1B 0.01877617 -fiat/revs sendtoaddress RXFkRS7bmVpkmDERLwpJhohFop2A2EyfJi 0.01888161 -fiat/revs sendtoaddress RD5qe15zJLeNr96Mnvg2kXxmQTS255kii6 0.01889746 -fiat/revs sendtoaddress RYKnkfraC6jsHGx3YYPKXF45boMaaD6nKh 0.01889997 -fiat/revs sendtoaddress RHYx6wSc7NwicjfmQmXzvNYNysNz2GH4PG 0.01893132 -fiat/revs sendtoaddress RKfVd7bkrZywqYSrCkFAsDL93STsSHp4n7 0.01896952 -fiat/revs sendtoaddress RRjxMiyAEio8FJ4UcpxTw71RNAAvkiHucc 0.01899886 -fiat/revs sendtoaddress RPAo5pL3StkDqsrrduwstwk459gWXbQiGk 0.01900000 -fiat/revs sendtoaddress RWW7uGHaLPKXX86oWGJwceUNAH9dPhgcVC 0.01905123 -fiat/revs sendtoaddress RCkHRXGXkpMfM9zQSYnRWSL4W6u6RgWWao 0.01908137 -fiat/revs sendtoaddress RBbmDxSjwiFurSzHTBiVoJe4YCWA6WaE4V 0.01912973 -fiat/revs sendtoaddress RWZ1v2v49sXpNLUzsC9zJFRx4TRnGapCLd 0.01919093 -fiat/revs sendtoaddress RJNtgPdHhBdJe5HzzykviMaRvaiMQNDKqW 0.01922458 -fiat/revs sendtoaddress RFHpPDF1C4qt9XutXE9K5mt4vX8wy66wrq 0.01923485 -fiat/revs sendtoaddress RARyf1b53u77BjUwRWF8nqVgtJPRF2n5LC 0.01929000 -fiat/revs sendtoaddress RK25MAt5ZURbnvLjZF4hwQ1Gd1EcBrpbXN 0.01930870 -fiat/revs sendtoaddress RBjefAaa6bguZ1zGKg5kzsp4yPpvk3PjVU 0.01931556 -fiat/revs sendtoaddress RKP9UxXfLgd34MpD6fisCw8KhN2ZJZjaQW 0.01938136 -fiat/revs sendtoaddress RHmJN36VwkzpHpuSY3bi1MuaiKXTWbHywK 0.01941812 -fiat/revs sendtoaddress RL7EYcySiYF8wimPdzjzk3CW6eNG9BHLnn 0.01948563 -fiat/revs sendtoaddress RJN9pmCYug1zJ4RhcvrxdCnBJXiEZUYQ8p 0.01950000 -fiat/revs sendtoaddress RWHwUDjxVtBmjXuJv8L9M8iTnDajw1CBW6 0.01953720 -fiat/revs sendtoaddress RUkK4bTf2mgATHTJbv1DtFd8vqt5GFsPC3 0.01958500 -fiat/revs sendtoaddress RFdQ6EcTnTDzpMiEJdPyPZvwy6YxsxKFtb 0.01966294 -fiat/revs sendtoaddress RRQ1J19fd6PGN4exfp2ewu1WE4ErsPDJBL 0.01974695 -fiat/revs sendtoaddress RUH8XSRynyvpm6CnHevUJCxgBud5cP9Qry 0.01977214 -fiat/revs sendtoaddress RAai85Z2WPZDpQATnBYM3zK318wqwzq9RA 0.01987471 -fiat/revs sendtoaddress RAHgZpkgZGVK2FXn8xYwx5CLhbHxpD4ijQ 0.01990000 -fiat/revs sendtoaddress RMzGJz9DuiBKq22zFWWfkkfp9ywa7BFVk6 0.01996917 -fiat/revs sendtoaddress RTVQxJ5fz7BdQdMHYcPgjWe3HBAoPm5zwJ 0.01998584 -fiat/revs sendtoaddress RP48XCUDL56NvH2XdkqaJK6NnUTCwRKV9P 0.02000000 -fiat/revs sendtoaddress RQoQjid2zytDSkuKT8NiRW3MAn6ez4AEjs 0.02001559 -fiat/revs sendtoaddress RMc3T1o7Xou24A3bexWVcvp1RYnQY5LKw8 0.02002734 -fiat/revs sendtoaddress RMkpZBw8W6R5ag1tU4TzKtBuQGsXsFBgFQ 0.02003999 -fiat/revs sendtoaddress RWHFjmEHb5wgN6oTs5H7mG2HrBvvgeF2Nk 0.02007300 -fiat/revs sendtoaddress RGQwBHuU4qPbmc8Dx8e7zRPR1ZaipzBfrV 0.02008086 -fiat/revs sendtoaddress RM3p3CcenRPN64qFS45nBtLZKFjroQMuAE 0.02012556 -fiat/revs sendtoaddress RHpmwtFAqE3PV4rwAGkAGA2f1jXHdgp2Mu 0.02016180 -fiat/revs sendtoaddress RLJVUkCaXVAXmqBphY8NYxTjzzJLyka6qh 0.02017938 -fiat/revs sendtoaddress RXEXdffiFvtWAHCbTzQo4dGcMGiP6phPsP 0.02019672 -fiat/revs sendtoaddress RU2jbH3tANmNFdw573drwgius4AKGJSpf7 0.02025456 -fiat/revs sendtoaddress RLU1mYr2GbqKJnaxLRhfe589bMJDWKAski 0.02032438 -fiat/revs sendtoaddress RFmYxF7PVcHRtEihqbj7L9hLSaC9S38JpK 0.02032613 -fiat/revs sendtoaddress RGvizu2o5icNfYB5aBZtKHQXs9ovnRfDJ7 0.02035922 -fiat/revs sendtoaddress RMDpkp1VFCAb3mHk6HBBbtqQZyvmFAimR3 0.02059974 -fiat/revs sendtoaddress RJe3PrH3MecgSbFSMHh7tVg383e3ZvDYXD 0.02065666 -fiat/revs sendtoaddress RBgnkkTuTRT7sps8mhvBMZHABGfewXY4xZ 0.02067750 -fiat/revs sendtoaddress RXqZyVW3QV9T8nkCMKyMAkxt42EDCZY75k 0.02079487 -fiat/revs sendtoaddress RLfKfrMWLS6JmaM7bGN62m3gWKdEqHN5D5 0.02080540 -fiat/revs sendtoaddress RMvG16BgELkWjfJ3AqMLqxRZVCerHZDBAv 0.02085500 -fiat/revs sendtoaddress RAR7EyrNEwHk7ADjJkUw8o3unEDWveoVhj 0.02086714 -fiat/revs sendtoaddress RCGTwenHSz1NcYip5QSYYk2XGo4gFBg2RJ 0.02102381 -fiat/revs sendtoaddress REoW7ERZAZeNEbJtZ6XkMVJDbA2cnDA1W5 0.02103611 -fiat/revs sendtoaddress RX13bGcLcUB5FVvYaF6UL3vBsyBREmAeai 0.02116364 -fiat/revs sendtoaddress RY3wGFuMGozkg3UmjDzQybLRKEYohyEhNQ 0.02118000 -fiat/revs sendtoaddress RJwx5yTpitRXMEDnFeBfEzq6NpZ9HAViW1 0.02120254 -fiat/revs sendtoaddress RM46hJu23Y4ZYbhETqKW918E9DxZ6NByUv 0.02125657 -fiat/revs sendtoaddress RJ15Mk4bTNRhGvAHXEzfLQwV2AwNwTxH1x 0.02145669 -fiat/revs sendtoaddress RKMHDHj1QjxFj5NdRd6Q9ryihNsmmynJTQ 0.02148237 -fiat/revs sendtoaddress RVzYAcssLmREBxQTq8S5opEhdLv2HpoyTy 0.02148489 -fiat/revs sendtoaddress RBg12AVZFkdnmMpWCfTWXg4QoDw2sD1jyW 0.02149001 -fiat/revs sendtoaddress RNPsd7gGCJtFKeJNcSLua98sHUUUv8bxiP 0.02154166 -fiat/revs sendtoaddress RCzLk5jEChwgtwR2HFMx9CyQ1jnLRXKT3y 0.02163980 -fiat/revs sendtoaddress RFcmWXtcTRFLNfdgqxoxpNuBzzhjuF6DaM 0.02164656 -fiat/revs sendtoaddress REzPK5Q2AyztkJi8GQerm8C8PkQMWknzj7 0.02175006 -fiat/revs sendtoaddress RNba9LBQDFRKpDCfkUtBrBLvfBxARgsPWj 0.02178785 -fiat/revs sendtoaddress RDmqkoBdohVHkiFHui2TawQ7uqdSDgyWpH 0.02191393 -fiat/revs sendtoaddress RCtL3Kn4Hjz9cCZ35JdTpSXy4TYyfsBQ51 0.02193976 -fiat/revs sendtoaddress RBQaKfmUdFcaMt2vkdNYSgPJyp8t9hErYc 0.02216728 -fiat/revs sendtoaddress RNiScfefESssdhmfwuDuD3mUjgGqQwqDSu 0.02219617 -fiat/revs sendtoaddress RV1V4u9RiqcpU6YyLcbhdFpHRSuaBgqRko 0.02221527 -fiat/revs sendtoaddress RKLLFhuf4ULuycPhosrpk3VDGN1J4vZ371 0.02224175 -fiat/revs sendtoaddress RWuG2TiCa2tfFWvHV8fsFa2i8p77NPGion 0.02228000 -fiat/revs sendtoaddress RUfrAMZfiihUq7yePZVvF54TNoSN3gXVm8 0.02229368 -fiat/revs sendtoaddress RDnuWY9RRNYB698v3f1sbPH9xCRv7ftCQe 0.02231947 -fiat/revs sendtoaddress RUTuGQ1cERyKAGNN9i2WySWz55nGgHkYL5 0.02238770 -fiat/revs sendtoaddress RUDJNs4DeCBSCbw7gLgPyqtjhHAZE6GaYY 0.02254000 -fiat/revs sendtoaddress RTpECTAsgmNZ9G5afoYEaoJgEJVAMs8nRs 0.02258570 -fiat/revs sendtoaddress RDjS3dCiLXAbv59onAu19ho4sb93EGkfoK 0.02267615 -fiat/revs sendtoaddress RSTAcCZBvdSuH2tjBtPazp2VcfLNTEgiZf 0.02280000 -fiat/revs sendtoaddress RErBvveK2wEBR3FiLpePAYvTLUpenYNytc 0.02286000 -fiat/revs sendtoaddress RHtcUpRhf9cdb72ivcfUC8nkS5jBh2i3hw 0.02287147 -fiat/revs sendtoaddress RRJFLpVxGWbZKZduX36FoPaG9fhA5DZsdU 0.02296000 -fiat/revs sendtoaddress RTZ7NtXVkJcTkKYEoJkDVG6TFYTmwkd94Q 0.02297205 -fiat/revs sendtoaddress RHzJq4JfVmaMExViQzMMp9B4rHrptEm9jq 0.02298806 -fiat/revs sendtoaddress RBZRcKWZ4Kq63QbJGSggJwZRn9AWBu8NKA 0.02308590 -fiat/revs sendtoaddress RFCeouDaswMoFhKsmNQ1GeoFdn1QbyAeb1 0.02309330 -fiat/revs sendtoaddress RRk1ewnNgn2CcwHpG8SBL6yo5UMY93vbFf 0.02311585 -fiat/revs sendtoaddress RDe6NL23jsKmoabVyEt9KwZF8CA98Qpn6L 0.02316000 -fiat/revs sendtoaddress RVTagnsvjtXddJekeMem2t6oPQxbETN67s 0.02317061 -fiat/revs sendtoaddress RSD8gSnkw8VteWy3DZf5ayZU51rjGU1Zje 0.02317540 -fiat/revs sendtoaddress R9MJUaoJX1RkZMA8BWPqs6RsC71C8QDtM9 0.02329378 -fiat/revs sendtoaddress RLNSfG6jb76GAv42UjwKYTpULAnHG9t3Mr 0.02331183 -fiat/revs sendtoaddress RStt5rZ2KqTFe8xeZGY8m56wKbY7c28jwv 0.02332000 -fiat/revs sendtoaddress RMcVuQDutW7HZ7x7QDLuRPWhH1hyZKY8XN 0.02332469 -fiat/revs sendtoaddress RBeQkkzJws83sEcn45zcsQeUKSSoHgx94Y 0.02336982 -fiat/revs sendtoaddress RTNTTkApuejDodnYcesexFxUd5QwVkDKcB 0.02340000 -fiat/revs sendtoaddress RRfy6ZyFotdfjcpwNjC78xHNn1qJ4vX4z6 0.02350976 -fiat/revs sendtoaddress RYGvZRd1Kmw44wGoPgAg39ivWKHyXPgX7y 0.02357573 -fiat/revs sendtoaddress RSz9Uy9YmCcUn84X6kCTNhrmzDrEMTgq9h 0.02363489 -fiat/revs sendtoaddress bYdgWoKBAfas8NqHtSa1A61qwKiE6s5UD2 0.02385664 -fiat/revs sendtoaddress RQCECUonAbsx5AuiveUuocYQd6QgP3YLJb 0.02387010 -fiat/revs sendtoaddress RNpcnfixySLVhKZSsvf64KsLFRbj59zTij 0.02395000 -fiat/revs sendtoaddress RM3K1nFzWrdvVBKPqRGryqqa9qEg52VyBF 0.02402255 -fiat/revs sendtoaddress RMSXKB7p3jKYCmsv96pQxSPR2L4LUALL2b 0.02403896 -fiat/revs sendtoaddress RL5QD9nFw5MAes1MfHuR2XBWkYktNkXQ7X 0.02410000 -fiat/revs sendtoaddress RDDppWhBd8w1sBnJniJpwV1ginqzbHzYDN 0.02416000 -fiat/revs sendtoaddress RUitX6YeDRp4KyuuBKBzVPd2JbEEMG6LKY 0.02429506 -fiat/revs sendtoaddress RRjbUoxKPDLgxtg8WKJRKFGqXX75gdZPtQ 0.02433655 -fiat/revs sendtoaddress RVbbL3Pgf6caycRkPf7gkRas3NhEeMSkXb 0.02439003 -fiat/revs sendtoaddress RWD2jNA9sesed8XmTo57QjWkFVRGgqCXMk 0.02459302 -fiat/revs sendtoaddress RRrTT2a5w6ED8udXRjXpWQijmu1iGraZRk 0.02459909 -fiat/revs sendtoaddress RS4rq656k63sZXEMD5eJ8nVN2Z92zjPdEB 0.02463426 -fiat/revs sendtoaddress RAXKXkNTs5KcLNdas65ws3KUQztsHtz54Y 0.02464938 -fiat/revs sendtoaddress RXegAm7cvAJSyZM3DbCZaHEpER56s974Wt 0.02466873 -fiat/revs sendtoaddress RKqf1D759nVZBS6PjAdqhD8qerPhgXmo43 0.02470527 -fiat/revs sendtoaddress RSH9PkuTc9fLjPERnxeuJhLTxKV1FHpCeJ 0.02473016 -fiat/revs sendtoaddress RNi64ue51euAakEUPobo4YjqMHhfPmGsyN 0.02484169 -fiat/revs sendtoaddress RT5LhaimpvbmpqX8wZ7F3RdwdVSzfqaVWc 0.02495724 -fiat/revs sendtoaddress RNGQngvMSHk5hosnQkduvnNyotApyRrWqz 0.02499348 -fiat/revs sendtoaddress RW1NKaJg5VSG838wLCqn3HqhGBYGonM9AF 0.02509237 -fiat/revs sendtoaddress RMY7hKHaMWZkZFnrf1wxS9uzVpiyMEHqZP 0.02523498 -fiat/revs sendtoaddress R9zu3pnhutez4wk9Ti3EMdiGNGiRR8zSPn 0.02524000 -fiat/revs sendtoaddress RF5bmKJmssaWfMVvstk6KJrk2CpBjQeW28 0.02526414 -fiat/revs sendtoaddress RThYtM2C6CpiBWczHtaeQf5JsLLp4cJdZk 0.02534586 -fiat/revs sendtoaddress RDW2Cf4qtuyPbBBMi3AcRHSwGKFpKYuwAm 0.02540000 -fiat/revs sendtoaddress RBpK7cr3uWfqVhGoz8Jah1kTNFTYd54ujU 0.02545562 -fiat/revs sendtoaddress REMUDE4RxmiUJu6UJEZjSs4qgymAWFDV4R 0.02550500 -fiat/revs sendtoaddress RL9vfBpquo8V1LcN4YhgjvHYfNvHPJVCEK 0.02552476 -fiat/revs sendtoaddress REaSpNWNXuVC6WvecUo3haxE7qz7Upsuyt 0.02558815 -fiat/revs sendtoaddress RBSNS5jacJZ6HCmF8szM9yTArTL41q6KV9 0.02564687 -fiat/revs sendtoaddress RE56k9SCttyvxD192snm4L39kurneKS28i 0.02567821 -fiat/revs sendtoaddress RRaVuy9ng5UBFm5fCJ91kjjTmyAEnLGj6z 0.02568000 -fiat/revs sendtoaddress RAz1y2kVPtqX6GVw5fhxSJQFoPh2CRBnqq 0.02571844 -fiat/revs sendtoaddress RMfzNZRHvkmHy8CbmWPCT2MA1D1gGtS4WA 0.02601943 -fiat/revs sendtoaddress RStfQgvtCp5GjktuB4GdeEFD2kLxwMA6mF 0.02616000 -fiat/revs sendtoaddress RRknGm6HoqffLiKHisJ55aAodcqGYaE4QJ 0.02623765 -fiat/revs sendtoaddress RFHXhX5hdYXV4JpK6FspLTKkhC7poUuT8Q 0.02626392 -fiat/revs sendtoaddress RDcgPgpu69QsW4T6A6YSgXnVDbwV1aZZjs 0.02631907 -fiat/revs sendtoaddress RQzd5Q8JjNWEUhKtM1UEBCHthzLWgFqveJ 0.02638875 -fiat/revs sendtoaddress RELcDMWgXfaerbJDLa6iwvdzGsNe39AuDD 0.02643639 -fiat/revs sendtoaddress RQKNoMkqjeoZisT2LmgStkBRGLQ4n1XwVP 0.02658000 -fiat/revs sendtoaddress REb9VZA4zsCjgr13NMzYzsCMcRCCXCQWDg 0.02664000 -fiat/revs sendtoaddress RMdecccJjcF1N7DfcitBdckmCJscFdz7R3 0.02666326 -fiat/revs sendtoaddress RLz1D1t6smam3Z7o9Ffaf6TKLTVgXeCqS6 0.02668865 -fiat/revs sendtoaddress RAqKqWs39xC4PYAi1H5njdY7mzGPaP4Vt9 0.02705979 -fiat/revs sendtoaddress RUL1dMRBAL1M7UAwrcicdRKFWoafgMjorq 0.02711567 -fiat/revs sendtoaddress RY5cRQHLvT6PtH7Y6NwNQdk4gen4JG9BbC 0.02713002 -fiat/revs sendtoaddress RLKdyc4KfZZEDY868Q3zwT1ZqsNmQCwAR5 0.02719232 -fiat/revs sendtoaddress RJR6XUrF4TdbVzJSZfyRFtZDusDY1f2wX6 0.02719602 -fiat/revs sendtoaddress RDJU2uwiMwJEEnZ1Cd5XfhErGRwaJUySWq 0.02725814 -fiat/revs sendtoaddress bZXU3b6HGr8yu4mW9o6xGmDWcR2PSKL3j6 0.02737871 -fiat/revs sendtoaddress RXDY7qGsCFFnTqVSvtUsmcorTZ4LAnefPN 0.02738707 -fiat/revs sendtoaddress RLDQWkgYzfj7gTQhsU83PiCYez9ZxnMT4j 0.02743404 -fiat/revs sendtoaddress RLtoqyozwjq5MNrGAViT6uykvQU2dmDj4c 0.02746000 -fiat/revs sendtoaddress R9mwFQGStw6Nw5UihpkigpWZFjRjGpHwP9 0.02747376 -fiat/revs sendtoaddress RYFcGGiJdrpywdatakwfYwgy9U26zLT6Cg 0.02756641 -fiat/revs sendtoaddress RTTBeYBx6zTu61xMRxT1q91m3F3BnKBfcR 0.02763100 -fiat/revs sendtoaddress RGgLyDfzizqyXDhc9oSECzvztpbd1S9DQK 0.02770000 -fiat/revs sendtoaddress RRb4zBFx8qyMJAXsTuJCW4vFEn8HkejBum 0.02778000 -fiat/revs sendtoaddress RB6U5WFLFEsc44qq61Rgd3qsbYRtpLhXQe 0.02785689 -fiat/revs sendtoaddress RBSR6mbcCwvJVNyKEgk5X2Qn4g64Y8KdVm 0.02787806 -fiat/revs sendtoaddress REwBG5HFscK2ebZ8nXjVUpL66fwTazCwKa 0.02787821 -fiat/revs sendtoaddress RBSYjTiXCmUuBetToRVUbUEr4NPgL6A8vd 0.02797716 -fiat/revs sendtoaddress RPBUWPQSdwiXFetbJxmEYUmdmu7hGcj67w 0.02799752 -fiat/revs sendtoaddress RDhpgRmtzGgxu2uZgWaMVtzvGB9zFUW265 0.02804690 -fiat/revs sendtoaddress RUNYbFUWgcrNJAZAS8WBVp7Ecq5Tss1QaF 0.02832127 -fiat/revs sendtoaddress RUSqFdHqNfY9rKJSFnufF6wDxJvz1Hwii4 0.02832992 -fiat/revs sendtoaddress RKfnm1vrNHvNmtisvoHXMuuoRGWx8q8br1 0.02834764 -fiat/revs sendtoaddress RW6xzrxQKfNjftoCsKASv87uzzvQ2hsGSH 0.02841704 -fiat/revs sendtoaddress RWaf48CLzmFk9qTQz8w2fV3yQZkGEAqz5x 0.02841733 -fiat/revs sendtoaddress RL2xfRe32mjjUKwBx2fwJgXsnVWeq4r1da 0.02846683 -fiat/revs sendtoaddress bVhcAoHRKY4YTLgE8Ht5JTufuKHT585vhe 0.02855475 -fiat/revs sendtoaddress RSG8uW57Q16eXaeXveqXYjvVvA4m7VFpfx 0.02858000 -fiat/revs sendtoaddress RSQ5EzE9b8T681cDhpFsjmX3sfPazbES3N 0.02868924 -fiat/revs sendtoaddress RKXKhMQRaQ4EzYQnZjdzs5km5N6gaaDiKi 0.02889270 -fiat/revs sendtoaddress RD9WTQAEdsmmp9ddhMEWHQBa8SdSvHMcHA 0.02893318 -fiat/revs sendtoaddress RGF2JnWtwjpyWu7gefsmQZRzKm8VfuhA2a 0.02910000 -fiat/revs sendtoaddress RSogfvhruNThJB5YLkGMvZV2vw1BMar6sm 0.02912000 -fiat/revs sendtoaddress R9M6q1BWPhZd8cJ5446PJkXErQ58Zj19Qy 0.02921863 -fiat/revs sendtoaddress RAvbyhkRbknQejthfGjRpUX5ZuBKA16Rpt 0.02924703 -fiat/revs sendtoaddress RSh1ejwmshc2CKUSNo81vJWrkLYX6EowdT 0.02934834 -fiat/revs sendtoaddress RSQwusDgRpaLY24AwqW2x2Q8irjeJNC2ru 0.02946931 -fiat/revs sendtoaddress RSvnToppwcGkM54ii52aqyxvJerkeE5HeW 0.02967394 -fiat/revs sendtoaddress R9vCgKMFDcsRe4o4pMBdzqy9d9WrzXdsbd 0.02969947 -fiat/revs sendtoaddress RAUAkLZtnSB79rpCk5dFgL7iaGX52GwZ1g 0.02974683 -fiat/revs sendtoaddress RTVvbuYYtr7h46PydGrf9jnd8pv8h378a1 0.02976000 -fiat/revs sendtoaddress RFopKvnbnuLi2cb5jJfvEzbRybffKGTrHm 0.02983100 -fiat/revs sendtoaddress RDvWrbocwkrSaEteNFXLaPNqfDVUqfZx5Y 0.02985095 -fiat/revs sendtoaddress RNCF4rb9pQr7WNNkKAuZus6THHv7EVYeq3 0.02988827 -fiat/revs sendtoaddress RTRjdkWGBE6sRLspQ9drhq2cSyXxwhcYVn 0.03000373 -fiat/revs sendtoaddress RAGdqZMufswqs1dHfb5BS5cbXZg9jDY9pa 0.03007652 -fiat/revs sendtoaddress RQtZLiGY7xc6Ltc2VaCDyqQfYdXDJVZ289 0.03023399 -fiat/revs sendtoaddress RXtPZTUKBvpjADwpSX7s1iCXWpZNPPTsqn 0.03023689 -fiat/revs sendtoaddress RXcQC3j2hAKZWvCGoyxjcywdDi9FNg1zdA 0.03026327 -fiat/revs sendtoaddress RXqcZcGHcgWnw3cD4EcX5X3xdYkQQu4yKw 0.03041960 -fiat/revs sendtoaddress RXPc56yKBShvFvidYvk9m7niPQ8esUx3Fk 0.03046254 -fiat/revs sendtoaddress RBzTvcRsZnmCGktVFWQkpu6i1PWJo6omtj 0.03064000 -fiat/revs sendtoaddress RBYAaWxvZ3KQ5HGinAaPuX7KHn4RW8Rk8u 0.03065032 -fiat/revs sendtoaddress RL9w7m6A9CLNoGVmXKRbnKCiFtz6xWuQjs 0.03069728 -fiat/revs sendtoaddress RDxAPsSzAaXsttmMeL9HRCoWJHdYHcGvQF 0.03071677 -fiat/revs sendtoaddress RFACL3fujCibuNfNaAgYM6PcvNwzG7exTd 0.03074000 -fiat/revs sendtoaddress RCeAmdBPyc6BQhYetUXVMmdzGQ8d1UvrVi 0.03078374 -fiat/revs sendtoaddress RGMjjheXCEaB1C4RAZ3jRicuM37W8LUn3W 0.03085167 -fiat/revs sendtoaddress RNNnn9dnhfKGQdNnQLy3iUrgXDLZvHxZNP 0.03094000 -fiat/revs sendtoaddress RNBsv9VCdxe7rNA2ENBb6J9gHZowhjDKK7 0.03107365 -fiat/revs sendtoaddress RKJgCXNR3dQxAqqxZfq3uDpKiKmz9WiE34 0.03114471 -fiat/revs sendtoaddress R9uqU4KVuLwkPPcVmFNYiuACJSJU9qtCtF 0.03114738 -fiat/revs sendtoaddress RXh6GKQu189NjChRL2gASHLKNStXUi1KPo 0.03118074 -fiat/revs sendtoaddress RCM65JnkTbQRS5HrEFZ3qQ5qPVPEFQeSg4 0.03126470 -fiat/revs sendtoaddress RE3QeFCFi53aBS8EeKiBSrqcpLdJsn9gsz 0.03127000 -fiat/revs sendtoaddress RDErhmQ3TqN9iHNXfE5fdi7jAdvgP5Fxwu 0.03128270 -fiat/revs sendtoaddress RQq5Dzhe6Fsvz9WaW5eT4gYYK8z3jZeFLx 0.03129333 -fiat/revs sendtoaddress RXparYPiB8ZbtcAvsnG45844nBz9ZsRAeA 0.03133274 -fiat/revs sendtoaddress RSGuigDKyAgiYZXcSGCGDug3n4vnPR1Ahe 0.03137546 -fiat/revs sendtoaddress RCALAcZSX9mQdn8oz3GTQt8tqRswZ8g1Lv 0.03149749 -fiat/revs sendtoaddress RCGvV9GoR9EGbEjg6uh6kE8yP85jVzv8ej 0.03175191 -fiat/revs sendtoaddress RMtkykzKuKiP4PNjgqKH6FrcSJm4Y6eA8n 0.03175485 -fiat/revs sendtoaddress RLoBpwi5WBc6XT49N9javwSxhqE7K5PXot 0.03185621 -fiat/revs sendtoaddress RLXCBHFF9MuTXHFHvKCQZFp4Uf8T8vFHLs 0.03186350 -fiat/revs sendtoaddress RMcw6rTo844mMVBC5cqhXYg5Q7o5XV2iKc 0.03189140 -fiat/revs sendtoaddress RUMoQeu3tGvRTSutn7YBzYYoXFoUW4GRhH 0.03192017 -fiat/revs sendtoaddress RQwahYgZGY3d7i3KoB3P19HTFtqnkdH2yt 0.03192980 -fiat/revs sendtoaddress RAmXHPXumvQe7ueH6CoJBF9zb6pbpnrTdb 0.03205566 -fiat/revs sendtoaddress RXPL2D6jViTt5Uwwu355P8Tni3rJvAacXX 0.03207914 -fiat/revs sendtoaddress RMJtVkeoAvLqH5cqqjwa38UHzLNNX5B7fP 0.03210955 -fiat/revs sendtoaddress RCCzbQJejwUdVUAVtieAKh7G3xCoV4jadv 0.03212000 -fiat/revs sendtoaddress RBVWhaGVhaZdBVMw3YdVqoyY7ksehWWRLr 0.03212660 -fiat/revs sendtoaddress RPPo9CWEt7MD3kGszA9S3zx3P1oAhFXG9E 0.03213790 -fiat/revs sendtoaddress RNoW2TiyxRiuZbxHabJz8uzVQcjguE27nf 0.03215858 -fiat/revs sendtoaddress RFvSfWMdx1HuL8w1bMR4aj1h9m2dGdaznn 0.03247262 -fiat/revs sendtoaddress RXjhVKCbypGxaPfUKWrettoissUWwNRAD9 0.03265814 -fiat/revs sendtoaddress R9mwVL7EYvBQWYPGD3nJxppqsMiKZWeUbs 0.03277666 -fiat/revs sendtoaddress RLWjPZWurwr6UuGbdvfushjVArvytpGXUA 0.03278213 -fiat/revs sendtoaddress RAw3pS9AkD8gnbMuYxLjwedUEmqqohW7by 0.03280000 -fiat/revs sendtoaddress RGU8fuYtMBgbqWpc4eeiXwGoQj35jaLuiD 0.03293370 -fiat/revs sendtoaddress RXL2z79Vp5BCKW94QNYwCNoYTaboJqqzwz 0.03300622 -fiat/revs sendtoaddress RW2b4XSAp1w9ggtNLueUNLWbbVKkTc5zjx 0.03307919 -fiat/revs sendtoaddress RSqBrqpwMb3TnpaXxDjZGhYjYkvh4ck33p 0.03312000 -fiat/revs sendtoaddress RSiyZVWazyjD7WMjG1qbvijJnUE2mLPZWb 0.03322371 -fiat/revs sendtoaddress RMVMzFBRMyJGZHiTDNkuo4XVnVdFVNGX2K 0.03335199 -fiat/revs sendtoaddress RLWNCVA1cnWREDM9uiVhEufJYD4rzQRXqY 0.03342826 -fiat/revs sendtoaddress RVEqdwEGG68D148ZVd5htxDwALNT6rajru 0.03352241 -fiat/revs sendtoaddress RToqYpHAbTtJEn87or36f7DpYZWNRDmP8R 0.03353895 -fiat/revs sendtoaddress RAWMbuMZp2jXULrE81sGCFU1KMWAKPtxjB 0.03370000 -fiat/revs sendtoaddress RK1RErF7Wd6BkC2ASAudCqNKXqComWGjYb 0.03374557 -fiat/revs sendtoaddress RQCy2i5kLtKTN8LQ9n6rXHgEwexFQG4qx6 0.03392471 -fiat/revs sendtoaddress RKZiVs3vDSCGdeAtCWjRS5kv6uS5tc5nyJ 0.03395000 -fiat/revs sendtoaddress RUwpZ54RdeNZ8VxGXdunGm48FVsia78ryE 0.03409424 -fiat/revs sendtoaddress RFgYCpVTSVoYPjaobspi2fqUs7p52gaaTe 0.03412173 -fiat/revs sendtoaddress RS7Eiya9XBh7yaZYKk8GBeDhUhoA6j9ws2 0.03416662 -fiat/revs sendtoaddress RBfUYEynTX49GXyjuWozQ48trPoQfzzNKR 0.03423000 -fiat/revs sendtoaddress RU5khXAh8iSnpJnDoDazmWwx1qtUAtVC3g 0.03438526 -fiat/revs sendtoaddress RMKRUGY4wEPMRUa7nMmpFzqS1CKFokaGYz 0.03445999 -fiat/revs sendtoaddress RU7b6evpnuAtLV6Lz1kVbcBazdzzxbFanY 0.03451531 -fiat/revs sendtoaddress RTGSVMoGakX3GRyHBw1Cbsm3c4eSem4889 0.03479905 -fiat/revs sendtoaddress RNCGGQhtjHzJ8zVzYTSNdMyAXZ5bRYLx32 0.03498647 -fiat/revs sendtoaddress REcsb3MYzgjvENTuPfr4grHhv2DPwyHebY 0.03502073 -fiat/revs sendtoaddress RYDxgenoMipmHzFRFekaniPPEmTr3R2G3p 0.03508000 -fiat/revs sendtoaddress RB8cp2joZL9Bhx5XiGyZVBEKsF8sf8gj7V 0.03508116 -fiat/revs sendtoaddress RXGhLxgcq3nYjmaRPwQ1TyaNfBiPCvZpKY 0.03524982 -fiat/revs sendtoaddress RGkvRhDzF5vb5s3joCXk7zr2X9hXEhLvFV 0.03536124 -fiat/revs sendtoaddress RTLVSTDRiwsmcx8vRg9RBZzhECnXxGzrE7 0.03570000 -fiat/revs sendtoaddress RJhvPpD4DQpyh1p4Qjkumw87ER5skHFtsT 0.03589236 -fiat/revs sendtoaddress RSFPtCaag8xeqrJqygFoSrfoeSyZWb9Hss 0.03601263 -fiat/revs sendtoaddress RTnGit4LYxKys7KnVGDhnKkDa5GWjbUptE 0.03609833 -fiat/revs sendtoaddress RAx5wRhYd8XLj49x1d99pGFQgX1m7DpaUJ 0.03617968 -fiat/revs sendtoaddress RL6dpqUjyGC7WB5Hq8PjByFAJdpFaTRnBH 0.03630184 -fiat/revs sendtoaddress RKH9sqCWRwUpqESq5KEDjeJEuDZkipr2kK 0.03649120 -fiat/revs sendtoaddress RHG5yisFtD669dH81Y67QyGgjviMTiYkv4 0.03654914 -fiat/revs sendtoaddress RHWXmFcwRSx2K4ApcCbdokSJ5VCW4fAuzj 0.03655449 -fiat/revs sendtoaddress RDPcR2fn4EjF63zEqdHng4jsiZGiGSYhhQ 0.03667646 -fiat/revs sendtoaddress RTk4KmjQ1kSeQohuR5d4BcXz3TmtRteDwe 0.03668701 -fiat/revs sendtoaddress RAsGkPWgTBvP7eMdUPehJ17dpS9SaK7T1R 0.03669399 -fiat/revs sendtoaddress RCyEF2aCe8ecLfbfDzQfzVX8a4KY3N4ty7 0.03678000 -fiat/revs sendtoaddress RUjuztUqiDnEeXwEJPSRwHk2pe8zYeK14P 0.03679149 -fiat/revs sendtoaddress RWfA8cPCXDSeAW52NZuiCULpwXU2XmUivk 0.03685730 -fiat/revs sendtoaddress RE8fXR1rbE91kG4bDfDZJae7snj9qg6h7W 0.03691051 -fiat/revs sendtoaddress R9gfCPNhSAnFBGSydx6wsUPc7DH6roeScQ 0.03695301 -fiat/revs sendtoaddress RQX5DUNbwDvcAHnW4FaVvLiKH6TBKiUrLu 0.03710000 -fiat/revs sendtoaddress RBWif6ZM7BeXu3kVtSjCKVffuKER4aXdYb 0.03714911 -fiat/revs sendtoaddress RASSRPHAqAmSoEjMYkH9CB8sBXuJwZGEbW 0.03724400 -fiat/revs sendtoaddress REfwgLFVHauWPQbX88yYhsmBjT2mmij1XY 0.03736062 -fiat/revs sendtoaddress RXaLD8L6WF2o7yo9daT1yCqwrSPR8L9vhc 0.03738333 -fiat/revs sendtoaddress RQVsgWbnxmWWua4DigMxezqcBweW57jKwB 0.03746461 -fiat/revs sendtoaddress RPqSnuht372kUNZunyqgQcRohb7Fe3EJxA 0.03750475 -fiat/revs sendtoaddress REpLfkSN8DaeWjWvdK9HM6YNa3ZptM3MLd 0.03760441 -fiat/revs sendtoaddress bLBAcTwvTa2M1M78FVK19sXWSRF6zh5Vht 0.03776246 -fiat/revs sendtoaddress RUMGsihg4MfmNy4L9ztyYQTFDjLQUCBGUx 0.03786000 -fiat/revs sendtoaddress RHdgmPwpPiyv2pKxvUpfm1e3DJXoTpjaGS 0.03792866 -fiat/revs sendtoaddress RJG6omqURY2NKYhdAyTFMzEtPfTAvEf54i 0.03794090 -fiat/revs sendtoaddress RJgi8kHzWKsPNciVEoBFCMGMV2knRpCQoY 0.03810123 -fiat/revs sendtoaddress RVsAestjmHkEcVyGz8SmtvrLUVG2dkfucq 0.03812000 -fiat/revs sendtoaddress REdUCa28pM8mb4r8kBwrLbWNefg61D4cdF 0.03827153 -fiat/revs sendtoaddress RQNwFKhd27CDUGNm8sDENPrDhNV9CjPhBu 0.03831889 -fiat/revs sendtoaddress RV35qwHnyRSVASK5VeHbz9Vz12XCaSQxSM 0.03847164 -fiat/revs sendtoaddress RHQKCT26bwsW5J7utnQJSejwPpoKi5KTtb 0.03849947 -fiat/revs sendtoaddress RXYfSggBp8PYSCeHNRtUXvMM6i8tPTKZic 0.03858720 -fiat/revs sendtoaddress RGa21g9CUQ5YELJQDbyEXhBYkUkoVqnmnK 0.03878651 -fiat/revs sendtoaddress RHKf1DgaTBznBzRQoXUK8yPBPjKJZnArj1 0.03887876 -fiat/revs sendtoaddress RAFUSwXpQFNAMYCbbFQiWTyLhZcEAzMxM4 0.03896973 -fiat/revs sendtoaddress RJGJETMA3gh4SBRid3jFsNzzhjcWLw6tsj 0.03917157 -fiat/revs sendtoaddress RUM6Vgtze4MzbowmyvbvWDrmMv5RJWEoj1 0.03958620 -fiat/revs sendtoaddress RWbJVFEjWEWmb91uvjJvxFs5urrQE9rLWc 0.03964259 -fiat/revs sendtoaddress RShiFppmSXUWz53fj7j2op3d8AXzzwMxjn 0.03968159 -fiat/revs sendtoaddress RJncdK2DHbgqCJdtMeXCcdE5jBDEz64er4 0.03975755 -fiat/revs sendtoaddress RNzU4zJXs7yrzw4txSTPBHi1WD2Cpk41yY 0.03976000 -fiat/revs sendtoaddress R9gnTq49vKrrH7wMQ4Yo6pb7bn6YJGTLdF 0.03991044 -fiat/revs sendtoaddress RR5CTdSyyMJLiXpP7rjCgisbTDFufN4faL 0.04006828 -fiat/revs sendtoaddress RE3yAwDSGEtEaK4GfLUPFuc2nCqkETV82p 0.04012000 -fiat/revs sendtoaddress RHmKQDR96HpwnJLdfVDzoZkBJK28tHzAQb 0.04017212 -fiat/revs sendtoaddress RWmewNoV34yEinrMRRuNZajzYNA63YodGG 0.04029107 -fiat/revs sendtoaddress RCS9vyviAf34h8gZ31pH4x4basNKWpKrrv 0.04036117 -fiat/revs sendtoaddress RQL5DWHqmy57jyhc7yMCX4bNmHGJ1kFxoS 0.04037523 -fiat/revs sendtoaddress RBZmGWTrAgotGYkzeML3HHvH15DujG14LJ 0.04052199 -fiat/revs sendtoaddress RDvyEa3DFecb4aVZEafs4WKGscKmAgg5zW 0.04052551 -fiat/revs sendtoaddress RAgtDs9pVd8ScDGiQpRzLhXZBjqh9TsTMX 0.04089724 -fiat/revs sendtoaddress RVY9Aj48jiXV8CNmxRo55RXw81FdaLBZb8 0.04089835 -fiat/revs sendtoaddress RTRhWF6myaiWN7AkaFcJccbFzmhhw6sbau 0.04099166 -fiat/revs sendtoaddress RPVEtwCC4pfRrAUd525DntVz132fvDDgCX 0.04113233 -fiat/revs sendtoaddress RHqeN1LJBm1Qb8wV3b31KNyetnGqK72TYD 0.04115050 -fiat/revs sendtoaddress RKMaJHAaKn2pCA8dTFwci3wnGs5x5VSKLp 0.04124775 -fiat/revs sendtoaddress RK2taATajhKxSNuYaaLv9f7QoFomRBQcXW 0.04134000 -fiat/revs sendtoaddress RR39wWWxkvDfNRXwcMqrsnGj6EP55HLzoN 0.04141640 -fiat/revs sendtoaddress RS8j1LiYnKL1dMfYoNwpKSokDebycgEagf 0.04144046 -fiat/revs sendtoaddress RT3chC712aBXtTU5Bc77DtcoG3vy2sWpuU 0.04152761 -fiat/revs sendtoaddress RXdYAPTZegXLs5KBwC81NaohLjGY2LgUCm 0.04195385 -fiat/revs sendtoaddress RVvPLWH6P2U9kLKpAQ1n16cVnpS5xjFM4U 0.04197737 -fiat/revs sendtoaddress bGAc4q6wFcBTytJrABfcFu7iSneaekUEKe 0.04202324 -fiat/revs sendtoaddress RNs3Xpj4NbUmnW3KVutks6yPRQu4232g2x 0.04214280 -fiat/revs sendtoaddress RXLwN1ChLxaQas4vqu4GckwygonL3pVDu6 0.04223532 -fiat/revs sendtoaddress R9UFzYditzurVfDQ2xqJji7VprsrRoqLwe 0.04228166 -fiat/revs sendtoaddress RNScHNe38YPNDcnaLMW6B6DBamTSYNP9qe 0.04234246 -fiat/revs sendtoaddress RQsN4gn6eXAiaKecJRDWytxMzgQugPz7UV 0.04270952 -fiat/revs sendtoaddress RFBLbUpRCMhymco5VAxhxh8224Xzmgih2h 0.04284708 -fiat/revs sendtoaddress RBHj84e2fmnJvKSRr6fDNTLUXs4E2KihtZ 0.04286821 -fiat/revs sendtoaddress RQ49WRogA5rDQYuL2wV75vRZQGoj5F68HP 0.04305188 -fiat/revs sendtoaddress RDSapMSwrG7PuBe6jxC4seVSWSmWXMrVbk 0.04307601 -fiat/revs sendtoaddress RPY9PKqyvqw15jnT9sk9B3EyBwPcpit2k3 0.04314500 -fiat/revs sendtoaddress RNos3TfAQB4oCfQc4HqgmThVVc8DqAnLFw 0.04372300 -fiat/revs sendtoaddress RDuCc4ZWX7vJ4RfsHZ7eriKzudZJhF3Mf5 0.04382000 -fiat/revs sendtoaddress RGNWeVeMKkacNJDVgCDHE4M6jM5V4YAYF7 0.04390557 -fiat/revs sendtoaddress RUgGhNt9c2aMAH4kGZcwCmaqprQ7Kxkttn 0.04390661 -fiat/revs sendtoaddress RGdFzPjYzt2dvGyykhhToXTgpVdB6QSrMa 0.04413702 -fiat/revs sendtoaddress RRAGkUQSkXR4PgaQGdRTs2eBLXPVsMwBkr 0.04442633 -fiat/revs sendtoaddress RStexzPLWXwdtxiGtrWv2oj7guTUbiCVTV 0.04450096 -fiat/revs sendtoaddress RH5QSsmUyo59UCe3tLCH7KCiePcucTKVtz 0.04451539 -fiat/revs sendtoaddress RJi5g76LSPPTzXEBAuayMvvqCL8F8zSiwm 0.04474381 -fiat/revs sendtoaddress RSRijK7js1UhNkXk8hfuCUDHxgcHQW9M2W 0.04474904 -fiat/revs sendtoaddress RNBqAkHvioxSd15rmTaZffx6HhqvYpUk7Q 0.04485297 -fiat/revs sendtoaddress RNQqDYpB4NhUmxMzfcfZBT3cgd3HtjY2Wy 0.04490043 -fiat/revs sendtoaddress RBQ1NPdeSEBLRUyTFWYwkBF1VNWXSooSCb 0.04501096 -fiat/revs sendtoaddress RQk1UxeX7PkTXHJsagYy2rPdJ7qK7NMdgS 0.04518187 -fiat/revs sendtoaddress RVfxLfS5opnvZb7VvBwysx8zA2oERwFJjC 0.04521649 -fiat/revs sendtoaddress RCH9cdMXVDwE28Un2Sez4rbnRycKiRe4dp 0.04553422 -fiat/revs sendtoaddress RLNUkVptBxWDB4JfGgZmc24reNHBrYjkFb 0.04567828 -fiat/revs sendtoaddress RB2C9taMpbmwpCxFKhuoyxURYS2S9PSnyY 0.04576940 -fiat/revs sendtoaddress RF1YNzpmXAdvy4j7PGN12gfzQmfHHQZXY8 0.04636294 -fiat/revs sendtoaddress RXAZTZXWPQ9hB1EXD7gThUEfCufgNCTEjC 0.04651819 -fiat/revs sendtoaddress RWtsLPrXbSAVktx6UVjRYShJorWPnyPyn8 0.04662930 -fiat/revs sendtoaddress RQeiTHJEPrFwg3VYcAPebmef8r7pbWvnBW 0.04689464 -fiat/revs sendtoaddress RHLjR5cdHcXTJNyDnP176pQDmMQjRpMw1u 0.04702944 -fiat/revs sendtoaddress RULxqvVarby1R3NdYTG7wsDwd5JV2ht54o 0.04709257 -fiat/revs sendtoaddress RRLtWp3LkfDeHa5DvUkUWRza77aWabRrPT 0.04729666 -fiat/revs sendtoaddress RL5uK3kcg9gcEmLmWxyTXspYUgWKYMXz6A 0.04766076 -fiat/revs sendtoaddress RKJUQv12U8jLy7gWXaAcpGaV31s6Hk6VJH 0.04778000 -fiat/revs sendtoaddress RRYzhf9JtLaCYPQUqgdTogdbiRj1CsR1Vt 0.04780593 -fiat/revs sendtoaddress RP97LDn9GpagG1vUaDY1NhFjTreotL7Wab 0.04784270 -fiat/revs sendtoaddress RN3xYgVhWCZ5RYWp8K37AKKHMRB3G9gkLD 0.04796232 -fiat/revs sendtoaddress RWwkvLuJu9GEvhc2xVpeoRPgtDb4bbbjkB 0.04799215 -fiat/revs sendtoaddress RSMaY2pHKGHTDSbwU81zupkxbUWzQnm1Zp 0.04806334 -fiat/revs sendtoaddress RP9B7gNk1d7cRrL9SZ9WYxwZjBvAn77L9U 0.04839237 -fiat/revs sendtoaddress RWKxXJsrEZNMwG7mGNEnDsmTGdP5RmAmTQ 0.04844798 -fiat/revs sendtoaddress RVGLwtCQdTz74Tip2YMQiAa6ur2kMZwYEG 0.04853556 -fiat/revs sendtoaddress RV3WtkxuMcAa3ggXgnUUFP3MUUZQdKbCvS 0.04864273 -fiat/revs sendtoaddress RQ9bCkwLQRbdMNTphfrSt7dgPLoW3jkecU 0.04865610 -fiat/revs sendtoaddress RAJ8PrcCtC2pw9kDy9f7JSfavTSBSgWcPq 0.04869686 -fiat/revs sendtoaddress RVoJGn7JQiJzAQiVFj2tHewtBEUmXtUaWB 0.04890400 -fiat/revs sendtoaddress RXNBPSKx3L3UJ86Z66T46howKjLXqmuhd6 0.04907968 -fiat/revs sendtoaddress RF5ERzE77iDJU3zGkRTn9Haq5g7cGvBnfe 0.04940000 -fiat/revs sendtoaddress RUf8PRTmC23G14kMmM6eKVxt5dXGhNfapN 0.04950000 -fiat/revs sendtoaddress RQfPpUCPnE4ab4aiBgX1P8EjJ3K7FMZSCk 0.04953001 -fiat/revs sendtoaddress RB78NfpcokAUQzMfnxbFRH7DeB7F6GHppE 0.04962506 -fiat/revs sendtoaddress RAEjVki4AkErEKoigi8sVB39nmcVdY4kpv 0.04973592 -fiat/revs sendtoaddress RJfhYgmohZbJ1CxG1AKi3kV8GgwJ4nLpDJ 0.04980000 -fiat/revs sendtoaddress bWQfg17qoHDpdt26uvxKVPuYmWoUAgRwqm 0.04985155 -fiat/revs sendtoaddress RNezEiRYttHoEoj1pNFKSpD5jqmgqAdukX 0.05028722 -fiat/revs sendtoaddress RYZHQGuNDzX6iN8VHXs64gLDWoCfQDP2wk 0.05036856 -fiat/revs sendtoaddress R9s79rHLQk72vs5N1CuMe77L1trrQJvySM 0.05039580 -fiat/revs sendtoaddress RVHQTbfwLCaRCRSmqcmfAie2N4EMREumLi 0.05059954 -fiat/revs sendtoaddress RM1NFRmScQgQcRxBEMtsvthpEjYG2Fc4bj 0.05102961 -fiat/revs sendtoaddress RQ5QfEtJdAthUXqaUs23bphhAtp2i2VLnR 0.05107668 -fiat/revs sendtoaddress RTGpErqQDzSH5JsXVtucYRM2pYdWMTT8AW 0.05123167 -fiat/revs sendtoaddress RNPuv5u9WEjvyV7rsJRSa9jNBhNNtXus2b 0.05170105 -fiat/revs sendtoaddress RL9q4vpnbQTVoQwaJTuDqgp9AyEvuX86Dm 0.05185541 -fiat/revs sendtoaddress RDU7yC7H6AM62RLEnPYS7urt64aTfFC7nG 0.05191632 -fiat/revs sendtoaddress RN4ptC2wpuCkzAHPXtRzEvAtahDNTdaVse 0.05270502 -fiat/revs sendtoaddress RKpMfdzmhJYTmGiPqoyqPqASiBmknBZ69Y 0.05278011 -fiat/revs sendtoaddress RDi2tMfiAcNxhaQYxAhky8jxdXGDeSHRuz 0.05298769 -fiat/revs sendtoaddress RHpeidh5ZMAix4ohApBKyTLbqkDMB9hC86 0.05299573 -fiat/revs sendtoaddress RVLcyFqwZGHMh8ieWSVtJMxcHu9J3WhFB3 0.05299733 -fiat/revs sendtoaddress RYPR9667zypZ3gCEEbGSAfUUjPYPsQwm9y 0.05300000 -fiat/revs sendtoaddress RRyigqukBgyzTt3kYVS1yHX8UvSJ6yMvdS 0.05316667 -fiat/revs sendtoaddress RNNN3Y2aWSYDVZ9iW1jK7zRimzmMUvYdjy 0.05317712 -fiat/revs sendtoaddress RGLEJ13JTW4ew4KE876pznPzW5tmxPyhA9 0.05351142 -fiat/revs sendtoaddress RGHnzMoTjGMCyuy8a4ez9XDWFFQWCA24bW 0.05360000 -fiat/revs sendtoaddress RTuukpjLvVtSTQRRAwHuyFy2EQW7e1qR4b 0.05380000 -fiat/revs sendtoaddress RAvnC8RQMTiywxemh6zCQr2m4TktKSzRAV 0.05390150 -fiat/revs sendtoaddress RX5TqaH4d2EMufC5nvmihBaBZ9emYcnmnu 0.05417181 -fiat/revs sendtoaddress R9tnzsbmAKpzF1rke41B2fGjoQww3JKyBA 0.05427051 -fiat/revs sendtoaddress RTQPhFLKTfdTEBTgBbMZNkhCKJ7X779m9o 0.05439861 -fiat/revs sendtoaddress RC73ibywAXVaER6oKXRG1B6kpGzPDQQ8ke 0.05478000 -fiat/revs sendtoaddress RBxuK16mcaVeMK71WZ9kM7fA6fzibBtUk9 0.05488915 -fiat/revs sendtoaddress RG3Xw1tcBxrPXA4S6WEnpAdgF9uXJixXSL 0.05492434 -fiat/revs sendtoaddress RTsmJuQ32TS4FqcpjavoHTaUrhgKj2dcgU 0.05499470 -fiat/revs sendtoaddress RAHVrDBPbVXdjShE9bWXWdn1ASRVuKBiCE 0.05511041 -fiat/revs sendtoaddress RYTBbXYRwGS6Ga2oRYMKPpEUsebtkzXrHP 0.05523999 -fiat/revs sendtoaddress RLwQuGQBNoZMSDquTiUg3DJrqkjjvLdvno 0.05531823 -fiat/revs sendtoaddress RCze7DcJvTfKsk18rTKM17LJgp1RSJNKd5 0.05534635 -fiat/revs sendtoaddress RKPj9mVMZmqRmAyvsVmqZ7A3XnEtix2Vhk 0.05536278 -fiat/revs sendtoaddress RUNgQZ9nmJXQwQPK2ZA2Zao4cpNH4PVDQC 0.05627517 -fiat/revs sendtoaddress R9atEth5jqBhtyXQm4niCLkVSErzE64B6z 0.05628219 -fiat/revs sendtoaddress RDdUUkihKoB3HwYp1Chez624HGZFae8E2a 0.05652308 -fiat/revs sendtoaddress RS1Fe2mJqmJiW82MjYnmoq51ZPuh3oFGKU 0.05673349 -fiat/revs sendtoaddress RGYVD3tSa2uVrzo4EdRfhL9Z6LiGpSNgtn 0.05687816 -fiat/revs sendtoaddress RFhdYumTKKo5UbvPeGHj6soLx42EBd4fSz 0.05700936 -fiat/revs sendtoaddress RVYiAWAYWQ6YkoTQFZRiH9g53qNgXHMCgL 0.05722908 -fiat/revs sendtoaddress RQ5cPydRd7wQmDxc81m5LPsntQ9t3iTWQk 0.05725567 -fiat/revs sendtoaddress RMv66oJHi3epKRkGmZqPMFoqTVmWgMg4rc 0.05748000 -fiat/revs sendtoaddress RXiq1WKnabHq3hLYCeSpkGcrc1c12wYsXn 0.05774744 -fiat/revs sendtoaddress RJusCPMJfStPuypgWZanvXYqQYY6zmqHUL 0.05776292 -fiat/revs sendtoaddress bX9RTdG3VLe64wSGpo8S6kYcTqTxCpcZGD 0.05780528 -fiat/revs sendtoaddress RArnnQzDBK5xfeadZuP6u8KoojWA8dk2Pr 0.05811622 -fiat/revs sendtoaddress RGqwjhYvETqN1eKbqELSWATMcqSVQoszK1 0.05818262 -fiat/revs sendtoaddress RGpfQZxcGxgNypU7fAZEszYHNPg7MkCPQg 0.05839005 -fiat/revs sendtoaddress RLVK4aCUBMNMoK16B2mBYcAF6QT93HdvKL 0.05850500 -fiat/revs sendtoaddress RQrSGqcqcmsoMrUSiQE3amJDUnsnX6dh8R 0.05853586 -fiat/revs sendtoaddress RUC97Xau9F2TvbJvdABwbxC5ub1uSZaeeR 0.05855000 -fiat/revs sendtoaddress RUaoJ2ULN7KderC9eFgqDLmNhTXXgw1ixj 0.05855001 -fiat/revs sendtoaddress RHNKKyXYXBoahR71jsZCk2e48SmSYYZLGx 0.05863914 -fiat/revs sendtoaddress RDgC5gCAx9vhsZkcA4zNWkVyeRoQ5DznAM 0.05864001 -fiat/revs sendtoaddress RA41BgHf15juz9cwXevihE3mQQRk7t3xUU 0.05873940 -fiat/revs sendtoaddress RLKpMHj6J3LqJWCCi9g4mLDhUQEvjXyVQg 0.05913440 -fiat/revs sendtoaddress R9egjeC4zLUPW5ZqwC8PDj5zsx2NvDgC3Z 0.05916627 -fiat/revs sendtoaddress RWQjD1P8Rns2Yf4mmiF5otEEXqXxtFyGqo 0.05958691 -fiat/revs sendtoaddress RUP8pmuAoHRda4zEL9bq3h6LqCZQVbhm4t 0.05977036 -fiat/revs sendtoaddress REwZWPSBHJCMMjqxnayanxsV17wR9ffzeP 0.06016991 -fiat/revs sendtoaddress RQwcnQRR2oeJFUPa49s7mcnupb1iUgejcw 0.06019085 -fiat/revs sendtoaddress RXKBBVRzcLzDmeVi2c2r4nRE3Cvrx3d8Ec 0.06027079 -fiat/revs sendtoaddress RFDaVndrRVdAvdJ7uGgobDYpg5Fx61RKYk 0.06030500 -fiat/revs sendtoaddress RVP3TP1bpJsw2XtEmR8cuaLvDvK5bdTUXz 0.06062000 -fiat/revs sendtoaddress RAqMoKchYE9MwregFqzu1L1qb32duTepUB 0.06067036 -fiat/revs sendtoaddress RQ5N6KbX83SFFWX25UMGEmnzAzpSHfcn6L 0.06073810 -fiat/revs sendtoaddress RHcuGUkDMgKzBGErZ5n5bruA2wQZBC8Ehj 0.06104292 -fiat/revs sendtoaddress REAXJES1qNumphEHXxeHriJjvBgL1PrnVh 0.06146100 -fiat/revs sendtoaddress RJqLtXPWZ4M8mzF3wrZ5jzg51ECbYi4QaR 0.06206689 -fiat/revs sendtoaddress R9dd1v2QCKNECQswzuwTXSmJ9JuJV7wE4P 0.06256589 -fiat/revs sendtoaddress RWbDdh161LJ6dGAdFBpU9dw4AgtMuMj4iZ 0.06274427 -fiat/revs sendtoaddress RNDESr3pqC49UPdwt9oxPa8YDyooo1mLZq 0.06274511 -fiat/revs sendtoaddress R9LJCkaEDpU9BnK8fZAR2djcR2NvUPfr6c 0.06279046 -fiat/revs sendtoaddress RQRLAjXoTw9NRhqLkouzYMbbJ9q9ZFD6JT 0.06304228 -fiat/revs sendtoaddress RSt8Fx12Aa8ttZFCk6djDKqz6TgNzvLg4i 0.06330709 -fiat/revs sendtoaddress RHjFhN8sqXXJHjE71wm9pFoZicoW44sDyj 0.06333254 -fiat/revs sendtoaddress RJHssS66GRR7NkcPr3aLh8ZghthtM1kq29 0.06355007 -fiat/revs sendtoaddress RCNxj4AxYUmJHh9nFxUqrJVr3UQsBi6gbn 0.06366384 -fiat/revs sendtoaddress RFGN9bzif8z3ob5urG7PyexxyLwhRVKyjp 0.06373294 -fiat/revs sendtoaddress RNFPKXDtngghsH9KYeps8rTXJB2vVpfK6Y 0.06376690 -fiat/revs sendtoaddress RLFfb7RXzY4mrMd6RudRJYXBVzsge9kFpZ 0.06390860 -fiat/revs sendtoaddress RGcDVNoLm56eNwY8dqhZQt1ced5AofWs2m 0.06395323 -fiat/revs sendtoaddress RLxa6cHCCDJK7WQ4XvJB7N9TkuC3ME4g9Q 0.06407572 -fiat/revs sendtoaddress RGFJ6sy6Gvey7Pz2GHEXRWSsdTY8kJu65C 0.06408308 -fiat/revs sendtoaddress RAsACgFUezEv3Q6Ez9v45zg28nho2RqvE2 0.06437704 -fiat/revs sendtoaddress RHfzgTXB8AirbnaZmFR5SMYVdYQAP9As3f 0.06447432 -fiat/revs sendtoaddress RLte6F3hK2SD43X573Vmnr99ErBfPsJjML 0.06458043 -fiat/revs sendtoaddress RKahke2wKkv4U7eroocSWEMobQ1uSHnq9x 0.06479421 -fiat/revs sendtoaddress RXowFBGAWnh9HzjGDpuYv21s1JreXJiRNj 0.06493517 -fiat/revs sendtoaddress RRxntKTe6j3QbXvCBVM3HbcUKCWhZkK7SD 0.06536093 -fiat/revs sendtoaddress RHH9BpB2zf4KkVqGnabuSYrdPSm483kAwC 0.06536297 -fiat/revs sendtoaddress RFxygoeBfFWNJh7Kk6bGodrL8UbHvZ9VNY 0.06562775 -fiat/revs sendtoaddress RNxvtXGDPwu6PD1Au7mMEqXK6Un7xq1p47 0.06564361 -fiat/revs sendtoaddress RQ3hbELLj17wGN3pTrNqtRyJJdGVuCdEYm 0.06571901 -fiat/revs sendtoaddress RHjJ4oqTG8X4GRwUaR2w6jXLn1skycL3Ux 0.06583423 -fiat/revs sendtoaddress RUdU5ApjQMRNs8SmM3AJj4pbTv694xEWXs 0.06585388 -fiat/revs sendtoaddress R9vAQ87cUFo77iqqCXkX6ZoJxQsvYUhACi 0.06616000 -fiat/revs sendtoaddress RWLoxsuMBu3hHjDBsHfubGHaNpHbPHF1HX 0.06623089 -fiat/revs sendtoaddress RDdYRRCutAzZEiqaTPqs3QA1QXEoqQi34e 0.06626894 -fiat/revs sendtoaddress RHmFFBWGd72ufszoPhM2oaBXmUymBNAEjX 0.06639441 -fiat/revs sendtoaddress RKxADc8ArZHERrnGY1zt8WUnjgTFZjpbeN 0.06647853 -fiat/revs sendtoaddress RWUJfRePmXZzsU5H5k1iiFT65RJuFts6cQ 0.06677070 -fiat/revs sendtoaddress RJ4FTfqxRFNf2uNicNECMtpSyzsjPh3unN 0.06677284 -fiat/revs sendtoaddress RVRKJb4FxcSBTnq9Ji9gGxjceze5myeTAC 0.06696433 -fiat/revs sendtoaddress RYP618hdy6M9C3wDhcg2LDBVUyPuibqdBT 0.06700855 -fiat/revs sendtoaddress RDQn1CScb7ESkF5RTvGmN5MefiipcUdfMb 0.06700876 -fiat/revs sendtoaddress RA8Ujur4CDWviytysoSwxpjFPT89RDzJd7 0.06704525 -fiat/revs sendtoaddress RCjN12isdWxxJuZN9bymfDEdzchAg8S9hv 0.06705500 -fiat/revs sendtoaddress RNpYvpnsN7rUe2gZPhjZ7WFZGAvtuhKaao 0.06713743 -fiat/revs sendtoaddress RFzkRCRuDqKB8nQB5bmBgsDwCKexZ94FQe 0.06716445 -fiat/revs sendtoaddress RCVxc7SMUyZmEPAEAqK2zyPQdTkUfWxYXb 0.06778006 -fiat/revs sendtoaddress RDTYmu3Yr3CWU2VzDxXKQLeEnKoPmwv54E 0.06783071 -fiat/revs sendtoaddress RNzEoXbQxsJJhAXjQpniPrbDUq3Zt4dabn 0.06819213 -fiat/revs sendtoaddress RAkQqvStt8xoN6zbjMyD6u3EFXbfneGFgN 0.06846214 -fiat/revs sendtoaddress RBEvFqKpTdvSnVqtEFhPheHfPRfT1cg9Do 0.06848000 -fiat/revs sendtoaddress RYUqEGSH15n7m7pYyEwxqPFNwK3ZMhRMpp 0.06857048 -fiat/revs sendtoaddress REx1GJttsdRAcrny5CZScvuN8KNFTyCf91 0.06885886 -fiat/revs sendtoaddress RLqioYmG4QF3RDYzs5W5NEk4fDTu2PCNJk 0.06895833 -fiat/revs sendtoaddress RRmDQBkNHJZD3Fy8VdnD1cVJuV1ryFwQqd 0.06904615 -fiat/revs sendtoaddress RPsCUgTCGdhqnGNMQFkNuXzVBFJfsqoX22 0.06914032 -fiat/revs sendtoaddress RLTaZfvpSsZMiR54fc61AhjGjCZzE3nQXR 0.06925133 -fiat/revs sendtoaddress RF3YTfUWQfTHbyswGvvsNA2pgnEbCtygqP 0.06933000 -fiat/revs sendtoaddress RTq6bMtkB45uCJ9GfGda7Xa6eMzzAndoWd 0.06933859 -fiat/revs sendtoaddress RHC2dPpfnEQ99ASEM2aNHyoVPmUKXNEVtF 0.06947444 -fiat/revs sendtoaddress RCA6JRSJ28xx2pabHwhvVi7qJ6GzH8NV5h 0.06964468 -fiat/revs sendtoaddress RBLxKWjmzBbE57nQWNrHvQVdkm49XXzq7p 0.06968330 -fiat/revs sendtoaddress RB7J6dYUedqqn3Ur88zctH5doGQ7hx1UwF 0.07011639 -fiat/revs sendtoaddress RNTQEMqwHLAqgEC2fhRKaEqagrSH3k9bAU 0.07018738 -fiat/revs sendtoaddress RWpkFm9pfdZzxLTTNDZ9TCYnFDCBdNMcTD 0.07023573 -fiat/revs sendtoaddress RRd78jkos9EirsvjvuyNNKa35FjFFzmpAr 0.07047971 -fiat/revs sendtoaddress REzdMYAQ1fBtdiRHKfLhnjr89p8rri5Me1 0.07053946 -fiat/revs sendtoaddress RTvxxgHFktZzPhXPf5AdybVYLR3D5AHJgw 0.07098295 -fiat/revs sendtoaddress RXz7Prmcgv4UPws6t5xYFuwrS7b2Uchvr4 0.07098401 -fiat/revs sendtoaddress RRj22JuANA1GMXtxjP4nzdcmWycmvMXU1u 0.07106242 -fiat/revs sendtoaddress RWN5kx2u363XGi3SBV7NVaC2Hocf8GiooH 0.07135800 -fiat/revs sendtoaddress RXjJW2b2U4FWogsHMBShYZUZ1vADtLFqwN 0.07137366 -fiat/revs sendtoaddress RXcQVnxY7DHmPTj4oXKbkDpBBpLZLwaHGq 0.07164716 -fiat/revs sendtoaddress RU7Ca2V7oiUbNFu8PTAyjC9vUuyurQzYN6 0.07180501 -fiat/revs sendtoaddress RH9bKyN95NcUqztQUKpmJdCNZ72KoG3ubY 0.07190342 -fiat/revs sendtoaddress RRu2qDGvpY5utKbRS68Rkx7Hq4R3pc34fi 0.07260882 -fiat/revs sendtoaddress RSucSugvaVoXHMihbtD4ivSnRAwPiMuDEH 0.07263974 -fiat/revs sendtoaddress RPsgWXTDgtwJHvgJuNCDSEKsg5C5ZtKJQo 0.07294557 -fiat/revs sendtoaddress RQwuAD5thhvTCg2VTyVn2iDZxL1Ak72Qzr 0.07306414 -fiat/revs sendtoaddress RJeaX36258fEGM8rnJbULKaACkawrCFeJV 0.07315885 -fiat/revs sendtoaddress RTBGmcuevJtqVSpL4ii7FBMsbRcEhvmiRA 0.07319837 -fiat/revs sendtoaddress RWAYVkZvFJXX3emigXkWgZ2j1qbtqZ685j 0.07326111 -fiat/revs sendtoaddress RLqC6t7tqHC7uqW5pnk3aGkDbs6fQnyKtB 0.07354846 -fiat/revs sendtoaddress RLT3YiWcSZ6jxnYiw1PZGvQ4ouhkrp94qh 0.07365325 -fiat/revs sendtoaddress RQgfMQDStU7rRUSPaFytCsfvvmjTH5jopJ 0.07384438 -fiat/revs sendtoaddress RTJYTnvY38qqajJCgQNjQRWRJj8rbToVmF 0.07414000 -fiat/revs sendtoaddress RPNp9rqQQQQHP5TxzMUttjmc3hdvFaXcM5 0.07416926 -fiat/revs sendtoaddress R9a8uEpvWV8k8JMhdoKw4Q8Wt6KEwZaNyD 0.07507147 -fiat/revs sendtoaddress RGekMLPN1LTeE6f4A6Tmj1DYNMMeNJjVa1 0.07513147 -fiat/revs sendtoaddress RGFycRTJGmZkFvBbKUyHq9ru7HkqXF6ifM 0.07521410 -fiat/revs sendtoaddress RCR8gUWCEMFJsbMfkh8VQVZD7v6XoTz86P 0.07521598 -fiat/revs sendtoaddress RA5V6kEDmD7ZEDK3w4dRDMbARseQu7RKML 0.07547950 -fiat/revs sendtoaddress RRHcmSNevNQT48Ab3WkwiFeVkatV5xb3hB 0.07563692 -fiat/revs sendtoaddress RKBr2fhh7dLhnAmk92KUnkFBMUU59zXceR 0.07585065 -fiat/revs sendtoaddress RAZxVrGzu5HxRH4m8xwh79iz7EUjNj82dZ 0.07596558 -fiat/revs sendtoaddress RVFYEP1FJ8agH4z6qnJZpiCuUQmDSuL6se 0.07660024 -fiat/revs sendtoaddress RJCVvYFJFr3v5dVAWKvXdVrhCETki8BCof 0.07663007 -fiat/revs sendtoaddress RJmMc9KeNUmTUkPfcWdYAHQUNe3kR5jKkS 0.07670105 -fiat/revs sendtoaddress RVv7UqwYjC9P4YJBmW3RyHmCUniRWiv3Cn 0.07746830 -fiat/revs sendtoaddress RVbK93aZGzHmLKAPmTb67uU9h3nhGKb3BD 0.07771713 -fiat/revs sendtoaddress RRjV38mis5Fbis6AbGL613X56F4q6r6RwZ 0.07791755 -fiat/revs sendtoaddress RFimpwR2LkMch53fHHsMRqmeaHoDAXdXPW 0.07814108 -fiat/revs sendtoaddress RVGwzGpst2MbHisGDSqtCKq1agq9joHfY9 0.07836237 -fiat/revs sendtoaddress RBawYoCkY7NyBxBL9nofrtCi4XGEpafVNp 0.07848215 -fiat/revs sendtoaddress RE9X9vpLveNqxH3yE72rCPnhQjxfHnE1pv 0.07887789 -fiat/revs sendtoaddress RQuvj5Me7VzA96VaoAGdBzGYnPzj68fejB 0.07921072 -fiat/revs sendtoaddress RCLYU23DVCRo87DQqZLLpDFvx8YucZu5Nu 0.07924454 -fiat/revs sendtoaddress RKnB4gtvxZHoS6MLLGFZnuiJjTGRUuPPzK 0.07925118 -fiat/revs sendtoaddress RHTZwEJyFBDyD7gcc4AF5cgbieQit2FQAw 0.07936583 -fiat/revs sendtoaddress RSrmxzyQeWUVNiMAjbmDvCV5UjVGNz7Q9j 0.07942000 -fiat/revs sendtoaddress RLQibfT4MkpjTXkU2UvwZyavY1bF5rEnGC 0.07950000 -fiat/revs sendtoaddress RFae4K3rGzjudSfq8XaxpaiQppTxTVZTVD 0.07956523 -fiat/revs sendtoaddress RGggxtKcVDkAxbyCPGv8DceQxfgAASCQ94 0.07979124 -fiat/revs sendtoaddress RXRSaEJTPhovho92nT1x4ih5incMR6jvxA 0.07984744 -fiat/revs sendtoaddress RK8rDC2xnoCnaJJ9YNMf39u5VGV3RSsrSv 0.07990000 -fiat/revs sendtoaddress RT859Xxw9uezyDTYFaAiSezVC3vSKzpEMX 0.08000000 -fiat/revs sendtoaddress RTRteadpVzwmjGNHLWbPRVGyzZBYk9Ebog 0.08035816 -fiat/revs sendtoaddress RSVsvtAaVHnxKztKsjUkm5rJhN88CqRM6Z 0.08069884 -fiat/revs sendtoaddress RTcuR17GQ93rjzneWZxoMMHYjL3hTynzAd 0.08072161 -fiat/revs sendtoaddress RPku2oKNr9tYjNyQf3wNXwFmB9hPcY5roU 0.08118640 -fiat/revs sendtoaddress RY7bzUKTPsuVzrRd4W4np6fRWHbmT9FvvD 0.08141491 -fiat/revs sendtoaddress RWxGM6HVMrdjU7RJyTTuRqnGVzQMCKkChn 0.08155734 -fiat/revs sendtoaddress RXkGcA7ENGZRc6qKgHRFb7X2XHhyZW7A5n 0.08171524 -fiat/revs sendtoaddress RLdWoDet29fZHEx1L53iR1KbbpWvVb77FH 0.08203554 -fiat/revs sendtoaddress RXSPW5iZZovrovCQgN58hkr1uqX8bwvCuG 0.08248000 -fiat/revs sendtoaddress REvXdNN7r18v3X9aKZDVioXrSeh6gwuJLs 0.08269429 -fiat/revs sendtoaddress RM3vUz24xYGr6DWUELMHrULc2nvhDnX4YB 0.08303995 -fiat/revs sendtoaddress RB2nPchScGCij1VtrSzcRmiSD2taLV6KqF 0.08319886 -fiat/revs sendtoaddress RJCcB7KUnbvVLtUcAjGfNvkHu42qDPh46b 0.08345907 -fiat/revs sendtoaddress RAXm7ZRQJFfTPnD9gRfGUsJEpvwL4ePdsK 0.08356422 -fiat/revs sendtoaddress RATksy5CdYjoQtco6dyBRU5HrMAJtPxJkq 0.08369368 -fiat/revs sendtoaddress RGAKzQCrU7JNZha7jio3Uok8Zezhyafu8m 0.08400258 -fiat/revs sendtoaddress RMBqGX6wBhVD1S94Ny45CPYsHbh6kXRQfQ 0.08522724 -fiat/revs sendtoaddress RQXZkThGEpytSkrQRxHPWYqSwW1HfsdqWj 0.08646019 -fiat/revs sendtoaddress RULuf39CBpWmkHPSSrr8En5bU6GTHcdHzn 0.08730300 -fiat/revs sendtoaddress RDqXur4WpP7a2aQoaxR5VAZfeZWXwYaJmv 0.08748000 -fiat/revs sendtoaddress RKqP2bHZkTkGu6gLRDvDc7rTHDQPjzPA2R 0.08789070 -fiat/revs sendtoaddress RM94kThuu8iPBfsbis6RcoTCj5U7t2aPmo 0.08795985 -fiat/revs sendtoaddress RMuPCGPtVNZ62M3mKn5WQV1itxvXnPCCaq 0.08818572 -fiat/revs sendtoaddress RFsxCC2d6sajVMMdaSaNHRqz83eYMfDimx 0.08830260 -fiat/revs sendtoaddress RJGDsGKc2humKbZPy9H6Gv5cZbTzDnJh6V 0.08903150 -fiat/revs sendtoaddress RQw8NiaVtXKvu5WEtg89uTAzJWJoea4cAS 0.08911152 -fiat/revs sendtoaddress RKNPWnsfYY98PbWywsjgViwwqcrg3SYfT9 0.08914218 -fiat/revs sendtoaddress RTxjUikvqXok6uoYLPvnQNKjMxzNY4KJzn 0.08961512 -fiat/revs sendtoaddress RE5xcFuu5ZhavEvbLEDAZHBPQWR8Wz1rHX 0.08980000 -fiat/revs sendtoaddress RL1CjJnhJ88wYucWG6k2DPvXhcS9prTMwY 0.08988895 -fiat/revs sendtoaddress RP3Bvfs8ws1SGpJc7APUKaJDERft7sbmwj 0.09000000 -fiat/revs sendtoaddress RLdyvu3zJmj4Q3reuUN2JcVpBugT6Lfq9z 0.09023039 -fiat/revs sendtoaddress RDmcKVvQwbdTYV222AjotFx5kDzn9iTJD4 0.09052962 -fiat/revs sendtoaddress RWmJ9LyeaCyeZarCsCLv7WKhfVBvqzgyEA 0.09122222 -fiat/revs sendtoaddress RVDbTHWcUzXN56F1d4ho2Q6GwpmBFFZhe4 0.09148670 -fiat/revs sendtoaddress RCdabmNLZ3FddCJPcaZ4yPe8XnCVSKMXMs 0.09149827 -fiat/revs sendtoaddress RMSaJPx9ANnGcfxyzw8yKzQ6NQxaPVDucj 0.09150173 -fiat/revs sendtoaddress R9T9XmW4dEXz2okWXnvoAYs4QFqWHqkFad 0.09161957 -fiat/revs sendtoaddress RHpoozZd9n2t5JZZe2h8DJwkxfVu9WLGFa 0.09216215 -fiat/revs sendtoaddress RCgbMT2kFZkJ3zeKVauwmu7tggPkLeHZuf 0.09226126 -fiat/revs sendtoaddress R9MczKGJQzVXFdz18wCHhd2qYmK6EcnwQo 0.09246678 -fiat/revs sendtoaddress RBstx9iYvt7FAeeV62WZ7uEDXMj7x9uzno 0.09286755 -fiat/revs sendtoaddress RGYgHnyHUVWzmrisUMYKCiTZFsWFezeZah 0.09293689 -fiat/revs sendtoaddress RRSXCZjwKVHggxEGCdqV2PptC9BVW7fCqc 0.09323394 -fiat/revs sendtoaddress RPgVUnqqJh2koEkCN1tHC9fZWWVsHondRL 0.09350901 -fiat/revs sendtoaddress RKcwC4jX17xGAfB89qihrdPUmR5zp7M94u 0.09362242 -fiat/revs sendtoaddress RCh9gox3gy4myuTfd4LfTGzag1Njq66FY2 0.09379232 -fiat/revs sendtoaddress RPcaf4uYJ87FwBX4jkdtvp3gRCCjJwTBkd 0.09381010 -fiat/revs sendtoaddress RJ4Y5VinqKPKKAwWWq5CCuwxRjozKPXuWK 0.09382817 -fiat/revs sendtoaddress R9m46De4gwMe4CWtL5JYYxpVd58iieiKbh 0.09422057 -fiat/revs sendtoaddress RYZx5dyCXHqgJ25g8aJX3wUbpzMjPW3tFP 0.09485672 -fiat/revs sendtoaddress RRDCusDfZ4ELqAUmhnVEqCtTJu1ugr7zDU 0.09516619 -fiat/revs sendtoaddress RTXWQ9gqYdWgwXa7419GFPDQsDDWY5VH9n 0.09528797 -fiat/revs sendtoaddress bQe7PPn7YmoeTm5tziLSPF3F4xcrwLcqCS 0.09564014 -fiat/revs sendtoaddress RUzBFhy6yVtNYVVGGo7p1Z8wR5rf58T36v 0.09580193 -fiat/revs sendtoaddress RFWikpZ3CeKny9SbAfC9eKWr4J97KiVjYu 0.09597467 -fiat/revs sendtoaddress RQ93gwpCnMyTSSP9fXJk6SNFWy6chSoLEm 0.09622245 -fiat/revs sendtoaddress RMzHgDHB1oHkL8LNz7QFGWRqTqsMUhzAPR 0.09631144 -fiat/revs sendtoaddress RVRxK7ECToA78YB4YYvUqfotmUqhVfbcrN 0.09634762 -fiat/revs sendtoaddress RNhjPoewBRBf19hASWQQQ14iM5eNbLHSRb 0.09672094 -fiat/revs sendtoaddress RLqX224NsA9z7mtuM2doNy5rU94v3yY4mU 0.09714149 -fiat/revs sendtoaddress RY4VTX1T7d8AhUdedZ6vQsAmWDmGZEomME 0.09747328 -fiat/revs sendtoaddress R9wYf5VSWfsXS8iE9cTzrsbeNQbQoECoJ8 0.09756344 -fiat/revs sendtoaddress RL9iSC1WRExySFo3928d4TWMi2foCJe4hN 0.09806000 -fiat/revs sendtoaddress RRdVoa86Yf6hYW2gP9B8PYBT5TqoR5ozQp 0.09848232 -fiat/revs sendtoaddress RLsynX4z2QCV4ZLa6DeD1WJQ6KYMYJLX28 0.09863763 -fiat/revs sendtoaddress RGadU9kAGVDbTAnVn26Wb4YZTQfkAniYo2 0.09940000 -fiat/revs sendtoaddress RX9dtUNEf9Ae6fs15UA1N329Udq1omYRXT 0.09949194 -fiat/revs sendtoaddress RLgNWEuNwFMffuWBTUXG8YDsUqcyUkkzun 0.09969390 -fiat/revs sendtoaddress RDwjcXMk3A7r1mqokQUVvopN9KNmQAAMvk 0.09976498 -fiat/revs sendtoaddress RAvoz7shGwbBhubH1qDhXK1xH8LhrBnFZb 0.09990000 -fiat/revs sendtoaddress RWXaCL3h96NrA9uDH2E8MyeAQEkrHfqKkJ 0.10000000 -fiat/revs sendtoaddress RVNc9BDkXVcKk5H4raLz3Rvgjd7z2yQ2AH 0.10019605 -fiat/revs sendtoaddress RSn23Tv5mR3Y23a9KsW7JHHJCte2exux2H 0.10035080 -fiat/revs sendtoaddress RVaHUsdbpHF2BMZChz4rQQzSWxhH5FFNwk 0.10040000 -fiat/revs sendtoaddress RLuFKA8i9EwbNVcdAN2FH13XrHGwQDsGVX 0.10048046 -fiat/revs sendtoaddress RJbwmjT2s9X5ebRrRgHgLV2Kc9XiKRbF5G 0.10048718 -fiat/revs sendtoaddress RUdUU54F7mKThocnVsxxTrMBAfQxMY3rdS 0.10121176 -fiat/revs sendtoaddress RBhErwQ4rRMBPuy8DmUbwS6zd9CLmProw5 0.10156509 -fiat/revs sendtoaddress RRRY2QAfWPHeMQu8oSqeMFTuNVN2eEHwU7 0.10171333 -fiat/revs sendtoaddress RMtwwth8LjHmXyAL6s5kBpBt4CqY5rNi6t 0.10226000 -fiat/revs sendtoaddress REJLoHX9Z7AmqsDiX8h7nDqthxzhsoDfp9 0.10230231 -fiat/revs sendtoaddress RT5yiVuqxSyKNg92wEMdMsDVXcALGC2MJG 0.10231955 -fiat/revs sendtoaddress R9HpJ9kmNgvX5sVe1XW3rPNX3wiVRCePyd 0.10264404 -fiat/revs sendtoaddress RUPumL8gJgGWqqPwcmsakyKz2xXZ5UF1Dh 0.10273884 -fiat/revs sendtoaddress RCfnu5CDBqWdyiF2rEK3XJ1AEGVmR6jC4c 0.10346000 -fiat/revs sendtoaddress RYBSZsoZy5957JK4Kps4AZgT3TxmL9JXPH 0.10442984 -fiat/revs sendtoaddress R9Nm5ohs3YWTYfkRk1ak3PyW6ykHPfYFJL 0.10551516 -fiat/revs sendtoaddress REgPzcfhEBynjcqYb7taHG8DVfu71pjMdi 0.10553929 -fiat/revs sendtoaddress RX8i1Hpcb1qACsVMyvcUtd2Mn8scQSvaEJ 0.10598417 -fiat/revs sendtoaddress RMGMi1yVMiKdZWWVnKzVYwrtnJewDYMP3m 0.10649468 -fiat/revs sendtoaddress RVK6pQb3fz3aoX7YHnxPy3eXRNVHJe4c5X 0.10677212 -fiat/revs sendtoaddress RJPfyHzbU7aDVJSHEVH7wriqJR8rFPxNGv 0.10707890 -fiat/revs sendtoaddress RJ1bivaX9mX8Z7e8uYzgwa4zWu7Dmisjj9 0.10722929 -fiat/revs sendtoaddress RGvUHCDaKC86EHtzw75hx52gJiMW93RQsh 0.10723405 -fiat/revs sendtoaddress RNiDjRCmNon66CR9XkvqU8G9iWnxzT7bgu 0.10723537 -fiat/revs sendtoaddress RGxzFTYdVCHQHGCLTkbmixuWRw8dkpn2e9 0.10766188 -fiat/revs sendtoaddress RYQ6guxEWDhBejaGnMpsYuYYssc6NTMVeS 0.10815643 -fiat/revs sendtoaddress RXgj3WDeAMJtxVjx51VK6B8VbyAtpihdqb 0.10840578 -fiat/revs sendtoaddress RG6wQNu9jEv75SkVV8bRLraZ7JtJvU6rvJ 0.10850595 -fiat/revs sendtoaddress RAo32hgEb7JKEXYT3UujFpk2td5SKNf6E9 0.10875647 -fiat/revs sendtoaddress RVCEyRzcWpC9VZmcz5b6f8vAJzooEF2VXu 0.10891527 -fiat/revs sendtoaddress RAtmqgkqUYsKEH1cjj6nDouVMS4AgobZST 0.10908516 -fiat/revs sendtoaddress RRvwv79bmYbfso7osZkoowNrYHCFPKtgW1 0.10918949 -fiat/revs sendtoaddress RDaS7bRRbKnGNixQ62t7vkUx64JDGFQErc 0.10937145 -fiat/revs sendtoaddress RMjqNmy8vkkeGUa5w9qi535QpkpoUd6zCQ 0.10943606 -fiat/revs sendtoaddress RHw3NnEUuGr5fkK41KULEuBGa4s2rPz9R8 0.10998643 -fiat/revs sendtoaddress RSNqRxrepsLDUQf4bFyinycdnS5SoDi2mz 0.11031923 -fiat/revs sendtoaddress RM2B3rP1CPEybcPxykwtKhaSbXvyYZxLym 0.11092756 -fiat/revs sendtoaddress RDj8bcVZCG6djvmtFT44guyLuxJgUGMk9f 0.11098568 -fiat/revs sendtoaddress RPoCEs2ttkMUN1vU6WcCoEcTQdTi1muf98 0.11132000 -fiat/revs sendtoaddress RDRmMnHZRPLxPWoQZQRNeA7ygF6653K9rt 0.11139059 -fiat/revs sendtoaddress RUUwB1iyjeY1MeCkLzc9cde2xAwZKCMEU3 0.11248552 -fiat/revs sendtoaddress RMW6G6vtuyqZBPfWDoujCqNo8qLjYSWfjF 0.11254607 -fiat/revs sendtoaddress RJRfDnLzqFicgf6UtqycAAJhwbyquSUMCy 0.11297624 -fiat/revs sendtoaddress RXcxVLeQxFvYqo74bLfaBc9DTUtTJxX7D6 0.11420070 -fiat/revs sendtoaddress RQU9BMkGD7y2D2CdqL9CYzU3natPDkZEEi 0.11424180 -fiat/revs sendtoaddress RADWDYanuLbpkt23EH811MXV4LRp8a1Nxn 0.11494613 -fiat/revs sendtoaddress RHDrb4ao2cpryuc4SMe8TNRhbGZTwxVxhu 0.11511341 -fiat/revs sendtoaddress RGaKeFYERqwZc6oWr3A2WPaucuPt7qbPfE 0.11542951 -fiat/revs sendtoaddress RAfDXykDF65dWKcxDR2h8paR1Msg1Wo2Db 0.11558773 -fiat/revs sendtoaddress RBEGfZJyvpyZHSkf9YLmp8MdjcJpeiBXTo 0.11568657 -fiat/revs sendtoaddress RMEsdXQH25dk3276YtgxyX7aQeJBsi6g56 0.11569015 -fiat/revs sendtoaddress RWYDC8dKBsu8wisMtNHSbUbGbGzcW46Kp4 0.11729182 -fiat/revs sendtoaddress REGufEdvpdRhW7nZF44MZ11EuCKNcEb3WQ 0.11814625 -fiat/revs sendtoaddress RFTYSiH9E6zEXzrcA6FbbjEXPDMJT3eow1 0.11823698 -fiat/revs sendtoaddress RCExADvKt8yopZWqrM7SAZuY6gBWk5GYP3 0.11829147 -fiat/revs sendtoaddress RRgriPXSMPHr6PWWviUjMzeAJx2t55XeAG 0.11913389 -fiat/revs sendtoaddress RTokXc8yhvxVdfzXTCupCcHCVsQ2Q9jTbw 0.11923711 -fiat/revs sendtoaddress bHizmkcc6noE2upERvvGqmc2FZNZ8BM4pA 0.11941578 -fiat/revs sendtoaddress RSa1qo9b8rA42vSutq8yCaDwUJycLgdDK3 0.11942796 -fiat/revs sendtoaddress RGVW7X7PJwB9m1LBbRPDYrUUZc3rfJkb1Z 0.11985162 -fiat/revs sendtoaddress RGhKgCeeCdW1MFLYMUeA2Gm8tpbJXigNtH 0.12001261 -fiat/revs sendtoaddress RSkDzCysrvhrp6q8s2ZzxfUGm5941tcZD1 0.12040003 -fiat/revs sendtoaddress RNS8BPsdwFgC7MrhwRGfT4Ds5oZJeasmw6 0.12075202 -fiat/revs sendtoaddress RE68QYEbmJtY6fba6K1uTjHYHP5t5t9mhM 0.12125594 -fiat/revs sendtoaddress RS8sawBfX9LgY77uGsTA7MjUtbhVHoW7u8 0.12180048 -fiat/revs sendtoaddress RX5j6VeZngVmaBmPaNVCRaseTTd163kVyR 0.12190007 -fiat/revs sendtoaddress RHHeUquZxcY1Z5qfmp7mz1XAzCHn16HMb3 0.12219425 -fiat/revs sendtoaddress RJ76gf3cGadbJUaC43JcxtWDN5Kjv7UdXR 0.12345678 -fiat/revs sendtoaddress RSRBEYoHVMkcxmNEZYK7JcSoCxc6QkzRTL 0.12395501 -fiat/revs sendtoaddress RBqjXN7BRhTaUExvHuPB66JoyVTy6HAoab 0.12448782 -fiat/revs sendtoaddress RVXj8rXJffntDFUuVg535V7Nva98rQQgNU 0.12451718 -fiat/revs sendtoaddress RHbPDCVCUW82zzUKeCUxX7jGnv48CjYuSV 0.12464697 -fiat/revs sendtoaddress RSMe9uoh8sy9tD7yxVwpLUkTWph8v9HUyY 0.12489385 -fiat/revs sendtoaddress RADft9FGPWcqZ3MWJKpa1m1keqrvo4Kb7Y 0.12509721 -fiat/revs sendtoaddress RWAZkV89waNwz6dxQHgYVdRTbVe3uyfhKd 0.12528341 -fiat/revs sendtoaddress RT7eh3KZsic7P7BsUK5aUTHEZybkCndCAe 0.12538672 -fiat/revs sendtoaddress RRorwv83bqTyBYVfyQm9uJ3QVsBQdDuhTn 0.12555495 -fiat/revs sendtoaddress RK9W1RQs3c2zhQkyDgrvDksYJyLqShibem 0.12624349 -fiat/revs sendtoaddress RHt1j5bMXt59imEWwKatXLJ7aRT145GQLe 0.12628587 -fiat/revs sendtoaddress REQLiZKtqfrC8rbHb6XwoXn1AKTY8XcaLw 0.12631331 -fiat/revs sendtoaddress R9qbo6A1tkX3tu8AhbJmf2BCyDv4dysSZ5 0.12759959 -fiat/revs sendtoaddress RDrNujUqTDu7c9mZNUufPjsganJ5PUUVbh 0.12849307 -fiat/revs sendtoaddress RAw5vAZyDnRBjJpofamwnc8m5wnYboPGAc 0.12885544 -fiat/revs sendtoaddress RKJCdChFwifsKEAL7gDGEGPQFpj3Dw4GwZ 0.12993241 -fiat/revs sendtoaddress RARRWJTbA3CuLoho319DvPqvdGD37NzXTd 0.12999694 -fiat/revs sendtoaddress RDzjvR2S3rwc9wfL2Ed7B1c69KmzfRAKmf 0.13103663 -fiat/revs sendtoaddress RJ1BZx18AeWEJhX4VvV3S9xLhj2B65PkK1 0.13185666 -fiat/revs sendtoaddress bRRzjDmjyccZXugDcj72PJpCJhBFY1f9oH 0.13289002 -fiat/revs sendtoaddress RTUp1WUnrJHNCZpwh1eVzLRwtvMatFXCer 0.13356258 -fiat/revs sendtoaddress RLTWdpJfsBrGidMT12tBThbd7zqkEuyesw 0.13406876 -fiat/revs sendtoaddress RCPPbeE6ZTp5ub67KTj6VHWVtNid4EqKch 0.13666388 -fiat/revs sendtoaddress RMQrjtkVcNKy9remN1fEMB2HwDJXgMPk87 0.13668541 -fiat/revs sendtoaddress RBemUocaocLSH1t3RRr3cxCMHF4BJnahpm 0.13685971 -fiat/revs sendtoaddress RPZiWWDrNNv8a5WuEdPd6URWpLNTbdzVP9 0.13715722 -fiat/revs sendtoaddress RLKfoM3LtKvfLT1BRT6PwZKs9bpzdTpG3d 0.13716519 -fiat/revs sendtoaddress REuP8XvJkvpBzvviVSvXpYmR1KCwyP9bZR 0.13739133 -fiat/revs sendtoaddress RYYGzcDGyLBUdaUG9PEVtQVzAuRoG1d2B6 0.13776954 -fiat/revs sendtoaddress RHizXH4MszJuhQ5BzU1XAPTwuHvf3Jbui5 0.13796612 -fiat/revs sendtoaddress RCn45fkDC2G5399W42v6yne1uUG5igFw4g 0.13966691 -fiat/revs sendtoaddress RRhCMQamGbygNCAAoBFNe6tATKJseospAp 0.13975972 -fiat/revs sendtoaddress RBmiCvDLouUiLAAMrP3ui4hBJ6q7HpdqYj 0.14012136 -fiat/revs sendtoaddress RKEPhwhxZX8WtoCddypBvQo35a43HBUybf 0.14018140 -fiat/revs sendtoaddress RAsCkm8fqgPas3xyFdvQBhh92JM7sAQV64 0.14137129 -fiat/revs sendtoaddress RVu1z19615frorRKJqQqZ2piy6dwYWwV7w 0.14253768 -fiat/revs sendtoaddress RCzE2NN5YCjAsZGgLYVHFKPa2tJgrHbe3n 0.14309809 -fiat/revs sendtoaddress RV9meC53UC6ygACtaLL44DyRhtKrcxA4e2 0.14325183 -fiat/revs sendtoaddress RELsGWRQDM6bBfb8pbzo2ZLDSvAVaAisUZ 0.14428838 -fiat/revs sendtoaddress RLLkzBHRmaFgAX5EFBje9249R9EPnFKwpp 0.14440021 -fiat/revs sendtoaddress R9aTVydiqK5mhgn9HYrDSApbi3r4JTjUJN 0.14560287 -fiat/revs sendtoaddress RKGhQd8D2B4UNLgZojgqMEbSDNefhxr1jK 0.14620409 -fiat/revs sendtoaddress RBNjoQnzPp8bU4FARtcujpCbdPpKqRU8f6 0.14775029 -fiat/revs sendtoaddress RFgsP97g5DTpSheuqC5Kvm81WLFAg39A9S 0.14797999 -fiat/revs sendtoaddress RQCAZsMjvofHNWF8QmdDfZ2q9zvKV7Xt9T 0.14843518 -fiat/revs sendtoaddress RAjCKyJK19kYkdWCvcy8KGi7EJQwmXEjo5 0.14867105 -fiat/revs sendtoaddress RAG6TgMo3ygU4s6xo5QrQjmpH1geNvCtux 0.14916335 -fiat/revs sendtoaddress RKriPC914o56158KhoK9SY5CYYdiMyevwJ 0.14933380 -fiat/revs sendtoaddress RCWzBzS68KYHDHf7fZEnxVnbTMnxXhcmtd 0.15001194 -fiat/revs sendtoaddress RQWk3wqyeZ8Yov5Lp71iHUMhijYUK2xesT 0.15037260 -fiat/revs sendtoaddress RLSe1sNUUXDSDhPaxTG1i5AXkL36Tw4x3X 0.15043070 -fiat/revs sendtoaddress R9M6EmCvPQGyuU87DAusHSo9aC5WtKaQTf 0.15058215 -fiat/revs sendtoaddress RX6VRCsMkTidnnDykSbD9bcwujuS6ErqYZ 0.15079985 -fiat/revs sendtoaddress RHjHHqhwq1Q3enn2crMwRxkPFkd9xWeFRx 0.15164185 -fiat/revs sendtoaddress RY2ma8cHSkhJgvbCycsxqSqyeDv2t7PCSW 0.15213506 -fiat/revs sendtoaddress RTA8xaYHSVHB5oh3GvUVcxiJcfL7ybMi9H 0.15305184 -fiat/revs sendtoaddress RHzsnPqJWvJ7TchEj3HGV8D175Ge2eYZMj 0.15359798 -fiat/revs sendtoaddress R9jAipBT73ikKhrX88YTyerVvwonubbtLX 0.15428970 -fiat/revs sendtoaddress RUB3NYsqEmWKgampwURJvryxKDdhyw3Pky 0.15509126 -fiat/revs sendtoaddress RKHsmj7KbCAtm4GhZG3bB4qSciQzfrqaUe 0.15646220 -fiat/revs sendtoaddress RBUZ3G2eqfuKZGPbcJPQwbr7i1VJhzvbvb 0.15770699 -fiat/revs sendtoaddress RReUrP5ZCPgHVM3L3pJ5UXpancfZw4wtFF 0.15846844 -fiat/revs sendtoaddress RWZQgTHfzyzCCANw6RDLzhG5SvCQ8uui9F 0.15976000 -fiat/revs sendtoaddress R9uosp8Beh9spjvpydSeahJckeLNmNLApr 0.16060142 -fiat/revs sendtoaddress RNVLtfsDmNB9gmYcnDfXBVqJquFZpBAT3M 0.16156013 -fiat/revs sendtoaddress RPbb1A99a3yhaJDmNaiPYtZfas3gbcYTos 0.16218408 -fiat/revs sendtoaddress RT41P4qcQXEMixAv5k7qXWrgp5BdNwJfmF 0.16263799 -fiat/revs sendtoaddress R9jihhHVUo8JPKZrZzkjMSgPB7U9q2w7Xa 0.16287899 -fiat/revs sendtoaddress RDwokS8cWmmzRDtZbJAcMZZWtgcyTXzPPP 0.16327212 -fiat/revs sendtoaddress RFHgYSVpPSnwodMadcUtWfoBHN5ViRH6pM 0.16340483 -fiat/revs sendtoaddress RXHvw891xJ2nvBNHSfCnzB9c2LeH9YUGt3 0.16362076 -fiat/revs sendtoaddress RXaHRTS1EXpUUsBiCZkMq9BVdNRxqRFc4B 0.16590033 -fiat/revs sendtoaddress REYDwmCC9C8FNuWGS4biBax1oPHfJ5JUtj 0.16593133 -fiat/revs sendtoaddress RLQXdVJFqwxXEJzphmMdiGJM6Kp3VYW6hn 0.16636351 -fiat/revs sendtoaddress RBdevGcqKhuFSdZsuWgB3zdzrrD55TwJyR 0.16678550 -fiat/revs sendtoaddress RQB1w3wajPR33xoCiRe41EpEDJzTgFdpM1 0.16821494 -fiat/revs sendtoaddress R9TyFH2po7HXwN52VonAfMiJAGfUNV5f8n 0.16944346 -fiat/revs sendtoaddress RPNQL4daRLnvWNFXAe9EJ5TWu2bFTQCSvH 0.16957754 -fiat/revs sendtoaddress RR3rKb5fZ8cH4m7eE6VdnYqWeTPKMwmobg 0.17070368 -fiat/revs sendtoaddress RVjKSsdk2gMVeBbiAgPtVkvBWdW48wwCSe 0.17193156 -fiat/revs sendtoaddress RRENV78h3cjqjxCjiGG6XszL2XMw7HPKFx 0.17216247 -fiat/revs sendtoaddress RAgPzQGB5gZy7yGRhnwxBy4ayGFx3GvrLk 0.17233834 -fiat/revs sendtoaddress RGQWx9DykjKAunH9KWeGBvA8CzkiNgfzkS 0.17300000 -fiat/revs sendtoaddress RJTVi4xCfYaBLLW7XrGhoo9BKAX7aiMQZt 0.17321253 -fiat/revs sendtoaddress RWAEGGAFCanTMheEbfgGvMoQHHuHfubtWr 0.17381632 -fiat/revs sendtoaddress RA3hoKYvnkBsajJJthoWVL7XhQH8obb59d 0.17407210 -fiat/revs sendtoaddress RQYSJfmoPkWZqWxz9wWdtrU25NdRwrnQ36 0.17434018 -fiat/revs sendtoaddress RNygFjhRSyaFcbvBwUbaUCeFoaeDbTabiy 0.17543083 -fiat/revs sendtoaddress RTTyuoYvkocQavWfUEhMwUaG9YbwADzRHH 0.17558986 -fiat/revs sendtoaddress RE7hhDDP32oNb5XH2QxksFSwS3GHPxa9FD 0.17587755 -fiat/revs sendtoaddress RNBAyNtkn6D3ju9Q3m9p4V9EiL7ZrUQjGS 0.17639956 -fiat/revs sendtoaddress RJhS2TGaWSNghKtXbzU7PKP4QVWWxpD2aK 0.17642305 -fiat/revs sendtoaddress RQ5zLFGwZGhTKbANAbCHaAP1ghZWnv6wKE 0.17663187 -fiat/revs sendtoaddress RSBWqq7HhG2FRTLhMh9E6iVgwDXomnLTiP 0.17675691 -fiat/revs sendtoaddress RKS8KWuAGrmWT2jrVo2xPVWBUYZkhPfjP1 0.17704643 -fiat/revs sendtoaddress RSQcAbMhq9EdA4t9s4hbz4MUyJC36BMYbZ 0.17705551 -fiat/revs sendtoaddress RPXyjRry1yQ3Dtx9t4K17XrfHWAYmWcQ8A 0.17824500 -fiat/revs sendtoaddress RKLmoQhbEsHXc63etuLgyxMAFGLcv8zgpx 0.17831785 -fiat/revs sendtoaddress RJRGvA46WZnzNZ4jEE36exd7bmMBAjXeoK 0.17926653 -fiat/revs sendtoaddress RNUP6oz9qHvger59FyEQjwHyvNZ5Ca4KCe 0.17932964 -fiat/revs sendtoaddress RPRyS82DAvJCX4W1nCBhjAgqoynsPaQaQW 0.17953042 -fiat/revs sendtoaddress RLGGQbFBtsSje6NjaHjeW36MiyvWjLtjsM 0.18244435 -fiat/revs sendtoaddress RM45BMBXyq1uZwoUgwLCMmQkTcj28zmgUB 0.18252224 -fiat/revs sendtoaddress RJzHCaeGfJv6wbDc7kjj7478FKtYSfabho 0.18281584 -fiat/revs sendtoaddress RL7vHeQe1GozjQKzj3qNGCdH9kPEE5LK6S 0.18321538 -fiat/revs sendtoaddress RBVBkzfw9yEEbZSom4Hcy8AknRs5t5JMe6 0.18353047 -fiat/revs sendtoaddress RDYrMk1Nrj59jjxBc3HpoQzfDr4KmgDCUN 0.18633576 -fiat/revs sendtoaddress REqg9AMmtRecBW8tSD1vMmL3S5t2djVBR1 0.18810885 -fiat/revs sendtoaddress RJEJGiaEgn6fyrGotKuckQcAR7XtbJ8Emo 0.18869775 -fiat/revs sendtoaddress RQjRJDU4dKhC4wcRW7FrWGjmMoFpkXEyC5 0.18962646 -fiat/revs sendtoaddress RFpN3DMvqjBkx26mWgX89RqNftjEah4KwU 0.19090594 -fiat/revs sendtoaddress RSfmVra4N54YvtYxBJhrzBS7uD2QjCoNgN 0.19228559 -fiat/revs sendtoaddress RRPE5zBLjXQijWrtLgXMsGLWAfXWMFpG9C 0.19347527 -fiat/revs sendtoaddress RCBrSXf2dgp4wqXEexN2sCCcWPQRxo57R9 0.19380137 -fiat/revs sendtoaddress RM71tknipTMB5FD6r4V99gevEG2Zc28nPh 0.19494516 -fiat/revs sendtoaddress RMMCqv5UvoZY9FnogBxy2qDk8omh92t1QJ 0.19524778 -fiat/revs sendtoaddress RPgVUq5TgzASr1cnf8zrXv24u3qoY1mCys 0.19550145 -fiat/revs sendtoaddress RTaQKFoVJT3erktmwwRANooUErqyhm4DMG 0.19602941 -fiat/revs sendtoaddress RR7t6wVc9x6Te96Gphf3KDUgxbVnbWinVk 0.19740781 -fiat/revs sendtoaddress RK6QcBXJiB5wq4NQpchMiXKvJ1TQHZJSoW 0.19743604 -fiat/revs sendtoaddress RLc294N1j51s4es5ojz2Dv1Pqvt7EEBMzz 0.19761478 -fiat/revs sendtoaddress RKwqnPmJzPJnRSkXf8ao6KozrxoDNCaD6a 0.19894000 -fiat/revs sendtoaddress RP2tciau3K53XS9hdGY5jjvA2K883mimGX 0.19966000 -fiat/revs sendtoaddress RHQi8e7eiPMVqFWY55Ah1aj7bArJQiGjhW 0.19969564 -fiat/revs sendtoaddress RTd5ZjQ77hnAwbRbu4DTnza1p68WPQgcZ2 0.19973097 -fiat/revs sendtoaddress RTdQquZPretS7rA8hPtBPPrEBKhoPvRVbj 0.20021877 -fiat/revs sendtoaddress RCZBsn7Eu3oTZc98wEehF81bVFBnBTGCJJ 0.20078734 -fiat/revs sendtoaddress RNYgqviZkTA9DsSXoLQHA3amafg5YYks8o 0.20080000 -fiat/revs sendtoaddress RMgDF5hmk5omTKo9BLvGSG89ZiSsuJJ2GR 0.20321535 -fiat/revs sendtoaddress RT5UWNNFZeTNzyBk6iXAxVgfzkb85TVaJn 0.20330731 -fiat/revs sendtoaddress RH9aRQL6tT6i8sC268tTfS8QfPoZegyUrZ 0.20348830 -fiat/revs sendtoaddress RXB1kEegs2HkZja9qiZ7QhtBa79ETSiXXr 0.20386447 -fiat/revs sendtoaddress RXZYvDJUrWyQoUTuEoH1HGLow2emh8xxD6 0.20396056 -fiat/revs sendtoaddress RJNBJSfkkyyPnTyZiEc1FHfNQ6hYMUuuDB 0.20678848 -fiat/revs sendtoaddress RTdjDA3DDsMSWHACXqqJkXXAYTBfmg4GsN 0.20708854 -fiat/revs sendtoaddress RR43eBcXkNwtvdGHAwUEgnoE4hDBSjsXEi 0.20741156 -fiat/revs sendtoaddress REyyyMKE5E9iqfz9PJS4dbpjFf47xt4D5d 0.20769133 -fiat/revs sendtoaddress RQgthsRvGmbGvTUGpr9LDpoxRWjdppP6Gh 0.20825794 -fiat/revs sendtoaddress RUp5QowQ3q4vbc88mPAm2fKCUauoWUz3TZ 0.20853377 -fiat/revs sendtoaddress RJxKurEPDoxJkyghZCiPYQdRU66BZKtVtd 0.20856790 -fiat/revs sendtoaddress RE2ADgqMgs5dra9RtCNdpq6ow1reTvVFcK 0.20917925 -fiat/revs sendtoaddress RQM8EfdemZ7vCbyQwTs4P9UJLSV7XykdQu 0.21181339 -fiat/revs sendtoaddress RWjYTYQVsuVtfbHpVd9ZvXNTZpvshhx4nj 0.21270742 -fiat/revs sendtoaddress RM1mrNvpUKCDDifnCNigKrdHApNG2gd1Fn 0.21320449 -fiat/revs sendtoaddress RY6tz4EQhextn4aF6p3V9d4nNoEesbv8KY 0.21390210 -fiat/revs sendtoaddress RMkeFYjuqjJNeX93bgkUWGUx62nd1swu4d 0.21523667 -fiat/revs sendtoaddress RXZq1PNsMaYP3nLsdNh9N2FGGH3YNTpE7L 0.21527093 -fiat/revs sendtoaddress RHiuprGUR4tQKDxQrV959AdT37BLj1gB2c 0.21652956 -fiat/revs sendtoaddress RAtgxUYnWwxwzYgWiFk4TSv47RyQWYtM4v 0.21900813 -fiat/revs sendtoaddress RBcZp4E7pKQQxM69vCSSTapPt2Kc1DuZkE 0.22006411 -fiat/revs sendtoaddress RGZEMZf1U1ke2Z13ambD1bEtWXZBbA7Tnq 0.22081164 -fiat/revs sendtoaddress RLjHbjbf5GNYApgx4h7eEQrXfQk6RE5niT 0.22204010 -fiat/revs sendtoaddress RPHVb6rhSBPY4vqVgjP9YwmHZoWRaevjMN 0.22218562 -fiat/revs sendtoaddress RA4JwJy6WgZ4HY3HaamSsEeo1824YCLgLb 0.22422995 -fiat/revs sendtoaddress RGu5tBr9xsfRgLos3JJhLC6HEh5kVCNaTS 0.22494892 -fiat/revs sendtoaddress RSJwSCpYGnvE8wVz8cC5EqdNQYEKKhhU2r 0.22596352 -fiat/revs sendtoaddress RJF5DCReRLgHgzvcBrUFKnwuSwWDMjNSD4 0.22885507 -fiat/revs sendtoaddress RXVY6k44FkM1Y3WifKjWKH9DHYz8H9TfNh 0.23030000 -fiat/revs sendtoaddress REd3pSVff2vzCLttMz8dQ8xNkrdUS8ruv8 0.23148915 -fiat/revs sendtoaddress RNvFfi4murBj2oYcSECFKTR8UbeSjith1v 0.23156649 -fiat/revs sendtoaddress RQZefEbSXrMDdfBtEwyjDbeZVqbLa7PveJ 0.23225742 -fiat/revs sendtoaddress RJSsNYsiMCqV6WAVmJ99E6eAFnWWz4xP4o 0.23256160 -fiat/revs sendtoaddress RLtRyjid8bwL3aW83BC8js6YdKW78dhYZv 0.23413298 -fiat/revs sendtoaddress RK9fAGqCUZbdMyymBA7zUgtAc48FEcnf2q 0.23488907 -fiat/revs sendtoaddress RLcuqdt9cFFHc8eAXXhYSuekCBCVMMseX3 0.23572531 -fiat/revs sendtoaddress RKrYYe2VoAhG1hNALEq81ETVAd5vH5UjA1 0.23773551 -fiat/revs sendtoaddress RNSXTTAhs9NXjPQSg5sTjAfhmGFKWKakgK 0.24000000 -fiat/revs sendtoaddress RVPuDP49Z4MbhtA3mqfzEjrXqFE4bNPJ2f 0.24049051 -fiat/revs sendtoaddress RD5EsXqQLEYeBJbGBVdK2SL1hnr31RSfsh 0.24067740 -fiat/revs sendtoaddress RXXMPyt16EkLLagVfkPSxj5kcuV7kEqzZp 0.24218447 -fiat/revs sendtoaddress RJBG1DbCNp4RwCMc7b43Vz29yY5QE6f5ZA 0.24248488 -fiat/revs sendtoaddress RHJDfrjK5Tz5TgiQA284RSPnUQzGpzceAr 0.24697438 -fiat/revs sendtoaddress RWQr7KU14VmFkAYH96q2xKQqF9avjadkLm 0.24815574 -fiat/revs sendtoaddress RNMUrwh63JjuLfkKsfzNHsftWixAe1i2bj 0.25000000 -fiat/revs sendtoaddress RLyNDC8U6LfjDR8ypGqQJtE2Fyec5HH7C6 0.25125011 -fiat/revs sendtoaddress RErsXAiSJaKqSzpDunmLQq8DbGLgFQPxu7 0.25196302 -fiat/revs sendtoaddress RL8oGjSNsQLh5E1qS4V1wuGDpxQ2K2jg4K 0.25422377 -fiat/revs sendtoaddress RAvZQJqv4yZJsagR6cee25NAWzUb6GHprU 0.25454156 -fiat/revs sendtoaddress RXbJXZ2TsnwZ2KFVxxJh9FRMHNb5qPnzGc 0.25489171 -fiat/revs sendtoaddress RBbKbC94HzcrLyphbYzQCE5E9ckDpvKfEc 0.25654569 -fiat/revs sendtoaddress RCyZw8VB1H3npL35AvEJz7wVp4ESg4dht1 0.25713243 -fiat/revs sendtoaddress RDntByiLhGB1EdYYR8TJC34pCibDUYJvpp 0.25715857 -fiat/revs sendtoaddress RCEzP3EJ7obNFWUpWZPXL1D13GGhUB3Xs5 0.25762726 -fiat/revs sendtoaddress RHyneB9Lr4kD7Updz6KYCwTm3f83S7CSNG 0.25928511 -fiat/revs sendtoaddress RE3vx44zLGoRrbGnGYexxRdhwWdf2ynTTB 0.25938296 -fiat/revs sendtoaddress RC8naQP5o6Q51kNkm4MB8e6MdKo4Xi6NNz 0.25987472 -fiat/revs sendtoaddress RMX9BPAWr3fQXpistRuDpEgLkhMAY2PLrd 0.26000000 -fiat/revs sendtoaddress RMfs4dU61822wWCWa6iNs7sm2XhC38Jv9x 0.26112934 -fiat/revs sendtoaddress RTLJxiv7tyz3DYSYpaKGvMPsvWsULigjE3 0.26141233 -fiat/revs sendtoaddress RUPt1v2gp4p9Zi8u7eaKbbxRABYkJ92w9P 0.26152116 -fiat/revs sendtoaddress RL8jFGHgD95F6WTYhKmjteDcNecfrsht3E 0.26169661 -fiat/revs sendtoaddress RRcXibdzwAy558ZJLVpUSrbAPihWYgj82n 0.26190000 -fiat/revs sendtoaddress RH36iWDQASVXkNhxBRbETz3Kndp43FD7QX 0.26396780 -fiat/revs sendtoaddress RS6iKiibeGP17BZxZo9gEbzhcS1RZBMJ4c 0.26674839 -fiat/revs sendtoaddress R9QWu717oX5QgMnJWggXeHYFVpVNxsZmnY 0.26770574 -fiat/revs sendtoaddress RMdWiJZqEebnbaBCQZtUm3w4bG4C2rV7ta 0.26945101 -fiat/revs sendtoaddress RBMx4qabuPeuVrHvTah8SP6GQqmmio78HD 0.26964496 -fiat/revs sendtoaddress RJjq3fQ9upqeYPBxGsNJQGutJDmjzgYDCv 0.27112509 -fiat/revs sendtoaddress RKztsDxVL34e8FoDVeAhRDJQSaTF2QAnic 0.27204725 -fiat/revs sendtoaddress RK7Nqryu5fYFGBnAqRu583kfx3Z2y8tbBX 0.27291161 -fiat/revs sendtoaddress RUjWoxQzzW5ou6HJu7grpmCpCBfqFMLYit 0.27389494 -fiat/revs sendtoaddress RQsCPeKdj1Uy28ZBZeTTHUTKiR999ePZAv 0.27638022 -fiat/revs sendtoaddress RAESww9Frk7pwqK8R1b9GcBJeVo5hwRzkA 0.27832234 -fiat/revs sendtoaddress RPdMAieFroZzeicddVKj7dyBtL2xe8SYii 0.27888759 -fiat/revs sendtoaddress RVcY3ri76eDPdFcyV9tEtFJDYnRscVtiR4 0.27935968 -fiat/revs sendtoaddress RDQQ8VLNvDWSD6Z1eszH8TW4Ne9jB1k6uK 0.27985557 -fiat/revs sendtoaddress RRuA8VjcneYcadF9jfQhffMm1L4PvwEH6K 0.27994966 -fiat/revs sendtoaddress RTiwWcUVngsNGUepY1NkcfEjZEEJsPUaUV 0.28178826 -fiat/revs sendtoaddress RArx52m828shc2BMCFijmcf8N88a8EhphQ 0.28240901 -fiat/revs sendtoaddress RTt4NjKeuMdjan3dZsnEW8S5VCccrEohPR 0.28274841 -fiat/revs sendtoaddress RX8FNyFZ7o5xmG9D8y9YjBQ4RdJCQnHXBL 0.28318017 -fiat/revs sendtoaddress RQPxLFeF2TQLWJdEvzXjaDDhPpbAR9vi6A 0.28402303 -fiat/revs sendtoaddress RJEQwfbQHTmJzgMV6xbCiZmofRqS43uCW7 0.28433865 -fiat/revs sendtoaddress RNiz7fYSEKRAPUtfD6LSdBqwNL5m5GUQg3 0.28585787 -fiat/revs sendtoaddress RTKNhAegFH369DGAxJf89hz2Z6A6NRuPHC 0.28705876 -fiat/revs sendtoaddress RBdC1VDSgLuJacCXN4Hftu6Zmifu5j4aTa 0.28727143 -fiat/revs sendtoaddress RFckZYFCrwf9jaA7KK6scGejixAfkhArHT 0.28850705 -fiat/revs sendtoaddress RXm28dJFktJ9gsM33TyJPR6XAvj1Fr7cd6 0.29028565 -fiat/revs sendtoaddress RSaeg2DVN2i8v56cchCU2kmEGfvHz6JCQX 0.29072669 -fiat/revs sendtoaddress RXD8QWpyZyo9axz15B3Ncecd3Bvxep64zU 0.29127681 -fiat/revs sendtoaddress RSLzih3nr312iP9qFWf2qjweBnifw8Ys2e 0.29260000 -fiat/revs sendtoaddress RNovkbiF4diAiPzWrRK3gVo7Z2zxLShUkr 0.29323191 -fiat/revs sendtoaddress RBHW9p7g1fsYVfonknzoNZXekANo3sf1U8 0.29424724 -fiat/revs sendtoaddress RFtxN9zn5M9nx4e67KjNyfXPks3PTqMd4p 0.29482947 -fiat/revs sendtoaddress RWNDczZg1kAsEVBziu7N637H9FEZLTYF7Y 0.29597258 -fiat/revs sendtoaddress RAY4pAYrsURGnXva3AaUdtK6ZJcRMFYiy4 0.29673353 -fiat/revs sendtoaddress RUwFGHDzv7JBRpGpjtKD6S3eJK6wyHgSKP 0.29870389 -fiat/revs sendtoaddress RT83z8wYi1TdcCx5WX4D1Q52hXeXQEAzYf 0.30223687 -fiat/revs sendtoaddress RKDY35mEEC1uAjpoWw9YWivWeeKxx6xLY1 0.30494317 -fiat/revs sendtoaddress bSwNkymByQ7b3N6HWaoVg7JLy5zS7twP6C 0.30499999 -fiat/revs sendtoaddress RLsEaBnJnc9hSxCqUESbBVXcTKf3XGvpMA 0.30693227 -fiat/revs sendtoaddress RY595S1U1iX8rF6gHHMRi2C3tfQpuWxS15 0.30830162 -fiat/revs sendtoaddress RETunvXoMnYNe8Z7tUcr9erwJxD2fnmpUJ 0.30935183 -fiat/revs sendtoaddress bLcFK8Wqb97jD8Axx2K4ed7gHjwuPW3GvG 0.30948000 -fiat/revs sendtoaddress RY73FfWMj5TqeBFHc7LcdsWsp5aVFRe791 0.30958720 -fiat/revs sendtoaddress REJwnjDRwrL9pGzUBHZSzmRBazoA54EGKZ 0.31320922 -fiat/revs sendtoaddress RBmzBCDuvzyB8fbuxdgA5Th4CB6XcBkdAX 0.31332475 -fiat/revs sendtoaddress RNVJ8e2pkehknphkYijSkDkoMBW1LafMcB 0.31379825 -fiat/revs sendtoaddress RPvjhikqKPDeotkMLuqjir8ae49jqzrU8o 0.31394915 -fiat/revs sendtoaddress RVYMqP2R4UAUcC1vYjXiDu463zJ5NDRa55 0.31629287 -fiat/revs sendtoaddress RKqCJsfqLxwnoAVXt5V9s8oYnEqGNenmzU 0.31644149 -fiat/revs sendtoaddress RShBCV9bt1xkJ9FyJPRoU7cdYKjdnuiSSq 0.31723268 -fiat/revs sendtoaddress RYPPi77MQjYWCpRXtJhwCCcdTZwY98JuCs 0.31871145 -fiat/revs sendtoaddress RGXHJzLDkaroLuArRB8tPrz5pKeP26uiwe 0.31966782 -fiat/revs sendtoaddress RPgiYeK8XwqrihLc1vNJ3FR95CHxWaSRnn 0.32240674 -fiat/revs sendtoaddress RRQyi8evLM5YynjRryvzWTBdhCPu58N9Wj 0.32658835 -fiat/revs sendtoaddress RAWjxtmRBguFb6u8ABjx3MRLtMWGgJ7Uzq 0.33173999 -fiat/revs sendtoaddress RJ5hnzcdYe1SUD4Q7futsrxZ7tqPckZYUq 0.33352250 -fiat/revs sendtoaddress RSCeJkPaT5WJmTB4GnqP8LPQXJcMBnbVSU 0.33386827 -fiat/revs sendtoaddress RSK2oFwwcAf17Zo2n9sWxyH9jrkHM2Q7EE 0.33627405 -fiat/revs sendtoaddress bTWxe4WkKzJh4bvBLUxHPMFPqtbDYVQPpK 0.33642912 -fiat/revs sendtoaddress RWKudaVndePxrTvBF1FQJTB1q6v8bkxjze 0.33990000 -fiat/revs sendtoaddress RA4xPewoFW8GCJcoHnk8ELP8bxpiP585UH 0.34156250 -fiat/revs sendtoaddress RPtkYsYS3jAx1v7RzURYRMXDEYSTbeyhut 0.34158206 -fiat/revs sendtoaddress RAwPxnBxGF1ysaKSeHH6ae7LZiTsgurCKR 0.34247174 -fiat/revs sendtoaddress REtH1zTmV4EqwxKMYCgi65uKiypBjDMbAT 0.34281732 -fiat/revs sendtoaddress RBZqkQtCha1BxfstEUzEjQb2rkqEhEJqpz 0.34358294 -fiat/revs sendtoaddress RXWvD6pMsQasUy1wuWZD3QE4QjJVkgmF1L 0.34400565 -fiat/revs sendtoaddress REvs33MxVeW6SaixUbS4pPKZtn1hx9ey7C 0.34585233 -fiat/revs sendtoaddress RSukA6UUV1aTgtRKZB2Dpr62d57iHx5PuH 0.34716255 -fiat/revs sendtoaddress RLtEdfNmbQUxAC2uzuqdBuQHekTr5udBM8 0.34874127 -fiat/revs sendtoaddress RJqXgC5ohrGtHBR8vCsFYAyxL8QWxPMG3G 0.34879851 -fiat/revs sendtoaddress RRokHdU38AhyewGRH2PUC1bx7E8QARwaFn 0.34950649 -fiat/revs sendtoaddress bN4k2yqfykPUkiRbgyL32xbyrFdwWV6UTu 0.35000000 -fiat/revs sendtoaddress R9dLnjKYuo717qXpJYmzs9G6iC4kJWarc9 0.35257905 -fiat/revs sendtoaddress RDcqsnZBe8u2wVkWAaktK2pSaz9cWRbcDr 0.35420794 -fiat/revs sendtoaddress RGxf8rrkMLCcapCSN7k543qBozMfCm4Pym 0.35473416 -fiat/revs sendtoaddress RP2tQvuiT5fFYzoas6Sx6oSBsgwQVwdr3R 0.35544212 -fiat/revs sendtoaddress RUJjc9yBsyZ2Pa52Y6FH7SL72ADh967f61 0.35684586 -fiat/revs sendtoaddress RB39Gs3EQoLrAcWDEHmE1EmqMuVUPTLLGS 0.35730133 -fiat/revs sendtoaddress RWnJoDwiuMDRxUBcTgnKfzVBfCZS8FLGmH 0.35906168 -fiat/revs sendtoaddress RN3fyst7t1K88mAZA9zYdJ7WketQKKsWHt 0.36160653 -fiat/revs sendtoaddress RHvggVZRLorteBGHTSN1YkFnfj4ppp17vg 0.36224119 -fiat/revs sendtoaddress RUYUNdpWpi2x5oEnS9Tzw8midGtKidPXmy 0.36298511 -fiat/revs sendtoaddress RFtJn1sqs8MaicRtLoFwp22f2zNsMEjocv 0.36316573 -fiat/revs sendtoaddress RBtoUFe8SbdzrXZzwtg9uzT4gxk7MAzBkC 0.36324330 -fiat/revs sendtoaddress RMPJKa16tBdx84XySX33sfWucw2eV3UEsu 0.36530616 -fiat/revs sendtoaddress RGT9uY1vhTpV7hVVjBo4brh9BSe9rF1cKs 0.36549510 -fiat/revs sendtoaddress RUs8CTL74agzNXBAyXHVLToizgeCgRcp3r 0.36769154 -fiat/revs sendtoaddress RXawjtPMbpqNbHh5vkF6QUG3hmpBqubM5P 0.36944611 -fiat/revs sendtoaddress RJ6STh1xD6zy2iSm47eCwrrBbmdtf4Mxbj 0.36971668 -fiat/revs sendtoaddress RJdmPpwSbHJiAEohEfnkS9m6CJwG1x8wBo 0.37124084 -fiat/revs sendtoaddress RLnpWFxydeBMMcpyERPyg3FKzyZj9EHxXb 0.37136463 -fiat/revs sendtoaddress RHooE7xbh3jB7B37uZ8NdL74T1Lj4FhaTh 0.37481529 -fiat/revs sendtoaddress RQn9TVJqiCzUY1CNLqUhft2FBX72ye4ANR 0.37654190 -fiat/revs sendtoaddress RBk9pNBETcWt65jYKESwwoZ1DwiC2LMvmt 0.37696260 -fiat/revs sendtoaddress RFux3b17XXemEqQWr6VLtwm9gQnLY52w4b 0.37837273 -fiat/revs sendtoaddress RB339WQQCMafa6mbSvZe1g9bpwTDjPkiKc 0.37897611 -fiat/revs sendtoaddress RSFpEktam6xpAxyau6qbWguN8DeGHK6XFd 0.38627158 -fiat/revs sendtoaddress bEExmZmegALdXniSz1Zpq8ntffif2Vhw7R 0.38700151 -fiat/revs sendtoaddress RCNGbXvefTKurf9ZEqx2o6QeCbp1A7mUi5 0.38722974 -fiat/revs sendtoaddress RXCtSnCYx89jkKAS5SHiFWwueMs9VF1Ent 0.38889629 -fiat/revs sendtoaddress RD5pMf1WowWpmPj1qKPbY93hF8ZjpdveLK 0.39149432 -fiat/revs sendtoaddress RMxTuuicBaiqewGGxda3igdN1PDzVfUCzT 0.39251764 -fiat/revs sendtoaddress RADCF8f9FtG27ywNczoYuDuXecupPGpKb1 0.39321350 -fiat/revs sendtoaddress R9uXQRUJcN36g2YAstH3TZ7jKG6EzXQnGb 0.39685937 -fiat/revs sendtoaddress RPkhFHHvoyPdC9mhiEr3PxsKcTiQudSHnF 0.39778531 -fiat/revs sendtoaddress RBai5N6VLVobF5vwU3BPoaUYLG4ekPj7vZ 0.40000000 -fiat/revs sendtoaddress RSPWuJ1RcELrmHYP8uQ41xmdisQxzkzLD2 0.40218847 -fiat/revs sendtoaddress RJ38w79JgWGjjbQK9dCXHHofmA7JraEYyy 0.40310628 -fiat/revs sendtoaddress RCbr11w1zECFA2CfVab5Zxa1YJEKmG9ReF 0.40328548 -fiat/revs sendtoaddress RXC86jAGzBWmi4S7QexXkYZgNFpZnRAivt 0.40595567 -fiat/revs sendtoaddress RXHSibSiVFR6392juShWLntzSgezGxXB5j 0.41187419 -fiat/revs sendtoaddress RFbQqD1g8dRtJnud2RXAz6jiP8eBuMghN3 0.41324060 -fiat/revs sendtoaddress R9zJmpbo9E8bYF7kvYcKEs8fwHC5Rd3YGF 0.42165335 -fiat/revs sendtoaddress RKRMjMSxeCsbkPUAkjfTrcSHzg8LCeiT1E 0.42197322 -fiat/revs sendtoaddress RFGWcXoZZzUwrixWps4KzKRUySm23J4oqK 0.42494012 -fiat/revs sendtoaddress RKgNW1cNC6akxSg5zxTGTFahLKTiS5CCBc 0.42578577 -fiat/revs sendtoaddress RKamoBTmmY8ysnpAK7FCRbYx53HiLaPYcy 0.42679142 -fiat/revs sendtoaddress RUo45wtHhg5rDfwR4kYJFfZHbVySBsiPHk 0.42695792 -fiat/revs sendtoaddress RNwBnuN5DnFzYaDMqDt2k6GovQmhMyEA75 0.42886173 -fiat/revs sendtoaddress RAtKXVuwQf2reFG6ibrTrzSKA54fdxUPkZ 0.43219422 -fiat/revs sendtoaddress RXrYWrhmkykd2o8SySDjMyqDdViZLn53z7 0.43296655 -fiat/revs sendtoaddress RWQhXBmhLjjCJJPcbxoe1gfpDo1U7W5BVm 0.43611711 -fiat/revs sendtoaddress RMrJgJEFD8XPCEAL47UfDQ1PLAHSnHPzNS 0.43935272 -fiat/revs sendtoaddress RFxVW63efm7kAo3ygRYQrKpTBTaMffTEe9 0.43970000 -fiat/revs sendtoaddress RGNLNmwxWEmySGgvU6rUcXmJChNiqyusMo 0.44203947 -fiat/revs sendtoaddress RCyzUdqoeiuAutSj4vE8ePA1EMEHsyFazo 0.44218863 -fiat/revs sendtoaddress R9ed6we2o3Qad1rtr8STVfd9iZccjWiwWV 0.44679748 -fiat/revs sendtoaddress bQoJ6GKTQKvdWS7zDcQ1sQuD9YCp9DXSzk 0.44730743 -fiat/revs sendtoaddress RQPzuBXSpuVrUD6SfJzuSqURBDnnQ1mJv2 0.44749057 -fiat/revs sendtoaddress RRKycwZG3mcAktdqw2Mf3bYQ9Pxu2sAg9x 0.44803809 -fiat/revs sendtoaddress RH9BB8jKor3jmqYezUQYURciPyXTXH48CJ 0.44852680 -fiat/revs sendtoaddress RULQ97X9zBTUYUFiJWgqWVRjbqVG2ZJXSV 0.45030175 -fiat/revs sendtoaddress RJw2RHFJTNYz1a3rWGY53wpLscEedGSkB5 0.45097780 -fiat/revs sendtoaddress RWiXULxYj7ymikHRm5oTzV7gRvUm7Z8rKp 0.45132451 -fiat/revs sendtoaddress RRzH1oKk8AjtDT9hVEMNv2bKWvqSNpAmBi 0.45360277 -fiat/revs sendtoaddress RBTckx5qPn6WvLAmUJMeWBdQxmuqhPfhfC 0.45462838 -fiat/revs sendtoaddress RJG6w3SUToDpAz56mWHQH3myV3UjGonTvv 0.45551268 -fiat/revs sendtoaddress RYAM1oN7X2c5haq3ndgaxCoeauji1oCKSm 0.45660444 -fiat/revs sendtoaddress RJMXgP963XYFNtzRkYS9oGc6RnBXjBnV5y 0.45932301 -fiat/revs sendtoaddress RLkn3E26ZLfksgAqK5GAoZ383JWeaYdCNN 0.46206448 -fiat/revs sendtoaddress RPUGPxPB7k94Xce4AwSAXi4w5UpXc1zu1B 0.46740853 -fiat/revs sendtoaddress RDt6VJ2zZsCx6MLoGVMLMQihugnEry3q2f 0.46789972 -fiat/revs sendtoaddress RHaaDVbTUqRxHLEm4SjzyBzgu4xBG4Noez 0.46795546 -fiat/revs sendtoaddress RXE8NPASYrPv79Nx7VhSUMHNr8jjSRhPL9 0.46800567 -fiat/revs sendtoaddress RTbZ79PQSwVYQcmtvdGcursArnyr9u8cJ3 0.46871821 -fiat/revs sendtoaddress RS6pLSZw2K6BDuE1fJ3AKRg8F8f6A8KtZz 0.47176376 -fiat/revs sendtoaddress RGbWLYTCdHEy68jKR6otC1GDAa6a176Mhb 0.47354920 -fiat/revs sendtoaddress RV3shoCfdXpuBcp5B7pYS3vH9HGVcZZns7 0.47470057 -fiat/revs sendtoaddress RTYy6ByQS2JfG9ouW2X7RivfzFHJXk54sw 0.47902502 -fiat/revs sendtoaddress RWzbLxBk36W9BJAVW5vZesVjSXdZNgXpUN 0.48089630 -fiat/revs sendtoaddress RVwPRDkUtEnAUsR3thLUzbimigCXKTTVsL 0.48531213 -fiat/revs sendtoaddress RTAJneAP7e1U17QPM5qPT8xrXxNCiMBHbw 0.48864480 -fiat/revs sendtoaddress RGMQykbvyJ29T4f6Cgjuhw1ACiTsr7SYNF 0.49149086 -fiat/revs sendtoaddress RMnV6VzbPzkoe7hgghm6n5QK5DRbPqDSEc 0.49780000 -fiat/revs sendtoaddress RQ4LwxnrrmiZUnQFHL4ph3awkjHfXJyLur 0.49898133 -fiat/revs sendtoaddress RTC7PsSYXVeogGigZQoEz1qkmhLm9cE6YX 0.49990000 -fiat/revs sendtoaddress RUX31MZQBfbsynJanhFCtH926EdMyX57NZ 0.50000000 -fiat/revs sendtoaddress RSrWLPZ4MjEVXHpatfNF4vuX3EvCcXtn4W 0.50019199 -fiat/revs sendtoaddress RT3suBgfnsK6Ben6BCXdUBnp7zmRutAsAh 0.50019313 -fiat/revs sendtoaddress RKWj3kgjm2ptNceePqtS6bTiastT8NgiX9 0.50270000 -fiat/revs sendtoaddress RCfJAHmFMWcfupEUmqAgBnD5V47qVEPY6x 0.50446411 -fiat/revs sendtoaddress RRXMJvZiYBEFLwVZibMm1dGGG1vtwcymH6 0.50463307 -fiat/revs sendtoaddress RXLpuRvssLLiQvLy7gnfovMjU3jbpuj2xM 0.51049442 -fiat/revs sendtoaddress RJNwP6ntGeVehFiG5kAK6q1x6bktyMsWK4 0.51153833 -fiat/revs sendtoaddress RXmTUtb3F67ecqTyP6m2t5sikWkqmX9ZcM 0.51507306 -fiat/revs sendtoaddress RKhbLRhSaAxDNc87b1yFgRzzRzynxiqzmN 0.51651298 -fiat/revs sendtoaddress RTdu1oNB3fYpmzsLqRrZ4r3DYpnhCzuMew 0.51660342 -fiat/revs sendtoaddress RPTQiCxhNuPwZyg9y3F3iqHmb8w1PgRLfV 0.52262459 -fiat/revs sendtoaddress R9p7XpnfCWzCCBQy5Lbf2pV1yEPZbrUszg 0.52277698 -fiat/revs sendtoaddress RJSYPTJh3WU6jusr3nSTWdNKEFPSWCrmMc 0.52340316 -fiat/revs sendtoaddress RAKRvmJfWdQ6CXTVnhx7HRtJBcFXWaMqgr 0.52523992 -fiat/revs sendtoaddress RV2p6GcrmgQ4TRxy5Mjan7J41oZdpzJ2Ve 0.54346878 -fiat/revs sendtoaddress RAhbdHeuazcyqz1tgLSYnroZFkBJhQyTmD 0.54459796 -fiat/revs sendtoaddress RGvH7jZCy2WYZGndwgngAUUzuxqMTa9f51 0.54459995 -fiat/revs sendtoaddress RAUkzR9FuetpZHPkBBEsF4Ej7psZYVZVZc 0.54663470 -fiat/revs sendtoaddress RTiwuTKJuRDKgYcEhZxAagfbKeTasG5bsh 0.54864768 -fiat/revs sendtoaddress bRYAfqJwjMKJbt2o2TUAqUZSpnVWhz17xP 0.55000000 -fiat/revs sendtoaddress RUgR79b53p9zk5JseQoAUCfzXUnU1zoio9 0.55177606 -fiat/revs sendtoaddress RAo9b92t6VKs2qcGrEJMLr84mqSD65ovFR 0.55533996 -fiat/revs sendtoaddress RKuUUfjNzpL9Kgw41NBvGRz7VkEoVHPMse 0.55720359 -fiat/revs sendtoaddress RJtCWJEFBxKAzVzzcpdU5pFMbmZ61QQ16b 0.55892099 -fiat/revs sendtoaddress RCKErCiGE1Dpbzggt4NkkGr4ghrQP12fVd 0.55951196 -fiat/revs sendtoaddress RJRM26mwejqj2GVCs2XDAoxp7bWGvgT7HX 0.55964827 -fiat/revs sendtoaddress RGEHH4cCFrriVgnXaJDdoLWfTZZ6HM2CRz 0.56039437 -fiat/revs sendtoaddress RLPQnbh9N8sVgoBxXrrHFwXYye9Y9S4yJB 0.56071189 -fiat/revs sendtoaddress RNZskVCSB77baRgKTZnheispLUkXuKfP14 0.56611665 -fiat/revs sendtoaddress RBvw9qBdF4xC11B2fBJZdBWa7PU7sjgBGF 0.56692672 -fiat/revs sendtoaddress RAgVqCNsZaY9rL5y6hP3znScvuF8z7WpX2 0.57000000 -fiat/revs sendtoaddress RKfMP2Xz6LEP5V1ZStq1hZF83ixdaXnByc 0.57187545 -fiat/revs sendtoaddress RCLeULfzbdqgi3Vdde6mbonXryckHPpVNY 0.57439595 -fiat/revs sendtoaddress RGUhK8p7kXkRPxVqsfdUm1vb8MBiyGvNMU 0.57784799 -fiat/revs sendtoaddress RFAYPdd6nf877NhEH3vvPxzyocnJ8UvBY8 0.58006444 -fiat/revs sendtoaddress RNfWLSnWB1NFMJm8dLPoS2v2XrG6VnUN6e 0.58227983 -fiat/revs sendtoaddress RJE9gydUaQ5Axt5D29phUzLhjN9Lc9Uu5e 0.58352396 -fiat/revs sendtoaddress RXNePh44ka1z13hVqsChSy8TcEtuGmiqh5 0.58570000 -fiat/revs sendtoaddress RVFyinPqbJ6j8kMXbLVPJJn69NsyCt7Wpb 0.58608133 -fiat/revs sendtoaddress RVt6J7CrFhuEXuJJE2jUpi6SFNBiVKxTja 0.58793750 -fiat/revs sendtoaddress bQnJU3iQgSUH3tmQUAoWJQ9t7BHMbdawjw 0.59026090 -fiat/revs sendtoaddress RMnBGZooFXbd3m5XSNpWxtv3YExijZsSZZ 0.59217095 -fiat/revs sendtoaddress bMBwHFaGbmAbq9reMcyt7UH5mHtHeatPPu 0.59303242 -fiat/revs sendtoaddress RPZXdQNpoQkNZqCD4Vqic2Mw5sqdDHbPht 0.59359911 -fiat/revs sendtoaddress RNpYbPWMDwvxW6yEn3BWhSEqfodpedDzDZ 0.59528627 -fiat/revs sendtoaddress RVMMeKr5inTkrNHV7dgw48X1CR55CmN9Ax 0.59629831 -fiat/revs sendtoaddress RPkifP4ujr7xm1W4iV6thNBt1wen6qaCDE 0.59651124 -fiat/revs sendtoaddress RJwXHEQgFkHxscggYXERKS1PWdK74QaoCT 0.59825550 -fiat/revs sendtoaddress RUHWSzBpc31vU2TU7BSRd6QngHR6iVyMac 0.59987352 -fiat/revs sendtoaddress RBoPpQkKEbYCzFvGmxT6vcWq9MriigAhy1 0.60150583 -fiat/revs sendtoaddress RT4Zikaqm3P8CNcYkFJ982fE4raZ9rZs6Q 0.60260307 -fiat/revs sendtoaddress RJfMmy2oEBvR4VNdUZYyAbWGLyDBMPDmNY 0.60450640 -fiat/revs sendtoaddress RTatBWrgpXYvJA1tU3k4RiH933Xatx11iC 0.60551278 -fiat/revs sendtoaddress RCbvP85onRMPJ95J17o6btos5w7ApjSGyX 0.61001707 -fiat/revs sendtoaddress RSZp6dg4YS81XHessJzFqBV4eaM3cULTCB 0.61500780 -fiat/revs sendtoaddress RBeHZMXcF8H1CXaqKKpzqj1sagTDQt9Ufj 0.61511031 -fiat/revs sendtoaddress RN8NSSZqESBePrTvXJ45ApsFDeotGFLMvU 0.61598538 -fiat/revs sendtoaddress RNfMCDHEEQDkHcSXd3RXfK54NAGZFwV974 0.61895079 -fiat/revs sendtoaddress R9e9mLsXRRix56S8u4HiJPNvF8noTyk8ER 0.61930693 -fiat/revs sendtoaddress RRdTJJ9VN4Mi5c4tubXyhN77qRVv1DT47H 0.62324058 -fiat/revs sendtoaddress RMzAxFcBi7TzPwxRefrteto1q7m4CmobEs 0.62925700 -fiat/revs sendtoaddress RQYzKZ7r2uKPKXTDFZVktLv5QAuijEfu7n 0.63060764 -fiat/revs sendtoaddress RLnqPBWMRmC5iwBGoqgWjXCinjBD6TquGC 0.63063433 -fiat/revs sendtoaddress RK9oAxorBNdQw9fwEoGKt8UXWhgf7S2zaY 0.63171999 -fiat/revs sendtoaddress RKRaFcVn6kYoQHmuRBzamLKNshgWw9SnmC 0.63193349 -fiat/revs sendtoaddress RNnjcXWVT9vaQEpobf2rNduR3KtHfcbwPh 0.63268021 -fiat/revs sendtoaddress RDz28MiFiKVZBgzTqcSHgmA3Wyc3ULmzpB 0.63282719 -fiat/revs sendtoaddress RSJH8nai4Dy7WATfnzjtbtBfs1amReJ8jB 0.63283721 -fiat/revs sendtoaddress RWahfEL3BEeJ33yUtWr766PMTEztPt7kzM 0.63439708 -fiat/revs sendtoaddress RRh4qoEXJzrzyaFENpe3Exb8j4UNbaXLQu 0.63557692 -fiat/revs sendtoaddress REgDgR2epgdc8P3XaGQ3S1nKyfg7qzBrCs 0.64100805 -fiat/revs sendtoaddress bbGihDgrR8kNrDspfSvb2wrPgeha5tcYgn 0.65008350 -fiat/revs sendtoaddress RCGX2We6w46WKkyF6Sa3hsU2ze5NZD4QwE 0.65496189 -fiat/revs sendtoaddress RDQPkMLqBZzksQCfKea9Qmj3pK5Yo77TyM 0.65592269 -fiat/revs sendtoaddress RGvFVDkfBzmZdqhC2gMAv8BvYA9Ns2b7ed 0.66496969 -fiat/revs sendtoaddress RCGAXoo9TrWinswd6HD1sZtGevREoGS8vQ 0.66776372 -fiat/revs sendtoaddress RYYR9oKZbVvLZjgr5rXUEdXVaieSeHyHhs 0.66877829 -fiat/revs sendtoaddress RJU7oYuwWq9bhs8ivvMQNr5MTWDvvWc2Ni 0.67497978 -fiat/revs sendtoaddress RDftDKVhoZjjJRMozhakANUEfwGtt7bJVS 0.67722319 -fiat/revs sendtoaddress RGpwweDWRGJCvhNvjyTRiTb6UAMVZzhSAA 0.67899046 -fiat/revs sendtoaddress RMtFHpJTNd8QKV8XjwPJKeLetY3CKtC7XZ 0.68603823 -fiat/revs sendtoaddress RHZ9LESPxQRKwN3nGPXb3cx3Hh6cqZhhvp 0.69080885 -fiat/revs sendtoaddress RBSzeEYQNFg56UmLCY6hnAwZojAiaezRfH 0.69536624 -fiat/revs sendtoaddress bHXMFhYDCHtZdDyTu7zircnUGgEvVwa8cm 0.70070000 -fiat/revs sendtoaddress RD9shySmNDPVgZpdiPRXwEgr9q9r7m3DnM 0.70143377 -fiat/revs sendtoaddress RLa5pyy8Z7Y8wket1KdtMmntneZaZD1HAw 0.70195184 -fiat/revs sendtoaddress RUBFNkH4SU5BbnDW7vLXDB7vVBfxRhTFMo 0.70627649 -fiat/revs sendtoaddress R9zTJMwbFkHbQJ8AQKBDtNJipsWSaTixJF 0.71567057 -fiat/revs sendtoaddress RUF9JpBQBjm8hX8a8gBGX5G8hHn41BemSk 0.72223244 -fiat/revs sendtoaddress RAWzJ9UFxQ2SYVzdxouVk8xVpS9MDhjhL9 0.72714154 -fiat/revs sendtoaddress RDy6amUyjSRYZ5FuaFHvRhExgspJdPbWoE 0.72819413 -fiat/revs sendtoaddress RBYGSLwNXEZujSYAxmGERjQwiCQ9FPwNHD 0.72951688 -fiat/revs sendtoaddress RQYjo7V2xC5zDrJVyNG1G768thHu7ReWYa 0.73914089 -fiat/revs sendtoaddress RDGi3CKdYC7h3cqXFTyd2xPkTVkwza83aw 0.74195886 -fiat/revs sendtoaddress RMXQboydjwDc9WaFmTJo9dnC75PdkqJ6vg 0.74323366 -fiat/revs sendtoaddress bQdRPe3ekvYCBG8KekVrvUmTaYkZv9m4Qc 0.74496448 -fiat/revs sendtoaddress RGfvbWMVJyNXjngMjg4P7iumTzS2LZuj8z 0.75260000 -fiat/revs sendtoaddress RCwKP4BYG2UsLM82Yz6kZk2JNoMyn2MfhN 0.75315497 -fiat/revs sendtoaddress RRD83thMA4J68D4MKN2Mw3zSDWUupmGx5M 0.75342004 -fiat/revs sendtoaddress REXSJz5FowxJKbv8sEkR3DXsTNbCsW3UGC 0.76267102 -fiat/revs sendtoaddress RHWsRzVY5ySEJw6FZxZQ5yXr5AV6ip59xY 0.76430989 -fiat/revs sendtoaddress RYJKGJA5UmycWrb75riQ2mf1KfWydQq7vE 0.76841293 -fiat/revs sendtoaddress RDZSofqrUSJDuL2CpnsrbU4nbxM4vuS3dz 0.76895546 -fiat/revs sendtoaddress RY93wjQ2uk1KDCKzJ3S7GYw7gkXbtXYBJy 0.77005601 -fiat/revs sendtoaddress RVXNV7CPNyP4M3Tk4nfJBegizZXwh8xkoC 0.77282719 -fiat/revs sendtoaddress R9HqjZqiMGGpkPGFU6HD7QEPqAJPJMF6rH 0.77411655 -fiat/revs sendtoaddress RNLSsjipadvowQFn8SV4ca5fBgSV9qkCLq 0.79142849 -fiat/revs sendtoaddress RRReKhh6yAvhcpfcRfmmj3LRrYitQoV3e5 0.79980000 -fiat/revs sendtoaddress RYXDYC22RagcThHYwDhRtPBP8b7aEkVWCr 0.81222721 -fiat/revs sendtoaddress RMct5h8MZD2NrvMjNtNiWAinz6TssPEY45 0.81632669 -fiat/revs sendtoaddress RHm6SJyDmDtWWvStivfnsVnHpHwb5EX6eR 0.81827079 -fiat/revs sendtoaddress RMUconPnAq2WFnZF8WAb82ytkNEsGQ2JHe 0.82454518 -fiat/revs sendtoaddress RSQv7qsTfTdSUVnKkSexC5iLwWzy3rKRco 0.82459305 -fiat/revs sendtoaddress RT1mX8BxLe6mGr1C8kqfxCck75LphHq7UT 0.83208787 -fiat/revs sendtoaddress RNkzXSdS3HVAjwEp8LKZCWUnqm9jTQpjzZ 0.83414945 -fiat/revs sendtoaddress RN3VzRoL19B9sibkABvTmdi2KvgZyqr5ge 0.83537405 -fiat/revs sendtoaddress bSZTbcXWAJssCtuPWG3YxsXLB8aAfbGkNx 0.83749020 -fiat/revs sendtoaddress RSuRhSZzRM7tfgU8UVu9wT9SysyB4m5Yxo 0.84142909 -fiat/revs sendtoaddress RMjA9XDmvSvhJk3E9daKruxcyvwomL6tbx 0.84213149 -fiat/revs sendtoaddress RCKcLWLKWk5s8niR1LuFavAsRDGFm24uvi 0.84791791 -fiat/revs sendtoaddress RXa45NtQ3oyouE3eCSmtwXnHEPiyqBqEvU 0.85589805 -fiat/revs sendtoaddress bHp6LRyqf4bSGVQuUwCjwL7c8hekkH2i24 0.85641234 -fiat/revs sendtoaddress RPkFPijnAdb3jaRYWZTVb83LUaGBcaWsyV 0.85688004 -fiat/revs sendtoaddress RYYt7yrUC9YMVvMfT1jWmybRttbFnWs2wD 0.85720926 -fiat/revs sendtoaddress RJVobQQuepMNJbPxsDTQ48d16SvJst7Wv5 0.86182115 -fiat/revs sendtoaddress RJXEoYyaScL7ZzVjyKRvGiZ83FTCTbVYdT 0.86269514 -fiat/revs sendtoaddress RMHVtgX7Yfme6VikgLnp43CHGEoRu5wgZH 0.86499417 -fiat/revs sendtoaddress RPza9dmNCekRW2nbR19GwtQRYPnPgpbYiQ 0.86709075 -fiat/revs sendtoaddress RHKMFFVSNPXPVpyGFYG6Pr6mxbSRAiYsFq 0.87148787 -fiat/revs sendtoaddress RGx4re8EpFuEP4EF7do2MjxofaKso7sgmj 0.87460907 -fiat/revs sendtoaddress RCzGxpVWtHv19qXWbbZsnU3iJpsYthV3n5 0.88173875 -fiat/revs sendtoaddress RSiWUkd5EJqKB67kGyu87USMes1nnhsNMw 0.88193954 -fiat/revs sendtoaddress RWMLVjTPNnbBzkXPoEX1itgKgGKQfpQu2U 0.88221524 -fiat/revs sendtoaddress REKM8VbTD3qSkpJsX6NSBy9yeE3k1V7RdC 0.88350367 -fiat/revs sendtoaddress RRtwiRd2dVqv42ttcrxkz3Um6PDCiea8Vp 0.88828024 -fiat/revs sendtoaddress RJqpGXuYPYULTXPryxmwJr78Cjiy6Domy6 0.89088385 -fiat/revs sendtoaddress RQaqBnifTPLrmojZsQvbRss3Z62XzKvkcf 0.89158334 -fiat/revs sendtoaddress RR7rR59u3NYK1zqT8tLg6dv1ZadKKbkTUa 0.89236842 -fiat/revs sendtoaddress RUrPKDngLmNnE788cnF6TfV79d2wZqyZrq 0.89680237 -fiat/revs sendtoaddress RBo2FPU5vvJ7oo6E5gDPgopX9sGWorSRGE 0.89780314 -fiat/revs sendtoaddress RHdHQT4y2EArySery66Cw2vSa1u3CAiMTN 0.89805340 -fiat/revs sendtoaddress RTxpGtYmMHJDuhcgKjJmKFb2DmT3KAhymq 0.89830000 -fiat/revs sendtoaddress RWpLoeTF17e57h2dztWjVtFiPGJN68oWwx 0.90000000 -fiat/revs sendtoaddress RRpGS3w4PdmCXh9XkFZBTDSLTND4SvAo6z 0.90346661 -fiat/revs sendtoaddress RWCHKHsLbTqDiCYf4GHBdXpRUTd3MCfEpd 0.90552284 -fiat/revs sendtoaddress RLz8ZqeDkACEUy7FTCwRf8WxyoNcfXWEHH 0.91807110 -fiat/revs sendtoaddress RJ2CJ2iRk5FkMWowFGqHjfjywkE7q8oRGe 0.91849096 -fiat/revs sendtoaddress RNHhWScb5GSjjdCq4xzj2mVV2kc5iPPiUf 0.92014146 -fiat/revs sendtoaddress RLAjuRuMRVmFpNZfCCBnJaJxJ48QKMsUGK 0.92660071 -fiat/revs sendtoaddress RG3KZ4r8VH8pSKi9UHZ4rDSFK2aeMqw7gW 0.93268277 -fiat/revs sendtoaddress bTXkkXKeiGYvHL1GUnPxZuYJopVEFZd64g 0.93290367 -fiat/revs sendtoaddress RHgafK4M7eWGdaGZX4dJ73nBbQdT2Bzzhp 0.93314542 -fiat/revs sendtoaddress REmzcTzCAST8T9wsbYKv7uMVZSP2hsGzJx 0.93706472 -fiat/revs sendtoaddress RFhWcxfnA7DueEGgqfDu8r3Trgq49MpjbB 0.93912909 -fiat/revs sendtoaddress RVKs86V7ApAQKL4zy8M5Xfhgp8tZvsHxM8 0.93950000 -fiat/revs sendtoaddress RWHdvoLYvqBfdETrbDakSQgS11vvQmsA79 0.93985910 -fiat/revs sendtoaddress RCUt1M75bE8aafxcmfiauZmJRiVq9WpJi4 0.94011953 -fiat/revs sendtoaddress RVq3BeZT5MNKxV43aiQoKzY9sBnibuxmfr 0.94149132 -fiat/revs sendtoaddress RLkDYw36bu4RZCMt5n5T5z5WFLLqjZwWKz 0.94374984 -fiat/revs sendtoaddress RMQd53s9DECUXjru3VY8JWF2wt934nZB2u 0.94616033 -fiat/revs sendtoaddress bTksXHEctsgfZce41UFGLyxEDJwLu4LK2D 0.94669999 -fiat/revs sendtoaddress RSdaqUhMAGnXCxkQ7vytBFBLEjZ2VZnuBb 0.94890005 -fiat/revs sendtoaddress RXWPpcq463fp6YBTBMjNZAW4WCmcuwWozB 0.95195119 -fiat/revs sendtoaddress RVNXJ8sjbNMBWort8MadpiKqxPLAv7m3Yo 0.95359617 -fiat/revs sendtoaddress RPY7DPHaNjirXQ7ed4VqBW7t1Fs23i9ddp 0.96037622 -fiat/revs sendtoaddress RS32mjEnvBEL7yDEmMG3o1azWrsWsh1hQn 0.96999512 -fiat/revs sendtoaddress RQnSgGmjwidCsEPJg6SKTKGhvusbAMQSmz 0.97446572 -fiat/revs sendtoaddress RJPd9LAS74JPr9sKnp33fPvnNGoRWRpEHH 0.97580539 -fiat/revs sendtoaddress RP5CoAdfcXGjQ6ntZt2tRLBgAYFoeXfBRq 0.97660169 -fiat/revs sendtoaddress RWuJ2dffPPT5d3T61EbQyZoepnzz2e6iDF 0.97685052 -fiat/revs sendtoaddress RNDFBZTwMLJW874D2c7igyQjtVBaoxhrpy 0.97960000 -fiat/revs sendtoaddress RKpmRtyoyTPXsF5eTXdtRjT174Ay2KVwqt 0.97998047 -fiat/revs sendtoaddress RVXDvFT3VjF4zPJCFh2pC8v7Z4dXZNL9oL 0.98000000 -fiat/revs sendtoaddress RMjND2koLqq1Rg8Myf22vjDG9N1mSG3L6r 0.98111600 -fiat/revs sendtoaddress bKZTeCjSGtbzXBpYfDmRhvDzymdMixpPxN 0.98239995 -fiat/revs sendtoaddress bLZ1tuXsL9ZxBmSTKRSmHGbsavEKhKtS75 0.98758993 -fiat/revs sendtoaddress RUM3yAsy79n7dJpwQfWugBwxKjW663eMZF 0.98829757 -fiat/revs sendtoaddress RB61928CWBstCvJjkDdV4mdbtRVWJgc15S 0.98918912 -fiat/revs sendtoaddress RJdY4BfYZgsEC8WS1cRQ3hh8L8qGShBSuZ 0.98990000 -fiat/revs sendtoaddress RTXKNvGReDoDwk6KcknJXtuhivRjezyYHu 0.99000000 -fiat/revs sendtoaddress RXrsUcqB7kEzAicEdSJMnKRFbeR1rd2ij1 0.99316451 -fiat/revs sendtoaddress RF3KUa9jezYLhc2MvHXdvmRkemssM6Db8q 0.99408000 -fiat/revs sendtoaddress RBfyFdGbeE7Zt5JV6Qv1ZKmzy1Nmbp9dUB 0.99536917 -fiat/revs sendtoaddress RN4aS41pmQdPVFe6V69NbFPb4e75zPDdmP 0.99641004 -fiat/revs sendtoaddress R9PWqnxTSp51BdC4Qov5FzLXQ9Ezh98J8h 0.99742866 -fiat/revs sendtoaddress RJpfoSkx4RpqiXQeiX9fKquVkYZeuQeJn4 0.99820489 -fiat/revs sendtoaddress RNExSSPF3JiwBV1T7epbLPMyTZBohmLQdk 0.99900000 -fiat/revs sendtoaddress RQK4mc7ZySXtQ6EweC4r2fcCdBTvsZqDc6 0.99960000 -fiat/revs sendtoaddress RHKuo8pMGLqucswHfjpVrsG6EWUKDYNjZC 0.99990000 -fiat/revs sendtoaddress RT4e4DRn4mKEYenw6BJTA17851Zpw5kY1U 1.00000000 -fiat/revs sendtoaddress RYXNNwhn8yWRNkbAdUCEBSvqUcTivqxUsF 1.00219032 -fiat/revs sendtoaddress R9TgGaoE9Kvb1ueqBH8Px5XHAkYiKoTqQH 1.00235226 -fiat/revs sendtoaddress RPsvT7SkSvCSeGG7HQaXhABLGn5ZTMmrsi 1.00323306 -fiat/revs sendtoaddress RB522aFX4HZa8FG3uQkp8iN9Wu6aCN4Tfz 1.00438063 -fiat/revs sendtoaddress RTrnP43t1WyXSuyVU5hocNThZ3SHDVehqZ 1.00492821 -fiat/revs sendtoaddress RUK99xTisiQXLxeGd1dthvnMDU2vRdv2sa 1.00506510 -fiat/revs sendtoaddress RVZx5sSoM69dTriw3h5aPHYZCdbyMbrSWk 1.00520200 -fiat/revs sendtoaddress RB83thrZiTF7E5CtuEufz7y5ox7FiZPv9a 1.00533889 -fiat/revs sendtoaddress RTpRFdQuweU5nGqror7Hh98agPt74GM2FY 1.00533891 -fiat/revs sendtoaddress RDXhENQUVE3xZTWRMynBfay2ih8PAXYQPv 1.00561268 -fiat/revs sendtoaddress RK7DnD9meJHVFRMYHQhHSbcRujbiLq1Hr2 1.00561269 -fiat/revs sendtoaddress RU7qaDDeCW73DvFgEobUUr7S5ZLNjyk9ws 1.00571268 -fiat/revs sendtoaddress RDt7LuGsu46DqyVLrzBmP6Bem2G3DMfC3V 1.00574957 -fiat/revs sendtoaddress RHNocz18MS4RvUGqm2rGZRK5NBSMmfsob1 1.00574959 -fiat/revs sendtoaddress RSMY1xDJm6NJWjvUKWgTTPWJgxADq29Avk 1.00588646 -fiat/revs sendtoaddress RR7if8S9HJc3NzcKQwskj1r3AkF4Qq3H4t 1.00588647 -fiat/revs sendtoaddress RAsqCgMrAxA2E9AkNB4wP3HakCbMsCam2N 1.00588648 -fiat/revs sendtoaddress RBfUQwZEU4nGBJcb4CgjohhE56r2FBj6js 1.00602335 -fiat/revs sendtoaddress RCJ4iPHQYGxbQBr2yrSHQDHAHmoJcNq2vg 1.00602337 -fiat/revs sendtoaddress RM6pXaUi2VVvE45pPSLkg7fTDgZiG3ZMeZ 1.00602338 -fiat/revs sendtoaddress RGJd7kAJZukbGSejFzfwa54V5BL66wK8Bg 1.00616025 -fiat/revs sendtoaddress RGaaRsUJXx935dC9TFHHSLBjDe4SLiZWZf 1.00616027 -fiat/revs sendtoaddress RMdJBwoRuuFRk8fvtzZG6YjCcrw1zpygpa 1.00626025 -fiat/revs sendtoaddress RPEWGCJ1khGbfggd1GVFVBpBVcvoKziHsj 1.00629715 -fiat/revs sendtoaddress RWibUtwLfz3y5k6b18KZCxMNe8Rh3K3ZZ5 1.00629717 -fiat/revs sendtoaddress RPsFft6ce7VExfwrAk1pDbz1dRvmZhjXox 1.00643405 -fiat/revs sendtoaddress RBaTVtWAJBRWLrwoLJqJcaW2RfKnykGYsN 1.00643406 -fiat/revs sendtoaddress RRx7phckZykXqzrMyuLZML1dkYGdAqt48S 1.00653406 -fiat/revs sendtoaddress RK38qjB5RsTzQVsfanjCZXQcGCCMgdwCMd 1.00657093 -fiat/revs sendtoaddress RNnpckXPNgDcN93j3d1WQ8X4hJs1YYf51T 1.00657094 -fiat/revs sendtoaddress RVFAUQkNEFXJrvFceBA9nSbgzBPiJNUNu2 1.00657095 -fiat/revs sendtoaddress RAmCMxnuvhTWJT1VawDRMcS8dTs451W46F 1.00667095 -fiat/revs sendtoaddress RTMQMAjUenKUGqfNAKcJEGK2unUQ52o8wV 1.00669715 -fiat/revs sendtoaddress RX7xiKrHRUnwngJfSRcagE5mDiS1qnicuW 1.00670781 -fiat/revs sendtoaddress RKyBgaG5tJyVVA2kJUAFzFMorgWzs5kzA8 1.00670783 -fiat/revs sendtoaddress RS5FbA78PK6SAe8GHSmmUWLF1qvWvuiJ4X 1.00670784 -fiat/revs sendtoaddress RNEQc7KmhxUTSg2qGjK6v9GHKE5KgufySa 1.00670785 -fiat/revs sendtoaddress RRW9d9JZHhRkLdJoX27UcDecqD9wz5Dx72 1.00680783 -fiat/revs sendtoaddress RLLQNJDEKkMZur6cpgjPdMgpHS3UUgUrha 1.00680784 -fiat/revs sendtoaddress R9uvvN7k5jiQYws3h67EEcqQdhDSL3pUw8 1.00684471 -fiat/revs sendtoaddress RW34SVHK5c3XJRBN2wUq8YmwwpBkHtx2ti 1.00684473 -fiat/revs sendtoaddress RR9es3yRQ4PAes49w2x8UErHYFddnbvhkk 1.00684474 -fiat/revs sendtoaddress RXUThKYh6uMvv5mf4geStrLLYYDSF34XSM 1.00684475 -fiat/revs sendtoaddress RWwEXx3b5syksp3cJae8kqeTRTRDnsEzj9 1.00694473 -fiat/revs sendtoaddress RUSwJUcREkKkK2uxoBpHMWXj5foaGMF5er 1.00698161 -fiat/revs sendtoaddress RLQLCMktbxJWWaz3BWairGxgPpMQr2mpV4 1.00698163 -fiat/revs sendtoaddress RXtYrtBJw6B4wfiX2oVbvKBYVNT4Khjmsf 1.00698164 -fiat/revs sendtoaddress RCpLjxHC4Ki9kL6H6NVZ36MaGxgAyEhVqw 1.00711852 -fiat/revs sendtoaddress RDP6ViSrCckekSa7PGcphnX6vxgZKv7FDh 1.00711853 -fiat/revs sendtoaddress REovwe65if2RSkhETRpWK4yUMAZvyQesHy 1.00711854 -fiat/revs sendtoaddress RRFQjZ26eMg65BQQszYM8KH7MTx9xT5MPT 1.00715541 -fiat/revs sendtoaddress RMuLfxyR77ghChbBLrqeq1MmC9dSJ1eDAL 1.00725543 -fiat/revs sendtoaddress RJhywbyJk8FkTCMKXVRzypQcAJAMeDHnU5 1.00733406 -fiat/revs sendtoaddress RTR8bnNwg5PWkMQvr6EbdzT631taduNa8j 1.00745543 -fiat/revs sendtoaddress RHJ9gDfHVWCNDbR2o9xfVGaPEFs3AUGNDP 1.00756611 -fiat/revs sendtoaddress RTUdnAHu38ukszdvcdeZqH4nSpHyfNePw9 1.00783302 -fiat/revs sendtoaddress RA4tNV7a2X6zTwzYFqbHfBeFFveckrXxNZ 1.00821753 -fiat/revs sendtoaddress RT7P27xJTwmijtQvQbXvkskNCmGB2oasCn 1.00839715 -fiat/revs sendtoaddress RVdGLVL4PfRyhLZR14N8ZYGQiXsj9uHDHb 1.00897627 -fiat/revs sendtoaddress RNwhd2Q8Ht3AxVjiPdpkSsWCmMTV3jVPLS 1.00898185 -fiat/revs sendtoaddress RHyzfjE73nikKXn2cgASXiQapjsLEbXy5D 1.01000000 -fiat/revs sendtoaddress RQE1A6R1JNp47dV4w7t6eRo5x2BMQhri2D 1.01318580 -fiat/revs sendtoaddress RSgu6rSX3193VXd1EBt1RuZn7Wm9M3ucSv 1.01607052 -fiat/revs sendtoaddress RVrcKQ5mb1gyBp6YorUPHdzdgj31SpFGh5 1.01814050 -fiat/revs sendtoaddress RKFqJRoYizcmSphVeKzvhiqdNXRNfarVGU 1.01938979 -fiat/revs sendtoaddress RNjZQxQEEQssAKUay8n1TtChxUBQ8PBqwK 1.01987315 -fiat/revs sendtoaddress RV25PKU1uER2HxA5PpgbxEx3YUe8VGaW1U 1.02385871 -fiat/revs sendtoaddress REVQCfJjPCqTVfi4iszhPKZDeQiaAPRHvF 1.02411103 -fiat/revs sendtoaddress RSKmx2FgUFuZmRyimuZ5UoZ6PFWpGShTTM 1.02699342 -fiat/revs sendtoaddress RKY7pHG9EadEcaoWSygpXcPFscAYS6HSQa 1.02751965 -fiat/revs sendtoaddress RMtnxXvFiVj8dgnP5gYeXpovt7nzTM8Jks 1.03047428 -fiat/revs sendtoaddress RWUcw7dePV8cMi29nFwnLFQ3eXE4S5H2RL 1.03153735 -fiat/revs sendtoaddress RQs3J2QfDe2ETL7A3NZZWHedNXvhU6etiz 1.03328580 -fiat/revs sendtoaddress bSjWe9tp4sjtehJxBSEBJi1Aed1NXejE5m 1.03610000 -fiat/revs sendtoaddress RVp8ZGAACfpXFguGiT3saVJvhKsns99JFW 1.03893782 -fiat/revs sendtoaddress RNhzw3UNS2EDv1PG4iY6cCFpWLkc4TvMvu 1.04070429 -fiat/revs sendtoaddress RNtXaHPobwLBH5mLsF48sramDRECZiRhZw 1.04736687 -fiat/revs sendtoaddress RS3XxRpr7ew9B4t1B69C9Y9NHYXYstDz1Z 1.04908716 -fiat/revs sendtoaddress RKNRL3tC9m72ycUG9u9S8Yr2CeuwQXHa2j 1.04916801 -fiat/revs sendtoaddress RYPHft1dLmsqJS6yxjG788HZ8Ze8n2mEF3 1.05636881 -fiat/revs sendtoaddress bHEoRLM5zSHjdP81LW7sD6Mr1ZQRZ4Fu5J 1.05700000 -fiat/revs sendtoaddress RRXXa6769aALZvfeiC5WYjtYM2vnNhs7BT 1.05772610 -fiat/revs sendtoaddress RLGrcD5YgDYhciRATJTiA2aji3kndP7n4N 1.06364344 -fiat/revs sendtoaddress RShuJwaNmvyU8bc7GtE6XZBuZu5iV3mVs2 1.07114814 -fiat/revs sendtoaddress RSxGVspEt8xUJEs39sXdovkoQ1GRXMjRC6 1.07521774 -fiat/revs sendtoaddress RH6HTbU3i6SJTGZbJfcoZoPNHQBtvch6bA 1.07759935 -fiat/revs sendtoaddress RRrgy1qYP56iRPhCRN9zTWhupgLPezAxdY 1.08673844 -fiat/revs sendtoaddress REeenBUJUdkpwVkBT9fphjXCTkWShKBQMy 1.08755766 -fiat/revs sendtoaddress RLVuSHKtXPg1ttx44h6zDJJBiRskMkUbdm 1.08915528 -fiat/revs sendtoaddress bRmhenKFGwcHmv5pcegMGqqaKPMqshU58E 1.09000000 -fiat/revs sendtoaddress RTWeue98rTN2MEyobj7fSmff7CZFqGkxAm 1.09677588 -fiat/revs sendtoaddress RPMTn6kP6qkbqWU2LSgJHRAK1qZ9qioi8u 1.10090396 -fiat/revs sendtoaddress RCJvbEYyU1rJFf3mRG2mj9CRAiNkfRo3yS 1.10167493 -fiat/revs sendtoaddress RPZw6kcMotYjcykX1S6FBaNaLTUyUMzdz2 1.10264199 -fiat/revs sendtoaddress RSiVctTs1sM1eeG8ruNtLp2Yp8GYRotjqD 1.10273790 -fiat/revs sendtoaddress RTYfFMyhibug31XcpzwfridFJdqY8vHaKH 1.11583822 -fiat/revs sendtoaddress RPF9SqxScrg9mhUyiaJBCnAUDGGNzjnwV6 1.11999426 -fiat/revs sendtoaddress RYFiBBm5PmMHarY5aYzbzrHKC39YGU7jtU 1.12446319 -fiat/revs sendtoaddress RFm3is8KmTmmCPbhwm16txnHH4fNiw9GTo 1.12618210 -fiat/revs sendtoaddress RWqJ2GtJ7gJ5AHVWgLWQr8C9C6Ve3ky4ub 1.12814944 -fiat/revs sendtoaddress RVqShVM4zJN5ek2stHyJeQB3UkH4NLg2hZ 1.13102130 -fiat/revs sendtoaddress RTZL8HjD9g8nZJA4edWdvERsH1aTq85QWP 1.13302477 -fiat/revs sendtoaddress RTfB4qE75df5XW1rPgYaR89WTpUQZFQHSp 1.13740666 -fiat/revs sendtoaddress RQ7S1HrupzMwbXyAi3azcj9eFFMKciEfVZ 1.14590863 -fiat/revs sendtoaddress RERL41V7aTxUJmpewF2jZ6fcEvKtFzf5ZH 1.14647693 -fiat/revs sendtoaddress RQq26XJaZewYWSpt8p8gjfU93qdm1s5366 1.14830381 -fiat/revs sendtoaddress RAzLrZcbyuZXawkYK5HdihKZ9kzhD8wWVz 1.15438148 -fiat/revs sendtoaddress RQMGqPvzcjUoCYTb25LHV5WGenA4bukdhA 1.15566613 -fiat/revs sendtoaddress RH9Z8Jw4Xxahem74s7EGWUeyJTXinaeTLi 1.17046666 -fiat/revs sendtoaddress RWY9zQf3763qAVR4x39BfXYrSKc2ZNjP7W 1.18568692 -fiat/revs sendtoaddress RBphVPd4MiKi1LkiPfu1et8Kpa9JSk7rh2 1.18700000 -fiat/revs sendtoaddress RV4Mw8nMXijvPBZ1zBBM32BFvzp7dYZ1C4 1.19154018 -fiat/revs sendtoaddress RX36LorLqGgbMpCbrUyjydu45aweN9jh19 1.19454928 -fiat/revs sendtoaddress RLdB8ZZ8AfAviYxCaYP7wVkntqgYD64Jpn 1.19713102 -fiat/revs sendtoaddress RT58V9mS1JmhKjSRZaHdZLrt4PzwN2nSR1 1.19875350 -fiat/revs sendtoaddress RN9oHPqf9QmFi7m56AMsEk9FPJu1vVP3zY 1.19892206 -fiat/revs sendtoaddress RUC1iYeSLb2YRMZiazT8TqHaz3gYmf9Gut 1.20000000 -fiat/revs sendtoaddress RBNE1yHgYp5bNaocKn9Q7BZYtYB3XzufNQ 1.20068347 -fiat/revs sendtoaddress RM8vw2rnTNhQ1xVFUzuVgModQhUG9d3zwk 1.20567914 -fiat/revs sendtoaddress RG8cEVW7WLAAh6JKKngopbd4RLQ9kSfisG 1.21156235 -fiat/revs sendtoaddress RXpnUwb8DKVsi2T3SWhbDADkXFMBCKsVye 1.21223647 -fiat/revs sendtoaddress RAvV3Lk6La77gyKcJfH9jqDRdP4nki24HP 1.21423234 -fiat/revs sendtoaddress RX8TSFaxZGUPPB9uRzPH2AiKBRq13hLuPC 1.21975557 -fiat/revs sendtoaddress RL4kqyihwav93jo8VwJwKuSJZiyf9sK7Tn 1.22237299 -fiat/revs sendtoaddress RSSa7SScyTtDjXc3jP6npo3mMhvC5Th6oj 1.22249997 -fiat/revs sendtoaddress RQnfXbXQQcE43muwMm3ojq16wFCad3PvrK 1.22426673 -fiat/revs sendtoaddress RTjeebKboJjNXW3waS81VkSMC6ffJoPz4P 1.22501630 -fiat/revs sendtoaddress RK4MmD9oCKMcafRh5BE9TRuFfhs5Ar5DeN 1.23454729 -fiat/revs sendtoaddress RGdwjLpxScLGQPdY7HL9HzxL1rVXmLens1 1.23741881 -fiat/revs sendtoaddress RAZmr6RjC7c7RQ8mjhGCriwgTJK8oXWKNC 1.24308814 -fiat/revs sendtoaddress RPBo2F3mYmXUua6Sf3XwPT9JWpgmnogABQ 1.25335363 -fiat/revs sendtoaddress RRdEZ2kLUU4HEhpQJQKDPE3SVmG4uod5VQ 1.25492241 -fiat/revs sendtoaddress RNRF3knrQws2LnpBqMcYR826eAsZY5DYzQ 1.26518133 -fiat/revs sendtoaddress RMjh84gmUjQvmMmEksvFtyPJ92NtnJXmzE 1.26914043 -fiat/revs sendtoaddress RY1FYvxUs7qHtVtpGGu1VYQZcp6GEsZnv2 1.26977694 -fiat/revs sendtoaddress RCkc86LUZmcunwZ51EzsdauRSC2sYDqXqo 1.27990000 -fiat/revs sendtoaddress RQjGLmSN7MceVQaFJMEFXxgqLZcn8Cdxce 1.28329754 -fiat/revs sendtoaddress RLK7k8fYy5w76ScQ7UbjbMYjYsq9B12LcA 1.28629131 -fiat/revs sendtoaddress RTmhoi1TfuVqS1TVpjQKyPCNfWUNJu4BsH 1.29101449 -fiat/revs sendtoaddress RQChMmyxVzCKgdJudUQarmEYUMDeyyNpgi 1.29146132 -fiat/revs sendtoaddress RMGLFX89yRLAoBRghk9zsW1tbwHh1ox8ef 1.29446427 -fiat/revs sendtoaddress RQPbJwfyVvbBtLG2gEX6xhbafZSvXxo1iU 1.29905594 -fiat/revs sendtoaddress RQ8jDfnuHbm2G2ULMgNXwWpftwjcfiL5GT 1.30218820 -fiat/revs sendtoaddress RL7LAXxhWoNyD5eGE92gB72m1ThjXwoYWM 1.31742887 -fiat/revs sendtoaddress R9PnTkUFSegkFNzJRXMD6wX6mkLGg1hyjw 1.31863412 -fiat/revs sendtoaddress RNBGifRYKUkRKosNm2cWjWa7mC8FyPxZM3 1.31970855 -fiat/revs sendtoaddress RGtrs1cYyPAQMd85sCekvRwC6AKXcZ3sDr 1.32005014 -fiat/revs sendtoaddress RFaEnmNkqJCoM7LwVkmm1dQvZPw7WQyvZZ 1.32515352 -fiat/revs sendtoaddress RYc1aVTJF3jEQEsnofiypBH7BZaK7MFpKv 1.33271517 -fiat/revs sendtoaddress RQutfzuVzjXQZY9bGDf8LkoXC7zYR3dCdY 1.33280514 -fiat/revs sendtoaddress RBDqmM8gd2GpmqBxp1745YnnwWwCdjN41e 1.33515153 -fiat/revs sendtoaddress RK5PjWa9bLssWRa9MT6YwpitkxxYC8GmEG 1.33650226 -fiat/revs sendtoaddress RD3b4gfPAYKZa8GouWBsT4FVxAf44hdVMA 1.34813377 -fiat/revs sendtoaddress RCuvkhb6VbdquBhwTLQ5LcsX6yJgSgsiSJ 1.34856314 -fiat/revs sendtoaddress RCu4FfEWht2CEWi7g98JDRe9f5Fn75cwak 1.36199095 -fiat/revs sendtoaddress RL7mTzWvtFC3F8D1WFbAEwBmnefKYiupVK 1.39208756 -fiat/revs sendtoaddress REy7L2BAJsJqryyg7Ab4iDMBLpFvWssE6s 1.39461673 -fiat/revs sendtoaddress bZxsv5Uavht6nKtWfFPppGodRKB18kmKYa 1.40153681 -fiat/revs sendtoaddress REPyMFnLfqVsyRA2KfrQ776ayvTsK32o3J 1.41501441 -fiat/revs sendtoaddress RFVpMGVbjeCaSeQFHKiYAbpRwGyfiMVyxX 1.42000000 -fiat/revs sendtoaddress RLV5cKTyaYVABXjCkzd8vHvWqjDi8aLEH8 1.42624969 -fiat/revs sendtoaddress RQZXGQNefs8Zx2SFgzhtEAkt2RdVAMaDr5 1.42755666 -fiat/revs sendtoaddress RDjcC2MNpawEZgq2JTK4Cc9DTNFMZ7PsSh 1.43201326 -fiat/revs sendtoaddress RDCsAhpcZqpdZCWigdM1ujfeQmCAHbfPfc 1.45874046 -fiat/revs sendtoaddress RPhBpv2cQ3WSMNzqmUb86ET5y7jQ7DPD2T 1.45929382 -fiat/revs sendtoaddress RPcHvF4jEty9qqKfYeNjTacBhLKGb2ixpt 1.47310188 -fiat/revs sendtoaddress RLpaETsoZj52HBbAW7rHANBg1t2ttySPQb 1.47750626 -fiat/revs sendtoaddress RSF8gGSix9untMctXB3G2vrfzWyJzALu6V 1.48250000 -fiat/revs sendtoaddress RHxNWVSRdyVbomaVBWVuzYnS3RKZzWuxFg 1.48653046 -fiat/revs sendtoaddress RRVrfwgx9x7gkZER1yrhR4a4Pk2gs8udNV 1.49702366 -fiat/revs sendtoaddress bNaoVTFpRaXnCgb5vBtAXbZ4pXvHsySb3J 1.50000000 -fiat/revs sendtoaddress RGsQUfcFvZLZdwmKX4aZvunTxbwKx8yccM 1.50780573 -fiat/revs sendtoaddress RS7UtKWKAnp51Mqzkfb9zFus6g56V6VzxS 1.51352332 -fiat/revs sendtoaddress RMqbEGZBu1iXQErb2r8mBdRHJYLWnoP5nU 1.52457228 -fiat/revs sendtoaddress RJBUEVzgvSw4HF2vVvhjecADHxWCGhSjr2 1.52864745 -fiat/revs sendtoaddress RJ4u4DgxYqMArpfp96hTy5Srx87hyc1J7C 1.54124286 -fiat/revs sendtoaddress RWZJ8JjYJDjt6kNRLBEQq1aeR3juoKrvPU 1.54585135 -fiat/revs sendtoaddress RFkLL2xf4vsTiajnRevya9TVcQyHFTsKiQ 1.56358736 -fiat/revs sendtoaddress RJ1VYwz6fV6J5KVKmgutCwyeSfb7Xv1No9 1.57797376 -fiat/revs sendtoaddress RVBqRSC7BH5QYoqF1cBLDxceG74n5fMJ34 1.57905079 -fiat/revs sendtoaddress RBBHBNytzvyMyDhR24noVBAq9uxZKxLAeh 1.57927229 -fiat/revs sendtoaddress bGudHujZahqnRJvXC2VCSDnczVHgEPh1Wa 1.58700000 -fiat/revs sendtoaddress RFtwVS6TN2Aq1CsMuBmM6o5QMaVMTfMsCg 1.58954872 -fiat/revs sendtoaddress RCJnFAfMno28iC6Xnia49LSdUn2WRkLRpU 1.59419732 -fiat/revs sendtoaddress RBGWmHq9rvFzabmacwXxnTCr7YEX4Jrqod 1.60046674 -fiat/revs sendtoaddress R9j9cH2zvMmPFdB9pcwC9zXwicSPP7pwE6 1.60400995 -fiat/revs sendtoaddress RNkzqWHi5Dgg96F37YpeRDFGqJrxRfbBnH 1.62257668 -fiat/revs sendtoaddress RRTinbg9zaegzof3twiJxSNuBnsHHgZaEQ 1.64318216 -fiat/revs sendtoaddress RGniivvshN6EVGUKZRF5EzBsqKxpS93RJm 1.65639919 -fiat/revs sendtoaddress RXpDee4SEiY9rhfxoEgdC8PVWsbqdEZw1k 1.69773342 -fiat/revs sendtoaddress bPXgssSE8kC7Saoj7L8u5Pe1gJut7tvPb3 1.69910000 -fiat/revs sendtoaddress RRjVysht9ZeeSkSMbf5JDQJPcJyErSAjcg 1.70322869 -fiat/revs sendtoaddress RFRM37qFvntM7TPqrAwYNAy2y5xqn3dGpr 1.70656263 -fiat/revs sendtoaddress bNXWWWqNtTXD5GmxK19eZcSMgrxN3VDboZ 1.72734851 -fiat/revs sendtoaddress bPY6tFSkLUzQAkadwvimYc1spsxXaEYbae 1.74189851 -fiat/revs sendtoaddress RPBdNsv1HHwgeeeEJo7qT7nM6EVA2rroso 1.74888552 -fiat/revs sendtoaddress bZG7wd5BaUwzY1bNGuqqFnjVMvMV4SmEut 1.74920000 -fiat/revs sendtoaddress bJrkgeBFbfs6oLMyoJXsskADQPjKYQ6Ftb 1.76577984 -fiat/revs sendtoaddress RUtxrXiAFq1oqg8fqvJ1Ax2CX4BiM1dy2Z 1.78316624 -fiat/revs sendtoaddress RXW8GvCBxqkzZb3kHcm55ormZTa3YL7q8C 1.78616541 -fiat/revs sendtoaddress RNJmgYaFF5DbnrNUX6pMYz9rcnDKC2tuAc 1.79820000 -fiat/revs sendtoaddress RPBXkDU4Vu4N8B3FXGDgghtT4rqgw12vTW 1.80744276 -fiat/revs sendtoaddress RXb9E377iq3CZNMJ7aSUauoMZWMButpA3j 1.82576189 -fiat/revs sendtoaddress RH2kRVyri99Nt6UWTpuXmWda9ZvtiEz6xX 1.83128234 -fiat/revs sendtoaddress RCs9Sqe99sRDD3yKCfY39VvShamcGXXSRD 1.83578804 -fiat/revs sendtoaddress RVufZEJRVw3UTKRjVApXfZgzxW8JV24nuw 1.83846574 -fiat/revs sendtoaddress RWE5VQQ6oDKGyXJxWh3FPQ7RFJFiZWDjYN 1.85417492 -fiat/revs sendtoaddress RQygqtXQJpngKZ3NM5MbeoByWbHyNGyJRe 1.85486597 -fiat/revs sendtoaddress RWTYpN5VBTSXjgbdVACNiyFULRPoLvaV61 1.85972528 -fiat/revs sendtoaddress bKeuwSTZWjWm87vJpYpy3eCuFJmWCrF38v 1.86222005 -fiat/revs sendtoaddress RHMC9tBFYL8Fb7zJUm81BD8oM6Uzu2feAb 1.86531877 -fiat/revs sendtoaddress RRb1eZNQo8mxgKtFEQbWsEycUr4Pbik7ha 1.86735991 -fiat/revs sendtoaddress bDtewFRcLkir2cf9SRPyPTYQug8DyF6xfi 1.87282410 -fiat/revs sendtoaddress bEL3j9hiN7DtaCHTGB4q825MNvnm4wUDoh 1.90359999 -fiat/revs sendtoaddress RNDYvqLDMztos8BPkvKxVHccsmE8QvmNub 1.90641705 -fiat/revs sendtoaddress RXHWasBG7RhWDysy9YgCFDcWcdqDYS7tbb 1.91990000 -fiat/revs sendtoaddress bZDxcTBZ78TmfANqEe9p96FFEohgCYt8iN 1.92178425 -fiat/revs sendtoaddress RHaXgjxZU8v5TZMtAs4hEw3WWchjnTdYGr 1.93088161 -fiat/revs sendtoaddress RBeSgf3owwzrjSiKQfZQPeYUkiFF1HNHME 1.93308711 -fiat/revs sendtoaddress bYjsXxENs4u7raX3EPyrgqPy46MUrq4k8h 1.93456780 -fiat/revs sendtoaddress REtzrDguaT4m1hz9JJNBrhWxamfCG1kjQn 1.93727166 -fiat/revs sendtoaddress bDCZH7qzJ8nqnsiLq1123VAd4Wgd3byR8q 1.94455537 -fiat/revs sendtoaddress RLbo3UjWv9bT45RiYZwgrJ9bP29QDAN81B 1.94599612 -fiat/revs sendtoaddress RQfScf1meLqV9BRDo2QuT5hbQpienYF5i9 1.95091094 -fiat/revs sendtoaddress REf51DyPU7kyk4S88Ea7vD5wTADKaRAZXr 1.95304633 -fiat/revs sendtoaddress RW21d98WXt7XXNGDAZxG4VByLTtzEHekWj 1.95600000 -fiat/revs sendtoaddress RCrzyCkHN235TGnPeNcUvhm6Pk8EpeJQgx 1.96000000 -fiat/revs sendtoaddress RQiqMgNyVqaqetsgosDeP2LUFKVAm5Nrwp 1.97995553 -fiat/revs sendtoaddress bKB5RdkKnHKKjzQHnonvf43PWMkTtB7K5u 1.98000000 -fiat/revs sendtoaddress RJ2Fs5ymVobuQ6A8ttQTCfxNfBETNoZ78t 1.98088848 -fiat/revs sendtoaddress RWRAwwHiSGdjkGNbDfw9exEHifuwLjdJUW 1.98200800 -fiat/revs sendtoaddress bE6fVmnjfLRjfr9Gq86VTuNCoc86JhAHgL 1.98620009 -fiat/revs sendtoaddress bRq5CJZwSgb3k2aCXBLzDCRTP2HsLGmSph 1.99000000 -fiat/revs sendtoaddress RWCADpdrQZCTiyo8nfGqQ9siUBipet9zrx 1.99959601 -fiat/revs sendtoaddress RTvcjHngNQKXaK5NjPcH7Wssin7hvTkZ5m 2.00000000 -fiat/revs sendtoaddress RPJjzoKPb8idoUCT9XLBkNojNgysjJ5qrE 2.00090000 -fiat/revs sendtoaddress RE6qPxVbXsF8kFUSzgXQM6VQqm9SWrJKLo 2.00365927 -fiat/revs sendtoaddress RJrVCN7kMqVx9jVC9He1MWR3MeGViHsg4e 2.00980787 -fiat/revs sendtoaddress RVkeqmBucdaG9DTLbYanHZ8KzLkp7pFDkp 2.01242056 -fiat/revs sendtoaddress RHmXxYpYVRSM4uoaKb4iEQHMQLcs3Vjrik 2.01293993 -fiat/revs sendtoaddress bE6nkWV2BF5YWKwmHrirDPVQLAjj55S84m 2.02380000 -fiat/revs sendtoaddress bKzDfRnGGTDwqNZWGCXa42DRdumAGskqo4 2.04990000 -fiat/revs sendtoaddress RKxm7MdSse1JtHY7XBn3uHh1AJTT939DKu 2.05575531 -fiat/revs sendtoaddress RLGKaQYUEbafkm9kZKemQ83JkhUFF4uZ4u 2.06173997 -fiat/revs sendtoaddress RAkyFUu4fEXtpUuGDbzcjM3DSny9tiVzAz 2.07064827 -fiat/revs sendtoaddress RG3F4QihQgrKpHk5RsBwnCwDAds5rLLWqW 2.07695299 -fiat/revs sendtoaddress bV2A8j7JJJxpRuW1M1hUSfe9n6UEXQHEvR 2.08000000 -fiat/revs sendtoaddress RJT3MMQdahmsQzKMRUCfci19gJrUE9TgFb 2.08312949 -fiat/revs sendtoaddress RXzjUGvZ7oUrUTGaN2mP4aJSbLbqzpRnz6 2.08564650 -fiat/revs sendtoaddress RFJuCQAevqPqVDBGbBruMRRub72WDCiMeK 2.10001000 -fiat/revs sendtoaddress REvjSkX26zyPX7HgM6RCJgvkYjSLPdCZTn 2.13044119 -fiat/revs sendtoaddress RKJzUA4MvdFQ5F9PGWHaxkcEvXCKCGg4VR 2.16410519 -fiat/revs sendtoaddress RGzoukVA7fHUD6Nds6USQFsp4QkWjsBh8B 2.17894706 -fiat/revs sendtoaddress RRZARxvCqWuH5H4crSc6KjN6HFYfvGJ8Gg 2.21090900 -fiat/revs sendtoaddress RFC81cLV3sGMmqbCUiVrkBTGAXnHPg2V3K 2.21844875 -fiat/revs sendtoaddress RYYbrxAnF9szAsTitPipp9p4X2f5F37ZF3 2.22917835 -fiat/revs sendtoaddress bNEy6y2USZkmXfiWb7dx8Sg88rVJqfnunF 2.23217506 -fiat/revs sendtoaddress RWZNekyWtFa3qP9poAyKN23tZdvZFNG9hS 2.23284202 -fiat/revs sendtoaddress bWywMc6kV1G5x1ZJZoZxE7UJB4b2R9bbMD 2.23548655 -fiat/revs sendtoaddress RPf6z9yuQNg8gP58GYzgjSaLsq43UQ7oEx 2.24946914 -fiat/revs sendtoaddress RXPVEFk8NjAaCjyaSXkjo2dk8ZMiMCJWWn 2.26061327 -fiat/revs sendtoaddress bTUSLAm7UEij24FwUZd4TKFwvKVGDTPfyT 2.26307039 -fiat/revs sendtoaddress RSb5zwsBoTK1UkHTqFwTiPeeGVfacNztFo 2.27998400 -fiat/revs sendtoaddress RBTgQUaUkU1oRMusrGUKHCQVwkJxqoJBCS 2.29718810 -fiat/revs sendtoaddress RFGfsGR4u9F7UC2VtxDHH5dWR53gjfucrt 2.32198080 -fiat/revs sendtoaddress bUS5pwZBM744sY6gsaWMb9kNQHCb8U7MMs 2.32918072 -fiat/revs sendtoaddress RQykFxhNuBbGdGdcCp3kRrfK77NJ4fe2m9 2.36204605 -fiat/revs sendtoaddress RPp4fcMCnznHNAAfT3mVCK8sZLit8ULWqy 2.37664696 -fiat/revs sendtoaddress RRL3L1M9XZD2iRtScPAyT9tN3HkAtAukmZ 2.38743361 -fiat/revs sendtoaddress bJtuUb8C9LVj8pwMNHhjHYVfz6jLvLTQTQ 2.40912026 -fiat/revs sendtoaddress REVK99cVFsMupSPgnn98b35jGTARiyJMUA 2.41992887 -fiat/revs sendtoaddress REoZHPTDS5EVS5LZbt14JJK3KsLinWGWcs 2.42156948 -fiat/revs sendtoaddress RTRByU7B58URFDFJ3dyBeXP6xhyXQ68N5F 2.42619962 -fiat/revs sendtoaddress RUS9xjmpzaEr8w765Lqs4uvf5f4VV9Kwqu 2.47000000 -fiat/revs sendtoaddress RSRzzNnhMX26Jb3GKA1QjZM4LXkJT2mysH 2.48509167 -fiat/revs sendtoaddress RT3N8cQ3u51hu9yDfEVrKQDQwW3cXEqnq5 2.48874638 -fiat/revs sendtoaddress R9TYuUNUywNVrE8WFM6FNnr16pJy7bbTnv 2.49146775 -fiat/revs sendtoaddress RNKrApCguSxc7R2RWRZ3QaNTLCoT2qfovw 2.50000000 -fiat/revs sendtoaddress RWRoTk9tdhdiusKK8ZYx2H7zvoeMCG7nEg 2.50725545 -fiat/revs sendtoaddress RA5N2WrysZJqLNrocm9Ub7eFtgRuEpChb7 2.50897343 -fiat/revs sendtoaddress bUa9ZggkafUny4QdtBbHRWZ6ooPJyo7ms5 2.52752023 -fiat/revs sendtoaddress RQYku4fpqpwt2wdMGNpabeDtTzQA2kxjef 2.53994527 -fiat/revs sendtoaddress RRHTYjv9UDm7fn3bTmc37DwqpvUsoj5kQY 2.57131849 -fiat/revs sendtoaddress RL4zAeZBg5GHhbQ8TmqEcJQf8YZesmWZdt 2.57411256 -fiat/revs sendtoaddress bPFABV7tn7YjKiiT6JRt86kwFc1XFmJeGV 2.57541784 -fiat/revs sendtoaddress RCFsvyxWvorh54XBr3wWYs4j6huDUXRPp2 2.58877500 -fiat/revs sendtoaddress RVTMKYZDgpu2K6EJePhwXbfXyF2HJSALjn 2.62725726 -fiat/revs sendtoaddress REGmmJTUg8s5xD85RLinEBSAHhsMvmXHRa 2.63202023 -fiat/revs sendtoaddress RDqXcW6f7fXWELD8Krd3hQhyRv85BbknjY 2.63206417 -fiat/revs sendtoaddress RDuK7tiVG9i611zudsKAs5xiycRDLARzz1 2.65449250 -fiat/revs sendtoaddress RJ7tPLopmnk2w6MqvBNPxs4upARiDuLs1w 2.66827444 -fiat/revs sendtoaddress RHvoTnReTrY7FjXZcRgjyZGraAPAFFPCqR 2.67580000 -fiat/revs sendtoaddress RLsZsXxoHF1GTmWavAT1nWE4F5X9XgaRp7 2.69784800 -fiat/revs sendtoaddress RUdtBYhwwmJN2ioAYamNDE9eixUFiQUasK 2.74269645 -fiat/revs sendtoaddress RL4c5XhjvnQzijV5yAAd5G4oxCDsnTwjtS 2.74873446 -fiat/revs sendtoaddress RCsPHNjrhL7r1cWhgey35WZU61ksWnHjC8 2.75509594 -fiat/revs sendtoaddress RMihEZdA5SJCshcEmJ1cfYy4gKjpHMbGjC 2.76003097 -fiat/revs sendtoaddress RWmaVVDurBiZxTwkJ1LRWcS2CKj82BVab2 2.78395528 -fiat/revs sendtoaddress RT1XUGeJGzEEkwT3i3GjGXtcqq47eRCM75 2.78844263 -fiat/revs sendtoaddress RHybv6nbE8QTEXT15CyNc7wUXUb3RrUEY9 2.79749605 -fiat/revs sendtoaddress RJbQhJLpn2fWmEdxkrNfjU3EAcaFwLKYja 2.83312566 -fiat/revs sendtoaddress RACaaDhrZWEgD95PKbr3A1Lg1uKB75qQVG 2.84063548 -fiat/revs sendtoaddress RY3Ym6WDHTXHwSuWTJ7Zv3pCsJU2jDVKAZ 2.85660204 -fiat/revs sendtoaddress REwEabCzgasGBpJ1voD9G3bEi6o7yxppgF 2.86976420 -fiat/revs sendtoaddress bJXovSo5a7RwQGsTgkcSmvbMvW7zy8DJbZ 2.87000000 -fiat/revs sendtoaddress RWtKSzjTPw3ArK6ooCcAdSVaU4dzrULQs4 2.87997775 -fiat/revs sendtoaddress RGaswcCVFmxpZM4pcEdkP68LFiKwEAsLW5 2.90824900 -fiat/revs sendtoaddress RTVYgG6JfeAgqXT7xmFZa4MPu4QwWK4woJ 2.99000000 -fiat/revs sendtoaddress RDdRQ5j6LVspHfwcHeL21er236MvCPSj89 2.99158800 -fiat/revs sendtoaddress RQ9wS5HjveiXqBXaxwBCao32L9ogSS5s1m 2.99206721 -fiat/revs sendtoaddress RVfEv3qesfVXdJYRjPLMwQRGwfCxSNVnPk 2.99604321 -fiat/revs sendtoaddress bJZuURSaU6vCto4MJgeDrEiYDPNvibvuwz 3.00000000 -fiat/revs sendtoaddress RDvk2puiR9d7xGLg4yddUsLHxBEQ6Q5GG3 3.09347716 -fiat/revs sendtoaddress REjUEkSoC1SsLwnU1pGhYH1zs8DRqVUNRk 3.12909427 -fiat/revs sendtoaddress RBWWZxY7eUn5w1gCxHhyGkzNKpXBzVP4xF 3.13259544 -fiat/revs sendtoaddress bNFpwB3Wpy6TYicuhJ3TVMuhWdjERvazcD 3.13612794 -fiat/revs sendtoaddress RPm2iZjtCR4iUFGJmh5goC4WisemznUrF3 3.17226153 -fiat/revs sendtoaddress bJLdH7y8EMuxGoJJuQDRwhQqg64AcyY1FH 3.20101972 -fiat/revs sendtoaddress bbxreB4NRa3N5ApXFCvEm5MD6FnpjtS78a 3.22895411 -fiat/revs sendtoaddress RBgnekdZTPXo8HZwFw4pTAXZhH6a7MJhR5 3.23482598 -fiat/revs sendtoaddress RPLa6HQrRdXbHwfVbWzbSPg8sw26s7zW2g 3.27749623 -fiat/revs sendtoaddress RAEXYhfEXRDuRB4ief16ZoDiGNYoBP4DC5 3.29504240 -fiat/revs sendtoaddress bQLtNMSxwgWf7FRvkdvGWLWPxbHDYUnzgf 3.30380000 -fiat/revs sendtoaddress RFcGPCy4ABXnmDuhhzTwUyTGFthnrsbxqZ 3.32146226 -fiat/revs sendtoaddress bZy1RXoHG7rTgDcKerym64djkRSbHhqFrg 3.42157328 -fiat/revs sendtoaddress RPRqxGLZFiQwEpKoFeq3pA9YTDNQZgjw3y 3.44064699 -fiat/revs sendtoaddress RW9RK2gP4uwsdLd9vtLPuyqKzwR1hDG63t 3.44524832 -fiat/revs sendtoaddress RQqTgaoSLVFwZMAa38uJ5hXJFPpiuiNsgP 3.46075137 -fiat/revs sendtoaddress RCe8skL8hbBG3vMDqLAh3UNVQ1xhGaFhqD 3.50025765 -fiat/revs sendtoaddress RQ6a9R3MMY3gLyB3juFejLe6d4VJ4nseRd 3.52343620 -fiat/revs sendtoaddress RS5iwgvZF2K8pMrZWQX88St5RXowK6rL2D 3.53209615 -fiat/revs sendtoaddress RT1JF5w81bD9VPo2tZtGRYAavTY2A3aN3w 3.58176650 -fiat/revs sendtoaddress REtMhx1eqgAJCWi8ThEQQsSqP6xRi62Dka 3.58484457 -fiat/revs sendtoaddress bDG89EsDs9o7h4Q9mjSVGRsW588dAUdrqd 3.59331365 -fiat/revs sendtoaddress RS7hg4amfzoFuaQt2eTBZDqm34zrQKLLW2 3.59958961 -fiat/revs sendtoaddress RPQMSMtdUdRSqx8JN7vaAQfajbwC4zHM3d 3.60890805 -fiat/revs sendtoaddress RPHMzajSnHaDRXts3L4RS5BcJikAvS7T59 3.67122767 -fiat/revs sendtoaddress RHwMwj79Aq8Tpa3dXNdUNr8eTWWqquCUkr 3.68495362 -fiat/revs sendtoaddress REHJPWZr4RKX4sRXt3xyPaASuP9Uzfcv4m 3.69478143 -fiat/revs sendtoaddress R9NERQaSneNLBGd3NowTvmhaJizjdjVu6n 3.71517590 -fiat/revs sendtoaddress RR8Wsp5DTn3rmR4531kbbPYZTQVXZoCwm3 3.71915767 -fiat/revs sendtoaddress RKi5WEbiEQkPRJdwv6RsM5hRqByLTmoEjC 3.72300876 -fiat/revs sendtoaddress RGo6pr1kJwnmy7iqkhvWtSDBLXrhACcQVa 3.76892503 -fiat/revs sendtoaddress RDVHSwjjbmvRQ3pkNJxQPSQZwGzoTeNy2S 3.85839309 -fiat/revs sendtoaddress bHTnZNnT4BN7CcZu86XByARSzHgx9VBbSk 3.89492068 -fiat/revs sendtoaddress RYZdCN4hvqaffVUk6dvXKvXdVnoc6DsSW3 3.90798966 -fiat/revs sendtoaddress bWVvhfUNUZqukaLKF6v9vVxMBk5EKzvo2k 3.93362425 -fiat/revs sendtoaddress bTGYQFtwHc6jaxzhDgNVAxLXqgNvGBCTRB 3.96787567 -fiat/revs sendtoaddress RGcgWanVKKdNn3N5SJ8riiDzoCqhqdFaQD 3.99083039 -fiat/revs sendtoaddress RRiMVwZGskYaNKQ5U77ygt7GRhzFquSWJe 4.01959642 -fiat/revs sendtoaddress RCx6Ts9V8gRV2WExzQeGP5cnWt2mNmwerj 4.02463493 -fiat/revs sendtoaddress RHMq3Q723zevaDTk6EyPdFUvnSb4D7aFVq 4.02943320 -fiat/revs sendtoaddress RNjtvMBfE5gyVvpiHdZqnWz88xnQ87mTdQ 4.03000000 -fiat/revs sendtoaddress bLRp614oYpZCvJ3PjJpJG9Kw4GQBh9ui84 4.04690001 -fiat/revs sendtoaddress RVhGrmQKc3kE2oWfGKEdcAq6FLE3MBMmah 4.05228522 -fiat/revs sendtoaddress RExi2qBNpP2FxV4fGyJ7krVwdX8kSV2fwV 4.07342248 -fiat/revs sendtoaddress RRNZsaPb8rMEtkj9LQ4dUDxh8K2E3ntL1i 4.08531176 -fiat/revs sendtoaddress RC8tn2whAqacHxxGjEvYLG55tAFvJDz1j2 4.08862550 -fiat/revs sendtoaddress RWhwxSbibcQYKa2PkyVsQArHa1tjp8dpt4 4.10310990 -fiat/revs sendtoaddress RJUX3LKJwnCaTREMr1RUhbpTbQWsKhXmZX 4.11609401 -fiat/revs sendtoaddress RV1xc2KHBTmj6LTRKLah7QBNGyXz71DhVn 4.12372278 -fiat/revs sendtoaddress bSUjA8hYfQsqHPL5RyVruY9shnwy6aNzmR 4.13948139 -fiat/revs sendtoaddress RBspRqZnwNUKExmwX8wvbL3pK9FW8zFLzv 4.16600446 -fiat/revs sendtoaddress RN9JkMyiug2yyk6uvHU4x7bYc1gRjmT99Q 4.18806510 -fiat/revs sendtoaddress RQZ6yUnLwG4KxZWgHSjsysP55ELTQwgbFu 4.18891770 -fiat/revs sendtoaddress RK9eGduosS7qaqdK4WBdV7ekuErkcu1fmk 4.23609095 -fiat/revs sendtoaddress bQw3mN168fQuBpxzrt3ZvNoaTmBEpj8UCs 4.24456392 -fiat/revs sendtoaddress RYAkmpmghTXkzutKuHNWveQpxBUfpajbKn 4.25843165 -fiat/revs sendtoaddress RUuDFrhMXYowVRvAPxJ23iqW7JUtTFTxmS 4.26075162 -fiat/revs sendtoaddress RGsWp8uDpeaJyfe2BqBr6vPmZCkoPwcPAQ 4.27803826 -fiat/revs sendtoaddress RGJ9g8tP6T8LyWBp2giQUYwxD39xHi9bHT 4.29251906 -fiat/revs sendtoaddress RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z 4.31860001 -fiat/revs sendtoaddress RRXvDgiJ6wtCVWCjfqe7KHFkDFZDg9SmLr 4.32375278 -fiat/revs sendtoaddress RSY8jJJ7NRGvFr1gmvL7XTAXZuCTro7wgM 4.32644404 -fiat/revs sendtoaddress RPte7o9GeSdfJsHVPcYw6BiHkcZ7fV9NQH 4.32771484 -fiat/revs sendtoaddress RWfmdid5JYnf7TeaRV4gGLV7NLAcLhZT4R 4.33826339 -fiat/revs sendtoaddress RFXuXXffSu6PpVxw71WYyAYH2gW9ziB3is 4.36956575 -fiat/revs sendtoaddress RVRNfEidMxZRfCwLjaJGsVpEtrzr4tzH7C 4.42288273 -fiat/revs sendtoaddress RS1qbKDxj7rFbwuJR17k9tqEUfeQQztYEY 4.42527774 -fiat/revs sendtoaddress RRLuPbK9qzz2rLVYRbVqe6z2zYpx7dYVHM 4.42965965 -fiat/revs sendtoaddress bJtisakm5oUkdJQZHJMDz3FZDsjWZHR7Ps 4.45700001 -fiat/revs sendtoaddress RGQKqoiFKZVrAqoo6F88DnHCoX8JvvjUHQ 4.48512493 -fiat/revs sendtoaddress R9yXurqBmnjmpKuDkuRtkLTf3951ttGdsc 4.48859816 -fiat/revs sendtoaddress RLFLrKx8tpsoUi3YGaWR5UfebvikBENeZU 4.50632723 -fiat/revs sendtoaddress RHW1uX8E8VMCDwBRy3jSkQsQGS4n1U84uq 4.55672414 -fiat/revs sendtoaddress RAfvHP5Ew8iUd14xWa6CQWPYdR11V6F2pm 4.59747581 -fiat/revs sendtoaddress RTdg93uKWzpD5JNJaAAV5zKtufasdjYNK5 4.64825892 -fiat/revs sendtoaddress RXbdbm45JL6kSvy5kGdHZ4CFVi9CnEHWgm 4.69035736 -fiat/revs sendtoaddress RDPZaeCumMyHb1mdGvxNriZWHq3r6jjKQE 4.75309658 -fiat/revs sendtoaddress RBVL3L5V3MxwuAAuyBjDeL4ywZ63ipGJfm 4.76661661 -fiat/revs sendtoaddress RVepoYFYbX9R8pSNs83jaReqtBVcESPKQe 4.80115071 -fiat/revs sendtoaddress bP7vFSRNbFdnFRUZFe42H89L8AHJSaarL7 4.86350000 -fiat/revs sendtoaddress bJB2BvB57Pf3DiGWaKjcYGqRBP1YwoCzBT 4.90780000 -fiat/revs sendtoaddress RCrZNMtJm7PG44s9rZ6WwfntGzV6RngoAK 4.91402989 -fiat/revs sendtoaddress RWHonVjmsX5LF9MpWHh35XWfMGfQcceCLx 4.95706575 -fiat/revs sendtoaddress RHcRQFGpsSwvUN7C8Z4SvQYLZMbs5Ugz6j 4.98000000 -fiat/revs sendtoaddress RLytuweJthPvjHY6erv3owjYZg8rmMkS2F 4.98780303 -fiat/revs sendtoaddress RA8vVLi9D7kzCw8wcvwPmne3XJjdjPqZf1 4.99686523 -fiat/revs sendtoaddress bJJ4BtUdgz4QwSK221VyDNku9qBUsxcN7k 5.00000000 -fiat/revs sendtoaddress RNq9ZvNxAgKnPkGfho8DoLUTsSGSEjxdhd 5.03909090 -fiat/revs sendtoaddress RQGJuEfE9JJsrcxiqXDugafTfUuGGcK4gP 5.09814157 -fiat/revs sendtoaddress RA6XsEerNDRaC1M7gVtRYANafh14rWdHNw 5.10658589 -fiat/revs sendtoaddress RVwAm5E17BVxiEjNc6XUSmZg3pBWWvQxUL 5.16105657 -fiat/revs sendtoaddress RXcUfGadc61jpm8fsDz6p2fj4zSn9BmWGu 5.17217723 -fiat/revs sendtoaddress RG6gYZMxdNWkDwz31E1xSA9DUipcBCCrZq 5.17336848 -fiat/revs sendtoaddress bY7sNbdVUaV9jnq3WJsJknypqRuymd2NkR 5.21561285 -fiat/revs sendtoaddress RQtTteK9hRnDo9HR4tJgW2jJQdg6cGaLYG 5.26062962 -fiat/revs sendtoaddress RFcGSUKjSX3AtCyaF9hZn3TUuUWUuzJjV1 5.30055325 -fiat/revs sendtoaddress RLLS1GnQ928Y93iPzEp7P3kAbkLi1Si1P9 5.30359561 -fiat/revs sendtoaddress REQnuF9xcLFN4giC4JFK6xcNAtj5DmoyGs 5.31130764 -fiat/revs sendtoaddress RUJYuNkziiJQyfjbK2p6XZ7BLjwTs8Qvmj 5.33867197 -fiat/revs sendtoaddress bTL1aHX93V9YKzoEJ5mMkhq8w1isPsdjgD 5.34256292 -fiat/revs sendtoaddress RMWmAAyeYRTXw2FrZqJ2Tnt1Y6va8za7MG 5.36719392 -fiat/revs sendtoaddress ba6xGsVQBhoSfsuePXNeRLqVRNsSwrVhYM 5.37647634 -fiat/revs sendtoaddress RSoRZxg2hfBqeSQNYGtpHREj8Hs4hr31AQ 5.37745371 -fiat/revs sendtoaddress bMB4ECM8DHhJd4YP5zzktoyDsr5ZXsBxro 5.38691659 -fiat/revs sendtoaddress RVU6vTgkE64z7TXdhEWS4qJ3TTiELeDJjz 5.40441340 -fiat/revs sendtoaddress RDiLF8GjeWpqUGn49oQbJxV26v3nEt9sAR 5.40540711 -fiat/revs sendtoaddress RJbFz9QxGgJZ9ZzYUA2gsrZV7KrK9P9RNa 5.45916020 -fiat/revs sendtoaddress RQHpFq2hP1DKsdzMMqm3mgs1fBWNrr8VMd 5.48588608 -fiat/revs sendtoaddress RVh4vRybmr6vdtcJYSxbhtbkHXEzmJfRJk 5.54283710 -fiat/revs sendtoaddress RRdvTNkiqDL5RyifpFSMynCoPUQEo9b82w 5.57804444 -fiat/revs sendtoaddress bY96rJtT6E5Hsu8kUWpPLwZkQnNTa3vugQ 5.59161129 -fiat/revs sendtoaddress R9aKC9fDGx7FCsEGRgxqhUeKbGx1NWUzYb 5.63387351 -fiat/revs sendtoaddress RVCEeszwRkLz97FwuvxcWBMzHnWzVXBiZj 5.65838637 -fiat/revs sendtoaddress RJ9hR9mDHaFR3aCDjXvM9p8A7LjvhsL4bB 5.67842818 -fiat/revs sendtoaddress bWf9LMCfvscafJbkFdmmGxYVTkyWtayaBg 5.68573823 -fiat/revs sendtoaddress RLu679Jerpk4TRdB4JEBeomKHxHKpHtAWD 5.77791739 -fiat/revs sendtoaddress RCfxaAv2aqftKGq3yx2bXNtYsp5DVPGKAa 5.78934941 -fiat/revs sendtoaddress RXevAUM5QbSUWyyUcNkQGbLsxRPnQagaAf 5.95388731 -fiat/revs sendtoaddress bLvqs86RAZA4z7pPZgWk3JUDSFhzYH1gkz 5.96138993 -fiat/revs sendtoaddress RTERUvGEuKjv5q5HkrZumQ8jT4iieAvjxB 5.97079602 -fiat/revs sendtoaddress REWN11YhFm9FXuA3UjtiE4MWNytdF27ZPB 6.00558341 -fiat/revs sendtoaddress RUajR1po4RwaW8AEBSYvGuTQ7wTFfXUDSB 6.02345907 -fiat/revs sendtoaddress bJY7DSYsS4T5xHFJsd2AgaZtPZVitXYRJe 6.02384480 -fiat/revs sendtoaddress bNAG2b3hsNqMZjtp2Nsx82AK2ZYzxECdwb 6.06434319 -fiat/revs sendtoaddress RTfUWsozDr1UyzGkqLCjf8Gcy8RX1nMZii 6.09834713 -fiat/revs sendtoaddress RUrP8wAG9Q3AWnXoQ5GtQQeHYzED4z6Fdg 6.11569832 -fiat/revs sendtoaddress RHh28ETXZbxRr115cuwviah5rYREQhTX7G 6.15465639 -fiat/revs sendtoaddress RJMjSghHKjSxUju79ZEFfotF3U3VzWjMuo 6.15607830 -fiat/revs sendtoaddress REjW5f2tDj359qPfohXJTuQmQH4fygXo3d 6.15875877 -fiat/revs sendtoaddress RF2ECSJgGiwUNsyJkgmQDYfvKJatFPfU5h 6.17851917 -fiat/revs sendtoaddress RNSzg9StyTZCtpHkQAC6ZkQWxMYiR9k7hT 6.18106775 -fiat/revs sendtoaddress RTZEL1RZ4SW1UvvYNWTDWFbjdx7cPzuo9V 6.18142560 -fiat/revs sendtoaddress REmhyAviaF38EVcF4AGekv2THdpk5Ygiuz 6.19264761 -fiat/revs sendtoaddress RAgLdxBGDkzE7uBXAgbsPBDM5mAC5n536L 6.25307746 -fiat/revs sendtoaddress RPjMSyA3g8BjoUUsriQvdD1NLrrK1TB3Mz 6.29263862 -fiat/revs sendtoaddress bEoKuv3ZQATw3ZJLpJyP9xBZ22KZeGGHbM 6.29978870 -fiat/revs sendtoaddress RXn9kR9D2XNGsjCTGtU4AwiEz9wx5hivth 6.37285131 -fiat/revs sendtoaddress RXe9gVvBUiobEZpD2kin6ci3rqjcdTxQdq 6.40626439 -fiat/revs sendtoaddress RP519KC4eJ5VubBM3m9h8UWj2G1DrqCGyk 6.44654665 -fiat/revs sendtoaddress RKNUssHQ1MVm9RfYkMFbtqmH8hTPjLj1x5 6.45071233 -fiat/revs sendtoaddress RPN4UxMojhN21FAAjanY2Ym3DbVRx8baHM 6.47991749 -fiat/revs sendtoaddress RX5nuag97TfD91vBtsYfMmkNU5mFwxRpjs 6.55679133 -fiat/revs sendtoaddress bLF3zxeasZuDbWLJjvmEfGsWZj4Ef5Maq4 6.57726223 -fiat/revs sendtoaddress RDR4wckLqkbSQrVm1QVmEFNRpvdNSEnuZt 6.57751649 -fiat/revs sendtoaddress bZ6QvZdesEFM4rVoZeTbVVyUyuX1tVmPMJ 6.61263963 -fiat/revs sendtoaddress RRsgbucf31dzNkdrke1dCYTQKDna5jzMGY 6.66225723 -fiat/revs sendtoaddress bU56V7Qk4egxMpF3Ty4E9MFY66fhHEjZ6C 6.76298899 -fiat/revs sendtoaddress RASgmQ7vpS6ixq2oRamQ7pdfmraLwgETki 6.82799533 -fiat/revs sendtoaddress RCCahX9yNRkpq9HaL58kC2fR1ZjAFsy7Ay 6.84109943 -fiat/revs sendtoaddress RD1Ki5Qkzx19C4tu46TV9s7U8zDH1Uzp95 6.85401372 -fiat/revs sendtoaddress bMr4ZKP1415NwtyqoLRNkuBJwUYnk3SMWp 7.00000000 -fiat/revs sendtoaddress RTuALQT8coBXcLnYmRHajhZHw61o1E2KGd 7.01513900 -fiat/revs sendtoaddress RCGoxVfZpGs4dxUs8DcLDTfojL1wkWMxcL 7.02508499 -fiat/revs sendtoaddress RCCAQhsikDfUuemcpT52M82VP7DPpN4ug4 7.05979335 -fiat/revs sendtoaddress RVw3oQ6ap78HGn61K7CSCNBz2jg7kE2ZHK 7.06099231 -fiat/revs sendtoaddress RWM7cZbjQ1t2GyyGWkfDwxTmkxatLCbM6J 7.09011587 -fiat/revs sendtoaddress RVP6S4o6bCtWqRktETnwcpX7symQPnw55h 7.18860202 -fiat/revs sendtoaddress RKpek9H2vrekZ213cyofxUjhSDY6Gbq91D 7.22046828 -fiat/revs sendtoaddress RYJjYsaK5AEegbYvvT42vNGysdK7UYpcDS 7.26124120 -fiat/revs sendtoaddress RHS9zj8CR9yAnjcfUbNV37Bh8L7CQh6jLK 7.26198113 -fiat/revs sendtoaddress RM76KfYhKNTmvshcWehrLP5ctFRdX1G7DC 7.27877611 -fiat/revs sendtoaddress RXtqtekeWMhzW261sBvaQ2bEm97zsM9xT1 7.30896024 -fiat/revs sendtoaddress RDTH8uPQXZfhLreqpAKBYyhUNLZr4EHQPn 7.42232722 -fiat/revs sendtoaddress RTVhP1vHoFG6EHdKi4HNCi3Vrd4zj2sPRp 7.47550000 -fiat/revs sendtoaddress RCwxX8YjgWnDJzUcb46dAjrPHyBjzyudjE 7.47872317 -fiat/revs sendtoaddress REJjfqXKShS43BHqUxLpx3uzwt8wz9c1zx 7.54805723 -fiat/revs sendtoaddress REN5wkHRo3UWYY81sGgV2R1vr5m4YkLyyX 7.55087913 -fiat/revs sendtoaddress REGEjAsxB9MCUV6W3VD3ioz1kHpHX6zjiZ 7.63189129 -fiat/revs sendtoaddress RCLgACGpktPD9vKAnEYxQDQQppKt9LnfmG 7.69901513 -fiat/revs sendtoaddress RA2SrMLyfCdzNHZopFKX3wBzE4Vfpo8t2z 7.70733708 -fiat/revs sendtoaddress RKZSYmdLj6WhfwSkHu7Y67w4K7hSPyquyF 7.73050202 -fiat/revs sendtoaddress RDixr3uj3gKAkYjSotrEQoTPVBoM1p6Fi5 7.75437207 -fiat/revs sendtoaddress RUtSnBuS5H2EvXjsv21fbQds5q76BUG6q8 7.78695249 -fiat/revs sendtoaddress RChLfZZo4ptQmWndAw2FaGuv72gUcCeG42 7.82175932 -fiat/revs sendtoaddress bLRMfoBCRgYCKahVfjs8vDhAANYCrwyusX 7.98287448 -fiat/revs sendtoaddress RB5vwEfQ3N7GJ39qQjGTbteQ5K8U3udUDu 8.00000000 -fiat/revs sendtoaddress RVE5bbkWVYDsyY4yW4L7E8m9gFQBH2uod7 8.00916943 -fiat/revs sendtoaddress RGnfzigKXUuRWf3XczBoQxXbG8766bVVFV 8.08700041 -fiat/revs sendtoaddress RE8cvJBtbEsS8B93m5tmFEzrAEQZUFEVKU 8.17119008 -fiat/revs sendtoaddress RMFuMuMuDaY3ryXAkF9WCd5uQevGMKW7EC 8.25112000 -fiat/revs sendtoaddress RK4YuiJo8PXaz1MPDpkahSNxk4PiQxWry8 8.27336417 -fiat/revs sendtoaddress RSVYZFNfpxWBSvmWo1wx9TrjrMmJTc6NXS 8.55864135 -fiat/revs sendtoaddress RRhPti7wzrDr41soAJr4c5dpKXyqZokJhR 8.60934449 -fiat/revs sendtoaddress bLj21adcDpdu2WMpVuyWNtzQkHMUhzzBxd 8.64768637 -fiat/revs sendtoaddress RDDhdWuYrZMciPtJP23S2uVFny6vb9X7iE 8.66077898 -fiat/revs sendtoaddress RNTZjRB162SPSdHfNUEzvYTcVw1y2PPXUU 8.66444303 -fiat/revs sendtoaddress RTzB8ezpXH6C1GB89PjX4XoLSVwYCS5fLQ 8.66577801 -fiat/revs sendtoaddress RVQV5spiARDTqfwBCxstWnMbrT6Q8mhRYz 8.70430000 -fiat/revs sendtoaddress RJ85BeANJJa2wJjcXRGUZQWTRTnnqVyJvR 8.73016364 -fiat/revs sendtoaddress RWQrMiW84qn7G69hxFA6Xws66cMPpiTLGU 8.75387271 -fiat/revs sendtoaddress RNnjQ3VrdCAq8M9wQxuF9amyetjCLnxogc 8.90245080 -fiat/revs sendtoaddress RHrQ2NJSHeHTouBJyk1b8jsQ8M5RZYtNBK 8.96604688 -fiat/revs sendtoaddress RPFKYt5xoowtPkcn4yszFSRpUEnktymetG 9.07044639 -fiat/revs sendtoaddress RMvT5Yiqf9XUVxeSz3gRe4s1RQiRVYKtf8 9.31783113 -fiat/revs sendtoaddress bKXGYrJYDMa8tLznG4KWBHJ9s7iYQHfwgy 9.34414085 -fiat/revs sendtoaddress RKWsNksSp9wheZJmAEBXqsguwyRt7BUWC2 9.40598001 -fiat/revs sendtoaddress RPM8y8JFL5svCr8osxJnfQFR8YAzhWuWxB 9.42863849 -fiat/revs sendtoaddress RRXDmRBVgQaEWZD6zEBrXobeShAibTxAMd 9.48885324 -fiat/revs sendtoaddress RBMni8BcodshhstqsDY6Z2G2VoV98exkaM 9.53705814 -fiat/revs sendtoaddress RLxixyXF5sqpaAudjMeL6xHsCz3gagonFA 9.62088045 -fiat/revs sendtoaddress RHhHcEga7TcgmYVS7Uny4FxpA7gyMgDXgn 9.73476933 -fiat/revs sendtoaddress RKtHAoxJLN8LhUPZh1mR1tFgLKG8nPWTCx 9.76245781 -fiat/revs sendtoaddress RLH17YLRpFZAj2pvKerVHSatYfxchrZB4F 9.77918294 -fiat/revs sendtoaddress RAEhAyrVT3SBy5RgsGNzAb1ET9teadNvQF 9.80265036 -fiat/revs sendtoaddress RM1FH9jneo3DzArwhFjVVkCx2oSZhHNXbk 9.83053279 -fiat/revs sendtoaddress RW4QXNm4iqWAdJBXiHinPjJ85H7Z3zhhJh 9.94000000 -fiat/revs sendtoaddress bPtJnUANkDa7qH5Wtztex3tL3N6SrrGUzr 9.97000000 -fiat/revs sendtoaddress bGCkEU15D4L44GXFL9WTqAZd6JJmgcyGAg 9.97730000 -fiat/revs sendtoaddress bTWACpopGbMuUmmXCTr1TKCc2oZdqrRYtB 9.97800000 -fiat/revs sendtoaddress RGxx6Dt9BD5bDrBKTFshkzgzJEf5j9drkT 9.97990000 -fiat/revs sendtoaddress bQbVVtjwoqr8uSfwyE3Ndo5QzSTrWo76VG 9.98000000 -fiat/revs sendtoaddress RQRD7qPoe2kr7qA4cBJ4RXPSVAmqfJc6wa 10.00000000 -fiat/revs sendtoaddress RLvSkAwDUdMJzS32hnz6txeasC1H45u3oA 10.01628389 -fiat/revs sendtoaddress RPBZL2cNrMaKRM9d8jVkJyK1XgLErNjqBb 10.04589271 -fiat/revs sendtoaddress RJepZPEKTnjRCqs74a2WtiFc3jfDGWAKU1 10.09575378 -fiat/revs sendtoaddress RKxdtxraDBfkFcHVwnBsJyz5xqPJAa1PWg 10.09875834 -fiat/revs sendtoaddress RXug7zpcUDXVLvi7zyGuV8nPpH9E5z8A9W 10.09934689 -fiat/revs sendtoaddress bUpDGMBSkEkaXmS3Va4x8XEKRSwHo1zANz 10.10000000 -fiat/revs sendtoaddress RNjLw9C8qfeA4465ZgSm5e3vWo2g9fqnhp 10.12231392 -fiat/revs sendtoaddress RATZjtx6Jb2qJPxkUfGC552bUnPvxr2k6J 10.12324646 -fiat/revs sendtoaddress RTppyFJBBTux2WWme3VN9W44b9t3nQcaqh 10.17085261 -fiat/revs sendtoaddress RAzZ3SApjjECcxKRAbfJpsKv9XLwXfZSXq 10.22925792 -fiat/revs sendtoaddress RATLjzZDPj9pMRk39i3yku47SxCKeQ29wT 10.27439517 -fiat/revs sendtoaddress RAAhGiiHbDVTmcFtHX9uSmpeMwwZpRbng8 10.36000000 -fiat/revs sendtoaddress RKXDhcAH7CCgf6SqSnQW43b5znB7bcjivf 10.36425561 -fiat/revs sendtoaddress RVTGaBfe1aCWR5uXJMMgikRfP9DnAHABPw 10.40724092 -fiat/revs sendtoaddress RAgHbPuF3pK7UjQ6194G4qtAHPxHnSQLgH 10.70551662 -fiat/revs sendtoaddress RWovFPYJdsN8EEyvna5cuTrF8cyHoN7Xvi 10.94374601 -fiat/revs sendtoaddress RG627XfAkt2EEm6wjspECKFZLTd7CBt8ye 10.94403493 -fiat/revs sendtoaddress RY51cChTJAM3Vu93S1CxYCXBqoaK3pcSP4 10.97863973 -fiat/revs sendtoaddress bFsCjoceWYkpGnRZQ64SZztN9KWhtaFrGu 11.00000000 -fiat/revs sendtoaddress RCNL1GJuTVt88dgnuiwS7i51ztjYHpPKF2 11.08420000 -fiat/revs sendtoaddress RC1h4zAjJcoXq5q637dK7QofvzXifi2wri 11.29086294 -fiat/revs sendtoaddress RLE4TTGnMPma6cY2M3C3YQnEUDjHienMwo 11.31241989 -fiat/revs sendtoaddress RFFNMEGjko4PFsbzf6MnNQeChwkkSSaGxr 11.37982774 -fiat/revs sendtoaddress RFAUxLikD4e1xfumD7qUBvu9LwP2NLXJ9m 11.46412992 -fiat/revs sendtoaddress RXQu5iNhbKmMciB8yb45FKa7MEykdNnBdu 11.46809665 -fiat/revs sendtoaddress RY7JPTHmLVyZPaC8dqnifyTTjdLGFTKcbP 11.49885173 -fiat/revs sendtoaddress RSi2k8no5EjRPVvACiEjuMEqR1nuMvVpQr 11.50552477 -fiat/revs sendtoaddress RUndNcE3waCCYmSir6YAEPqQ13vrtW1U2n 11.50998241 -fiat/revs sendtoaddress RLZyNC1mJv9xv8XW9zmNtTbWjmuYXPwYun 11.59027663 -fiat/revs sendtoaddress RMZXWs6iCKcy9xqzFqSQRNjxDYgdPNtHa8 11.61497275 -fiat/revs sendtoaddress RCfwEwNiVHbE9ZtviNEwip5kX7Xw6bBuQy 11.64061118 -fiat/revs sendtoaddress RMwewBVYypysdK6kgyViygPeegCRBQKeAx 11.72419877 -fiat/revs sendtoaddress RM6zMhsezMzcdhiQxiAJYmvs4gHUYomnxt 11.72940887 -fiat/revs sendtoaddress RGQ6tqNipuKa2g6jNva2bRJVS5t6Wwdq61 11.91053184 -fiat/revs sendtoaddress bMBrJQzzyjadRf1hbefP5NYth8KCAJv4ue 11.97804853 -fiat/revs sendtoaddress bGzChjyd2QSy6ngHvaoZoWsvSHoS75s9S5 11.98000493 -fiat/revs sendtoaddress RGnJK86j6n2gxJ5yM8Y8JU13A6gn78LFek 11.98632762 -fiat/revs sendtoaddress RKXvhRQoVM57PMnXHjreBLuSdC1hNv66nX 12.22549689 -fiat/revs sendtoaddress RNbE3759WCwGxZK4H8mkpAu1N3DZeeQQ8C 12.22838967 -fiat/revs sendtoaddress RDg29vmrLNZRxWrRwW9qMhr5f1Dc6obMJp 12.23635859 -fiat/revs sendtoaddress RLBrfF7wA4XawMeWuEjkGQ6Vy4xRJ8L9Rm 12.26271901 -fiat/revs sendtoaddress RGcjC2ZT5jABMYegPDaZXQKMH9yQ3FP7yn 12.45720563 -fiat/revs sendtoaddress RJZ37ZbAE5gSCwzi17gjvzRERC8zLEwzmX 12.48602133 -fiat/revs sendtoaddress RNzYbCtkEw7dCt2qyC5XLPANB1Fyt5QpUd 12.63140000 -fiat/revs sendtoaddress RYCRYF42iNjFmFpEcYBj1BaSj893vsP4jR 12.73240581 -fiat/revs sendtoaddress RHDz1SBqnogKuDc4yGjwrpnoDvYoz5TEEE 12.81132571 -fiat/revs sendtoaddress RJLiW6quCrwEgExwAsJcBLhNgxZCTxbVjF 12.93284052 -fiat/revs sendtoaddress RRezFyHPgUNu7Mo4rdyPgxXwA6TzyZvUfF 12.93365966 -fiat/revs sendtoaddress bEfb9xoDhKSK8mvFBfuJwWiB7pHqEsDoy1 12.99702667 -fiat/revs sendtoaddress RMY62TF2rZ61Y2LE9rnyaejMGhyR5r4ga6 13.00138970 -fiat/revs sendtoaddress RCziZFrJmQQDcMziVuL2sr5GQPUgQRZgqS 13.08556125 -fiat/revs sendtoaddress RRq5Wna4FnVEsEqvQiSjiH1mrBJjuDqMpa 13.11364546 -fiat/revs sendtoaddress RPN7WeABqDw9gmoE7jzQKLFU81521uJT59 13.19427008 -fiat/revs sendtoaddress RLVsyrnFVyh5g2AXRwxEywSGVTzLHVvDR3 13.21087443 -fiat/revs sendtoaddress RKHt6mmoKrLG3DSjv5KnDU7szqUiSG3Dy7 13.32421245 -fiat/revs sendtoaddress bRHewpfqA5YpGvff6YiSMbFSTjS792HZP3 13.40000000 -fiat/revs sendtoaddress RUyYEBCp8yeEmxA8rZdSX7JAHYffqf3w2H 13.64425051 -fiat/revs sendtoaddress RKDF3bRUTQTQNeXahroqU5fcK7XLpcUHzZ 13.71270708 -fiat/revs sendtoaddress RTKABgPTaekUvupeLVtord8C7RWoRTi7Fz 13.71530638 -fiat/revs sendtoaddress RE98nBuhWCu7UpxsBTSqbK4tGAWwaDFUzD 13.77683460 -fiat/revs sendtoaddress RHhQXJM12G8xKaH1e6JM27vgGKNavZitRf 13.85923910 -fiat/revs sendtoaddress bRMrnxqd4DnmC7jzhLBqHNoazbGZxtjXy1 13.91898000 -fiat/revs sendtoaddress bNJAhxa7uRQn7X4BWQVotaGmV5ihmkRzb4 13.98000000 -fiat/revs sendtoaddress REigyrSa6rg4kh5JnzHD5Xmi7LUXK7P1Ro 14.07056206 -fiat/revs sendtoaddress RR96Qg7pMbPMJ2W7g2y9LqUuN29jT6Vftn 14.08583460 -fiat/revs sendtoaddress bDNSNBjBMGu5WXYqZV36qDdGhu8JLeW8oq 14.38667315 -fiat/revs sendtoaddress RJ6axNdbzY7KwRBDRXGYAstdjY2ReYdKHD 14.39206871 -fiat/revs sendtoaddress RKDuPMsNqAchvvgHit3FjCa6xXj3MBYFE7 14.44006093 -fiat/revs sendtoaddress RTFkVz41dAidUbZNi2KjhJYDJwVFtuvRNa 14.45799256 -fiat/revs sendtoaddress RP8ZdDgwnC5hkv2pRhLHWJA3QUor6vV8bw 14.60896206 -fiat/revs sendtoaddress RMz7CnEbCarY4eWcauV8zPA5VbiwpV1tBq 14.69168104 -fiat/revs sendtoaddress RVhuV561hXCCWiqpSTXeTJVRBR8aghZCVm 14.79301683 -fiat/revs sendtoaddress RWzkYvoCVean8EdWv5BYcPms6Pd4WPfVtg 14.84881740 -fiat/revs sendtoaddress RJkVFVJjBLkjtqWAcoejf6N2YwtyFpx74e 14.86126740 -fiat/revs sendtoaddress RPKHftKfT42qC6KLkAJNd6qt7jYoJ9uYB2 14.93004526 -fiat/revs sendtoaddress RLdRxr1d4JgfHVqhHMgK5HkaVeRkNbUaBk 14.99000000 -fiat/revs sendtoaddress RJrntvb2jYahU1KFrwvPErLq6fH3vBH99V 15.07434953 -fiat/revs sendtoaddress R9dMSZYhjVar5WPEiMfJtx628xCchEkkns 15.14149722 -fiat/revs sendtoaddress RRyNrbePcPoxjdUZx39saC5bezu1EwbnXU 15.23806169 -fiat/revs sendtoaddress RJxBSmJSn7Gf1MVc5xTohPe2NBZjgJSYDx 15.41660974 -fiat/revs sendtoaddress RN8hiGJkqi7a5TuhtnWh5Xrv55qdsw1LaT 15.47900157 -fiat/revs sendtoaddress RRXW4oiL5HQxeffXQPX16sY2RqVxxsNR4i 15.57990000 -fiat/revs sendtoaddress RL3EUFd4U3tNKCFC3GPTxUknrjMLbaDwWq 15.59110501 -fiat/revs sendtoaddress RL89Nq2YVnU1cx2DimvBSUuDKJDo4v79f5 15.71654101 -fiat/revs sendtoaddress RM2nMWMeQ9Gw4GTLq3m5eXPyzbwB9mppxc 15.84493003 -fiat/revs sendtoaddress RHtUj519CWFXZLYmxqTKnzXujNQ5BcDQdH 15.86105167 -fiat/revs sendtoaddress RGM5Azshb3uj6fYf54y4t2Uk936ZCZTEu3 16.30462792 -fiat/revs sendtoaddress RPuUeAMvAPSepweaSFaDKgbaugdvKyyhTx 16.34892435 -fiat/revs sendtoaddress RE67nbSrh2hDEADHACNWsxtxVkQHkb2gBo 16.41382706 -fiat/revs sendtoaddress RDBBd3eQdieMBQ6GfKZwcpMKzNbeKEp4Cb 16.59177141 -fiat/revs sendtoaddress RERSUpqfSCbdoTSpQWhwwe9KqDaDYJG6CU 16.70612498 -fiat/revs sendtoaddress RQpserUdG9MEi5HWnq8XwnxD4fNFk5EQfc 16.71481224 -fiat/revs sendtoaddress RYRLVH8J2YUM4PSmRn4US4CEeXfev5oyVT 16.82656086 -fiat/revs sendtoaddress RTJHsf5YGCnpzmjXSLxmdApcJ9FLe1scZr 16.91416826 -fiat/revs sendtoaddress RGVYJst5uBroFFL9iZduhrMQnJwp5CmgP2 17.10952827 -fiat/revs sendtoaddress RGGT2ew3AQsDGiTM3odnCUyiv28e1vMjQ3 17.13634047 -fiat/revs sendtoaddress RE5N6moX3S95h9P1o182miapBuVCaYUpHC 17.54142304 -fiat/revs sendtoaddress RLfoQiJ8Zz3DTpvTcJRF4EmmgdKTZSDCBn 17.76085471 -fiat/revs sendtoaddress RGPxHboHchYagV4YUjyzS5x12YaMdTNuTU 17.76559916 -fiat/revs sendtoaddress bTisc6Jj89hkfUfKXaixKAE2eDn84JBchG 17.98000000 -fiat/revs sendtoaddress RVGEtfcsr2tuFpEJ9fe8YKMLnWScH3eLaq 18.11802172 -fiat/revs sendtoaddress RAYm872orBvw7DBX7r7SjwdKusHCoP16QC 18.22020782 -fiat/revs sendtoaddress RLk5xhUE4yUeAmakHbCWaAxeFxXiMhbdx3 18.27183189 -fiat/revs sendtoaddress RQv94vYLnrUm3oTAJijoma5pHxFPLQkAkU 18.28349476 -fiat/revs sendtoaddress RWMW2MmVpxHeeZ7CWbxjbdvFwR2beU9XHX 18.71186656 -fiat/revs sendtoaddress RLxEbFJZk2eMBApNLtp5CPMkecAsud271x 18.79673763 -fiat/revs sendtoaddress R9JprN4X3oYP45QUx1wiRbgUEUZeffYDP9 18.99990000 -fiat/revs sendtoaddress RQXCg535VfPKKav8eRHFbKJYjhnSEDYyF4 19.19168638 -fiat/revs sendtoaddress RE1fGebb8dQ9nbC6W4BBY1wsSRwERgYUK2 19.49566224 -fiat/revs sendtoaddress RJDbYk2yPqefWTGzd1euqMeanrta2wgXwh 19.53159729 -fiat/revs sendtoaddress RUzuV9tWd2QCwnw9QAdF6Rvu1f1rxU6vV4 19.70650000 -fiat/revs sendtoaddress RQqCqY27MFw7Bz7tuZrjN4Yv52yX3trhLV 19.96986886 -fiat/revs sendtoaddress RY6oEhMB9XhLhZCYRJ2vDf3r47Nega1qvi 20.00000000 -fiat/revs sendtoaddress bbhNkGRmsdCdef4oDaJ9TnB9KBzD4U3Hqi 20.00050000 -fiat/revs sendtoaddress RKK26dWi9GeUA7DKcTztuFWcfzAHZQB7yg 20.01297681 -fiat/revs sendtoaddress bb7wzpimc94Vmy1LJqWA2u3AinCj8MYHzd 20.05410472 -fiat/revs sendtoaddress RA8r962ZQc8vzENfrDPUqURFZy7TnTFLMN 20.08202268 -fiat/revs sendtoaddress RStZxiAUeTisYU7bSkRDHN7dZf4ye8spkK 20.08980500 -fiat/revs sendtoaddress REw3BxmpcDT8i1DtnnpwyEbkdtfh5DTC3G 20.32291312 -fiat/revs sendtoaddress RHnqXn3W984FzeNp5ZyvLEpz8f7eiLR8yn 20.36885561 -fiat/revs sendtoaddress bG1RRbdWE6M6mbDBdTtZ8i7VQLFPavd7xq 20.52186953 -fiat/revs sendtoaddress RSJcMZuzcvr47DoYPMquM7ciWkN4m79Ats 20.70261657 -fiat/revs sendtoaddress bRv9NA2yL6NLj158NrkdVkTL555Pmffweo 21.06991058 -fiat/revs sendtoaddress RUnbfGwqwgaKniaUzmNRgaD6suCMkpWsSy 21.17667297 -fiat/revs sendtoaddress RN6LmMTEY9yCmpszz9QW92Nr6TjruqRRUg 21.21727192 -fiat/revs sendtoaddress RTkEpCiLFdks4H7MNsbV67hxXPScHKJYTc 21.23403553 -fiat/revs sendtoaddress RYLfBUkCVR8ZXrRijBS3i53akQw4u5cwX7 21.50295318 -fiat/revs sendtoaddress RD5t75MABmK9CvGYQN7a2cYcTE8obAoeSj 21.52317207 -fiat/revs sendtoaddress bD4nDFKiCLJGJT22gbVrFro3dXiET5nhPh 21.68163463 -fiat/revs sendtoaddress RAE6RubBDc4ojW8U2CT1NS95Hf495ahn9A 21.76541771 -fiat/revs sendtoaddress RDRgUYhC7752xwDQrAqUi1DsxWjyiZSJtx 21.85310020 -fiat/revs sendtoaddress RTgYq4LFL3LiT2qBHS2jLQJVcR9wAVbdVq 21.87197169 -fiat/revs sendtoaddress RUcY7jNkfcr7FdCGicxm6rFFMsftVG2q5g 22.22900000 -fiat/revs sendtoaddress RTMapTtbfKjqcHyJRH7bnA8967UFFXeoKw 22.72955192 -fiat/revs sendtoaddress bSwduqERWfjSLtyEaDhkPuYaWsB4GiRpeh 22.88086692 -fiat/revs sendtoaddress bP5YYJuouR2zkbRVTmbRWDM5EUzZXFf5wW 22.92160462 -fiat/revs sendtoaddress bUhCLBFd2rmfPvmbXWXg7ZrxdQFpNkVs9W 22.95887915 -fiat/revs sendtoaddress RLnfLx1jHoAWWHfLwMB6uoGDU6H6DUc7s6 22.96060896 -fiat/revs sendtoaddress RGk2XbwmXxbgbyZ2ED7f8pDqzCnJ4JugAZ 23.63488442 -fiat/revs sendtoaddress RTA659rVfjuZ9nVCeF17A2tSEX57HYUpT9 23.96332418 -fiat/revs sendtoaddress RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf 24.05385000 -fiat/revs sendtoaddress RSf14eDKMwqirfEhfGwFdxwxEn32k88aQb 24.54185339 -fiat/revs sendtoaddress bPWMmT3oDWqQJy22UiFqEerbwDgvHBmJdv 24.94000002 -fiat/revs sendtoaddress RVdE9TtbBER6AX8VKEzZ7c67wLzAmKGxVF 25.00000000 -fiat/revs sendtoaddress RPPDVgfhnvR2VY87rSN52ECwkmucqDwoHq 25.09012689 -fiat/revs sendtoaddress REFZgK5DiG21VNYYspvyJcoEcu3w9cN1m7 25.18682282 -fiat/revs sendtoaddress RGJDE8ZhKcKwBhQ8pA8PHAkxMabjR46DLX 25.23164985 -fiat/revs sendtoaddress RPZmrnCKnZJpEXDjqwF9tR1NnrPsGyNedq 25.30329901 -fiat/revs sendtoaddress RPsudhrty5f3RERUQKb8JqT14kWJ8Pgo2t 25.31263322 -fiat/revs sendtoaddress RTVhcwSx4g8zQvyfmzBB7eVMZHUenG5Hbp 25.52825141 -fiat/revs sendtoaddress RVU87RsgsPs5XCd1cKxek5Cm8UMdYb89Zb 25.56542965 -fiat/revs sendtoaddress RJA39wH5wayxBQ42FEYq952Nh6G4cTQCVw 25.99079855 -fiat/revs sendtoaddress RY2wme6iYopBVGDqfDw2Ky9Sr6KohYCBSz 26.59001804 -fiat/revs sendtoaddress RAsUxrXkZJ5ZSH7LhbKaXGWu3KNoiURs1A 26.65141146 -fiat/revs sendtoaddress RQnAJYgm76XKGny3BUntkFT6PrdACJScFr 26.96884349 -fiat/revs sendtoaddress RA3xr2Us7u5z7d6nxZrRCfRCtxTX2u3stS 27.99163429 -fiat/revs sendtoaddress RF6ZXivZJkNJwdbwdnNxTSFebS1FA1dAov 28.25611482 -fiat/revs sendtoaddress RVpjSJitvEHaEpBXaS8UgPKUqZQxhA5Ven 28.34230329 -fiat/revs sendtoaddress RQJ4TPSTYxVtxmfkHDHhqhiJwudDS8fLgu 28.42905520 -fiat/revs sendtoaddress RJygH3aomv3bV8jSrKMuBKEmWWYrD5izCn 28.55163073 -fiat/revs sendtoaddress RUs9Jc1oe1eGcJ3DBh76hzRP7Qug1kG1N2 28.76362070 -fiat/revs sendtoaddress RUzBwyqJeZZBZtQEoASetrYLqCtg1Y6hsu 28.78899081 -fiat/revs sendtoaddress R9n8dRBCbTmcGSX7d4WNq8iiFG8BUvRuUz 28.91110731 -fiat/revs sendtoaddress RQKQmahdtDuZZ89sJCiHqJaexhNi8XsZ9C 28.93042991 -fiat/revs sendtoaddress bTBscx9pemaGuUH4TS4YeJhACjxJNYhWqU 29.00000000 -fiat/revs sendtoaddress RA7C6BnphnV83PSg4D2ddXBNtbUfRw5W76 29.17499765 -fiat/revs sendtoaddress RLr1kaGMePM2tpej85TMPVjX9hiW9qbeQ5 30.00000000 -fiat/revs sendtoaddress baMdN84uxhaax7s3JNqyHmDsrwPcdjfBVu 30.01000000 -fiat/revs sendtoaddress RBWi5QkS75yXSeDDdvKyTfJo9sytNFqdca 30.03538484 -fiat/revs sendtoaddress RF21HJfT1q6rLwiZZEqZW4yxJjQUdZS8M6 30.07940327 -fiat/revs sendtoaddress RDd64Cz8nkF2a8HVJNfdRhr7wMffqUhpyu 30.81611795 -fiat/revs sendtoaddress RYbVkE1rcRWktcpxyqwh9nFqMZduPi72Ks 31.03202705 -fiat/revs sendtoaddress RJimwiT35jAA7VZT7ZHv4unrj1pWcMTjBM 31.08585106 -fiat/revs sendtoaddress RVfMRsetW5Dy5WLKsefuDQxikDLVEE2gR4 31.12958871 -fiat/revs sendtoaddress RV94vi3zsVKmWaEJhZm3NwwZcftUagaZmw 31.38033168 -fiat/revs sendtoaddress RTywPrMpFgm4EWrkX2p9s6WBhqn7qvrUQB 31.49707608 -fiat/revs sendtoaddress RMYPPZKq5kmspA6PRBKGURNy7fTaRfWXFj 32.18730084 -fiat/revs sendtoaddress REy8KiPJkq18MrhUEHBZK6ZTJZVhsJM9Mi 32.26197903 -fiat/revs sendtoaddress REeFYdQ81qoSi2LHAT4mfDSp6meaUkq54R 32.48842943 -fiat/revs sendtoaddress RYZuCvn5ZMGeAFvNDJy3Ws44rnRvCmWfZZ 32.81268577 -fiat/revs sendtoaddress RH4M2Fm2RFds8ytetqDoQCqjrMK3YXDV2N 32.97000000 -fiat/revs sendtoaddress RFiVhKH5A32yxh5PbAAPYan6EqdKk5RCUU 33.69673470 -fiat/revs sendtoaddress RMEDMMCwTwPokiY1FiUKqqry8Ru5VD3uEY 35.19000000 -fiat/revs sendtoaddress RQVPHPjaGN5jJboBeKHJdJ19XaJSG3YKZY 35.32086964 -fiat/revs sendtoaddress RYJ4dgrrfLsGebPTj5qdnf6reRTWoy3o1k 35.57154136 -fiat/revs sendtoaddress RDMjM2gAZjhWtP2Ztaedkt7qKVycMmY67a 36.97762226 -fiat/revs sendtoaddress RKAGNCcrxCgci43d7XCt8H5bkSTGHe14SV 37.19249558 -fiat/revs sendtoaddress RBeftVvNGBpHjmEQCUg8CCDHVULgGVNJsP 37.54892664 -fiat/revs sendtoaddress RSfkUZpp5nW1dw7GzEwUEfcPusCaGD6XkV 38.08192060 -fiat/revs sendtoaddress RVYUgpjwCF4ohFkv8W5118Nc2kTo22MkXx 38.32196946 -fiat/revs sendtoaddress RMsPcEQnPPMiZogu7vccYTTDZM46TXptun 38.67375486 -fiat/revs sendtoaddress bV91tz6BKcygZ1Xewdv68H3F6UQPo6DV8F 39.22798428 -fiat/revs sendtoaddress RAUbunsjA1xdPD3xsDpP5bfbUf7t4f5QDe 40.00000000 -fiat/revs sendtoaddress RW9S3bnW8UqaoHMpLAK3E74LymQ5dvk6UQ 40.06389247 -fiat/revs sendtoaddress RP9QtzmRNRfLFi5Mbm8gvD6TZfoHwj2MmV 40.66855529 -fiat/revs sendtoaddress RDwzirpMNsH48w5rEL4JZXnTvRruCmybrx 40.83472214 -fiat/revs sendtoaddress RS9jA75yxYvZJkua7GE6kGrQJqSbPaVzjZ 40.90800000 -fiat/revs sendtoaddress RAP2RT4eoLBKuWXGRDiA4fSsJ17vqpnnKm 41.11815355 -fiat/revs sendtoaddress RLFN7yZoyQMc82Bo2VGgE3d3gqc8Q6JcjL 41.63038353 -fiat/revs sendtoaddress RCtgFQuvJPYUQTXywNh7vJ2YW5tFYXPPHP 41.92581014 -fiat/revs sendtoaddress R9Kj3m1ZvXfRVr8NfwoYQqgXPWnfAEXNer 42.46570277 -fiat/revs sendtoaddress RN9Uc8y1tfkAohARBr8x6Tvb9P6y9dqx15 43.20551649 -fiat/revs sendtoaddress RQdhMza6wWp84dHZPyrRHfibAsYX9yfzru 43.60137527 -fiat/revs sendtoaddress RCBtWy4JKPwQDSNPj81U6QL5PVNNgrRhcb 43.87960000 -fiat/revs sendtoaddress RTKm5hJAkLccm9BMkw63W6ceEpx7kNrVAE 44.27236648 -fiat/revs sendtoaddress RMVn8uBovxtjxtbhYp1WiGahfaRp8urgVL 44.36039614 -fiat/revs sendtoaddress RCSwNeGfNQCv2A8E921aqZgE4KoVM1G4xk 45.26159097 -fiat/revs sendtoaddress RFSLmAGrHmUuQN43rVBE1f5aaQkxi92Lc9 45.35485306 -fiat/revs sendtoaddress RGAiFaWTsD7X8N3Y1cRnSuQSbSasxCuu2e 45.36502840 -fiat/revs sendtoaddress RCS2gVPEfFVjTWovdGXm4UoE93V9RGYneF 45.78716177 -fiat/revs sendtoaddress RAhRFdzDF7mrchNZxp7pFsxFPLsgRBB2Si 45.88643625 -fiat/revs sendtoaddress RTcJXCL1TruoZ2hFMfaPuC3r7HRFpRdaWs 45.94912573 -fiat/revs sendtoaddress RUSBeCaGi3LK1arqUJUU6NMLhEGGmdvF7k 46.17388739 -fiat/revs sendtoaddress RLT1PH7WHARhoV3Lm5j8n2Jf77Rj9pGAPb 46.51149000 -fiat/revs sendtoaddress RAfuUdcYQ3GQkmiojQHbfozuvbGGNHVi5w 50.00000000 -fiat/revs sendtoaddress RXRk8T9yDyt2Pc9rPYK7qZ2EqEhr9qaeya 50.21033178 -fiat/revs sendtoaddress RMpsdtAfSxWpHVXbTpJF5TNkf71MRahQf1 50.73219475 -fiat/revs sendtoaddress RPESR5AymiPaYP6QTZPFfP6T9ws2CRu329 50.92160000 -fiat/revs sendtoaddress RUoBWjRaoR5dwSfQ9UwsTmEJaEvjHexLJh 52.16835519 -fiat/revs sendtoaddress RGzVULuqZSSWmnxeqdggZt816SxTfDzAuP 53.16556252 -fiat/revs sendtoaddress RReFVgQHePN89U9YiraS5L4Wq2izaCyVZy 53.64128669 -fiat/revs sendtoaddress RLXsMTWBikxAgqqjuBd1Uveq8wtLq1VjbT 53.81988797 -fiat/revs sendtoaddress bWPsh24sRtkgHg8o18x6MraGgKG5ZbwMf6 54.77669998 -fiat/revs sendtoaddress RUkFd6ai5SXXj5cAbX5C51SSJ2ZjsKPVFe 55.56852967 -fiat/revs sendtoaddress RJtmLD2E14LkH8hDpGYUYzkeUix5piRtUG 55.63858042 -fiat/revs sendtoaddress RTzcdBFvrjL2xhj72k1GzBqjcydQ6PeWxo 55.84620814 -fiat/revs sendtoaddress RVweURd15ub1h85wfNkYqvXMyUqFB55564 55.86220000 -fiat/revs sendtoaddress RDzKUu1uEoRXcKPvQqacmvBAEAXSKkzvSa 56.18294195 -fiat/revs sendtoaddress RJ7DNRagYN1RRX7CekDYDf9pzyQYLFKRpX 56.37277591 -fiat/revs sendtoaddress RBUDJzemwyBvPF8hY1snRuj79we1WGM5qc 56.71074057 -fiat/revs sendtoaddress RXMcD9J2JFygmaPxLBHp4y22kz1KZ1CLYw 56.82525711 -fiat/revs sendtoaddress RKjqSAZer1R5JGScaXWoESvGUJ3LctfK7J 57.29543876 -fiat/revs sendtoaddress RFUQsPXj3Ls547Me1mpLCf1uSoumwUP63P 59.17036860 -fiat/revs sendtoaddress bDvNazT4qdiTvcBnRNRvZfA8mW2GpfrMYw 59.49000000 -fiat/revs sendtoaddress RKfJfdFP4Y7zvjS1D1aSKz84vJVZ2k3u6z 59.86359941 -fiat/revs sendtoaddress RHv6F3txYYk6UKjyboSbQjWMLyqgdAAieE 60.00000000 -fiat/revs sendtoaddress RHrERJZ6yJ62Hu42s6ENYauP7PbtfTKouK 60.89100237 -fiat/revs sendtoaddress RAnXn6JX7mvcXB4oQ4HDvG1LqGTTyDBpDK 61.33416695 -fiat/revs sendtoaddress RCBrFa25Dnc462ovQDkTBYuypzscWS4rc3 62.54983642 -fiat/revs sendtoaddress REYtA8PVRe8AfNC3qYungbVnmB1zwkBzXx 63.69739387 -fiat/revs sendtoaddress R9xDXLjankytgcWQY7atn7Bbdb3gdchVSR 64.10973396 -fiat/revs sendtoaddress RDkjbRzi8YEA53cWqrzRPygxXQDpHtChTe 64.14507919 -fiat/revs sendtoaddress RRPrHoMQ86N87f8YHfMiGjSax2D53PmH4A 64.80890026 -fiat/revs sendtoaddress RU6xJqp2ujs4DekPy4zhoH2w6nLENPpuNX 65.79183438 -fiat/revs sendtoaddress RCwTYcnjq4D5FZHqof4FAVjnJnrL43vLFM 65.84642049 -fiat/revs sendtoaddress RTkaPWn5ikgiKeDX9225guk6tTaBA7RqGg 65.86789399 -fiat/revs sendtoaddress RQt5oRDo7xHg1xEkoNLgFJ2bdhyKPr8HKr 66.69911819 -fiat/revs sendtoaddress RKL7QVeP7RVxJXV2c2D34WKLo3zZdx7NNp 67.05614804 -fiat/revs sendtoaddress RJsAQynCwmVmKhLQ2TWVqke5hr9Md98NTU 67.56912018 -fiat/revs sendtoaddress RAWnPCfHYyaF8w7DGUFjWfTKHy1Ksy6uiU 67.57766718 -fiat/revs sendtoaddress RCv1zUhwdZ4eub4J7MQqK4y9TXoxUw27dy 68.91424493 -fiat/revs sendtoaddress RUEWpaa6t4t8ZkXMQFea5o2hyLecvmiSgf 68.91918018 -fiat/revs sendtoaddress RPpiV8XJrhkv9ZiyM64Akr3UXhnuAyTQC2 69.04779793 -fiat/revs sendtoaddress RWci7EMXg3rHsWixDYoS1awmtaXcCcNUKD 69.05662957 -fiat/revs sendtoaddress RVziSFdCLqwCoCc4S6h8gMid3b7wSv5paH 70.12692312 -fiat/revs sendtoaddress RCMoyxzyRA7d1D72bVAWnhUocB9BxRJWW8 71.59658394 -fiat/revs sendtoaddress RR2eusoUZRav6vcTdgFVeNWA44B62zGaYK 72.30662573 -fiat/revs sendtoaddress R9KAW42xg429dz8iNf1ndZ1JpUVP9rh2cm 72.39322336 -fiat/revs sendtoaddress RJLWdeLn1M5sY1T6DqnBCthmo4kx56EfuE 72.41353461 -fiat/revs sendtoaddress RAWmLT4xCMMoigdLZ4StuiQRCUm9XpCeZu 72.73825100 -fiat/revs sendtoaddress RQJ6iQ8BQwUma8XfW6cwTPLdsAGrqC9kDT 73.07378007 -fiat/revs sendtoaddress bG8bXdDdDGXC2MRoctyduJu57xj4zkECxT 73.36528155 -fiat/revs sendtoaddress R9MAG1Lv8HW9DRq78DDZbz8SQXyP2gHGV4 73.59822799 -fiat/revs sendtoaddress RAMLFBRuCsU8RFx9cqmXMSuxeMoMJsDatj 73.95460045 -fiat/revs sendtoaddress RA8uFpmvySKWgDnopuRQCYmngDtoYL1Bm4 74.62258456 -fiat/revs sendtoaddress bFvKi5z6fr118nMMM3fRLrzmXtgqNg8TFZ 74.93094772 -fiat/revs sendtoaddress RF8CDS3b6Q3vqeAzmoL6ngbyNt2oNF23sj 75.71613168 -fiat/revs sendtoaddress RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY 75.98999999 -fiat/revs sendtoaddress RUPEK1UJ9dxDUnZVFQXfKdNERFkkAUzBnv 76.09309632 -fiat/revs sendtoaddress RE5oyQSbMXC7ccRHgkoAApL8h3PB3Gp4bE 76.51471756 -fiat/revs sendtoaddress RL8m3betBrE5hTHPMFT6qdhqyanTFshyKB 76.89974819 -fiat/revs sendtoaddress RFUCrHkgp1pT6TWn7JM8c8dkbi2zaiCxhg 77.24810157 -fiat/revs sendtoaddress RFfz7SaUQqVW7gXovhbgNpCA6HCE7KG783 77.70000000 -fiat/revs sendtoaddress RHjemTRTpTN2m1g7gqZEQRdHTjBCpBDxfY 77.93130589 -fiat/revs sendtoaddress bKGnX6Kv8vFC6jALbf39SiDCVTf4RJdgz2 77.98778009 -fiat/revs sendtoaddress RFxXM8MaUaUPt8TzUg3yub1hugRvnXz2oS 78.74400181 -fiat/revs sendtoaddress RSL5mA7bwZSYEfWb4xa6Y44FdC3dK1ooXg 78.82514781 -fiat/revs sendtoaddress RVdj9qFei2CYbezv7F6URG9Ztn52UEM6vQ 79.02526364 -fiat/revs sendtoaddress RLY3AYB1A8ZMKx3jjYRDersmuMY2pWuYyF 79.33015345 -fiat/revs sendtoaddress RSByda5tHs8P24SEpLTjVYvmM224VFUMZo 79.65688080 -fiat/revs sendtoaddress RNmCUjsZgbyb1WpJ2geA7PudX7FEWt6A1f 80.83392215 -fiat/revs sendtoaddress RXACz9vncXsH12yfw1cy5jcAB7Ac8ntEa9 81.00660000 -fiat/revs sendtoaddress R9QiMbjeajKnjjjj9SCDasv8QSqeF7PMcj 81.69159762 -fiat/revs sendtoaddress RQoG4MwfgFXKd4YgtqKAhbrUBxBsBFPHcx 83.03037663 -fiat/revs sendtoaddress RR2mB6Pwc6Gb2cvNyeHjNBXx68HXtVaXxZ 83.30080000 -fiat/revs sendtoaddress RQCiBLdKTwHFwzzmhcJMCqEXCiawN4iU9e 83.35113918 -fiat/revs sendtoaddress RTBQygMTKnEUrb6mDuRX6oZMzD6bpz7MHV 84.76381876 -fiat/revs sendtoaddress RYZs641EAgUVndtfummJSN6R6qRYFbUM2s 85.17955243 -fiat/revs sendtoaddress RYFif5LZddRF4VNggedHDV8Sb6KdfHLfsY 86.40991880 -fiat/revs sendtoaddress RTotPYKMLJ8kBGidruLBNsuD23sP7t26V9 88.23282148 -fiat/revs sendtoaddress bUC1sLWLJAg4rhJqX7iuM9hveEqaBrNejD 89.18619772 -fiat/revs sendtoaddress RD2cWM7HimECphiu8V8sctwGfubg2WKrJ3 89.81298936 -fiat/revs sendtoaddress RWMvsej9DLbf7Ah4pERzig9f7jRr3GQEjp 92.20066887 -fiat/revs sendtoaddress bXnJfaRrXzXG6hB7rzyf5RhMs38dmbyucN 93.75110762 -fiat/revs sendtoaddress RKZU1TEmq2AgR55V5zPou9wbwL8aoY4BLY 97.14527606 -fiat/revs sendtoaddress RWcFZhSSAy687UnNQuLn4FH2z5jvADHckJ 98.25817616 -fiat/revs sendtoaddress RN2L1tSiXFGzqwiD4JnpW4bNm1WwuW3bCB 99.99000000 -fiat/revs sendtoaddress bRrtZrDKaeB3BRuU4sGPFxQbKNCPYghrF1 100.00000000 -fiat/revs sendtoaddress RWP5jYB4JBngnikbh2DWoL6AmkQtU16keG 101.03001729 -fiat/revs sendtoaddress RWxknfDNTUssXFYXs9WjyGY55gTouXRAiT 101.03220000 -fiat/revs sendtoaddress RMaTWd43Y59AQaMV7A2yUo17UxgjCrWsLk 102.06379403 -fiat/revs sendtoaddress RXL21swDPMdGZduJdpj5Jd4xmtZW7ADn7n 102.07140374 -fiat/revs sendtoaddress RPuc3TzLc4mvUFeSSCHMdka2mD6skMdt2d 102.07309463 -fiat/revs sendtoaddress RUy8CriCsoirom6SDQE7PbKG6peRYLkg8e 102.87000000 -fiat/revs sendtoaddress RDDqYEMc6U7DCk5yo93Cy8phZi7cpRMcHo 103.29269921 -fiat/revs sendtoaddress RRCDVWSxqac2aRcR5TQeGj9RY9vVJ5dDv3 103.74612194 -fiat/revs sendtoaddress RV81npybQ798Gq7xpEy1N4iszz3Y2vezsA 104.18722767 -fiat/revs sendtoaddress RY8Lsz2tM6kzyi38fuH1zVpBiii96t73c6 104.49000000 -fiat/revs sendtoaddress bKysATBpmdYMzN1u2JR9qoGRMztNkAndV3 104.77000375 -fiat/revs sendtoaddress RSPpiHRcmFQvSpeepeXuuuLHDo2ZSXArBo 105.21121101 -fiat/revs sendtoaddress R9HVQC9seWf4vub1Nw6yYZhsaDWAMmhcLT 105.59787727 -fiat/revs sendtoaddress RSrQrnZB1ZCxS8WTPVUqzkiwRcXbKekf48 106.26016048 -fiat/revs sendtoaddress REWLpX7P3YZwJG6pWcDRV3oqaSMRBrrnxb 108.09472652 -fiat/revs sendtoaddress RRL9HpNhootz5qHax7UA3ijUaqTqqrpJjs 108.17453259 -fiat/revs sendtoaddress RU5DB5mWRWsHhu8sZTWmckGcQwhdJUDqpP 108.65124152 -fiat/revs sendtoaddress RETXHi8xLcgjW5YzRo6LPWtD7Srea8kojF 108.85720716 -fiat/revs sendtoaddress bYy5Lrv3TjWxaewGM9W3ZgAiE3CMwdTdtU 109.06796023 -fiat/revs sendtoaddress RTo9KuSFye1nMUMwqNrZY5Qdk6JPuSFhdd 109.35742161 -fiat/revs sendtoaddress RKGauAspW6jwnFYGcjWjyLb6C6RekiWfAW 109.72267940 -fiat/revs sendtoaddress RXKhdVSuLNMFNPQGAADye6QxtAv4wrXLKp 109.83484606 -fiat/revs sendtoaddress bDtQQ3LrzfucJZo3nEf9hQsERQYMyGAnVd 110.00000000 -fiat/revs sendtoaddress bN5hZtKunzwMBqBykcs3upMa9biJc5QiTe 110.79984203 -fiat/revs sendtoaddress bD2o1o77YE6CS59CwVKozsSTXsakEeXxA9 111.23900000 -fiat/revs sendtoaddress bYMX6vnisuBuaNfJwAm36YhxvvzsVhAUE7 111.44650003 -fiat/revs sendtoaddress R9mVKdn5XBSgk9SqAZ3b7vYT5DYYdbMmuZ 112.23680320 -fiat/revs sendtoaddress RDnngUbvKmFY1xVEFrcUrd3mF1z1CZL4ca 113.18376426 -fiat/revs sendtoaddress RGFFr1ZW5CfM63ezygMei7GnNZDGmmGkTf 113.19540830 -fiat/revs sendtoaddress bLuMST8VKhkgkjkyFDivUddserzvrSrUjP 115.14320000 -fiat/revs sendtoaddress RD7AEjxCAZrTtGkCC31QF5GnA41GBraWLT 115.59707426 -fiat/revs sendtoaddress bYhubBJb6dQquG6qy1VPycYSwAGcX7uUt5 116.02835750 -fiat/revs sendtoaddress bFQw6FJKEDDXYNmFTyGaQL7TUcgfzUjFVn 119.02425427 -fiat/revs sendtoaddress RWcvDsT4NZ13JhAj2qLJ9Wd1fZQX7VnfPa 119.92800000 -fiat/revs sendtoaddress bGStxaL2Y6Z7kEYDYGMACEqRnCoFXku7f4 124.42418850 -fiat/revs sendtoaddress RFnMLGg2P8MquXAUrKwpgRKyhypdSw85Ns 124.58995140 -fiat/revs sendtoaddress RUVHvbf5DkZJQstTYt8XnNiLJuTsndiP66 124.70965075 -fiat/revs sendtoaddress RH8T5D1sxscFfh3tAm1GsBLjBN4A4D3dei 126.44377040 -fiat/revs sendtoaddress RCDmBWeYYBX5wXsKxmZjsbiVAMzwuWizZd 126.63803423 -fiat/revs sendtoaddress RUMpTRo2d5gdo23gXW4tjbWGEvAPHDjWni 128.42575936 -fiat/revs sendtoaddress RY5FWH4N3eSZACd2VuBoj9dqfPuZLPKUo8 128.45984982 -fiat/revs sendtoaddress RFPNe5BcNz1sgcW7s1Rmcq4t5jJThJRZRw 129.09473986 -fiat/revs sendtoaddress RT7U3WZW67mAQUaqrdVgwXw5su7ZiA6Bsu 129.16030619 -fiat/revs sendtoaddress RUmnosqbFAwLoiETLcHvuo8E9dsJtq2iyG 129.49860507 -fiat/revs sendtoaddress RJbuiMNx66QNizQgwGuHRT3H59ViETfNxc 129.74892513 -fiat/revs sendtoaddress RKmoYcFcT22fwPZsTYq1F3G2oSoGevwCF1 133.14058657 -fiat/revs sendtoaddress RUjai4VGtvjfW2NWdgZQDpbuCiQ8M9PswK 133.20739488 -fiat/revs sendtoaddress RTDMPwXdg5kYn416yHwRQZt5ZU1qyMqMmK 134.38426806 -fiat/revs sendtoaddress RA5E3yCgWjVo6hgLq4RjGA3shkX2PbtrpU 135.12217336 -fiat/revs sendtoaddress bFHdzaZD7RfnRgbGKqimzx52hYDxjyg3zu 136.79000000 -fiat/revs sendtoaddress RQF16BQCW7KwWQ5kQJUPNoVmqLK3jw6mGt 136.98025871 -fiat/revs sendtoaddress RUxzdHCj27j8GUQsfVpjUWfCeeEL8NoGUu 137.41618878 -fiat/revs sendtoaddress RJ66W5cbSSRMiPqLqGD2zFPpFJa8Lz2Ps9 137.72500465 -fiat/revs sendtoaddress RNCqLXDDnfYxkrfXZNQ2UdtVYBqGs7eNHr 137.88286666 -fiat/revs sendtoaddress RKWuqX2Lu7U62qkTjsvMzPj5v5wD3y3TMY 138.36843821 -fiat/revs sendtoaddress RYGz6a6htzW6Z3ZuwXeCU9evWrud54kM2e 139.28924668 -fiat/revs sendtoaddress bSWtbVqFM6TDPULibkMSKeVubbPRtAef19 140.00000000 -fiat/revs sendtoaddress RPYVGGwVqJpPG4P8oRv6PaaXZWZL2WyAbX 140.02010000 -fiat/revs sendtoaddress RQDGhbt6ez5f4udUb5W7NpB3p9fwgEi5Rk 144.61662947 -fiat/revs sendtoaddress RHiV43fLaNduShusi6oveEMkManXYTDbHA 145.83490394 -fiat/revs sendtoaddress bJ3Ers2f4x2LNikgQhcnCfE3jdUgM5F8As 146.61293122 -fiat/revs sendtoaddress RJoRrRJ2fMNS1u2RbEuxv4qEMAyzf59NJg 149.97999999 -fiat/revs sendtoaddress bacLS8FB73nSK1fZryuNdpP5FBWdyHWTJV 151.63363650 -fiat/revs sendtoaddress RXGaGPgd8trrUjSefqPnvo8f4dkLSFUHGy 152.66602809 -fiat/revs sendtoaddress RPpU9K7UfairC4DpQyUCYYSjm3R9HhikHi 152.87919619 -fiat/revs sendtoaddress RKqQ1gfS2V8feocwzRKaBTVa7dJN5cmVzv 153.78237940 -fiat/revs sendtoaddress RF7Q4dR7wfL6m2ezMAg28zcn1kxcpWBgM2 154.21079380 -fiat/revs sendtoaddress bJco5BoAAkkxzoRw8c9GwNtC4FWa5xDswW 155.46509045 -fiat/revs sendtoaddress RCRiUbVm9c9AhDuDj6zVwGpVmp2YyvDQGr 155.60103980 -fiat/revs sendtoaddress RYFzcG71eshar3WQuH89n68EYz1EpUtE2t 159.55861379 -fiat/revs sendtoaddress RY3vfgBpJcwYFZpFo8woTJj35kJQiLyXmU 159.61549762 -fiat/revs sendtoaddress RQyZ6ffCveNat1Prm1QpFSBA8ixUyygkEz 159.77050000 -fiat/revs sendtoaddress bFP7W2vA9SwUmsPej8TpCkTVWHRNCi3ivg 159.97000000 -fiat/revs sendtoaddress RAzndmF383hyxSLnZRtazbmGRRs1CtPpL3 162.01532205 -fiat/revs sendtoaddress RAHgHm1cjahRTaXZu1uyJLYc5nuYofUATD 164.13512046 -fiat/revs sendtoaddress RNFrgZYqwhUnZwxWBFpm4cpxREGDtRbbte 165.11938752 -fiat/revs sendtoaddress RSbAxPN91TiGcGUmsv6czUog8bBEEBxAgx 165.70403879 -fiat/revs sendtoaddress RB5Q63vAW9yx1tsHp8SNRBqxckbWp81Edr 167.39044670 -fiat/revs sendtoaddress RGzQ3cih6otR1BjkqpDTDpm8pFF8u4ztXF 168.28892221 -fiat/revs sendtoaddress RPCcfYA6o1kfEZH4G64BQBYCc4gxCJLiHJ 170.16705435 -fiat/revs sendtoaddress bDTQPYsdisnCmeMRgMjdbPWLtm3XAPdbwD 172.73941026 -fiat/revs sendtoaddress RV62WyrNLmRQeamkJ3QxrrnwfYDVfjcgeK 172.74920372 -fiat/revs sendtoaddress RDNfqkziCYdpyJQBWJU8tSTxZu6WTdS8gF 177.93629331 -fiat/revs sendtoaddress bYrb2PMz24NCdvRhHpuDuqU6L3rKiVmaDB 179.00609901 -fiat/revs sendtoaddress RV3uDVzT6t67NJeudiCXJBs7VtYupw9Ar9 179.49681871 -fiat/revs sendtoaddress RLDc6KmUUsQjfWVWmAXCcKdrYEiKA1MHir 179.83179727 -fiat/revs sendtoaddress RPr5vw7WyytSFqJaihn5K9YtSks9LC1npb 180.72169916 -fiat/revs sendtoaddress RSRniHtiToruxfLKx2vehX52w997ja9FXM 180.89312968 -fiat/revs sendtoaddress RUiTAU5RKEdkFxm8cL4XHny1Q7q9kWygZn 181.00000000 -fiat/revs sendtoaddress RB3Cq7NFoiBrWtBDuBcTEChZmFsKYBWyU9 182.99000000 -fiat/revs sendtoaddress RKGYQUCL9vD6i1PxJ18UPmxufPww8PY2B6 184.99000000 -fiat/revs sendtoaddress RXzvjALGUh7AgQBCvyyqWCVYXJMnEpesbP 185.75821658 -fiat/revs sendtoaddress RNZdeNaniirmNFEsDnoPopyUyFt6FkusD9 188.40297419 -fiat/revs sendtoaddress RTAjocvBccVgu7TyhRY6Hf2xfmNx92pzLx 189.98000000 -fiat/revs sendtoaddress RFGxfyFbZnmxtnU9iFS5cC4L3pWVvMUGYW 190.94497623 -fiat/revs sendtoaddress bbLeGoxJEzjyvaBxFwZM7h6ySyydhM5m8E 197.68254058 -fiat/revs sendtoaddress RRNa93gNRJoygnbu5HGT1kdQdQuCHpqHkn 200.00000000 -fiat/revs sendtoaddress RGu5zqbftY92VJFchBXdfTrk1dJ1YSWZoJ 200.32704136 -fiat/revs sendtoaddress RF6g4Fo6zoD8MKV1g1wp54xzZGK34RXkb8 202.22778625 -fiat/revs sendtoaddress RU2KCNXDWnenp5v2nt33ipL4p4QYNrUhjY 204.30408005 -fiat/revs sendtoaddress RLyfAXoyaE4fBoF1sSdi1gcYN3wDzKD8GR 204.32479990 -fiat/revs sendtoaddress RYQ48DY4828Rvabks852BZMfoLG1NdJoSo 204.38917526 -fiat/revs sendtoaddress bU5VBCLQwu9d5DuUJfoHjUM1Hs19YAv72C 205.00610085 -fiat/revs sendtoaddress bKfAmn3pediqbHZvEuTxVTyMhMimi2kYVR 209.98000000 -fiat/revs sendtoaddress bbStrHZF7WUwDnPr4ijrYjuEJiuoVGsrqT 210.00000000 -fiat/revs sendtoaddress RKmZhK5uhtza4WAywnWsN398bqyQois5oU 210.10438688 -fiat/revs sendtoaddress RSCkSSty1jYM8fCwDZuWwXBa27LKQJD4Sc 210.23364623 -fiat/revs sendtoaddress RGvEKh9WyJ9hiNVWbyTC2KDWKQ4BEs7Th7 210.43508396 -fiat/revs sendtoaddress RFiXf9xBVopnj6zzpwA9GJvL949S14ymR7 210.58913554 -fiat/revs sendtoaddress bHsPKv9XEtN8RAYhqRHv3BqdquZ31bD7co 211.29966352 -fiat/revs sendtoaddress RMq5sfV7rVQzf6H7SaeuXzAK9fR5R3JFja 218.42967306 -fiat/revs sendtoaddress RWcJVaWagHwedcvHFvwBGbc114pmrfnrkM 218.89063780 -fiat/revs sendtoaddress RDHNJYXuBQo5oJVfZk9puQ2N5Z7JnHuwYW 220.59598299 -fiat/revs sendtoaddress RRsRhuCnKiUtaW5bMJYGURr59PEtXWHT3i 224.55408869 -fiat/revs sendtoaddress RHeww6CSzHFsYkDWyanBzvSHJpWmbm2st3 225.65799662 -fiat/revs sendtoaddress RH1w7tz4Gbvwx6UEgFL73w3sUCCKDYo4JF 225.96608282 -fiat/revs sendtoaddress RTzC7EwL6YZsTi3rcRu65zRu5XRkNEK4GC 226.84505627 -fiat/revs sendtoaddress RM98UarGogmuPGuaVWcu32m5xEB7K2RwE1 228.97743683 -fiat/revs sendtoaddress RMQYpQtcQDzwtKKUso8c95yV82b4Az15D2 228.99599800 -fiat/revs sendtoaddress RVWAwaF4TSxvABnv1sm8usYm9xNNwUBCXW 229.33065176 -fiat/revs sendtoaddress RKCNEkJkj9TVo9hKwuwXkabJ9cB37PWXHY 231.44778423 -fiat/revs sendtoaddress REbX7oMD6SZMKUN7ZwPa3c1no2wuVW46kc 231.87096527 -fiat/revs sendtoaddress RPk7TFQrccjSZVZL4AqJrhvXnmNa7bPKC1 233.59000000 -fiat/revs sendtoaddress bD1p6oibYatoRHo3EVPXkyVE86pNgJjt7p 234.64089600 -fiat/revs sendtoaddress RRE5A2QoE934tcsu2wBqk6U2oHnCh7wjSK 239.57769669 -fiat/revs sendtoaddress bKhxoozko7qKJQD4yDQgrbfZnMtkDhmy29 240.00000000 -fiat/revs sendtoaddress RNerSsSBiGngBguyYxQ9ZSqpcZyUcPLYRU 240.33867862 -fiat/revs sendtoaddress RKQfN1Y8aJ64Zxms83JECQ9oBJzF9AjnfA 241.97686429 -fiat/revs sendtoaddress RCLQYSKcSAnooB4Vjps6m65iZpLtFjEdJQ 247.80300179 -fiat/revs sendtoaddress RXaFNT43dJMd1ZrQzfh1fH23xhZCj9GfC4 249.29379492 -fiat/revs sendtoaddress bJpWurgzJidkaHQMgDveGHUyd3Wd79iqMe 249.99000000 -fiat/revs sendtoaddress RWr9pDaNDqC5tQxAUaB35sc1cLFT8wimXZ 253.28888467 -fiat/revs sendtoaddress RGacvvKckDJR7qSTnFoAWuYDrm3QVK4FSv 254.31918912 -fiat/revs sendtoaddress RAYYUqsDb41SoETDAbBzGSct6HWpHBRe2s 255.79012692 -fiat/revs sendtoaddress RTxV7qMBsuFzZ1rjuMe2LW6PLT5X1wYqw1 258.77462194 -fiat/revs sendtoaddress RWNfZrTPdb6PUdRfHEhbJ52jNK5pyPNVUg 260.24907020 -fiat/revs sendtoaddress RBUdGJxwaUF9dKNC7DRWXqNEwCau1WoCaY 278.69301585 -fiat/revs sendtoaddress RSfgSNh6HqXEgcHaQbXM8K83yCJUek7xkB 281.76486338 -fiat/revs sendtoaddress bUi1VsVeoyHxq9mxys6gGntBy9vdxXeeVz 283.69305405 -fiat/revs sendtoaddress RHMNYPvHLKG5McGfsUxuRhmoYWHkUet8Jx 285.45438215 -fiat/revs sendtoaddress RG7mf1AHWGXUpqd3FTrUTYfFPbwjKLLvPp 291.60482497 -fiat/revs sendtoaddress RAJ11XuG22Nucs7yzoLUgNzbUqCSEtScZy 298.42252899 -fiat/revs sendtoaddress RXZ7BcoNfcc2yZQARRG587fsEJqhheDJA3 299.57911711 -fiat/revs sendtoaddress RTiNp3b5SoXvFvKEFDoPUom8WVFbZYLKMb 300.00000000 -fiat/revs sendtoaddress RURYZ8FhS5oJ1h1xuv78EXe8rA32SiM4Dy 304.32862968 -fiat/revs sendtoaddress RGba6AJogyFQGuMAzD1czE67KR6eW5PV2k 304.98070893 -fiat/revs sendtoaddress RXMtwrMXyimRU5CWSdtWzHwWmcCeAc62ua 306.73973391 -fiat/revs sendtoaddress RYEmXCS9D2qR71XKzzWbsiAMZGg5E2UWt3 307.15599818 -fiat/revs sendtoaddress RWM3UrsRP4WtH6DTetm5KmUyBASvFCV6wH 3005.5069077 -fiat/revs sendtoaddress RL4hFVzdntZQ2DM59QXZc619boZV45YFdk 316.05434626 -fiat/revs sendtoaddress RG3vbi2TJp9jeqn8qDSnL1W5eFUeTGQJmu 317.33569076 -fiat/revs sendtoaddress RQYgriDwRUuUbfw3E1AecAHZXryGSx1BdN 337.23469627 -fiat/revs sendtoaddress RWyjhMRtXkSMFgaqJem2smR17Gcn2DswNx 338.51975147 -fiat/revs sendtoaddress RDWMR1dGt7EyjuvJrHXcL8aoo5D23JX37M 338.52917347 -fiat/revs sendtoaddress RWAoeRWoBpAT7xWeZWoXmgM114hLVxiVFg 338.53842558 -fiat/revs sendtoaddress RL9pVyV7EhGKujNcTwcw8m7n9LbeWLcbgK 338.54432258 -fiat/revs sendtoaddress RV7FTQ5ivqHU4bZwdFdsGuSHpHkKqjPZpD 338.55302702 -fiat/revs sendtoaddress RXa4aDTZenjvLeN7h4LRxd4jvHVpN2FmvL 338.58187076 -fiat/revs sendtoaddress RNcscpbG6dH4AGffwpj3NDCN7gW8fL4Pnx 338.63694015 -fiat/revs sendtoaddress RDgxkT2SnhVrcGx6jRuBrQ5FMVkxm38C6T 338.80993693 -fiat/revs sendtoaddress RPxbRx4HyB83Y5uTLwue3bjEMDHizt1Yrd 338.92318296 -fiat/revs sendtoaddress RHsPNWmD7YZwFsBzqB7CeWb3essSPUXynv 339.01798043 -fiat/revs sendtoaddress RQeZBRQRsFMKT3ittCZzyTSrHkSaCXGRZb 339.16387361 -fiat/revs sendtoaddress RFmPR4dYC2J4SGJQWyYF75DsdaSzs6amaf 339.27093705 -fiat/revs sendtoaddress RB6yVhHGirfcXjqyZsSJLmJ3piSyBq9QnD 348.36515758 -fiat/revs sendtoaddress RPsG2FM5DSoCEsoMLRwmKVgqvSRvM8raYW 350.00000000 -fiat/revs sendtoaddress bDfaeJk4Q1PBLB5ghUsJ4qGpoPEtNuSViR 352.05485019 -fiat/revs sendtoaddress RXw7hzKyWNGqKjc51XaE2GtsW6iF15S7VW 354.98460556 -fiat/revs sendtoaddress REQAbdfBsdfLPqkUbrqq4FzjCQc1mUDJwY 357.17138770 -fiat/revs sendtoaddress RPAgmZyfvcjBDbiPrr6k7aptgRJajNpdf2 359.88265432 -fiat/revs sendtoaddress RUkWpDYuSF7q9Ee5qSd3prMcuc2qdXGKL8 362.16988971 -fiat/revs sendtoaddress REtWa3fas1CDnGVDgbgLPQfRjHTpELQ5oL 362.89945753 -fiat/revs sendtoaddress RVp13qMhi7MkRjeV7cZp4mPwap8g3GB7pj 364.88330000 -fiat/revs sendtoaddress RMJaHNoxMR8efShueiySEXqEce62gviWp9 385.00000000 -fiat/revs sendtoaddress bWzc9xpS8PoaUXwL3H15F8BVVrAFM4HbEo 387.00000000 -fiat/revs sendtoaddress RRkn1n1Gj3qCazWkSWScEwcGtZ5bctzDFC 387.88469890 -fiat/revs sendtoaddress RUzj43VUzPWzLyv5ZUzFjzLvQNnYePZdss 393.14137381 -fiat/revs sendtoaddress RRorKDSJg5nQJ42W9VfoLXxNg56Wyic2ye 397.49164512 -fiat/revs sendtoaddress RQ4EicmosAM41MTcg6Pn8KkK4xFto4H6Fi 403.00294489 -fiat/revs sendtoaddress RTEgENkpiXgpQfauEG9AdnoZD8UUCPsvws 405.02784721 -fiat/revs sendtoaddress RWxXDSWjxTgm2DQkMkP43CFYs21T3UyNh2 407.90306325 -fiat/revs sendtoaddress RFBKhFCoTZ8yv3svNxm2KrZDFRFNoZ36TZ 411.92646474 -fiat/revs sendtoaddress RA3SdteuK73TnyFY6ERdoX9hTxYCqeqt6v 412.56794909 -fiat/revs sendtoaddress RMZuEijs8pH78aoxFgfWrsMLvNA6zVSeok 415.01988324 -fiat/revs sendtoaddress RK7uSTUkBFzAzJRry7U1YHwrHuxHXyrbfj 429.26665095 -fiat/revs sendtoaddress RCkjAp39oU9YHj1LMBwpyEzvU32qaBVAhg 429.65636091 -fiat/revs sendtoaddress RQGUx8rqF6MAdbbZyoP3h1e7ukpTLCeY3y 433.50000000 -fiat/revs sendtoaddress REDuRH2VAbKHriXjemDARr8yZjfnuAzp7z 436.77575645 -fiat/revs sendtoaddress RD1cpMEy9tGCXoYKnuvCguAED4GfGHoGvT 439.98136544 -fiat/revs sendtoaddress RK3qrWAPpjbe6ENVumhesNfAnc9YsBYyiT 451.87677477 -fiat/revs sendtoaddress RP8awkjU6TTTNgahXsgAkdVhDnfzA5Z7hv 458.70559633 -fiat/revs sendtoaddress RMnFJGoToc5qQKbaZyocen8k6mfVCGaqYY 461.70514904 -fiat/revs sendtoaddress bWtsHmWGb7Lb5dWrSDUQ87vGB4H5qS7LqA 465.10657278 -fiat/revs sendtoaddress RSat9yC4JxuB5ijDhH2FbDAJ5ArRnAHfWT 469.13540009 -fiat/revs sendtoaddress RMFrL52Gi4HdJJ4Hvfbu8dosKJNo4RVA7p 473.35491660 -fiat/revs sendtoaddress RPnyG7pDUePrC8us819Y9w4MZhguYFeGzh 475.26809848 -fiat/revs sendtoaddress RPLhkZw7tUcoJTnBaTkfvGg6ijqzNV3TA9 480.24541236 -fiat/revs sendtoaddress RFs2Mvsuaku7NZji16txxd92nJh8tUK28h 480.25997692 -fiat/revs sendtoaddress RSeSsp5oQ5P4wsbabW6xyaSoHX6stNLkqT 485.91365273 -fiat/revs sendtoaddress bNtCZW5GRLggbnfSQd3gYexSmJ8TgwqERF 499.00000000 -fiat/revs sendtoaddress RKjcz5oj8SAgWxPvnEkmXrpAjo57NRh87J 516.33357993 -fiat/revs sendtoaddress RGdGceBEcBs5F733sMY1DhJb5UikgEP9Hm 518.39299913 -fiat/revs sendtoaddress RSjXz5b8y8cu3voJkaGzhf2mjXbcdArHQr 519.14858738 -fiat/revs sendtoaddress RFhtwdLbpzHPPqE2E12g41ij92B8w2nbQw 520.13194764 -fiat/revs sendtoaddress RGgCoh8S3KSb4C2YWQ4PbffuS6Y2XYtSZW 521.28427061 -fiat/revs sendtoaddress RTVc5fn53gzZdV8Npov7THaqZLjkQtPPcM 521.93818312 -fiat/revs sendtoaddress RCXtKno8uEU6RhPBeqQPaFfgptuVVzFVTD 522.14752884 -fiat/revs sendtoaddress RQFi68oSBJWcmvj1gCiG2gxH458ER3AHgP 522.46660091 -fiat/revs sendtoaddress bY78FJ6EBgvrNkvvX1DS4KEcE7uiN2heqx 526.65276086 -fiat/revs sendtoaddress bXGxhTKhuaibYHNsH1HpxTEa898vA97xiF 528.82237107 -fiat/revs sendtoaddress RSYsWBudyTjQf57JoD8B9KD1U6aSwsH9Do 530.61712025 -fiat/revs sendtoaddress RMYDkqhQLZRjvv39Mfsy2EAp4vpFRCjdkN 531.49628827 -fiat/revs sendtoaddress bTVM8FrxdBixBLimtFa7rTRTCdTvG4H5Fp 545.95950000 -fiat/revs sendtoaddress RXg4YhwCZCHH5Trsej9e4XRHKVgfVNuyj1 562.21708186 -fiat/revs sendtoaddress RYMQkDytoWGKeygfouRJjPLmmais9t8ovQ 564.89274744 -fiat/revs sendtoaddress RXH3U1958u7a82KmLW4RwU9So6RmCfraaY 575.80164953 -fiat/revs sendtoaddress RAjZsvmu7omTUZc24AEEB4rvt1j9keHH61 590.17732021 -fiat/revs sendtoaddress RFd2ygcFgrCd2MzPfF6ZiamnNAunypabRw 600.66098439 -fiat/revs sendtoaddress RS4AVzd7SW8rANVnuBydxEJLfBRCt6KKyp 601.77765154 -fiat/revs sendtoaddress RWRWxi9LiPSMhQVTSXKppmtBeSFKB7zTkw 623.13492532 -fiat/revs sendtoaddress RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut 630.20000000 -fiat/revs sendtoaddress RCBZWHkpyvBjV2sA5kzCuUimoeJfJVsec7 631.93532165 -fiat/revs sendtoaddress RKKRz2VW7WiYefjWcP48Nj2enT7i62ncu8 662.37110434 -fiat/revs sendtoaddress RJgboHU12hUcWCBAQJmtsCUsohksjGrnmF 666.41577353 -fiat/revs sendtoaddress RYatRGtqiDZHS63CaBkAWaDbo7SZffNv4u 683.84493839 -fiat/revs sendtoaddress RTZrNx8tjx7F4b5qwCixT6rkgynzDkg11s 728.66953211 -fiat/revs sendtoaddress RX9H4o7wyG6nTNFiQF5tCSENFGeLGMWUyL 739.71019424 -fiat/revs sendtoaddress RC83L4gshS5WE2BkmomjbzQgiFtq7xBfJi 769.33230149 -fiat/revs sendtoaddress RApYWob9QocU5Us7LLEwaV4U8h1z68dDiW 782.08757984 -fiat/revs sendtoaddress RAbWNNciRspsMniVJbzHrrv5MSUwD8HuYM 785.64503552 -fiat/revs sendtoaddress RPpXeiGfv1yYdrLGFqjPpAF8ZSo71ghq4o 810.85168289 -fiat/revs sendtoaddress RKYWTbwFoUijKCieriwofCuPgiJ2bbes1X 841.27927382 -fiat/revs sendtoaddress RRNj31z6oqiNEv7GFmhNifFLGd1MMvvAqF 842.49822301 -fiat/revs sendtoaddress RXVwRd2rB4nE7MkWjDQWcLgFJRQgPjWaUa 850.32853855 -fiat/revs sendtoaddress RNko5DHae1cVhbeazqXvLJEVYJccHx67KW 867.82542543 -fiat/revs sendtoaddress RA49LjsMvLfmAFy5qYr1oCQ8rdch6Lj1NE 880.14735554 -fiat/revs sendtoaddress RQikhyiVU6meX3on5A5JDwzwraRnUiHQkH 882.51675831 -fiat/revs sendtoaddress bZVpBR2daTncJZZtPuNqv88TzrQkbQYYdg 900.10000000 -fiat/revs sendtoaddress RDoDgWSFzNFcBkiiM8jHyG9CTgAHA36rLd 928.97360414 -fiat/revs sendtoaddress RByFvbaE5nrB4mqUJ2u4vwzowaWvaB52ar 944.98000000 -fiat/revs sendtoaddress RLunPXFJMWQ9DJLVGUP2Xj9fgH8A32vWPt 970.67993828 -fiat/revs sendtoaddress RMPXvtVDndUeCHBPXS7nWneC4b7kN9PtZs 987.30467389 -fiat/revs sendtoaddress RTGQ1Wjijq1PXzPGJV9oHRPQJq1B64ALpV 1000.00000000 -fiat/revs sendtoaddress RKNo9k7vM9Xe8TvZpr16Qeb5HbGpdAydrL 1001.64702040 -fiat/revs sendtoaddress RTsh1yvLPM86i5ygVeD8vfotqeVB1zV4Ps 1011.15326271 -fiat/revs sendtoaddress RJZvpWzwxALD9FwPvcXZLGFGdamGLC7Zf8 1021.54501080 -fiat/revs sendtoaddress RT9obeyoapYL1kzZdrBKTtJvasTJoDTiwA 1023.08312357 -fiat/revs sendtoaddress RC9mY5pgfqfyQfsGVSuo14E6mMp78sD77c 1030.00000000 -fiat/revs sendtoaddress RWrBZR2W72YKHujQ6YdXwkrVRArLRqAqZZ 1030.32106028 -fiat/revs sendtoaddress RQ49CbZ4HpAVHPb5e9k6C8VzGRizV7wVUC 1037.11942646 -fiat/revs sendtoaddress RLwamWWsbVQbqpbVYiGDUBDrACuNprSpDa 1070.33908131 -fiat/revs sendtoaddress bWMnm4JFHc3P4wxAQNWhkxYWZV9pkPXavq 1079.83959447 -fiat/revs sendtoaddress RFyurZh8G5mHgHose6CNSxY17jrCzwFA3C 1115.69217311 -fiat/revs sendtoaddress REKNAiyTbkAupJYHyDCjwoAU6zqYGc6LUe 1178.35224911 -fiat/revs sendtoaddress RWZKyeoA6USwkdpMnCLvM4gdQNJ2Jkyb9E 1182.57361147 -fiat/revs sendtoaddress RS4fhJG53XUyvD9gmWEjep9ecEUYLpzMYw 1197.42230538 -fiat/revs sendtoaddress REKW1Fds6ZR1kr9ZQpMQfX9JtVr4JoMDQP 1245.36418320 -fiat/revs sendtoaddress RCzdxZnzEReriAHYShjqVE7fWUKBmUAGKr 1248.11187974 -fiat/revs sendtoaddress RMu8dLXBwygMM6QX26RUZumoNz6gsSPUbW 1252.75530323 -fiat/revs sendtoaddress bbQ3vYxDVW121iRGR7Gif7HLJyV1J5kGpx 1255.04360000 -fiat/revs sendtoaddress RSzQ8VgtT5fcoWSxG7msWenU4MZspsRuZE 1258.45808870 -fiat/revs sendtoaddress R9qzjnYUNA5AQvaBFzHHkQcSgm3c7qaGiq 1270.43960528 -fiat/revs sendtoaddress RXnGy9gspTSbXyBHHpDuDDJ8isZKdbdZDM 1283.33070550 -fiat/revs sendtoaddress RJ7HrZo1sbVi6JjU4U8mTqZeesh3cgikqx 1500.76743524 -fiat/revs sendtoaddress RTdKZwhyw6JLhtFHPSq895ss3PGVRoFiTv 1533.78985801 -fiat/revs sendtoaddress RJxmRHNggLPjZTM2eB4ApEs9NqrDeo3pX3 1552.58020215 -fiat/revs sendtoaddress RB8dMmoUxCGTA5BnGiUuUpLuWMmYBGKka6 1580.79802115 -fiat/revs sendtoaddress RJaaJGWo6kKCV3cH4gtZ8zU1nhLRfbpHEr 1597.30381665 -fiat/revs sendtoaddress RYCRimXfejiMnenUJaDuwWPuAiPWCCW9WE 1624.86184672 -fiat/revs sendtoaddress RC6aYisvBT1GB5GmzeZsrXwE2ghbmzGyHD 1680.63385794 -fiat/revs sendtoaddress RSAFhoDsaHgpvWQAQHfQgrTw2y251sMdSX 1711.15826952 -fiat/revs sendtoaddress RKoUvKXy6eApLpUQwvvBF1phNp1fApeu1t 1712.15414286 -fiat/revs sendtoaddress RD4gYn4oSN3bCoZ5xG8ZQcSCUJDnEot3dD 1748.97302195 -fiat/revs sendtoaddress RC9UvLgfgFx4BsS77bkC8swFA5WjNfn58w 1922.42175949 -fiat/revs sendtoaddress RWyzffxhC6E8qAmndUEWaA9HsFAokB12kr 1953.81900169 -fiat/revs sendtoaddress RY1WSzWWgaJRof1tK3Vxmo6q8f6ZYsAvvp 1989.58109245 -fiat/revs sendtoaddress RGWa4NEsEEtNGcHtH7tba3sKoifHgy6xgU 2012.14166801 -fiat/revs sendtoaddress RFFJFhgSy2z36BNJ4AqzhRwMdiECqkLu5o 2022.18035204 -fiat/revs sendtoaddress RGaGoL5vZcd6teKEHPzgkurA3grskipQnb 2050.81194884 -fiat/revs sendtoaddress RFY1AA25ME61rw5eqTYiKUUoFnSuz4g37S 2065.02328418 -fiat/revs sendtoaddress RM5NNYdGee6X65aFGkyaRkYocSxQVNsB8d 2070.75469155 -fiat/revs sendtoaddress RU4vhnUxetvmDappwN1Bip3UQLWXQZtgVC 2080.00000000 -fiat/revs sendtoaddress RRWZoKdmHGDbS5vfj7KwBScK3uSTpt9pHL 2198.60600609 -fiat/revs sendtoaddress RQXssiJhWsc11wimZDGQtWfP2z6xAEjACh 2203.39011975 -fiat/revs sendtoaddress RE232ssJFR5qE1xEfVc8mnbfVykxtHpK3V 2242.14368261 -fiat/revs sendtoaddress RRZZ7VYu5HowvkadGgpXoYDhTtuhFt3Rga 2306.22009491 -fiat/revs sendtoaddress RDoY2wATo6jddqNP34jGqJ8LtUYB92vDn9 2392.92000000 -fiat/revs sendtoaddress RMQY3Rnm74oB8k9kwmbAhiv4KASBAXgc5Q 2410.55569525 -fiat/revs sendtoaddress RWU752dM2s3sjpPZCaWpihUEYmbL6m7Pne 2537.07064054 -fiat/revs sendtoaddress RTCq8NorFo4bNwUTNnyKg9YwYgxH49SbbY 2556.94031291 -fiat/revs sendtoaddress RNiUNTzDtBgQyA64txPH3W7gMXAjJriM1T 2597.18712886 -fiat/revs sendtoaddress RHuJvZphT6ZhKP3hxCRDDsCnNmCMtDy43r 2603.59182293 -fiat/revs sendtoaddress RKxJ7a2J8faQ7VD5dAyFFjMU9DxMDFqv3D 1.10000000 -fiat/revs sendtoaddress RGyC2cGKrTbv1zQq4f6fbMc2byCNdUAwBX 2700.00000000 -fiat/revs sendtoaddress RWJPh9C4WQGuT8UDMXb4u278Teqzcq3zQt 2784.22122603 -fiat/revs sendtoaddress RNjNREuiLJ3D5eWGqLcsMvjno5RBsBxqKN 2894.22787069 -fiat/revs sendtoaddress RM7V81SXk2iGG3Ks5XoiqFcfmoUiWHtvwu 2954.22050198 -fiat/revs sendtoaddress RSZAauYp87qK1bYHTLECVNwkz8o5sT378i 3060.14169415 -fiat/revs sendtoaddress RG6CQRTT5YELbwZsbXQTkpM6AwuYJdmTbK 3158.94508818 -fiat/revs sendtoaddress RXJTdXZFtHSHn1uoUKjPf1o8EnJWfPQctm 3219.09324326 -fiat/revs sendtoaddress RQQeDVVZazjiVo4hvX426Mveu7w3oG1ctb 3462.94432823 -fiat/revs sendtoaddress RR67pFVScD4dVhaksdAmBwiNU2bi9GLAnK 3947.67767456 -fiat/revs sendtoaddress RGakaSDQtRH91A9LJRMqqCRmLtsBKBxscf 3979.52576425 -fiat/revs sendtoaddress RBdqPkQkwDCPWqTZChUjybb9fR4MaqMbFP 4153.14427322 -fiat/revs sendtoaddress RPYyAiFE7ZPs5MS9AEPRBK4RozvR4N3ZgH 4181.63220753 -fiat/revs sendtoaddress RGnSemXxYSWJNgdZYpQUf5wNwsFU8aYhNi 4299.51617127 -fiat/revs sendtoaddress RGfVQAre3NPLZsk6ggwk9wsnUqtTLkFsBp 4314.00888047 -fiat/revs sendtoaddress RQ4MryQ1eqCybU9WUe1eH9MmEgzGcfMmgV 4541.72536969 -fiat/revs sendtoaddress RJdo7GR1LgtSG8nuuAU2F5vQYtw7whMKVw 4869.97663739 -fiat/revs sendtoaddress RLAv4hKnrweHfmWfe6trpTWmkp8By89zEH 4912.84976935 -fiat/revs sendtoaddress RTaYBryxVTYy6oorEspmnDLYh5WkqeuzBi 5133.33174713 -fiat/revs sendtoaddress RNBdRLCTf1DpgSsnhKmTMbfLRxCgsTGjh6 5142.01416110 -fiat/revs sendtoaddress REzqSJ7qonDbMVWfPEJKfRPduvfPyumkPR 5338.41830397 -fiat/revs sendtoaddress RVHyYHfgSgFux5iNoZgBEFGC747r5Lk5Wi 5344.11999439 -fiat/revs sendtoaddress RBCtWKuc9XvKQJqrxeNAGB3fh2JXbsFS87 5432.11872965 -fiat/revs sendtoaddress RLdUWLMxWLz6szQYUbyfvcZMra8dTjwDFX 5682.18856311 -fiat/revs sendtoaddress RKqfxo98Dmf6xamGfSFVeczQaU8UdBvzgB 5810.91344741 -fiat/revs sendtoaddress RQfmbLQkvJEEUE1s4qC7NJn9nm9LVtLDYz 5945.95358406 -fiat/revs sendtoaddress RQ7pyVDnUW2dW4VsyreWV843ABkDETxuih 5978.00568581 -fiat/revs sendtoaddress RTXuCinnhGU5Vz1MsLcVQBPhA3Kj6zffc2 6744.61067515 -fiat/revs sendtoaddress RGaV5Qxi2PdtMpe8GR9MpQ9JogDz5oaZbK 7192.90498591 -fiat/revs sendtoaddress RRA6inSrHDZKXFWMD4V2dyiyHtghLHDq1m 7474.72830247 -fiat/revs sendtoaddress RDnHMnK8tgm9WmY9u3EoRLww9FyFBannCa 7674.44264872 -fiat/revs sendtoaddress RXcEPd6zV1hHAVZzfe2d8Ccv3MzHMZEZ49 7979.29356057 -fiat/revs sendtoaddress RUw1psGnNrrcgmXDc7cRwEBLKRudikSdmy 8009.98000000 -fiat/revs sendtoaddress RWAxa88tQXVDY64Bwz6DP2ZppsFotibaYh 8600.42312744 -fiat/revs sendtoaddress RGqQ24q9Ar48oyuG3krmEZoYwVumhJmZ6C 9021.00000000 -fiat/revs sendtoaddress RJANoTkNwx76yB3Hkx2Bk1KdisTVM66DmW 9099.20666047 -fiat/revs sendtoaddress RNfuDmVjCkCuXHk8MBn6K5mUyBHY5xXRew 9212.51505260 -fiat/revs sendtoaddress RTJiW6nmfYpwE9seVBCBGFg9o4SodM41rJ 9228.95935659 -fiat/revs sendtoaddress RPMh2JYF4QrveeBYC9oBgaoLvVNm2PadWW 9238.95876293 -fiat/revs sendtoaddress RWUTuApNQuuSustN4DBt6PxxVRwZhh52An 9285.66131773 -fiat/revs sendtoaddress RN2oUdxRbBG77NwCuyzw8KRtAnhNczpSic 9324.74856304 -fiat/revs sendtoaddress R9UXLLQwJDdWDCRNSFRnfBPwaycxxEJ1Jq 10000.00000000 -fiat/revs sendtoaddress RM9iwyjkh2KRxWwa71DFfNXZsMtMzDZtwq 10054.89954688 -fiat/revs sendtoaddress R9g77ds8kFS58V24s9Wodt8quMB8NSp3FC 10145.26130120 -fiat/revs sendtoaddress RJ94yrqKCP3XjFsAsNj9WXS5SLpyHUpx5n 10530.83468511 -fiat/revs sendtoaddress RUZ9AKxy6J2okcBd1PZm4YH6atmPwqV4bo 11376.67477057 -fiat/revs sendtoaddress RCcyievEDRE2RFUag5jcoz9fMQ5uwXXPaf 11413.06578145 -fiat/revs sendtoaddress RBCLnsjCVHWRyUpfgauyzUu8iP6X5CabJT 11587.12695823 -fiat/revs sendtoaddress RV5eKvybKDNctYxXiNYV766PzCakiUNRRm 12320.60757772 -fiat/revs sendtoaddress RYNE2isKrRu5b7xxm1DtXcLxdmBEKatuJY 12352.53172757 -fiat/revs sendtoaddress RR1svWTDxD6bjtkXDzq4vhB6PWPETPNU42 12442.52868329 -fiat/revs sendtoaddress RDvdbqJLu8GgLL1TvdADNeCbbjXRmHBjog 13489.95082851 -fiat/revs sendtoaddress RUtWXg4RK7rs3pF7zCUGspED4aUoRzoopg 15100.47446281 -fiat/revs sendtoaddress RJPGpRQ4nudwzw6mjWCUb6cq7aWP4to6pM 16712.75904663 -fiat/revs sendtoaddress RGgbJiV2Hs8eWJbZmZ3hZLS8sSzFA7tYNu 18146.04892666 -fiat/revs sendtoaddress RQif3cnnrWjP2zzrhum24FjgwS4wBzBfts 19648.89190390 -fiat/revs sendtoaddress RVVXPGLFbRUeQo1oGSWjkposncuzFirxep 19960.31588900 -fiat/revs sendtoaddress RMo9emPiNDd1kvn9jpDBEvLavPxb9rdyNk 20322.05955760 -fiat/revs sendtoaddress RJjAyD4hgq3XgtLikv1U1TrTvp46fBdxbB 26613.67939303 -fiat/revs sendtoaddress RDn6vnPHXixF9zJNj6jyowy32qUJhrVDvx 31325.56985113 -fiat/revs sendtoaddress RA7FDvaNFXZNLqosSbCWFbypuvijJNQw5J 37986.61891061 diff --git a/src/REVS.rawtxids b/src/REVS.rawtxids deleted file mode 100644 index 7531fa3a5..000000000 --- a/src/REVS.rawtxids +++ /dev/null @@ -1,5492 +0,0 @@ -4cc92748f84e1bcd6595910560318c740af74225ef99fa2fdde8f49848abde1f -4eda2204a28181d1d403b60f219b71b2970613a394119493dda994481b8d49c3 -979dc550d9872079747a383d632f71068bf6126fa2c0857357c342318e92527b -ea202f6bf0e4407369365c767bb4b5b0e50cf9080694631c0c0db2e8c3b3754f -4ba4ab3ed6ea2d5be3301b1451cfc9bcf758ed3092a7ece135ee08fd52bdde2d -ddd06b3711d31587543ae62560ff38807f9051cc5f09dd5eb01770aca6a11bf3 -923b6283ebb97e89b0d707a1f736784ede13a1ea26d7e13243bb842cc7687518 -26fa2b01b3aadec075583c6f933f7b2e74c2d1aade8fc2d27e75773a6fd88a6e -3a912f51a0d2a868c3f61fb533d5d073d28c5047a13365c1c7765fc079d49afb -b5492f647b1ba36ff1c349e94f64e09fc868dc78a249121c5a6875e6338bb30b -6e73503c82fb12fe27d15504d1e06ffc0c638b60aa4122477d0ef28bde25d897 -38dd556c3edb4e387a566e9e2e78e49dc29e5147775674bfb0c48f7cbb83b1e7 -cc7c91175d5638b76b9b9d0295c9d005788482b64d7ca0354e6077baafced3b9 -77cdfc003cbe52c7ce6a3986885e3d9d1ff5c85fa75a527b5201f2490c9c9fa3 -8e7da93230856257101cd83571ad34553731d38a42063b0292fdc492c3118223 -4477c422acc562989e40a33fcbb3ab011e9a0642c0485a57c24913e8984cfd7a -a48d02869d904e73bf06f31c94dd7cad49244d6d2de5debc386886558908334b -78573e96723403f9baff40938aee6c7350ddc2ce71ff9416450eb93cc046b9cd -93728c457a6095d01ad863549dafbc9ceb89fe01fd7dc05c7743b2e2bb1b7f5e -2852bdc6102d2e04f82edac3a2f1dffae18d07d2451124f5790bb92f194dce06 -f686a7a442230ad7498dc491efc4e3cea04f43017005d3c19fafb5ae9ddb7719 -db6c19fa9af8da476f1ca1d8762e50d40cb2f5ff3a2b1eb3ef5fed159cb4f78a -f6a90c866ab4f91eb8a0d923ecefb409b0703cb4f55297ec4cc2142be2d38881 -fbb28af14b7fa464573ee647cfca984c81555583c7dd24cfe31910442aa58a7b -58d2e61c7045a7e1da665c40c6cbc52f8e498be3e0eda557448e481d637098a6 -a1276cd899b1b749a196fdc6d2bd88a9f2ab7c3ef06fc031a37be00b64e06841 -e9b40cfb9e62d7b6ef21802d167944f18bc315bcf71700b6ae853e76067c418f -d87e9208874f6a155b3cdeb25e744be3014ceee4cf8857d84f86acfff746149f -623a12af447de9e0f78fadee21c133def6e1a87a2b16b922b20a5085a6056eda -85c65a36f2e5fe4168eaf3338e35afa05d1d0676f576328ce077099ad3940c38 -1759b5793997ab1c04129d925fb7b015705d9962b106fa7ecadf063b233b371c -49e48b394eecce1250e5d8958543f45f1409f4885f3c251b6aa8c0a282f712a1 -dae5fae73e5cced5915711aa774467cc05425ff3be4c8b569eb77fbfa6fdcfcc -c8e9dd1c40adcae8ae8fb1800017a76847973bab37f4a9bff52f236ec245201d -8234408128e3153876c6f96d90a03128ee5fbfed0d266d9d07b308cffbf0fa3d -205d8b1df65bcade1a4fd3861e9ea7f43c36559c0cce6e1f8d79528803f5510c -7fd3a0c5a94fe5d6c7980881c18afbf585611da41a21acf25bb71cd1598e58b7 -86a04100492cf20b97f6e1e9856342fa88191e783d8fbd88ad523ca0d9faf4f4 -ab5fe28417383d3c91921d6e786133c2da84d04d1eee69b18707bafa783672f8 -5291eca18b8ec58550f3d4657f208ceff71b46a46de76ffecff845d40f08871e -76fde957ecfe58274cd166f6f0adc851237866ba7bec89a1d8fa533a67ea50a4 -99f92c7f42c4ceb81e3f81b7b9f7f63b97701f6d161a04e8be2b9006f37905ef -2aedf6dcb191df30bedda717c42305c921dce284bd3c907948d774b14e249d48 -6621dcb301a32460ec1e34068adf13cdc86d26605bb877099dc2bc375eb7b972 -824bab3e6b0a372edd0877e50ee688aa7e8f543ff6b60ee0039b9c74951d7e1e -28480c9a19cc974fd70e56b81af6f77f414f7d7ed7da4c44bb9dd6fe966adc55 -4b31921194e7cbc7fd4acfb99e42c0662c3dde7bfd5649ae4e67307464211a60 -6ac3b3a98feeba90187b5337c84e88ec41407331d7eb5be0cc115d6e01a916fc -ff8dc276f9d7540b9c50c2e665f374f1037d9e75d0b6bfc64a633c1950b403cd -b2751e58d6fcf7c368d391d31af59c1f2ba6779d164948b3b2f80cf6c5d77765 -03cdbf0b2bbdffdbd0e313892df1112fbd24d8b3dbd2fb5c6630d300ac9cb12f -ad340c0fde59c893d6a46f5abf79e8fa13fe79f444a55e211e7a43e884e36e4c -d1d4ccec85553bdaf2dcb5872b373fd7cdcbd83909956f9d06acc0435b802492 -c8649f21b65aa3f2e5ac8c769ab1f2367d87f7dd9398dec4a870fde0fa675f8a -4524fa98c46a77c43b2cf49ba4fa0a4d3d1b1b23cbac916ca31451bb09bf73fd -f4271d05a33b66d79873bb05c3a7a63ac7a8d1ea82ef95aff90d1ebb1437bf79 -4c6ab27cec7dbf87e0f6a40d6135faba120da5f4199637799edeb018d596a078 -79722fe42f9be6e6765a4ab8d66a0af7c628638062a7b0bafc9e3b3974261022 -04de7f0748987eb12702dd7ff3e70ccb5275405c2c08a1bf3f12d3d9cbbaa68a -20632a7a713bc0aab0beb808cfe8de431c10e0868b8c1e6d501a9c2d642e7959 -a336594b992b6678bd0b486b31631198775038eb1d8d741306d397e1cbec25a8 -7a3ad41459171acbcbca28f50b97037c72633db9ed9f68aa50b87e564d5e2609 -9d22daa2fe23446fb7e9fc2f27dee693dfbe95c94a15450547a5cce040b0874c -c1c791ef93ca830a3257478dadd4c47a514ceaf90b9cbf6124d370591d45867a -9a3f0cadd6e34f7b9000e30bd1baf5f7ab34c6bb1aa2925858cddca962ef7502 -30ebeafb1bde4a2bfea0917291f2a682848ada035954f3d9e8951321055f7643 -02b098de7521d0081ca026cfc3be28ee016fef648cb1a1c89dee87a70f3098ac -2c34dec34d09c97745370a7b6dfc997086e43f9338887140476569a1d052f6ad -a500b3c5d176d54974d3707e387b7bf135249676ce63a52f37f228b81a6673c8 -7df8d6754faf027a40de3b538ef33acc1d2094df5b98e4d2d57deaca121d4f9e -8fe7df1b51b3155a16e1f094fa16869c4719be49cf99f285df6a15f8ebeac124 -61d34c3c9962a5b82aa0d4ba477c9f8eb301551e742aebd60bd5a018c0449b36 -e9de516a6c19187283f248f740a9115b3b71755ac8988c82f2c8080bb8b77a0b -64ee052342aa4608236bbe6838c897b0e82706fc0e4e7cfcdf3a5bb0a4926090 -7841fdfe6186619408e04f00f9015ee984eabc59b66f0866416b9a1a577f8c5b -0aa62789892e87492dcee1def311b9cd736a2c4d21b2fef21770640a329fb836 -8225bb6417973331875d816c1747e9c73badc403f121a7145fe9e41a85b20f04 -ed00945b5042e8181037c8ad36d6a79fc28975b810c5e3b6203d4f4e4b33ec04 -1192b61ac2cf0fa71e9f27ed2ccf9736aefc98ee72c330c57dafc0eda3bcf8b8 -d42c921f9e8627e18c7a80f8f3b1932123ee7759542310757bd66c11c32f9e59 -02ed12185bc5f1e6aceed33ecca4e5914bf7dd9c8a737566c4aa792e7ab4b3eb -2c5a56a262b8f68e6c46e10b1597c35bcef1e937ee361fc297bb05cdb3245682 -f48b211cfedf7d995e6cc786ea78f29e16f24f5e690859e55a964541054405a2 -beb4c7e28b5e53a397b27fe13a3f5c58db0adeddaa799628464812572ce68dce -87c8b10d79385395510ea818accb1619eec7792e95e8d0af95c73d219d8c5b06 -68e6c181203e58b68ae81710f5033e4170d43d9f16afc1d60b74de9daaaed2e8 -fb7b3d27692b5418a9dc67fbf3e3e851389e6b6bc653472e14658dafe1d607c6 -96b6b808155e21eda9850abcc734221ae46e5d8011effa9f00795b8e6ac22c49 -505651d7aad349ab025e818437a820ee5561200b6b3fefc3a7127c4bcf034762 -2721db3061d1628fc52f253a6b483504cc7a81d9e95a8f8474ad244b9444a681 -672a2285562b91461ff05c879fd6b124ccc7bcb74e5afad9528dad810ea856be -a47cdf9110e6329912edd793c96f07eed7e17f5b64b40b9fabe306f4a17a06d5 -d06db9e13361e4126edc0d470c18ccd63c81251c37c987c1a2359d5ab6ed79c7 -7c133dc6e24b5b99603d56028c0257664705dba6fe7e5a38a27230fe6e4ecbb1 -2a696dc1059a79a6cda15c86f5ea5e0f304e46a2490565a92381c699e6d8e23a -7f06b90fc4dc50591450b32501b0a5bb191ed4bd4d9c716836ed6538fa8f2da9 -66735fdea51df6945afba0288e432a6706c4c56f4004331b36e616356a8bf9a1 -c79f0945085e1aea74ae82be75a194527325d8823d33d7bbe39c3b6ee46c6edd -44e922c1f849f357df249c2d86d60f6637b55123dae704d9759d79a35c29d7cf -efa85576133815eb6da1985e2dadd9db55c40f5c76a14238d8ef2b49ce12dfb0 -f747dc539fe67f4c7eaca254ba607b4500c55dfe6e87c5011b2fc4349c507621 -56bf4a4f6a5a842abef5175d14aac44a7b9c06771a408a76ffbb7c43a8109e67 -18eaaf95543947f3643d6a00e4512971fa49f1ae7093b8493c568c60e4d14d7f -3b521c0fa0a3272fe2554504a0547c43ad11dde520c3bdaadaabd333139da5cf -900d4c56eb105f4f5a4397110bc6a3d18e6aaef8c6a5c651de03d527004c1dd9 -26da28ce293fa3854d09d7bac99e6da823dd5ec64d9f10646aaaf7f81b3a4ae4 -b29795bd7a1da397c47da30d26bac83e196ed126d4a04cf94b0d48cf75ac306b -d7927af75fdc0379282166a8f6dae1352d80d58b9dff24cb4ace3778d14d6f17 -b9a629b34962bf64a3ab1b5a1b10b44461feae90c55606b936b30427b3c751d2 -45eb14c4cf3398edbd031d6ea19bdecf77d699c40d1d5fa7c24bb7aa92c1c4f3 -28674ab5c8d595238000a6b2872240f513151b02be7368c01ca60c4d4c17bb1d -85d44adb6e132e95c4c436f5b9e372c0e250b1c5983788c07695a34d42113a01 -32e9489ea4328813f65b9ebb38edeef937602e261e075453b7092bca6362e3b8 -eb339e8e35775162776e9f868c12ba9850c9156252d993a5f6e63503d9212a10 -e691da5739a820058bc241b4ff4f58484a58770d482a8874201cf6799c7f2160 -22b13555ded0a62281cd1d9bed0035300937c9250511d9cc8c6b7cfb23f6f9b3 -5ca8d28de83ca90cfd0ff6e0baac58f9ef4e9c3e300660f5b3fb18d21e9db88a -c57e683568d75f5066fc038492d12ea97d6d859bce8a501fc0fdabedf3d2d588 -88c7010eb8e04d42e15e1d5ed07d3915db57ceb76fb29b82cb28a2a3301c6dcb -e1f4c88b1b35ab004b60765a11a75f7091639f25855cede1f25c84f6eaa421f6 -541babfe6245c968fbc0a1bfb47a9ac505a61921303de75bb363b20d4583c697 -e8e2b4d794c4c001dc7afb32088d25e171b4285c3479770c42166a80261b1b5a -aa541d243aba802f5658a0cb1fe47cd9b2cd639f34d18d7f6a78f8d71d5eaf0b -3242fd0b8d48a9e48ddfb8876a733b08d43f125e8474b5eaeeb87184f4c2ded4 -5442650f8526e4eecdca18cdc17a5daf47ffe5173fc262d4ee8d9fb84269a7f0 -3f822964edf3b137c5a18f7bb2539cfd85f588d7a6184dce96d612a3bf501c36 -5106688ef5bc6ff4e2c7b58e20aecf5cb8408e46b55cc43e12db102d3687bbc8 -3b34fbc7c3a54167203fb14c9adfe753760be9ff6ff271ebda14efff1377f90b -96295f18000ae61aa6dbc049d07394ed4672ffca51b555915086dd47c4605296 -1de1de272549957c6f39c4e489a461acdea46ce17deeffff61a4962165c28413 -5617f94dc9f373ddb22c5e4ffd99835f9fab9b2f5e71f98408e5076b9ada54a9 -dfcfa2e09b928e3fb702e3bf5d832e04d9fb98587fc5aa4f181ded3b099b4f9b -28ef84175e9dca4ca5031c50984786395e160d5fff8fd4dc4de2bd25054a27d0 -4fda708e30e98cb7c9d36c2f3fcd7e2cf942544f8a14cc5d518252ad91c27970 -b9502b6cc2d59e792b457a74990b83752a1cf9109ba4dc0930209bab0cd64dbc -1089143bbe362fcf2fb92e0d234c25bf3772551fbb6bd27a0dfda22413859b0c -0665406732eb25526ea5f10fdbe9df6044452926065fabc1d3e58e90e3cf9de4 -096d2a50276ec1d18e1c298138ef82d50fbcebba19ae5efcd0842cfb4a48cd42 -551170577b770ecaf2fbf6bcf8bf6ab5801a17af3419362f734c70b9fa488e0a -30f88191307e06c3d3e33b67b1530f4ac77731b78bba898798a5ea59c42a85a5 -5bae034cdd233623da6da71c5fd8eff03a4212ec110da3d68a089c27fdad8c20 -53f8742bf2fe396c1950940e24f9bfb3cf16e570453b7d7156312e856e6479b0 -468308c962dac0c431dc96227ab8530f85fa7571af53e9fdffc392dc85e53f74 -1e9e140f2238429112f4468c5fe54094250b6c95bd0e7c322efba20110503e52 -9c8b4ba20760ae1bc6f8f4cfe1a228a402c996303873ee886f467006e240dfaf -2b992d3887758920d3312d8a8248198118522cde09f04c1dec17a1cc98d26356 -f2143e3062fdceeee1177e679af6ab47bdf3249510a22e77f4900764e0b844f7 -7cfaf076eeb1c87b0465410847aadef37fc73cb89b1cc750da1987cde4d3fec5 -555ba4a8d00cdf0e893a25f8b5199818463230b126b172c89036e3c645a49cfc -27f7f1e40ed9e1ecae2d88c5dec27716ada18822c73957dd2b3cc3941bc27ea2 -7c66881f5493d5d31f775ce74ec1179419616587b41aacdddef33a519a106e0f -731da2dd8bb50b0f7969f9edcb23afce0dbbae1394b064389004bddfee9afce2 -0ffaeaf9ad784e4238b0efb4b0380a03909f22f6925a6abf78874384f761358d -ffce53f8dc86c9b4ff70e459181cd79ece94e9ce440c92e656f09afd7cc88614 -37ef9db156a6be47696afd50dffd265427857ccd50ccb9f3452a2d457e099ac0 -70177d562de5994d0dd108033ad7d97a6cbaa9dd3cf74fb5d7387daf1f53f3a2 -38830309769cb241821e4900d5dd7dc5f8dbcc4bef4dc0d0e37270a42b06a257 -6d8660ea36ae7e6a5d587af682f970210832d13b642bedbc47f36a3941dc22bb -1d3f8f7b5f0940ae167b23889a45bbb55116c63979c90596faf0e51a4ac6b9e6 -4c2d804d8764447ad90eb455e1bac72451bec9fe86e965154a8d9f7cd38bd715 -e853a75f0f39a5915034751122252bb1c8a12a4ca45066337d6b120c4ea5374e -150e50d91e7e75e213d371d60951fffe247b4e378142259e304e933e37e7f936 -9266c06c662940d37f262f36140153175c4dcec0c2e31ce25e90303f015b74ee -1897aea82c6ca45b53699414eda24f69ab4d31a38b0b17d8195da52fe028a733 -81bdb255dcf5cab0188990ece92965453d8613b43b55926caefc600bb1c7c50c -db8fada385b071fa503544887df646e713e1d00e46fba3432dfe5c30700ac7b6 -4f850ba1ac0c92da935c281e972864efc076339a1706956e9dbc68a77e9389db -3448ac9bb7ba62a23af0f1e4c3bb475dbdb94648240a93cb27f8d1f14109e051 -accb1e825d09fa52e8a2f30441f8118b58a3cdab4ea928b6bc0a021ac71d7661 -4c2032d0a2d1a47f6ba3e265b174fcb778d39a405e578adb2317505e90502d19 -14f5663ccf2f1c051979604d211dfe14062c7697282e68f354af2a5e4d3cbbf8 -0b04f154878f5c8de54832818b901f6cccffb1c0fe0baed6e7a05dbcd75c4040 -e46aaf5afd332be6f537fe18028409f28d17230cce3acdb6aa7f15dcc961b752 -cbec087cefdd0f7d8624df8edf0d1e543b04fdc67d766d706ee5ac04a7a4a76f -b737e42a26d9e8eda5d7eacb2fc548ae518b97b65868cc64259d42f2ee53461f -b724ee7792cae1b9c414487ed4a831b3a4fa3fb473da3be1831c4b36a5ed5f51 -39e7e55e209fc866fd6e40c0a789eca967694127229eeae86c4af07c94e80fd0 -cff5be3c221891ba0ec7732e29b823842166d86877924ad6356afae0c46be218 -aada002873f547af22280d1fc9f2d3d00c8bb76699dd7fa1f433196bd28a420b -48ba86b9cf487d0fc044179f714a625cf1db80186fac6e64324ebdd968a793bc -acd94fa3dd50a01e70a4d6d23618ced513a87c52dbe0298051bdd67f5bfc5cfd -19c7c208525ac2ab168fe224ffc3031c4702c2c70568840613cf29468e976bfc -c7de1304fe2e283df8f659ac17d67e88c50035d89f0c72f32b5517fa8ec0de41 -63308d915c55abcc886c930d169c4afdf34f285d5ca3765b540fe763cffe8511 -31863641dcb2e9c61a5a33e32c9b314f9436ed3515d08ec5501d87e3ebcdaf36 -c59361ab166016ccde20d98e5309f9cb9c62d7f10a779c0bf253c3055364c51b -fb3f6e13d859167bb944577d1cb43c4d546bb628f770a662f198331f42da282f -c1b215b2cbe88393827dfb7926c72bc6bd208266e9a39416fe9f4e09143dd1ba -a33f059fe1b61d8a25a1e4f1a2a28f8331eac861725b3cc1e2eb2b5de86b74b2 -e88d627bd133a37a8ed95c83705fcc7711182e88d0e035a7cf26c2fd8dffaa09 -e4a9234182543c75e3c4b23969c0e1f819648dfe2692c515313c89d85b026967 -eaf45329e50d5bfbb288c57f9ab12f4fe8fd8999d10addd340bad1bd693bcfbd -efac25200b409372b60e4b47e2ac3031da824dfda6c643b93a51c7c8abe2a77b -ef6d28d9586bf93d4b3a74af0aef053fb37897cbcbf482d493c1d519c7f2191b -6ac428e166d32063f0a92807323584ecee946f8a645d7df209f2c09a62966d20 -bb75357e5c739006645b74313eed38f2e6d499147abf46d30c21516156a9d9d0 -2116019c7d9e07ee3932719c7d45213e98e0cc49f188741aaa7c1bd9ef7f6592 -8e5a99adff59006b4293da4b306b098957cad2754e6b1642d487c27b679ea9bb -9fb0118dacaa0de6edbcf6f4b71261a0b2d47da0f407d94dd0e115b73a4c4221 -45d6678b9d05f0d7b28ccd311bd7f8ba260d261fe13b5bccef59947977b94bff -60ed8dd3ab8a7c6800aaa122a2695d792af44709cba296003eb5209398e476ad -0b90935e5bf10288f21b212318ae23785a293dec8dfd40808219fa0cacdad9da -801c7fd353e51d73747e015b10ec10646e91390c71d2ddb7992c537cbd23f81c -f8901f4b5ba4b7245437b4379cc961f09cb219663c6e7810af63223a4173733a -db410430d45b08d6f9cd80c61415a6f8f7472b875d5ab9692b6798bed058d03b -320890d10792e117d84be83c3f7eb4ca2f7dc402dd7e09f3d63efd2e49ef94d3 -8b7b86c992c3442f8fbae5dcd5f0c279633570f1fafdb597029f22356f7f8d49 -e5ea02b7768fe080095d78b45fc18066b4537c90e42808ba9a89705b579920f4 -7bdbfe3fdd2654487ceb626d2a84fe28253f587473c3f606710549e0df5eee28 -5864fa29ccc5c999d6f3d8a81a91ef4d18708c3abf11337aa82686ec03fc0fe6 -2b9c1509b9f6fccdd17703065edd20adf6831f525af53c0d80bc5fbbdc6bc611 -0a4969e5db739f9fdd60598f72207d05f2db772ba6d486cf85a5bc540851c4cf -164722d77d21dbe10eea214357dfc37fb43eb7554f1c0ce2b453b90004e0cdf7 -952a606b1615fa5740939c0cc908b132a3c5c56dad8aa99539f5fa336ba7dcb0 -2ab914ba3bc33a20ec4b12e1568250e896ed2df2991a438d1cfcdc2474761963 -0112d8c56912adabfd294853d7b760e961f9bb883ea8b6e367d12641d1344157 -f1a29a26411aaf5270ac50ba890cc577d5443ebeaf9b1041c197219386eea692 -6e00bea3fcec9613895cb9dcf4c1bf319a357ffb138d06b06e782413f685837d -623bedc8db948e5be1693c9086233f96d6ea0b1fc11a114fc4b4c671141ba6d6 -65f2fc8a9b5187f178ddfd1a1e052f18a7cf5f8475ac01c67695a9f252f1517f -3addb068983a8ef10767776132370ad38e5beb1775491024a52ddd23d741b73e -54c1a8b7a42cff14287f49ca6e33b7b0550caab3fe91372d9654ce4d0a3bb018 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -9780c7bd1c7d3c11e0ef32d53180bb7ae9a4de9674145817c261938599437586 -2834a29ca944807d3434126f4071b6b30a5b310975a5fbe647f4d0b44f54ddbc -49f78c31968607fdfe5c75466faee89d73863bbc4765183d2ac7508b63b8f416 -c98e6273d498e44af1532453c267089c847b2f90c9f7b3b658db40f1547c751c -6961c69c8ef3a50c486b806327d85bee40c7fb5323a172cb10c4f3f921047711 -44928f062d660bfc8be6c4fdc119ae236feb8e0b2b07d11519e54fa2c7ce39ca -28e0de1a0989b0c40d73a46c8b6ca12087825281022719107079edb41242afb5 -5a38fad9436700ed15a904e8734af07ea42ba87b1860e8bdac5041c8e0ddd6bf -e56e15ef6397de032df1006d55350cc94fcae22568cbe8b87b8aa1695bf5f24c -ce58a5d73ad60f9375f90220f6062504dd097db07a82f4defe35956323a63198 -b58bb55a14e7c7df2abce75fbbde38319f87d5491650aa52568235d354aa5d6f -ea39157febb1976f66cdb2b848e515d815c8c030856e002eb8a39d7f14f63aab -5804ed3fb2807cde26b7586cf3c88792b31c5dde85d7d4014e75377764c35efd -17e47a4564aa278f0e26dda942ee39136930126bbabdb5778a699888d4ffa7a5 -102f551a4979e00289220e8e5f86a4a0d3cdeddf897e451a07c246b94ce6f4d2 -6dc7e694daa7e2e092ee1af5f0dcd95f80e72b10c099cb618e3bc1dc687e551c -12931ebc68e08f1dd870ea1299cc0a122829ac438575225ce30bb790e89d011b -389fa094f22ad827b17a27c2727a01a719a0255f1d332c126bef8c1def5de472 -75276396f507c614a048590ed82dcc3b58592760e4ddb3cb3555337011964ee9 -d0d5f117b5888f7c7066b773f86c1e715cf5bc357f9c012c4cee82477bdd8bde -1e81bfa9331b64b29103a278aebfadf59fc0271bc1f089f73ac5d016358340b2 -5631a6f33513685e281572c11e1ab604befb99df6fd4ed12eab6a07e6349727a -57070ac362f20cc20902a9228e64847e7b1bc7dc1d8a88d8fc87e003d8c7ef1b -5de55859ddb9d3cfe9b7d487fc2721fe219ab4953042d1da9165e0d61ed31adc -49e97b647ef5ff90797b1339dd1b3d67701332272503e0a9aab1c69310d35c82 -16725bbf0c952a7bb41596efba970164dc4a50b32f5c0c063ea78d7450b9285b -a54b483e7de9edf90e0df131d4a45b60ece2df744093c9496fca2044b4b03b76 -c2a9c7dfc6a9044b9b6210aaaa25a5b8bdd5ff428d489f111d439faf01bac138 -88092656b0b1ab00e6ce2ab3451a23d8ad1795c941d510daaad5d90b3f337298 -3bd65283a7d898af4b82b55017136f44e9d5ab30a55f8a944a2f865d920779df -561eab51e59ba290a89df77583b483f885924d643ea19aee677d13c5ce768239 -51807ab36aaa704dab5ca31413a2f05019da9cf042ec49666223f50db88df38e -175e9d6e489ed20c77e884880938f03ed57e851e6fdad2b2502be5a3680770f0 -fb545e963f30a302011651759be908a7fe1660f963eb8bbc9ae8bbcda11ffddd -6aa425f22b2c02d82496fa02de5c04e4ea46829df685797eaf7e822ddfebb29b -af52c0b93119354bdce85f8b92818409e62365765fd20461547dc01b26961330 -c62174cb60e3b4daaec9c97c4909b18d8f6409c9fadfc1f1335e45ae45fc41f0 -6673d2ed548130fd98ff4b3791794858ab2a0a76a517ffe420d9cb5ca8640dce -27c16c2c3c4dcaec432004079d51df6117f30303da71296ccb20ca4fddd5971f -74afde498126667a2e5e1692cfad71dc622e461cf8878750b1f07adc1225edd5 -ce6060e76fb9edfa7f158f7bce83cfe3cfddfee88bda8141e85bc2d403bc6143 -a98b52642e4ca7b97db1d0c90bdf16000f023efc422b1efa8dcb366bac67dfe3 -5ed226afc5879adfd947511b8aaa9e740097310596d9134536e1cda60f9eed23 -b77d630469c87c8c8fd7d6db263b17740fd27fef91c31a8bc3314c8359f01904 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -fdf3c9c978f322be24ab4d3e51f5795d79714da3a5e0654999d34521cdd39032 -2f7af77d5ec45177e34edbbff847ccdf0a9fa02b7c4db737fbe4058ca2ef7440 -32d846dd3d42169a46d361fa58345d531fc0be9f99b4e1783211e36e6cd94386 -1f21a3d3733742cec89dc91af7a307c34d8f3de701b3cbd0aa002976b9f3f8b0 -075bf1dc2ffba065ff8e38ac2e66c707c872fa39244cd037b711a87c23570002 -cebc8d27d9b4db1b15a1d0e299938f5ebc2607a5f15ad042652e8c964a79ee87 -be6b8a5c4e1b6ca8f9cfc6d841851ddb084587e2ce48d2d08897024ef23af14d -7ab3a4a61ef31246b73461c346bbe74ab025f93378265fbd45c2e5edcd31484c -e2af52192612f2f89aaecd8b46257158b2670fdeb8ee05ec947b9ae04ead3bf2 -09fcd45fa5e7b5dc8fc5b078ef94ae832b20be10c29518a90667587a6c216436 -fc786b16ba06b0c8cfcb2bb136cb360f4716661ea79be754c7f343cb8da655a5 -ed791ecc9f6dc0a87c904314d51a2a3b31666ee377bb93675d6c4584ca42da96 -fd87fb29977cc52f1be62dd121b760bff8f9e30ef76cdb94053079023780def9 -ed86449dcd2a983b26e289707e85d5dc4c43c6eaa95c8dd55a8681bab39ea87d -43931ccd7ce0d5be3f856879199d4072c15a87cb661117c358c849937eb4f7b0 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -d4f5d61b044328b20999b3d3005c38e46a85a933a96c7c3fc585e36892cc0acc -d5fadb58ceeba9b8790b50189534c63fd0e5cb4d83d1160606b5d333f88982aa -b228b22a2d29dab7d14992fa6a02fa7b42a93f2d6f9a75e53a2d4bcb7f85231b -d270ea59b21dd1c1144a42ebd6538429f2119b747b5db20b12f4468650d17206 -3225e05a82eabcddafdc7d7a7592ddf9dfee7d1027b18d5a94c38a8b764f2028 -726caa1da978bb8c8e9884dabe6b71e50d39721467f9d7e87569f83fc9a5266b -f60e579711d068e272146df8adb45205f35f1ca20028c74f3b93778dfeee8f34 -40fe9a18cd8a6aaa2acbf6cb4682b2b468faf4e950c52069e2d7d0162037e051 -01a4abb09b87d598fe250290338a8df0b945eb0e97d6540ec5b3508221717739 -73efa17d53a867ceda4dbae5efc5616fa42194a7fbd43e1aa8afcfa32980599c -488e2eacba535b863de872bfc41020bc515b0b114fe7544dbf2dd15630e9be18 -1057dc6472ab27877d40bd644f56ad45dd3510bd3de8fdb31cb23a837a9e9762 -2aa3165f0f000a6259e3e681d76d10d39df5a1c8ff0f605c7b0d919e53a9ff95 -0123361d3be73b342fcd4c5197830dfa13b24ddaa6f2287101fc245fe86a375d -5d05c7edeac8199c89f9e10eeffc253bf5e1d0c62c2fb15e47f530c308a99df8 -6b5a913221d87fa7b396c8bfe135f7e98c1493b5d349a6855184d51e1d14cfdc -36db074e9f1fc7d5d02c1348fbe51472e58e1836a69990d18527ab60a4638263 -9c63a3c62e1f6409e64891501443ac3239f721f78a01157c697aeff5ee482dd3 -6b5aa767debd4f6cda904c41adb905b23bc718bae02557385e50b8ffd60ebc88 -762b5811b2420b6fa490902e1f4239561bdc708df02bf2bc7c1f2fbd88ce2217 -e690adcc394a993d49f4725dc222fe07038ff64e5f1dd916e1c6a053b2a7188f -c5dd6919a3fda35b72db6718899c0ac6e5f4ebb7d2e7bb3c20f58939d23bed43 -048d8bab4b7276ce411ce5f4ae2401361d1df16c07666d3dd3c3aa65da4bfbbd -cc245eeb25c3c40b1784d10354beafb1f4496896e39b25ca450a01ae2f5c204c -b36bd8df7404c5b0306b2d96ea289406776445d0889f16ce71dbf3f969c17610 -06abf80d7914e9f8e5c85c84bf927b3d65734e02af265e6103a4e63fb313221e -43f880e5b3166102e2cb77fbe84d3878ade8b6e9c6e6037a27d04ae8324fcb6d -84124034cdfb53a93e27ec248dec1b64f79b00a566d4954eb8d50a2670af04e8 -d55c5be4a7a7ff49a025a88877d18ffb6c4a9472ed68a6ed13ed8b795f8009cf -0bb3f42d9d0cff89444efcef8a12d0f716b4fb1195ea8730c042a8065303c8f4 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -86e5815cb813f81e9389fea22855e1abe8b43d93d847ed46958a93e2b2ac3294 -d50885ac0cfa1828556cc93da4d07abcddd9ed90e4da64c25596d4a2bda683e2 -af138ea3231cd9b4f60f0ebd206a3f91307582de1feb5f1056405082f1324a65 -7c2b5562684e12df85d7b933b0a1e0af5dd39f18bef76f109cf5f98deff17c8b -3351569be77169ed0b6a975759c00d8d59441db1042deaa14482c79dbd7b18f1 -7fa4b3001827003d9d87c74938785437762f2f119bf774902c508d2c8931f6ca -8a21fdb0b9865be1104857abf32b9f18f0b5cef1f635e68ac30baa4fd9b37d98 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -cc41eb493d6891fc55e61e15538017a3d4fc95c7a57d6b96b04a58f393f20e49 -6f94eb086317181eb7cc017e83636977251a99c2275b1e06c2795ec7bd539e5b -0f39e980afffa3251110bdc276df38f7585771487adcddba3917c8ef3291d633 -8e3eb71d1146366947fea0800cca9f13ddb8d4cff1abd55044b81041cbd07dc7 -685491688b47cb566692fd10eb9fc36a661c591054b5c26c76f8114ab3591db3 -68394170b8e863ac2ae2a82f76621065b174b11f270f26b5478225c911feb70c -8686bb17dab65564dfb539cf67c5fb84d265194319c7adc5dbe6f5eef230dcb9 -933864330b7b66b91fb1df417e4122e623545b3979a5c17b8d9d107cf491c0e8 -de7a177a3c7f26d49f8c7243b390ad2d8310148af600a18e4b24226d0fe5e724 -772a6c7d8a18be1371ed14489c98c96b8745c95b17374603639c425034e6eb9d -01eae27df5aa50be0a346e96c6e9e45f7d4df2fe3427491456475c06f96ba151 -3c63c02b7bbfa846f02f3744a5d0ce2cc0a9a3351e6300672e5f86d2c7eb6345 -d348918f2f601718b384f910d73edfdde701d414dccd0854127d3929ccb49fe1 -6df07cc450b088e55c04e498bdad23fcec606305a47667281bda215ce6daa067 -004c02ca87074d7a899fed9d9d18f22f015e3f2caad6c9713dfedc93f059784a -65524c44087234a6d41ff5ed85fbd8d65ab6f0c89cc9d577644b53ec95fc237e -b5549e23c4be5c0c4c244d69c63e15e02e8b119a32ac169f30aef556a8d3456e -6eeb555930e025e25d216a584472e21058931bbe2d7cca9c2d753fedfb4a7f76 -157ba9d8bcda75e8fd9434c4f87eed3ff5c2f704997ba61c1e4df8e1507be7c0 -37db26e04a1b6ae58f51923c021764187f62f6c92cba571a51d69ac882d315e5 -b16d67e96bd4fb57894085ec8c723feaa9eb58e45e8775d38c8ed02e8f576c59 -c2917b58d14210058f94d5385734c8ea366a479cc9b998c59f482c4f0a37ba24 -37246f58092a59cdf4d46711e59f01e7e4f5d9e47a2fee9944383ccd2bc35f4a -a68855811cb0845f568ccd91b51190ef3af0fcb4b6be428e83f1ef5ce7e9ccd1 -eb43d7d765e63ed066ba37526fbe0414c60f82bac703d41362c05e58065442fa -e4394301eddf79b1e14b1a7c91b7dce77b4733d321ee81b34c988b6ac57f1dc7 -ff97569fe2cb8983ffa2b7b63439ac46a5d7f3d8cd39ec6fdcf517e0bc8d5e62 -7e66f042c7b7c73ca8488328f3cd7cfd56902f6bf7b8122a386a643c4d9b8a23 -56e4b93e7210ff38b5443ebbe7a22b4d762e0ef60cd1f0c602c365bafb839bb1 -2a975acdfbfba7e560310b1aff3f4c9f022d0bb7c63132ed0849eeebd385b728 -0e534a82f4d7f352640c95b118c219a5580cf8c5a9244f9fc61950e55aa85dcf -e7edd36b44d98087a8a0d8e75c4506e3ef9039b7cf6a4e5f7f892d23d89b6f98 -74503440f8908dde0cfd036b0a52d08a7ec6aef37504ba6b29b1ee6b978e9590 -5690042a456cb924039e92d149cee1016081b460478038eeaa3465338a697f78 -9e8b811bfedc9e71320f85a7980dfd4471721482577d157be3d9924e73aaeb1e -8004410bc83a8db7d00ad3b63c2a18f28dbb2a8fbcbbcbe0aa86d8f3cc1dcee4 -0e1f10e34de6e86f86e20db2f34023c61282e89853651e86df7e287780d5d8ee -b2fb88509731c29da9444ed39935ff27da6f476638a0045e4f8d31fd58d76234 -70966fda4dbd52afdcae830a07b56ba5a836471ec2d0cd28deb35f656a15372f -a9c70fc569174f279deb231f57eb42fda82bf004d76bd70de066d81c5b4ad33c -4b693b259396496351ebd172e12a67f2e25ac001a0aeeea39a1087171a439d8c -d396dd5104fea4e04dc0a5aca71d446565d74acfa34dd74f5ddf57f89eeb8924 -992af518eda3aaffb3c2e6ee198b2868914fdfe337ca8e4d3935ca9fdaa03f38 -e9ea6a4a207ec04007325bad04be8686f5756f515746cb36fd86b2e4b392f9cf -f66349f7169c29804d984108b04bd0a38dfa811d401f17159c76edde32b15066 -e0acda787222b4d8751138138e58d43d8dfc921e8a66bf6ae2e8e74b6a127d21 -7ffc03e5c794c099e9a6f3bec56aaa7e89c6d439c07d9c4f765172449f9647ac -07e3821150ba8fae3195219d482f71d8b7425e0adc7f9f2dfb7cf2293a8e759b -7e3dfe7782f3cf01d04b86740bb5277205826dd8b8ebc6884135f8f85852c463 -87e00f9f4a830b29324e7a8526af392d30dc3ce37b4e8b9f5969f40463fcd885 -bd8b2d90528eda0152c79274454f09a110424309a7273769984422bf3ba2d634 -e21602c976a25846314b163b0b13bc092d4b45bc76140a4aa38d8078e4cafcd8 -355e4e0473eba86d6777592be4b843402afd114383cd62d20e67983edb237aaf -9b756668b04654b93635847ec574b0baceeca7a2cd497053c8a2cb2e3ddf485b -3cc8160e2a6646cc9edb9f355ef3c5e705db666ad943b201fc13a2209177bdf8 -ad37e5abbeea8686c9e8f1ff399841b04addc2b075c80532c294958b62d3b906 -280a0cc44e85587cdee88b425af3cb2fef355adc8aea08d7416340d95264eda5 -2063b8bef8b67b3438dad443d19b3a42a3023dfb31a82f73aac8b0262cb09bba -f923e2a42cb4b9a4e3811d8e8cceac8aea0cc93726ab1c44e41d8fbdced31c36 -523b3d85189612fff4d107ba4d6a592565187085d9c6e5c9fd6d25babba249a2 -03311210142052ce00543d224f46458abcd328d6c9b5526c44bbcba08fef3bf5 -fe41da9f58b0a777bcd434510f7e9d2e45d2d0e0620ca05a3480a43ac07cf743 -ff0a227c5c60a49bdd05585416320f5dc48f46e9fd84f0f60645e10f4ecca8ed -945d9a8d585cce841fd7c917ba220b7a8113c7761ca727e16f914f0b7b23622d -abadb83c367f3c5806508311bd15da2d61e6726838720217e3f110ea5b96a72f -084a499d63c5b9b6fdf79a4b4601d0f9885a514782959d8ee63a1fc1fe34c700 -d0518cb1f7a772c8f9a49c27b93437fced38ae4837e7e8715c22ccd450a1e5e9 -b50a110f32fe15cf278f099bdb99b50c78b3dcc16d9dd6ff5a992206c6866704 -720053802d8eb8b4d0b2bb930622ff158e29d960d841251421e5ad6995c43e41 -6dd4801339a44bb264232835d3cff15628afd0715f9a40753516478777477ddd -96935649c3ee8621051d090a495ea8938b34fc7b70fa3b00ba9b1d7386748a17 -66d2f7a478ae6437f787b62d00b8fa4606350fab79dff2c936d4cd6d2b70e385 -88e469be133de0153e20a03126504f1467edbeb5c0dab7553fb10562726b2138 -3ead11f53e83c1e9e864ee7cd1b78866862c5c05b3cd9ca19a9d3d1d6231bd05 -2f49795a02ae9665652256a7c82be09e54a0fc052ae42581110d23515596b514 -9d3e38e140fbb93723c8a1be469342f679cf50853de6c55fe461665c0922544c -54200312670f7fb34f700f27b1031656a22ea902385dc6ed9ce714ba84bc9ffe -e116c13894081ed1e522f80439891c8d662a9ed829060282c2bfb169df77f6d6 -bf053036f1f2c30227dabd359185b6d2ec1b1a0a53a120f1394e7e78b56d67ef -792eb8e7d92062f7ada80df7fe6645e245a19ee0781442f5f367ff8ce1b58a5b -43ab7ddf93aad18cb936c3c9f8a97f074ab8b1087468d9f818d232a9ac0d557f -d47588b6f51915c563d51fb431b0e2097647db38081e3bb118a7b55cc44d0c86 -5d2fc01e11f8e7bbd5594679b74e97fb82b6511eac7d3eee1915133eadf99b23 -fe22c1972905d2b7ab8dbb77caf63216f18b9b283f75c7e4e905571e3171e91c -a56736b326bc8c5155ce9ab6bf9c46f73608dee6df52e1645ba91a576d327d3e -071925865a2bd1e9d6461d119547c073dc11689613d4dc59548dc0eff7536d8a -b77a45450dfaf3261db9031321cfb9b770e582bcaf1ff4fb1099a93329e955d7 -cc073c8137cae690990e63b265fe496576da0cd87714d6c408c9cdf9b7ba5260 -628aee322dcf9e6b43fd29fd68693e01c81706cb74cdf4f76c6770577ab9e0cb -5546ede2fb4beaa75fc45d75c1139faf238145df20ef28fe2b9b226d1ea37f86 -1574a5b57b8a0e05c33f07d0c1de892db44d6f357ed3c97217ea2a41dd558e56 -aeb00d5b586ef6409cceeaf7ce8d259c4116f1822808f0b7570cb1c1339aad03 -ac97483ce47c9eb6a47c13dc74edf8be435707f05079334d0a15f08923ff3916 -88a23913f56d7e87188a947afbc0367897aa3bd90be0d80bb0a5f6d6e640fe89 -47a6c3543c335c802520bd3dba94259f79f5849ea795c2f5698b0cfbab50760a -c96e39a0cb1d1483a5c2030f7dfd57a0213594c4f5c4f8e893c4ef6a0d861846 -0dd629adee01c258dec09f6bb65988aa83f21ec58363f96706a5a07bce26cda4 -593f2415e727efa9b4638477d1008c40ad48666bb02a2971ccd1cec8e15c573f -714d0a5527faa332c095fd80711c14e93b5fda9867cb841d36c84f74c91c23cc -cadea372bb6881cb1a40419de58be1d87a291d7bee0c6d90c50c7da6a3697c6c -d0a6e68c00c2bf69c3ea4c9e080c990a555f3e1a2698cd2890425f58c6219b24 -07331b43a439894d79063ef6cffd76c90935b81223f1516d200da8b5e8e03f27 -7f03dad5a2d8c3944f2a56d22e84eb161f6ff21e55f50b88627ef9afbae93dc5 -56ae77a5fa454dc400f922fd660d17d61e9e764cbf5a1852f25630609a1c05d5 -5eda3e44c9e9afd27cbe7d064882a09640cc3a3a5cda3aeda54674038f9e2cb1 -58ad83afad0421eb14cac18e07f3ac257a2762eceb9a2a417c2b02c339910c95 -a016cf175bbc95897141e9eb064e7170b866050eb359976eec99ccf9b94c8aa8 -6ea014d6d0e9c5aec7ad725541c3f3c4fdbda6afe4ed4055dc089630cd77c2b0 -70e9262d186ea9f8566a4df5a1b37044854e8a15aeef8d524de51fea514946f5 -9180644db341f8c6bc4e5d98c8494dd01440fc74c997087789bdbd358b1dbbe8 -964c49175ad57b3c65a11b24c0d14c9c5c65e25d04f119c6e37e660f8665fff8 -f474b6dbe8eca765f50ce9d51a7294bc6c6800efd39e0349d64220295f61b682 -88d24e2d800404df9cb048e7cffe4f909b0b5a96b60edece0bc64ff04c10b2b6 -abae650b5d08ec37a61debb5d9c3168379ae57b5b3e22119c58592e59de6e47e -81ca4b9f6801e04c937ba50fc4559b7707099e7d65274a6a5073c2275947e95b -a619530f7616b12a10928b619dacb9ab639673196680224e51f0263cdd0b8083 -4547379addaa2aa976556a4a4ed9097e71ed9f6abee548dda7b9034aa3bddbc5 -d6046a0e680b12a78942709c682cd96d5c7881fdfb074ab327132323cf771e59 -c5d3ef0fa986a697784e8a9470b6a8cbf11ba4e3aa67ec9b198f826156adca3a -3499b11a20e01c7d91be088a8f2f2420aa2bf50f394a89a03fa86cbc6d94fd14 -0ee519b3dd19f20678dea5650f3171cfddffb282bd7ead8f454b4b4353ca4636 -5bfacf7a1e33b663db9f246aa7059f605f5cf43bcb84b07be3a3defb775395f8 -745310529dd092dd6fa351ace76a3a103b4a09eac8746600fdf47e0a0d1ff92c -8fcf8edb72fc7db253c930914a2560843c3da0e6d85374a88693f61ce08a1184 -9ad6459572a2a45c7f4d65ec11ba4756a83ebe4c60d1b418c5fa271187e3aaba -aea40d45efce91820216d33739fe993cc7b60cfd16f278e0015edaf659017aee -592b3b69ffd3ec2b4df60c0f3c64ba414240edb3c64ee917adfad09b15d5484f -6e9f184655f02568b5a03b97b44747a33c066b1bd9cd57d1f628a0efec18c450 -bcdf129b14fdd4c3741ed9335de42b1603732a67ac972097374e3b22aebfcbad -599e596907085dd0df5d8e6623f7ee23692db5f756f4d706939913d1bc780505 -2a9665507ca97862594523b27e3726b31f3166e35302e5000316a94dafed622b -87761b1fb66fd03699a44ac170cd0e2955aa285b50edd10b3b63c8c1162c0ef3 -0acd4cda9af18b529710f7ec6144269f1129386cc90dfadde076751651701e4f -2b9d33d70d69f88e148f019e90594822a60f5f66159acccb9a2fefb672179db8 -b2e1b59ce362cc60167f8403032d9f97beb4ba40f29cc6babe690dfbb6dab172 -560f9c82c8d9bbbbaf137583887bce60c4fc92650265b566d33cbc999d1147c3 -76324ca6dab4baef5eb7defa3a823a12a5cd6fa7124ae0f3e3f13c4451d8b6e3 -1ab1620747f679aab6fbfcf29f05a41747d1ac878c8d536dbdaa6d24c026f88e -e13cb2765c848cba065c97aca2f7bc04fdd97288b0292b49ff8604149f5bf43a -1a4b4c83259efacccf0292610d2812346698ea8d524d3c55dd38249a7b61ea5f -13e1a571f78907e11f866ba55afe381d4974d308d88693a5b12450b4e3d4c55f -aa9db47a5cdf78b627aa327cd7a2260943da40c869921ceb26f91fc1aec845f5 -0a19da2558d628ca3d69aa3f0b4d50cd1b8707c0f3043707d9a293c8ee675f6f -535f2a5d22d592ebf7459cda6d8371b3b66be804ea10c4f40ad1b71c969a8c68 -b35a3132476953dbfaf4648dd630d834fd280923b68c4e0ec2f39d655c09e0a6 -dfeb96d8a965aeb4999c88e594a0ad6c3e1a00f906954b9d5008c44a35e6e85a -fe3932cd4d9cc8783cf0eebb99037ae524110349e31c769166b93278140fe330 -61fc0ab4a948d2a56804775cc278d67fb46ba33d278ccba281e16efaade3e06a -655420fa28125309eb917b137c710248012821c1c9878770e9ba5fa8ec2bce0d -0d208f028f7f8692f06c798b71be22fcf304e8d090f8c6d6e2cba7b57880e1a0 -cb12c482008563a57ed79da0652fcb62b71373a56fbe07ca1b4cbf7ff63a4d3b -6edd4242d773cdd288e00fdabda95d4541fa2c8022b4ca084b0e2d62849b74a2 -28cffe48ab99e7bb885410a47652f9d3759869cfb24301674b565155e3e31bfa -4470c073805e75345b0429d792bf5f5bffe6cb8eb18773ea37657061359e5e42 -0e093d2caf07adf8f3606c07b53d8e6dbe798532b645b72ab476a38f8afbc392 -d0a7e99772c5ba5b528a48eb65e99daa790bb46d051927575ed1d91f1ca29075 -7016cc7675a4ac1185059250bf4f5de9967dd10a3ba8dddd86b1038c01899813 -0653fe2ef5e589fad419c1d9d327ab595703d26350e4139e3651a8f0a191b96b -d35488c3ba08c5ce24ffe4ff988c0b62a9454b9d1620b32a6867815b0062dc66 -8f19bbeac5026dd171ef3a492d40acaed8aa1c4533b7da3888824e86a609a387 -1e47729f9f92772a796f1a6b6ba3370b6f7fa14b0870d5d46d185973a4a14bce -d1ae66cb173ec89af1bd6e1fbe3dffa617eb359cb5ed3b4d8adf3055aaa23213 -fb7e54e2a43cc6fe2a81a28f5e2157cc767072875b8c145a605132401dfe7970 -c33ec18cc584ef9a87231704c1c38d3b4937f75bf94e4a9040b81adee0d48d3e -b9a85bae7c9b959d3424dc549ab3c0b8e140b25b38f584e2e9f4ec595be076f0 -119c1f64042fd333ad6c5f3e7701b8bcc45bb3fad42f4f1f09c09ae4ab95eab8 -a4d028a3635ec0ff4efb3f0e69b84642ec1dd7ae47601c074bfe69a39f50adf1 -e35c68a33956dcf45b1823d6b3ccd37980972a8895fa38663a24f559aafa56fd -02c8e3d4a9ffa5789867c2f035dd3145cb67aad433843b7559fff89800b43cf7 -4d58490bcdb3faf5a2f03e22769188fcc1d924bdc7b9b9904f18c08c0687aaa7 -e6caf55c3b1fb3cf2f6d4678b46f243d74fb1ae2c4e8ea76d780d8b10bf601eb -bb9fe5f2b4257bd6455bf8e00f7ec8033da5663ff8b9f205c0afe41fc6a2bf55 -df39439a59bfe3d1a66b01d6f241cefc5fe9dc39a95f007a538ac939cf29fd6a -aa6ed543e3b98aedd1dfe2da331575fe2ea3803585c317926603643d0a50c406 -682a119c82c64494bf8e23c1763ef76702c73950e51b56625ce79b9263316ef0 -a04f8458473892cbf65162983aaead8a60b6db6e9d4515e2d1253e9ccae66ac3 -6d3b1fb692a1ad444170105373b1bdfb66c2f07cc398e2ded737301f87cb5fc4 -581b4b1f2827df0f647e442091e64fea01890197cbe404607379783da4fd697f -0a9a48f220954e4d6339f3588f21f2dfdfe18eb79911cfd00d96023ee62215e5 -6b445bc1fab37a302be8c0cb39405bf2394c06ffb4f2fa073d987f73f3ebcbc2 -81aac8dcf8386424a621b8ce0f845fca0ca63b78098754e669de567a59327e62 -8d88c638066985f549eff3252d7489543c7583cdddbf0a2fcc1027503a54c2f5 -1f2339b149a9238f73382171e638a7064e7a48afadf808a6c126d6fd40cd232b -ca6dbc3c5a24fcbe550201902d44c1d9ac5329e2cca38808ea462559ad89a295 -3e9942052eb861420189eb90065b582444a0e6987ca93612a41fdd9fd8608a02 -7b7b312e0c1bf137d92bd654d880cb7ee15b83d363b2900921fe1bd6b11e5f25 -a91586a96454ce970851960c1cdeaec4dd0e88e42ca0812757e77fabada021fc -f80216749d537c345b4bb0dd35829a068bb32601a6a2d64e0adfcd3072f73393 -795573a7fb055f0d7d081a582d07e25a9c1e6cbde659ee0fcd5a55462db6a552 -163e04f36139595c8379cd305e771b6aae8e357d9a6318602b027c3c91aad760 -10cdb587488653cd22f6eb97f85a65749c454195bd006683e40bd6496f9a26fa -a7da19ac37bac3554837feb4e7e2bf19cf7b38750d4ba7f6d8dac1a828009dab -3dbc3154fb81bb109cc14b02510a3b4062be49588f6335c4bd86013e1c9b8a51 -0e4293edcf2dfcc2deeaae390f5079ceb687e73b6e4792be0b1bdaadb0593a9f -0aae980e608ceae5b10ab6a534c168238fd6876f48d1a1bd836300ab05bec228 -2cb68d41653fc08a1adfb4c694c9b492f50c183d661712658af52400e044ccf5 -a00cccceb7a964fbdb6c85f8b54f12616cbd3cb23fc872a495593a41a5d21615 -69c7cca4ea6c0d63050f01da34d8e733295540d87c8d18a4742abc0df04261eb -2d09bd36cfcceaea02f62580f8f41488faa8e6d85667c8c6896c5b34c7b8feda -bb96ef5c0b8b454385c84af943b2e00277373a10f247278b3c7b7bc794547038 -a890abedff75d8ee115806dc3b3232a64b8c43dbb01078a693c97b40d0503cdd -72fe92d376728693b0e4490d403822d716d4fcd0698f457a7d6ad512de73b5ca -054ca205af8c231835d0bc020e508faa72cfc0688e5463a4c51c76bf820f237a -bb20bde88dca269bf004791f5d5797c2d0a4eeb1179e878f53e559c1256a59a1 -6a03e485522796811130d491ed35484a36fb1f8c58297b1c83b1543365398d76 -f99cd419a67b7c588d874167f45629c01b25b9a998caf541b5908ae91b3d0884 -23bdab370b671a1c47076457169822765333716f4a40cf2e09352faa1f095695 -88ab28d71b0dfc8c3a9091196d764bd821c82091cf31d10d661dbcbe79baea95 -20f5750405060f5a721f4fc16709e073e63d8f8bc54021633a81b9901e9486a6 -dd0b839317eff4b52927c025d5f2abe0b2df8bc054f1f0bd6b72a5895008abb6 -d782138bb4a3f9d01b74e7e4717cd48a58f478a0d9a59d5f32f0294a53b506d7 -d0b71f2b803e6f88744ec26ef1b001966e6291ea99e8669b9b16f63c8945e4c5 -f057040ff1807ff2fe4d836796b4639d179e0b8c25bba142cf62e157ebaba3a7 -3c503966e49508ff13b9b8881e5ff5efb55d716d5d8b37426de555d22a6d7131 -726af6f568732aad5106a2fff0d197a631b35670dc44663cae78828908b0d4ad -d34454f89f541d43c9ef0e11245e65b3446d01eb00187dd8f2853fba2491aab1 -01e91dc23eee608510ee4c36b936cc3d9001e6ec671428a066e3291a598fff27 -5ad2a3dc82a8ba11515e031ce1d97f3855ab670bcd7466ca9254120df7fcf3e8 -18136e36cb31789d96a7f1c53edb6705a88a3edc385583433aad541cd03c2f8a -425f16dfb84be98b9d20bf6de8cc77ed3e17d169f9ee661ce70e54fdb471fc34 -b7a05280d629dd15d24f1dbda5ca63d5c5fe382b8079fa5a276ca813da7f876f -0e2af80d1d3c88b7d74697fbeedb2e605e5e2415b0c36766faa10f8053a8ff45 -7496dec653649fee932461ec824fc2d33065102537342e13a571d80487355a71 -de467800eb1b11052ee6771cabc943177a9ad53210fa5d60f9628a8f8d97eaac -35f070d6b361061e2760c4c60b616010977b9f035698ef0e41cd98beff2fa6b5 -0ef7a66154aa7687349943cb7a26b749e2aa0fd50cfbee449dacc32b6cde83eb -e6bbcf9c711a7faf77a93ee551a246c19da0cc9b261a44aa4f0554b688d107db -a531d969bddb37fa8d6377999981f88b5015477b0c46391d31f2c2f44f0a28d1 -362dd65b6bc2787a8b1a5bf664a1274d46789f9ce45b939be46f228f5b048ec1 -b21b2e58646cf2ae56f974ad85a457496266595a03372986575fb37091fa741a -58148c8ff4d0f8b06f8ff0d6d024e99573c2a8ba09b0266095c3b96a1209d284 -1ddeb748a44f2014f041732710c70e224b698e79530705d68aa000675b03c6ac -88992ea2f7cb3655365875100d95bd2e053bab89dc84d6ce9e5128356a9fe11c -ee9f6a76766dc2c8cf702ae03497f6164eefed6b63467f223b80d4288d4684c3 -b18a7984db8928592dc5eb9b399e0695eaf04eb66eee475953a78867273b645f -d7e14031a2edfc6dc22935625effc7a258dc83fcdef9a9acc0ecabaf18b391ba -b1ddade0ceffeb8f5d0f17bb87f197a62e117fe8398278f8493f84999ad33d93 -2ec71f0e409341b792da1f0d267559af455f7e8f2912962abbe6949654734ac0 -705eb01968925bc9a77a5d9683451242f3c0b0b1916a6450dfee7ee7b5d33797 -0bd16fd4ee0529f4d4bd1f4c2fe14bbb63861bbe817ebba9575bb6521c7027ef -6dfe9f9150df760976dc82eb7f256e31144845031075a5478194780f9c5e4d9f -768a65e4ecbd127436e67ae233b871aae80d678d4f9ef24a5a4222f3c05ddaab -ebce58c5e8f1eacc3ce82533b995e6652cdd65487f9ac469035d8a10677d1313 -32c1cd1e4d3ae9cd7dbe39420c299e6a4cb7c294e841b60921129a5be09a8b89 -b761f1dabc32be7c5f78f1a011e134aaecb790842b150b3761d2bc600a232f24 -ffcb635d8e59588594762482a7479b7f58e913ece3c69dd859d9c392359d5779 -fcb792ea2fa33414d80e42541591eabe1c206d52d2b0c002e9a7a1e2d9bda4ae -f889732dc52cdd4213a193d042805e68d4742b011f0a2eba58abe7b0ed262899 -2c3d06ecbe312486e053e3facfbda3b81f3dc26dcdedbbfe1e9f2d69a7aa8af0 -e8274b147519bc7f6697a8d07db7e47516aad5fbad8a40fecd03f9cf48b59479 -202c51f8a178db374de8db9a0e11a9552af0c83ad2335c68b3aaeea487100f1d -d8b282eaf722885dc46aa340dc6e18671d6ea94d801b67f0f243718e41481db2 -b920c5e3d6b5285b68d5558c610cff0e0dc57b784b3c2330c18c5355f5e8e111 -b9d24a223feb2fc7a6e09bd2c11a7a89540c3dba22b086afc885576554d4174d -f3c5bc98141a932d12ec951e44fe58219bb6fe61e05e0ee7a4838e9a5d4487b2 -5112fa93f6ca2a33cb29365d4dfe79e193c547f6c4fba633a0464dee88b70a70 -1bebb417f11621d3ccc8a9d5259c34b534bcb5830cfc11b102cd03eba6073685 -e11091a1044e8be7f08ac6284b05af2399c1dee1a2d9e96c44998bc08ba21516 -ac734d490b4ae8ef9c0722630623bc8089cc187191ba627f15f5bbda5a9da32d -0d48915856612fec53a4569a5e73db6161354604f36b547cb681f27fbc886cf9 -e17b44717b07c58446302bd7864586fac0c2afb6ef0343c17d3e1e5af12f6bb4 -a5ce72fa0115264a319e682e92b76a0056096df79dcc16a3158fa8edb0390e77 -20f28745a91b792b3a79fa6ef0221c5bd8072e9fc9bcb6aca393fc2900965f69 -1fdc0d10b341d25f7612ee0d4d06a5b9a0727189efe20c6115d6a816a3d6ba36 -d6f56e593ca0ee16763907b203f0cc45cf91a1b32e8e58ca9282a1a695df52fa -5c7501462822fea1c7e20a70a384d0a0bf3eed779d6d220600f0618208b9827e -c7dd74bc52ad6cbd6eccb7fc362cc587a9b8d5c768d1d4a6ac43bf18e4f4fff9 -a1993e6d257ac5ec0f714d8a6892620e6706ed5a3ad1efbbf1dac1d3e6110dad -f6bf542e8761c1dfec00c9ca7a70ba170733e6169fc8504f4733c8c14222e3c3 -6a03d51ad0835f0482f39330dcf1d24d365c69adc5b61f35f6d72e437b2a1084 -1c70200f7ab47d3d41cf1ba070e94503f1ebaf8e300e325911332d8a506cd102 -d31a3596c0e83df6337bf4dab37a661178b0b8155da504a37f956206f01e4502 -2db5af1457e29691ac6b671bc2fb243b0aadc947654d0cc321a45307865957c7 -a1ffe5011a4501a9387dd01a0a2eb2b06bc840585909258fd0a7aa42963d494c -cbe04cba17a9ccbf693be2b73f5866bcd59f8e3f3e55e111542e8b5ac374ebdc -02d11f457fc212de7810cb9135aeabb585b7085f64abf2ff3bcbb5fd1d6eea2f -09a588be0973758614f0787a3a6f9e457336b47ab9d3fe93216b2a98fd311a2e -7b2fe78b224a0e7eca3d49e661924847f5bd1ce418db230b9b9a6695c91fbeb1 -b771f20b4808020c3a51259e9843b21ac38d6e89ed59d52bbeb5851fa80bea68 -dbbc23d5d091292e7066dc3b305afb6b1a2e665d23943eaefa00dcd39eebffe2 -1cef2fb978cd0550de6a536570bffddfdaa2895ea7d70535e02fc70214a8a9f6 -4cbdc30952eee88113c3e08e7099503e25a9debd8cc3bb64f3120fc9350a8442 -9e1a00131746fd58b51d7f090a320c7664f82b8acfebd2cf80d899006c23ce10 -39c85e747e1508d64318c3f724e645531dbc887323496894f6e560bff62dc622 -c2da3c9355a048f1fa02c32318a55241c07791ff8e740727ecf959505e81c603 -f19f9924ed8db231e5eabfb9bbc7e048059615bd37fd5b95b90f0496a52f87b5 -647d6dea18e3f5944f71ef4006957d8740889c1bb6edea51aba0686b3fbcc344 -eaab9b088e038cdfe4f0e2e2ba42c49c52c83cd60f36a3dfe3bf34a555f78004 -239b9789a4025fb0370f6d7d605db4c1d6828e0a2254bd7b0802f819677a5c9f -c8b7bd9737d9a053d87cbdbdd0bd6e08c7ec0bd5b7f5866aa1bc51d596e80dfa -c3d5da6c7df0972227506fc87cb889ec731c66e25e3cbc20ea1117f2b6f4b5aa -54f2936023d982b2cee435223b6718eed5f61ab1ab7e0e661ed944473c0074da -db45e2cfa0dc2b3d6a10a555bd6530e8155f94051ded4ffe821b0336d6a83c69 -38b0fd07c8c7524df2ce28614b584ff9870cc59b5308cb20e614e4bcda869743 -7096cd9a67b09f8f4b5068f0900e7898d002822bd47699d2c713b3568e883c40 -af5b64d43f355812ea9c6eb4186b80ef06f6a09b15d9dd78aacd8d2e513e40b5 -f88b3f869a01f91bf0ce1640a359f8f78f7815fb1148dc19667445c02ede3eb3 -34dd5cd9a8cb1f57df0d17201abfaf87045728d7e4c37abc6c643933f9af3c9f -cbe080ae89dbdbdb0d535104d1eacc61cabf2b30c3168aa359fa264ed9196062 -d8ed5fd1143eab2748cf46bbbf31f5200ab71db18d172b169b460757a5e6d7a0 -32b528716163928e9f088b6064869226c8cc9a2029deada6a9fa27974a658787 -bd5a78a37c73b9e30392eb9c92247e45591298c25b9c8ecc49a3024fa48bc219 -5c34b6de81220d7644d26c58a0a8a6fcf5a8b1c004c8030eee544f44f2cbdfb6 -469880d72f39091764d0543d7df15e6ea9924a4436fa18866a5210a43404d51e -ea307b1b3aa42141d20ec9c8ad3253c1aa6a11db84ab6d1b667c644414d49279 -e2c0d14375b97eb7bf2012b72b7fc5fd3635cf04a9f071e01cfb9940b2f5ba42 -e8b31bf778a7d79f8a1135d9641a65b6bb144f96ba99440b9c2efce50acfd279 -108161892d7cce3294f2cf22c984d0a569f42da0538c7878315b0fde9aef7c20 -dee06f68368128ef0a3abc5d76022bea5ff6319f323454714b01fa97b9fc3931 -99d2eab2107c65d575330072f169cd31c3f9af438399ee9f381d3dd4133dbe9f -e378d8bdf8349b9e3639addde00fb517e9112fd6a115446bc63408267e7f90c0 -baff97531d852397428081b4a45b31060ed32ac53bc13bd56b8a20fb53cd7e59 -8a3ba5f6919a3af234242a66d7b167b2078c8789f3c4af09166873517d3892af -64e282578b45c9852b31b37ba87c5399f88c2ef8faee47db69b0f37790a56e5c -0d82f64f9c5053181427b607c02d2c31ba8cfdf6f9e790c05fa53c2e67599362 -360651b63e140c562dd6c9e7a1f43c720f0d194d6fd70cd7331cb76a114bb066 -3be89d34ffb3a037c48df69105dc91d16bba57d07072b38ac9f5af2d5e7a654d -2f4a084b42fb996a56b83ac9b8c7f336aeed2455476680ffc5a20f0696217393 -8355ed42114ce20402b0de026fa6c01c5cf5d7d3d780a7cdd0c3ca53fe4a2637 -28e7a11653ac0e251685d512f4108a64f6ce5f7c333e58f7a398a2a8246fc77a -3a49d4e9c5942c4588b0337d5c0524ac89cff23193cd2af2e33f31a9050e1311 -4933981b36f92d41ea41b3d3b467f2a3e400df20f60a53a25f3fb13448dcffc3 -2e05e814a7e05b2eae1d31886f10c9c7ee530dfcbbea8af20cdda9d360d075fa -7e08faa4f4a362dc894fe88330b890157d45d85c048d83fee7cd06a81f57753a -77758e9fe5cc0c5f7b3befb794ed217f09e9e8a4bcebcdfe1e0de2fc7c7d1ca9 -7c01849c77d1e88360a66c74d2750e20a0d06c70e61ad689d65f94460a69a853 -78d0c5f74df4b08343b8acfd6643859c14ed8e97c4a0fa9e6fe871c43c8cd535 -fa0adea01138857e6371d57192a435d8915dc530e11d10e7eb00e03fbd90c37e -0c60a3f1a5fb64c740e21471381a4daacfb9a7acb33e76d3176377f625ed91d1 -d913f2a72ca7685e53870fdc7a94e3c613972ddce1f2e4802fb590dbeb19df08 -703a30bd7dbc6184ca85e394404d0c166379e987663ba637cffa2e53d74ea235 -de006bfc6e5e3171fc5bfaf7938ede144adc81ae20ba55aca3d4c8e663c342ad -7f14cc53745c0748f8d3d17c24952b0b435dc50a555b731700f0ee21e4528a02 -a3426fea3cd3d3f4726f382a8b8b64d4cb3f38a76999a0147ad0612a385ae264 -83d5add9aa7814c8e156b412894ec142c05261e9b9e8f8cfa1f0981bfc66be40 -2b1feb498727b4e25864617315589f791a631932904f0098c6ad3e59a441583c -df510528f0d4e5b8ca56ec2c8be53e2b271030daaae4b972fc0503d86cc8555b -565bd08d869deb7f3ba776e3458b0a1742c9357599e1c59211884bb76ba4a958 -c26179a807f5b24a21e890c4b766d5604e0b88b76a05d730beae5c3b03c8062d -cb05028dc036ca705e83ba202fdfe3c93fc5d47d12be319b143abee976f3066a -a52500a21e890f4be485a6fd2d00fe4c67920768f80fdc5016157aa766239ba6 -ba26fdf35cdd04ed2d351a8ceddab926cf51ecbd1db7e28b9c5e290587063ca4 -ebd60640e82b225d22d5b8329fe53ae10d6cb395f259374d00e77422b1278b41 -dced288fc7338009ec90f120a4e6f1a8a3d34692de4b610e5279d8e293b17fce -6927573c961280965629584e0778b168db09cf9740186b88496cfe19208099fb -730f1563b9991f445e8f86b6abc959116cf6d3dffcb7aed05c30391d0eb64141 -f5a3cfdb349b23deca495938654719bbef720c907ffb4460989a084a02ec0fb3 -a53cccc0f85da1eb8627624d5f4862b3d161322633b672ff2af782173c303897 -c1f381e26eaa3110a92396a06f951d8141595128381cc44946dba08dbb0225f9 -0f44ae2a691e9dcbe82be7ee792099a59452a6a3ab25fdab20504d9c98b68798 -cec1b037a98418c51a23eb44844b85922efd5aa55b155e1baf616b097a1c2884 -00f92e2319fe59dabef855312c81714bc0fbf7a1353b13711ff963d75382de81 -a86949c0263efb4cddb1cdb7527f6095829cc89f53158ec146f20bb77d83e84d -8c579d6d395ee05c4e24e94dec2530fdd95e854aae33586258141a959ef7da2e -58cb312edd660bb02e8a1a8d67b59f63f8537743fd101fa05d48b0af248a8794 -cb868f53a077a9714fbba007234b0847c7c12cc22aaf859c97212c34e543b141 -8e47dfcf5fda77d059a6a554798c1270bd9acd6b3804b3625aff79e1582a0155 -92e55217ee54c392b0699f051bc3420de97ab33d1959fae2cef6bfc19aa6ad2d -167ebcd68e013b0960673e943039fdf234243315337139afe5d7ed92c8a7f27f -2b2df38fef79d549fbdf4d3edafc553c9e28d86d9d160760fd8aff6db31b3868 -8c27ef69460b97fbc3412710f6b49e591615014f804f57cccad3b60f1082d6f7 -cb045d41915718921ce01ab3b733fee1df348176403c1dddfdfc67e74dcae022 -732375db9d2f83e89fb6cd2a952be43c112e89eb16368063942cb44de904f4ef -a2e2823d4077d137b0ff231cf53540ae502dcf091e4ed8b280f940ef394108be -20ace8e155ef2641626ee2d6f7793536d3205d0c56cfbe3d02ebcea6db74d6c4 -4e9e8cd0a0b52bcb0e7732a1e188aee10f6e7e2c9e4408146b68263faa536696 -4e14f5b18581a0b64b112147eb0a15cffc14cf172a00628bac3f4bae52224850 -fc19e7da12cf37bcfc5e91e38530f48b7e075c23457eb6cf3ac14cb6a9c2f93e -8b35a78e94d67065cc4dcf9cf7f02aea2eccabbd21df965bc009f768ab1dd16c -73ec9db77eb527c7a96a6c87faae098454432fd9f9c4bc49d7ead7d1d7c28e50 -715ae0e4fe8059c588ae51c9b29357e7d58eb4c0c03e52330ba593b44e3d91af -35d51345a8c3cf1a57751b59a1707bdf4d3a495bfcc50d2b241f264794c9b8f7 -6933b9ea1650a7b5ab611d1079254bf6a9121d5bf85c76ac442159a1831873fb -06337787868224352816edb59a33496a742281c8585aca7744a85712ddad7f3d -70e6f2f7cd51c372e763e3ec517ee5c53256b73a1bd3a0719bbac6da274ce005 -c46915f75083478738679d2e478bc36b77b08fd299c537cc739da2078ef23c5b -8fe90f11ed854b324be04f34a0fb70a26dc365f616cbea576f30bbf4646fe06d -1e5984d694a1a8af3da06ab405fa3b51dca86eed16f1afff5cfce7b78e0d236d -c6247858f79d9a52bdcf9760177779c1e19ca164e18f3209efeffbb91fa82876 -fe2eeea3016276eed9dd0f7964a7840100781f9f9620b109441f69d5510ec47c -e456612fbf8c7f1a1916bbf266de174bb47ada2de8aeb21f85c7ffe5abcf2a14 -92cb11682408d17ac8f9d47392dea82d04a1f6772f47b667abacec6adaf1f97c -b3a86c07533163a33c7dc47f425e6ab0ff14e5276a8f53e98b879e89a6f0f6a7 -4c379c45681c41020a3464cfe03c3329469177b62b97d05ca9911133dd5acf24 -7548d285807d35fc31ca3e66ec4c001005108b14190c6d77c4c5eceef000d077 -94cce29c86db20d67fffc8a252163c1455f813d0d5f5cde4aae0e4fd6bb9fff2 -b0058dd5e4ea54831247edee8ec59c0d187941861b59d2ee2f2a731f16d18b5a -a4f4ffa4a746b8c8e40634d1cacdbc9a81e1de2772a32f976e744416545e9117 -a712890c6a00842a5d3c83e69640a14cad52ee5b230663d2c2fb1cbfcf9e5f78 -f8594b2ef00028bce17585c49c72991c0e8a76ed5b8b7a15ab8a5edc9546eff6 -bde1bb3b1246fa8fcc9cc5bd8db6979642fc4c6a391059edf28d667e996dd9c5 -ce34b71b2ba16ddf1a9ee9c5f90ed2ebe911dd5c679e5ac58a1f5120b8d07bf4 -9ae04327367db7ed4f5cd35f51df529a340652eba0ffad3ef500148b6169c8dd -cd82c0b093a0acecf6a11b8759dea35507826950a1ca47a4d8c276be3922592f -f48a304d9f7a52f31e452e54454c8e22f33c6434bf9270cd241c98f5b05e2941 -c2b1eab57035c4c2a7440a8e432ae7e9867bcf6b74f4e360299f345de1afe748 -129d01ecddb4af2de940e19302a3bc7fb650d32906813bb282d52e44bd81fa99 -148bb9a5b3019fa84d4a550472c9db1309dc371f460bc99d02070d5bfad786e2 -3a0bbe6488b033519407d774e6acb418ea6d7beb376cbc234b51e6485ee8baae -fe11b71645b225293954f1d0e131ac20bf54b13389ed1639316a58f4cacb0fb6 -dd2767a6eac889cd54bb2dbe267486c57304a6e9e03eb231367caae531409133 -d25d91369be76e2ecfdd151a41d9a87791bf5e2e200b48c9519d90c1a03b8378 -70d9fa50b6664f1efee2c69a2aca53e2cdeb279721b9892f9b300c0aac91ad60 -39863202bbba2b4da7e89f9d0f49dc3a1e5c84ea2ea977eab41099baafd9cf1e -cb9be0129d78973ed407397ca91e0695758d80502dd0fbf2096c92e8634bd6c0 -1aaf65d1a34c5da0c3c0f38fde49985768b73721470328fbfeac3d1a166437b6 -2854c376ef62b3f1fc318c69ad6e321d6ed0272b66b8438ee53a2318be567bde -e9cbd0ec41da938ac7b423ca87422b168c7a40e89af49102dcea64f3627b0c07 -3a004fdd60d97e9b72a8524209dfc1eca25838a293f314ff1bd68e77583d1325 -59907d3723b5bc07c64c80aceee830a943f82df462c5f87e5ceb2f4ada4f07ed -275a7479ef53444610e3e67b33c49d1890fa07a425f76efabd699ce953a1dcde -d5f422a0e32e43cb4e0bfd665b9ecc327d1a9c2e62930dc3ee549bff0fdba8e1 -56137ee9bbfe28cecc489ac9a390760dc98d189f7f546622d5258d642b6fb62c -9004f9d5eae1422b069c7a2f98b37d7bf8a670467612addd360f22bb639cbdaf -9a793434d24bedb1f90a1dd3bf2ee9c4345acfec767fc63b185fa5a50d7a4093 -0ea080567e0e49bf49e894e430754aef7f63324e99d65201be3da5e13d98a5ec -91df886dfce875cfc5621cef85f5c458314adbef424268d65a4ccda6c055f942 -527a15ab4cb7e454e0d56e6f36af4070b24761f827b9949eb5aa1d10b1da7057 -bcc1c88ec8a5d5d77c87b05404c23e6b3a2b9ebd4c43fdb607553a03d75498e3 -fa9cd8368877bd4486161e83a0017887a39bf78b1cff99b62992d64d6124eb18 -e8f3fca8063b668b48bfb35588438acc866497a8871a4155abbc0e2f76b86740 -321edc78e6707969c53182561f990e131196292f6de7ab6c1221fcda7f8e8acd -13a0155acfdc43fc9d9fefdf10f70727489cd2b44a266aad23ed6db35e9ede3b -25b6dec15841fc8ea22fffd1c73b9c5b2937955b6a7fc952c139e3230f477d19 -51aa8903aeabf309a0ce51d0f08feb12ad7d9153e6db9d8a21cd4efb45faf4fe -e3783ab03d59370d6a88e4b081f16ea35db7c7879b3126b847a667deb29bbec8 -c5fda1eaf8b908e1258fdd57e2d4324e341cbef755975671dfe89bfe0b18aea5 -18d16e014e75242a17c7d4ae3aed9067cd1eae5779acac81c68543e5a6122083 -1896bd5ed3e1bb444b324521790b7721d478a412e222e0a10be52ad4bbde7347 -f5ecdbc61d00099da1eba46776650c54a2882fad6dd3032e2c0804586a6a6562 -f9a0e025092f1a368dcdd2b806633dccf03f9bc7f540a5a34a70856a253869fa -2aaa3786a7225232a60aee3cc8a48a56c7055e52d9143dc695a054c62481634b -c09ab8ddab896277f772a696e23fef5f50c612307f046a1b4b545a2e62df89bd -eceb419a8f5f40d37a9f95660eaba3a66ebbe448bb5ee7fad363f35d4dea5ff7 -01d1d976bec74558ba85561db975a71ced117133b713e2e61979627ce0cce51b -6ef437a61689cab30d62380aca758009194d996a16f0a8c47595db25c9a7f89e -fc95bf1dec4db6bff7b575053bff5e797704c0ffa71b5519e06fc814dd4fa9d1 -2c8496f47832724afdcc958f5d5b75c7382a1bdd76da99b5c149135abf0743d1 -a15263feccf69557f56c2ac99645d8a47d2e81493459b0f2df0bd4414610200a -5c6a2c208f887243dc04d01e648832cfb63557bc6c31503ad67404ccc6db2409 -1fc0d4fce6394c20617f254cf9067411b1c7d1b64f7ea6333683733f98052f28 -3c196120d8163d84722b41ddd1f4e04ae4970aa9e404c25a8f7a15c9b674d441 -2f60ff5e902d03e58f91257c2d4c248dcc9e26ed2833f81ce6cc58207dd06ca2 -b24671cfd99a826fde65ae6b242c85cfdcad37d02a8e316d8b2e584557b66a01 -6fa724886b4d143d930851c2c92254a3b2bfccc2536e20bc2b88c20b3ae1dcef -0196f20cc7e28568323d360dfcef66497e90a76b37fc8b265a0e465d1b881631 -625ae0bb9f392b2a32c212b6428e47f31f385a59ad32500efe8b1f7a0b14a0b6 -f9416fcf8e4c88c8355b153afb875bf55d19a0ae312e4e5931b9edaee6d7900e -0b839158c90681ac40a063c0364677d65865cb38a5d818ce117ac2d78373d5ea -df7d3d03cbe2d69402797a5da08764f500412ce58d5db22281287586f46e4ea0 -f515473677e1ff5365cada72203717ea91bc7e6f06263b6395e52f79fa725230 -efe5041d6dbfe1d91fd179bcbb7ba10a641bda60199957f8ffaa88d5ed67082d -dbee2959cdeec7f827c965474de5a76ce9394f544ec7569a3eca40377a4f105d -254cabc25b369d3f218a2a5461cf57d6f7d7a3e65e3e1e6c65cd888efc6e14ee -d0c4e76cd071b1a86ca85aab66510d93a0dab609c3b56b0c0f5fd22debb041c8 -0c9026e781f9a66c20c7b22c472707a534b97e7229a6556db2dc81fd765592c8 -1157b609b3c215f07ff963a175ecf7fdaa5930a3ddda798e92541ead871bdb21 -587bbdb52745c2ba44d06111dbbad856b3aa71c2dc51c71b3d7368267f787fef -25bfec835a8399441e54b3464871e7f21e6681204e4f253abe621017b12ed434 -468de35e6c06800d7ea191e10a7a3ebaf8e2fb41043cfcd14ab3ec8871c55176 -7950d966102196bccaf4be7c0290bcfeafdab1b9f35a1f0150cd239553787ffa -3c883280bb9e3e8c4f96770c0e22fc08dd1e65fb2590130b440c1ebacc5a6b56 -2a6d5b2d6ec254fd802f1cc484562b001fc98df9b789f575e7d0271ab5523330 -bd3c34a9d90585263394f8d67c3c1857feb7620ad36d8a0f9036092310841a02 -aa7de08ec562bc2e62224d43510ff70a69ed77454660f3fbe3414960a302affe -a28ff27693dcf1d3ff4c3c20747d4a091290706cdb25cbdca6af3652584a9d3f -5a6061dbaeeee9c47a5915773548a74ee23b8c73675acc8917aaf4d9082dc4ad -a49505d1ab6a3ebbe151d9f78b1e7cca18f2c77f6634c4a410b3172557fecaba -5dfd32ed9ad24fd7dcf3151b55cc0d673e32202d26124798d9fa4e5984136a03 -26b1ac7679ad36356bd124e428e66adf021aa0eafae3295f1a27b7d461f52c1c -1e49c9132009c02f2e936ff2338c9c6833ea89d1beb163a76ee20da1635af2bd -3a315c6b8f34ecd06205030fdb026cf1aed42fadc1d6d4f7635d58888158de55 -2a81f808352f8f91a9749368bf2905da5aedb0be5f8fae76707cd4bb245af6d2 -0a484dde7ad7dfcaaeb26db8ec09b7446b369b5e22e9cd8a5c1954aa52c1888f -d1cfafd3a0101bd0d87e654cceba138d39e7b420e9bedf08d17592ec552e5bca -f3ae95db5c7bc27c7fe93527c464a22c3cd25c3eae55a83fc87607f3eb83dce7 -4b6aea60d4c093596d43f930024efdd5290b1d1f84e0936e24ffaa6bc08ff8cb -d5c5ee1c8b0472ed88b1bc33a59bc46e76262a9e2bbb09b1ed8bfa57c49d6e92 -d8040830f7af3eb09e1d81a51524d3bcb30a55ff61ef409ca2055c2858b46ac6 -5f8e9b43b88c522aadd5777861bb69da2c2b8ca33a40b51530b2cd60cd3e4c1d -f644e76fb0ef1b114e70002abb606fbe8d98574ec52d8ba3b098408356a2d39e -51db09b3e2a498c80ecde573df253cad6364de6545081661ab10cb16b1ec5e59 -3ac441597b29929c8b96ca066d909e3ea925651dc7ed2ba9551cd276b62c831b -668c0cbfc28e1bc122b88cf77c997292cc42de0dae2c950e759e926defa8760e -af7d54ddd168430d077df565243677745b103b105523290b3cff222773bd0715 -1eb0429142c7c003f85310d191f690f2e7fcfa41cecedb224b89d5c4420dcffd -c875ed085cda42343199f4d953c59007a55b8b9aeda71ddf411d26ab31932853 -f08f843b4fc8cd4eb62d7602f5e290338717afa515790c6af76465f06e9985c0 -1676cf513f35b83a5a578050147a287f6cb702284dda2c11772dc27b24fbfb82 -087923945e4bd649587b6bb4ee99d10bd0646eff51e641bfc80451cbd7265be2 -eba006b47759222bb2aadf9260885a03bd6db4a6c5b9e8ef22a080ac348eaed6 -e2d1278f0cc02800c77200a164b03f2535e1f676c3647914634643a7065f0023 -c3667475e33106ae9b8fb1a7f261b1755009f63004820941076743f8aacd114d -09316cb4e85b41349426061ed99c5e11e4da0ea3bddf03c82a14983a523e54c1 -7c2b2d9b290d41510107a24d82abf8d9a877ab37df3d336a7db6bc47fff2884e -79ec7cc9dd02b5e72b0f3a962e07a042b6d086b33883b21bb671c26da4f113c4 -cbefde6d7a1b810ae27ab1c472e7055e51cf755b8fb1cc64b5e7de396a301d3a -33fa2d518fb4fd0aea54e57315eea0bff6018cefa48dd97f1f1b1fe7da94bece -0e16ea8e8a27e784d14bc7515bf01db7b35f67426a8dfcbe459944ff7fe54b8f -0a44c511def1a5c17e14b26a676ae060ad291acaf9820abf64eae0848f45642a -14dd03a56af9cfe4ca1f8e1a94e816dedc969bbc4bc4920383909839950bdd63 -b3fa857e34c2d90a343e8614c7afe07a53b41773eefc7b73ca874bf4b3cc593b -9c1c916f0c34ea84aa9d08b863453e39302bf89b46e2adb954a825ff748e7ad0 -2057da52514b1834020b424fbe13c161201c7a1ba75127f33785e1004fa8f57e -118c146c4930e51e9c45fc522324675f428b58e25d8813cbf7beb57510e699af -cd61a21bc563c9b7675f9dba8c9976a8d9cb069771a788fc48705bbc094499d8 -8565e84bb7f4877b07861075cd763f01011cbbf31c4db20bd53673394179d391 -efad69f554432452b0383c8ddff3a31193660f8ddab986943a5076fee04b3c51 -1f4c6954ded0d45c1e9728d563381a45b3fe84b4ffb660dbf6ccc5149f250563 -e1aa4df97dbbb453d7748b4e3ebf6a9bbad1017c77c5b0b19e357928accb0c31 -15dc82d2b9434494206a3c3bb57af2a633013382ee81d83b71d0fb1de3e38953 -f15aa48f377475060d80375c75d96fa20097a1032abe5e1672a2e143d12dbd52 -bc5ee680ba36681e94e151e32c5f83ff08a4274262213fed43a6b5bb1e1cb83a -e9d845ed34697a0b4f2fe93d832d35d968f21bb9f9c205948ab1f3caf98f9f09 -d4736277d7ff10de6ae14c084cb6c6680831122a836fd273fdd2091ee13f3c97 -af6380ecb48078fdc40b4a6091fd474fee7686bee008930ad505d0dc7a57ba9c -6cccab1955d552dac4cb163ec549bdf525f2a1e7cd9b078e8902611233f48a9b -ad5050a3c4b75fd463fa331c152c011a37af39926be595e1348bb3c375ff7b54 -18eb24713b9b1de1ee3ec4987ed5bc0ec3adb1a49ff04a1608da29cdf5dfcdb5 -adda5e76da7c03bb6d55114e9ee23c4c3cb35fe8ca436a02522eb0935fbefa96 -fca5a2ba189f29077d802fb6b3c7737a4f4b7e840dd7cd92eacc9368975abba3 -cc4cc98421e50a5a24a9c91dba7af862816365789f621d99af0c4010a5c63230 -253d5fefcdb5d0196bdda6e2e9e221cff9ce18e90cef2d96636aab43e3f5018a -6273483f3de3bcb2606608358a7031efb31eebb86a88540c387c3dece9321786 -e4ed20c3825ce5ee4615d5cd080101ed6537966563e86cbd3791233a4a3e0905 -7fadf02be99618b2f2ee8f969ce5e9962b644431f3ca86a1bc7c3cf4d487a84f -95e79bd75e013a81c2a4a7c153043a13a334cfbf87298574346cf136f055c7c5 -636bf0d7259ef1cf08a85e5167a5b430a892b9dba8f041bfbfaba67c991cde74 -caa50ad2699cc1d45404aa479d887248528bdb76861cc3b489fd1dc16b09af92 -e11367ea62e2542128a15ad7f18c417f6a238a75917b5d814edecaffdf0a244d -91845b032edfbc373b038ec2749481917ac69fd45cdc9dff1dbc19990eaf4b23 -3a37b9df51d449c7bb50cc8214593f5e3e08dbb007bab46db6306e5036ae0a77 -4201320032ed2ad43ee2f45de7a06a29f988dbee2ca306350875e2f1fb9d05a2 -221d9c56d46184268a3ef3ef66d622e2033cd1812abbc6025fc9338489613779 -aa00f1bfbc124826eed2536f59d7d90eb5e56eab6ee41007824af211d4240ee2 -a1c2e6e5aee45fef8f594c52dfc9254864d83455c75120eb3bc1777e7911b3b7 -15da86c3b69d4baffb98f755040a83ebff399f5645aedb16f1773b631dbd3e58 -90157cac3716f2b90725255633db35aa3de0d7e67a1f9b03c3369476ebe9a7a5 -1096c9aec71f96844071e97e36877102e84a16b2f0362aba5f5517fb66f86d5f -ef882dac03d608f582913034d9e29913d30d50fc3f357a50e3bf2eecf75481c0 -2d37582963775f23d127bdc655fd03388cd3405b8833cd463b0d5724207cdf72 -fde25ca6fde38c2836cb3c0088c34d2a5c267cdbbd5d11f34761fa410650289c -4613dcb225814ab22a459b0a80eaec61afa57317e9e7eabee8b0fe7ec8f92d92 -03eb8d92e88ef319b410ba3f07808184a3ab366aa293886294a6f69683dc1ed4 -d269e57d95bbe88f03329fb4443c6a64447740b4781bcd0df4789e0853ec90fd -432faa0396baf4b4ee22815d8c1e33c547a81ddf09275d0a5835fd068bbb0827 -37cc4a990146bbd0147bba0c6f1cd26369c1e56951e3c163e0ed8b5027acf25b -7c6212dfedc12d5715294530932cd73b0f7b0dce6197965f01db74f059887133 -df8428ef3e690a7ba5aea39bdf1af10fc41e43767485f45b251e0ee576607d62 -b252d18aee5dffc655f5e93bcdb81ff29068f9b1dd299aa2a2810aa6b41275f3 -4e872c81cf4f3965fc1e863df67037a26bdab391c96bfb9508f5ebbc61b6d757 -e433fe8b7dbcd70dfc5b84da1e83ebb3b7aa2458729ea49eda4ba52f825dd8f4 -3d8c5c8ce01358580968a3f19d91d64a5ef6611ac5626a906e78b4ad6794d048 -5c96b987669e91c77b2c60635cc891d1478dcf0daf140247c1de7f44a1a6809c -450c1aaa3b4a4babdd642576ac182e30a9e4bc5ff2fe2b7b294c299d7076adc8 -b127d5b8111879efd3c93ece1df1164c94862d432178c85448d5bb57b6048bcc -49b1d1f52868b79b5694df9b4b12df45c930b3b9d9162c0302b1f368e67a14c0 -9283b27fa2ee493b16f8b1c6a53de6b357a90e0ac91db2409f7bc64a912c3945 -7d2097583bf817320bdd540640192cbdf7dcd7b5bd8bbdfd08f406814fffb228 -9ddca4c32f74cc0c538d4287e1cbab17c1a8e940b9476d5b2a799d46fe25f8ee -3467ba488108760df489b6293a1653b57461d5b6a2e1d388fff2d9e2f7d4dfb4 -098db64f07fb8af3e48f4c8ed068bc7faeabe010b4632dee2fb6e1182e62fef9 -14b0243081e277deb0d4a73ac16a1d8589b8b450c408ad81e5007f37694edb71 -9f9d7369971bc01cda604bf7b79da1b39c05c48e9c5dbe237999df84a5374e72 -3c65e04386665dba518ea43f33a0e8f0c4339f18e49016333c1da107436a2222 -13cb25ea5719249a9ad36f31424a4a78cda9d868dd58475ff3a70236e83627a8 -efcdaf9f4e9c1298aa4ab4bd3130a77e4fcfca54c685f1b8500b2d19e028e9f4 -8b278bd41bca63b818e71d11beac4574e8ad842b0bb8ac6c9d242c7ea58f7a0d -7b15e9fdaaa79762a1d9e62a3c187fa89b14c5b18274aaf60acd7ade09ab7d7a -4e1275524a52dcfa4165b688dd9079412af629280e09c79d9a3ea97643d63108 -a2e8aad34bbfab30f199ed390224ab66bf2201f75a10d355065730deec18dafe -312267ee61412d34ec7915a3ea7277bec37d4616aa2875e9caa356090cd2ce2a -0e714de051eca75218bd445d025b52ab7cd63c6e2de597a64b0ddc61ed2e811f -0251986444cf8481610c749798f7a56acf5d7e6cbd52205534d5a94a691910e5 -7f95c70e078f5580384f09f69466fa94be4a6fff49775756c0dac39d5e3df3f6 -ebd1bcfa8b8e057dee0b2e77991d928655b85c166139c5197bc42bb18f093042 -2f3fb7acb990958541cdc27e19523cddec01153ca994508162aafdf047fcde73 -30045a01c46394b77a1ddf2b8adabaa0de7a50e48d8dd0b9eeb15d24ecb59c49 -3b3ebc52259f7cfcb8d572de6b328653bea7ac1b86e4480f6db4877c1cf9bac0 -9b47771198f19b201b6d3ec2c1ba501d3d3a966ec7eee9dabc481f6ea1cf9c58 -d7e22db5ee0d6c03e5cf22debf463d3ca1540aaca67f0b6a585a44e9145e6dd4 -62b4d3fc3766502a5cc470c189536adc6711461b6687681da63f60afff76b083 -6ba21fa4588c2957879d4b1e6c682f6249ccf1117523082cb67ee829c4064578 -eeae5f5c45c64baddb526beb0b4c5960630eef6870f39a1f3cf87ce55d398acc -17520367f422a077ce4d75e5db85e60d68fd5eb31fe4dc4de79a95c2a93bf043 -16bb25a2a35b8eafc5ec2588431012bc7d538d4aa367f05755830bc5b6c7ad24 -2060409254b2c46e708ed195d1deed36a5b9e1ab4e49d47242fc672fa169e9be -e0be3397e92132cb1e3d7c61c24c05f4102200e4c43eb148d6fe80538081b87b -de8257e8aadfae9d2db64554b7e19d671a3f0c97e9a33c055aede112c3968115 -d5cb544ed68daa21c4eb0737189754a25868d3965c126f5762c09c5499cea1e9 -56f74cecd8d1db6b591562d58393f9c3dd5cb827b30a224991478a6c935db6ab -becce61f1a37091074ffc6ef151140a9c86a676e08ceef148a38811efe835ff9 -d17b57ec7c5efd9319bf4189f95f789f446f3e706f9abe13b61aa5fee9fb3327 -a5ea286c34c87c8f119870a3824f3f158393fc5223f7ec36efc3b0d106269b98 -5c3fcad3b3d308bce30bee19ae63646e9c7bdac89b707232789f9f2c24957d49 -3afdfb3465799f23a25a3df47ceb0f83baf59801b25186f2a3d7df74e51a872e -85bca2fe8cd135a2ed9b0e6a9d5ac502ab98aa2aa1eafe4f25e37144bf530e33 -e875bb08b8ece0998d2d71274ab0c6abfee0c4fd34a4e19f9730d28bd3b3f9c0 -a348ec93623f136a6bff5442789251eae0db57ad5d3758956c375e1eef0be9a1 -7f187e263aa58091e7a488bcca0f17944e9fdd6ecc961c10195443d6a4f78b8c -e76e92a74790376da992503c7cafe7f68406cf7d16b025c0015c534eb74f27fa -bf838732e3f398cc24ad62cab99a75abb11f10205773c41525cf76420f358143 -4087a046a2f9f48eddf66a194104d6873b126b82a0661b60f3fa0d02595df850 -8aee5dcd73e4d4217e816926a2d59e03e165e99ed3d803f9cb2c0d797d2e650a -6ba54a8ecd178f8e762d7ee85b67d95254b43ee00dd16afeceec7697d1e2c149 -f964cdc4bdd178f7c42c57c191eaafeee1ea2e630f679c66c568326abcca0f32 -a063b57833581dfdde2d40ccba4369adab4b1fb4bfaece9255dfa3a78720a24e -79893c41edfbf723d4a0432cc1d1b6ca61663032223c3b11e3233ccd45bd403e -113a8ece17b879f90f2ca88000ff15450deed1ed71005d127c93a36babe5e184 -4ce4bed035078720631cf17bcecc6bc5ef22db67b8790cda3a7241d903987bd1 -4d0f89488eb2c1bd662a1c18423093f7443ed0ce3818d5616e8871e14f598c05 -ff4170f9175285d540ee2f9ab8541765afb8280f1b7f0fa60ac4547ca2451327 -82bf7f56353277dd374100fe1598841b7ffb560c250b8a6deed6994fc6603d34 -3165f893aac350c9ff3a9161088f835570e6a5ca7d0e5b8efb42517cf0facbd6 -a352ecfa3a8ca5a00d2a07c24a87a31ddbaa2797b47fe2d27ffe21b3eade546b -3c547d5bc8483a5e58e3a5f145a18f4ec739119f90eb92f92c0a7cd54189c54b -235fcdf4e4348f837e07a428105bf1e07ada50b09c7102b2ed92a8f86a5448d4 -ac75326ec56f4d4103d20bd0ff76676a6781ea3b5ae0e037f214650b8239a6a2 -53260d162667c47acb56b15158deceb256734b510506f891fab32fc0a4c6a45d -a474302d01b72c4d88595e42391292090df766786344804a28c7c5aeafb70a8f -edc7b025cb32d05663b0048d04d6ba7d33c5a94e4cd5611f8f4cbc2b9dee92b1 -c36ed463b0ed676837f5bfdc44f0c54f631eba32fa554fc9ad9178b156e0f8ec -10e269f59d30e10563797ee5937c1d846c7396898df34a09490d1d95958e4cd7 -bd479ae9d5fb5fa9faa2a6374e90cfb2d4057fd9f5dbff804d0e91214e8ce183 -0345da804a8046ba55e5500c6b8f4c78f62eea46c6c2d7092a4567d409f21852 -162430b8b5773a3b911f9d3bd6347bdae80c231970d38d47de1354cdff3065e4 -2ab8e79f1c8908525ecf1741f13c8dd9b68a54284fcd38d6d3ecc43e525657f6 -86107a95e4147fdf790bf4d46e041cb1367cc036a406f6af9719ea2af596a07b -8e45e15b4dd9b89a3d70a550320be544d11011c7c29f7cb05fbed5ac7b32b773 -3fe3b912ce57fc4a4aff6a5faa344dd52941bc9863ec4f70f8548a7d946adde0 -a0c8586f0010a07718364e012fb75698860bd22f07a644d32cd7dfeb9264bca5 -cdb3e66203cf6ce24b76bb4797703579e5d9fc564864b0d89cfc79d2a4b99c3f -6ab489f85c32236c5c58d9320f6cc156db8e7b8e021bb5b1efc6478a8e0228c9 -5158b1add4152f9452c1306489586f03f54ac07962f7c8500988e47f27977ee4 -615787261cd28c39534187d6dc342873a94acca64dfc87e700a7dc52821b6841 -cee0412e8dc4fb4cac40e39e0e2d429646b545f12be48d2cfd2244f23a52c831 -ae2599b96c59e4da9f9b38450c121ee9e918cf86c147b4d554b8b5709dc77aa3 -42fbb8dd2b0f1f7124bf23e1a899dc9d326bf21c356ce68766f93489aa645c03 -d40678ba17c817fbfa13f3f866bd2f9a2141d4dae1c26e085a317de391e6f8b7 -de10115772b05f75559f008b28aa268a2095185c568c12d1285e2d7d609a3976 -93b39b1b02ebf3f4217e92cb7d51416d95ac2953177b96bef79098b8843f7422 -1d5aae840c89f9f6116a86781d661ee118613783309eac0541da3e9ab844b0c7 -b0234e5de8e9d3c81412bd305e1dbdff84ddd36f0a509344d1207f584814cc15 -b39aa1a3de0e86f3e5252870fdd2f3960d6752cb2ef47a2be96c9c896459fcb9 -fd5fe164949f59d44f63a6963c45a38133ccc48f334e48ed205fd17e7abb6d45 -6fc7866d838f52c8c7ef02dd464918cfe2d5bab370fd7d50999b3fcd0aa31564 -b715eb25d18d3acec85f28afa8aa6d6b7cd96a49f6dbee5647a7dab84d429d40 -695b1adcbfa23d843d10b97f58f9a194d421d5022f21a74f1e17370b8aa25af8 -d6f937d5766a0f4382dec6897e3bc555e4cd77290e8dafe9814c6d49644b7043 -7132bfd42cfb4b803fad8dbe41f9646ba5e6f3cdddcfde2ff60b2ef0f93e3334 -0b8a29652ee6284a0aa89218cf0fbfc9cbc0215119d2a19db07b3fc3eef9bb77 -3bc96fa5dbfe4e213bd2c99d820241f4a6925ce7585a2619c87b8687e08e06b5 -c91e727f934e9ef850df3f35e2ff07b5106f3e2c9aac817a2771ef728c2df988 -0e45d80e93e39fc389c971db5a76c3271c4989476d69bd869c0ee03f5b65bd99 -620d1c3cc71e41c139186aeae9017116659dbff5f8f096afdcfae4ff1b61a6b9 -8280c720858053b0c6042ea862495c9f37f1c10fad1e3f55d3f73228797bd5b8 -ccf675ca2d067cf9f15f91149126f7c645320a063a98817090128be6e7e5a1c3 -eeb5e1bc8f02be1463d3dc8a07d3577709aa121ff4d148d29e43f9776d707227 -79a8eb0dd259553feed652c1eeefcd153e8825d30b0241bd2dcb5837eb16954e -0d1fc47d1e327645cd9b803738ab69f20d7c774dbedf8f8dad4b4f96c4049bf7 -3a4c30120ccdd8d99a454317397fce11e7c8c7e54d7639e2fbda27b8b9e10226 -e0afaf3a6e83fb4cab769a1665c078b9b036070848d7d9175dac3f65aa329e13 -08c60155d55fb3d94325a5dd3e50bf86feaa5fe632195005bee4343c5d4569b8 -8112712cbf7c8176bca3d21685bfcac054e5859ad2c6423ea9bfe7dec95dbf35 -75b7457f588d1d0877408c35be4fd6394d4ffdbc318f0a690bbd2d9460dd7fd6 -8368e6929aaf23247b1a50ee409692082f2e1c47cfef636e985e86a5324ebaa2 -0adde48c898382e828b0580ce4c5458d2f6fcd716fe9314205ec8d3f88beeb08 -2132455e88282fa05a0e616a6b30f5097f9b41a7467c5865da5a06d8b4689007 -64ba50a20d29d240ee5a033901ba4a48f632b37bddc80a8ed9224915791ed367 -94fd3fe8cc8ade7091414a56d677dfd4e0862d07f21a33d7ebd52d5c57c58ee9 -0e865b3ca15c776a612af07108fa990b6ccd55bce5781f94a1509a13af28e8ab -e7a97e3c5ca2f844faebbd0e0dae04eb4a6453ece643fe10ccfd012afe8209a8 -d463d82951a01e3b1b832f602e82ebf2b654417195233dd2d877ab104147455d -ac292bff043cd666468db727ea6e33ad121219a3cddac1dc5f5442e88aeb035f -47a62ba58d3c9ba998431ce697dae9d908fb6a324e5872ded899e01e8e612c39 -129f2ca836fdef15110f7f814bc60a515242e6e44846043f21dd871b5599f6bd -9a321bcf552bf1635d85333866676a9fc4535e5c65b37218a5616b0312c4f306 -5ae590e3d06f3dc8dffb2241039c49ef3e5553efd781e852570b2c3c663c9def -01704cb52425c10460e284249f34d6b705b2c06760be12897b47f3225d41af0c -622e698d7be57e9ad307e5af9e8d75cb675ca26a7018484040f7ec98a28edd99 -2f3619a804cdd743c3639e26ea4b3cc3701a93e61cdea0c7b60bfe5b26da9684 -1e60d4117b4497b2dc65c6b498e971ab6b15b36353cee6a7ff70c53e37981d71 -3bef05966bcb20de75e0feb66ae29f0dc67f897fc61eb0bd87ea6690a815857d -4ca6dd7ed4d1364e4873e03df8503e0de0bcfd99bce7edf936d0ff7ba706c2ac -c06316344b14ac2615af485b9ac8dca30bfff414b1a86def502eb73b204e9706 -99e485ba75383b524ca7044fb75e73a401b7615f77931f863dee8c5141dcf69c -6a30682d8f220f0cccae15a2d071c9b87cde781d3a56387d8d76cacf458067a4 -c8e6bcabf441f1d231bd23bf5563145056ac5ea2203c0e5a6a88f4b17d83226d -c05698a173671af892449d1895ac9a50620a0fe91dd1028ee644189b94c28003 -11736342f56363ba1d810219855bec4f18328f3d2b6bc1cf8bcadf89d0ba292f -12c2d95efac604c7f1b08b0fa4f91a303659f0dad1b3fe8177120c6674ef2dc5 -59159fe6ba2fc46ba9afb9980b85b0f769819351be020bb335688bd106e4dc08 -ab8d8a32d548d4bc2f31a580e7117808258c9b201e43f1a6c1b1f46e1556122d -72a1cf0ec5a904654d21e59593ec79ae26b2305bc3484b03ec8f48a988abbbf0 -ee38bb5390ab3087de605b3951ecf89dc2e63c09415127dd2481534e04654189 -008f4975a6a7b38cb6739f6b43fa4fc516075200795878a12c9c9921b7322fdb -f5d067269693cfdaf6cd0526c647fa7d852f0e41bb0b5e172a36e6450cce9c73 -67e0457a49efeaf3b3f96bf352d06c5d64e2834fabb80ae60cb5e17ec0c61d2a -bee1959253dc383d24c704e5e3c1eecea9d867507d8dafdd7cf770066ec96fe4 -60ae6898aed838cc557239a33a43fed523982feea5d18058a87c831bc7eed95e -e68dd3e2fdba6b8683075463bc2ffec3bfe8fa114eea157fcfffb7d0b1548859 -54496f30096ce3e8d6259862cbfbee80cc4423413337051d7a8ee6deaa94d112 -029615055685e0090ae6ec5fd5131410fce485418b37c028e802121edf88f047 -e4b0b2e6c9190f99be10a5c03e9e31797678cb347fd9517ad441c42fe513807d -91eefe8e408566611b473a95f0c3977c1230c3acf93546a0a22dee3afc23dfae -9c48b4850b6239935b2c115ce23045100bbf5aeb80dd0024b5daf11df762b5f3 -2170f310f38d730727100357b604b79c03302d6c1dda8d9649a4bdfccd99df1b -a964f71875a91a36516e1a531d4a4035bb32ba45e4ad9f2f55bd4514f089a389 -b2e5e0e8fcff1fc0452807cb3a55022285f9806eeef555fe3c4a89324368fb0f -0a0b959e0656a837d2c4e6e0be3f115b8c63f99378ee1c3361c2e3ed0eaecd16 -75b9abaeb24fd2b44b748fe95f4d3eb9c5c2663033263bafb0ef934328850244 -e49a64c9c92ebf6d72b912036dc2e2c4eece81b99869e0ab18d6c3ca686c7388 -f89577d2d8d6ff132b93cae6895620fa33ffe3d17b7e942017cbfceddf7881c5 -523c8d74338898aa3bf06c14838adb5a84380d6b78288c9a36951351d168b2a3 -d17f9ef945baf8ff085bf71a6050d4a362623143e8382fb67bf13d83e103b46c -d581625c4677548aaf7836ff6985e7c7c9515610ec092321bad6e29c3ef1f421 -8fc2f583c7f772169b95c91215658e34b12c58df5a611f5a9f496876bc780d91 -3b23773ed6d8a8077bab593a922bbaf550c5d6413c13437da4549a19119af37b -e873757424fa3729cb1bf977729d535d1eddeb1ed6915fa7f3451c42f91e0d6d -03a51dd3f6b328b0e994069e91163e4c58c0e148dd0bc8b7d437d9566fd45448 -8bba42dd89543091cb35f9518ed83ed26a8148acd521af47dc6afd3666f509ed -cd8bcf042d5e454e95000484b12fd60976ce8919184b0b93dcd9aba875d4f9c7 -516561e02ab0b249f70ca747a99ea76eb507a3acff7776ea223eac0b2c0de672 -58fb296e7e1de48f233c0425a04eb042c3dc76b21770d469bfb5b8fb0eeb7447 -724f26230110a2f1f0c126361f03e82efef2df8b06c7dc2913d2bf05ed94e9e8 -54f067f46a4bca1689e069ca7c1c60818056d51d040c2dd4d61691c46933931b -47af9808d23d65ccabee17052990546e1449bfa8416079ffa44d4994b97ee847 -8d1de72d990a107e476fd421d2770765c882e03bc06112cd2167969720e67abb -cc9d46af5c0dfd3c30747dc8b06ae28b1d0987136b10607e87770393ee640127 -3f81aa212cf59f672dda422a322462931335948a8c90414e7241dd08ecbee968 -3b0655c1145b6c9185fea3b71e4e497de8c07f83dad9df8d8abc526f20a62a10 -c835dedcf597a535aae4c15352be60edda3fadd340cc8669e7cc75064651e207 -d968b3bd303d2280659aa1e13c154146408893577dcf0e42cf54cee337eabf2b -15d0e8744482218b759efec8efab4e5566486012f945050a4a3c8ca4b350011e -ee7c6fd8c0631490b689c870452d5c3a095bab901df3a30759913e117922faf0 -c8421b22c9e4c6b57c2b6f152320004d05c107f9b8077872f5d237dfc3983855 -507b5faf5d3b45c352b40a8fd710beb78dedf57386e313549d647d7673c18903 -05aac3ba7099f411e41eedfff813c84b32e1bb440a053c7f9d0d50b6f340d88c -a77e728487e2c1d546b4f77d20f1cfbdd3618ac306ab1ccadb6d4edf25b20ba2 -0442bf616c5cefe78f92c4f23d5940a48e48e22254371108b0df29350b2bfa6c -0244b59513fbc3ddeeb462f74d7d729b24494cd2a04c682d7f6344b35bce2320 -4f10c39aa0689e2cf52898ae222afcd7fb71ce4af07ce06ab1ee17d787b541df -65fdf090f8ccdf2fda3ccf39143ffe173d3630bfc917eca1f5334bd64b64d8ee -aa7bf7fac688375543c676f26cf86c4b409db2179a0871df6760d6fcbb7f3695 -af6dbedbc81e7dfe75c79c24cdd183691101413da9ee334f8a2557c7230bf7fe -155082e8f10e284d46f7507af4aaf6e630e98c37a06133e14410f60d87bdff61 -c9389dd771062b90b448f84f5722f0af41afb79ad93ad5204503c82c1f9ea224 -899b361ccfa5fea9692ad515ffa82d342d18cbe6ba2191e97459487238e02043 -4a3c1a413ff175ae878ec1f39c11ef176552bd883944e0c9165bb4e952114913 -4e0d85f3a2ffdfa448cb3cde8ed7e8de27234d18f66d2a560d26e0148cb884ff -4e227dd5b771a1cccb71aa79467f9f8b7b0138569f53fe57a3c3c65c8c7a1e0f -864d2af904a8db4d64299797a31b9f71aeca8349f30dcf8122ea3ea634698d26 -f0595c8ffe6794d47b9129007a89cd9f29471f60eb78c4a8e68b86d66da54c51 -f6e354f345f5c5a679008dfab5d671d7c7196abc9c845e94246b39b21fcfe093 -4fdffcfa99837c5dcda1083ae0a09b8b11090a2d6b7e4ae2334601522011870c -df1b3ac3a4bdb9e300b06000c1db2754e1c33af8b7bfe966f31465f89683c387 -abd9c4dd001fd35cd3eadd5e691ba2920a468361e0da78591a8303afdb145124 -746d5e3c7d68b0661f0674de77c4e44324e33ecac28fa1908a67409d425a9f83 -69f9c5c3e36eb2406ad729ce566b38a012bf1c8f4c6a7c28a54ed264172ae60d -eddcaebd2ec4b29aaa2890314d4d18ddea9098658022a6b92b8d6943ebc6cb5c -4f70311241b1e7535210742e2fc4711ec0c6de3f69990148b99c17d1788d7c94 -e1adbd0f836980d956c3074f435954a74f94258724d7d5b358286a4deb0f2832 -1d41e7b50810af3defe02a9c135409cd542b91703da6fb11c62de54e34e5963c -e17c62349f167e79ad3cdf39d13d7130798fa7d297da1d282711b8d7667e69d3 -8de7e414eb4eeeffcd788d9d9a8f674f7b1ac9ba37d7453ff2c32b5053ee2634 -76add593e543947c63c947424e903c029c2ef1ff1e96e0827fb762bd56c285aa -88b477594d8cedcb5704125d11a7d52f1c8c35d22fc9ca1367d6822c7a9ae614 -4daab6df34d28a9da19783baa9571f5aaaeaef69ea07404e4c6095f2d9944be0 -b7b30284602981a01232f16a8d81aa11df2bcfcb0934a1c6449af83034819df1 -bc306fcf71e71eb299c4018ae770b02a9f2a16a2a3c7b73ec3205f154ef84737 -c8fd404833c07bef3c9d34ec7eacd09b71fce2bcc4b11a2be1ae73e1928bdf49 -ecbe16c6529a98f2df846ea3481772cc48657991cf921a0fdee0959d61e70111 -df55409dc8aad9530d03425610a236d4909b280805cc595ec9362bc87912dbd2 -0b7f01c424133130b1a565920c10a0a9fc415a63d2286b4eeed700b1ae3089eb -1956ad2e09013a666ffb5a1c7bf731f5ff3199a45ef52f83aad301e3a388b617 -bf3fc45fd91cee282671a20d96a979ce62180ebd3eb97c35ec6d8c0d4c912947 -e8ae429b86f0e085d52441e1856a2c27f0a06ff6713547d80e88628d8b836d85 -0ca4e80be40ae44aa0aa688b6f76c13589927599f0d987242d03d6c610b2ed4b -c0d64431fe369e90559e53091830d1d6a3acfba8f9ca79d10865133bd9e6da3e -6bbf78c0178e519d690b262836783b178af9b40f21dc8cf2ffe70a76edcd2323 -8b966ddba1f66b3288b2bab34bffcb84006d55aec616d47cbb11da8f3f532fdd -864c97e380b750a3867764f8a00175b85d256f92c9cbf700c042da566972c1b6 -d5334662fb508ad52a89893f5bd6bcd1621f6c09c3a79564058eead4a847bfa2 -4087a754dfe029311ebfb624010432927945c72c521c91e3d79d4cbd7c611860 -1b116a82b10d1a1f07a05ebb54a1890065277625aa8f4fef175e3e627c7e32b4 -0add4244373c8e90991b94c0ed1b068885d797d8e62b7427ea9f1dc7960e4752 -43db9f6cbf30bc5a3bdb63afa1952c1c9ce4eaa5f7488685d9d498292bbcfcd7 -b5960f127a8711aa20f29d9723139fee2e0b7a2bf5f423402649710f2d3fcbd9 -003900b441c209d4846cce5c02984bc91c0c11a055e2fa9ab339a8bef291fcfa -11acf9c6efac0194a1ef9effa86b61534aea99dbf29f4896508ee4efd36de7f4 -244df2540ba973489f43356d33aef4502eb79973758f93ccada650a71c953db3 -93aeaf5807f2d0e65032e25ac293304c55a6b4afb22b9a6cdf82404ede8d42fb -ad3d5b628d5ef69410ac55f33d2233a4c1ae33a2324c39803e740fd623aa0000 -d8215388dca7ceaefa18461e6ad55dc6dc18a3ca6112eadeaf22a3287c883fa2 -f4cb731bb9d4e2bc83a26671b3a497139c17d3a5aadc58ea01abaafbd766e7fc -141c02ba3085a8934f96a88fac690a620e23529072eebdc5da4b9138e258b498 -d581d6ead55209c1641c498a3e166ad2dbd22869cff92f717e1c702dd48c0d96 -01b4930c636575d662fd63e1e799aba9e068d3f7737ac7b00d03344bc76624da -e317846509356e0727eb4a4bca9a26968962c7900fa69ade14a962e060f225c0 -31b69d3c9d56d69270053374cb5c7c79e8d866f8f736aa5f18a2f932d8088aad -a2d60e90e872ed30bbc358d98f6b705382aa9e087ecbd0dc0e5235f044b0677a -e1eb51be9e923ac5ddd98a201979fb62992420172d90699122cfffa1c2329a3c -c48913f9b4d61cac1655a0f00e6400b2ef0feedabb8326198435d9167044e668 -8a1a73fd640744bb5c382c3f7bc03334a43093ac6fff33651d743398cdfe7e2b -066a4816ac346f39c2c5cab14d2e91833892d0b33a6eb47d95c6df4eabc0834c -b583e32f150d366428a1aa218ab128357c7845f638f0b6d06cdba9b57724bc47 -e2e05338f839bdf8f08f385738bfafab7683738c2396bae966b4d2e2bcbc205f -440c0fc9a2fe123a6eadbe2808572e5bf44fcc03952c9723eeb0c1349fcc989e -67d1dafab7dc6f60d607adbb6523f851b976f20e600d2364c55423d41b9928d1 -79828faa8f7953c5fc693ac20613b9e0c6cc7dde58594085642e1995e79d5caf -78dcc00f24f997d2d892ba6ffe10216628e2ce79e3adee8a1f736d3dbf11c531 -6fdf351441df575d2b6d2e9796123061f5792ccfa57ce6ec5adf25f06d3e4f2f -ca12c458053b7b1d4f0ab91df0f8355fb095cbdf6504b31626653c0ea1fa443a -ff00af97d6502e05313f89b2b2a6be75abe1f84bf10cba4d6ce4d22be919478d -f12fca05a0a78519039b70fdd67f8503ee23eab463f7673c9fc3d464747056d2 -419e9d31d86833acb8dbc0c6aec2c2a002ad139e3ff71947dcb03a2858250aa3 -f391af5ff70fef4ad8c64548639925f966246490c1e1f22133f6d6e7ea7f0118 -33910c48ec8103bcc699fab1914df38672de62c0942c6c3b5ce80adf2226b36a -b18f5b3d985f47e89820dd2c99a600f1627ebaf7fdf6247518468085cf3a8fda -94361d3a8106d99dc1dff3595b38ec1e995c537c8052d825769ecae24d68e20f -83f3691d19e4b8e35ca03d090a21b34838cbcc9c731ca503f48c02982b9e5d10 -a093344fb173bc1734178cafe439f5effa0886cc29708cc5a5900aa08003bd74 -6592722ffd282a2f0c1fd9b7d12748456e36e642980c359bb1e262f39b61f365 -d3be084415925ff7e28b4710b90e51bd1832bb4ed55ae358fbe973e72131ec73 -235634a8ccd7e3d917264ae19f26a0a1fd992a982e20796162f61b73c4acfb70 -a9371b09c9edadd5249841e53e4ab90b3b26607248b598ef3d00362710e90f5d -8959b92e1672197ef2e36084f92fbf68b95fe38bfe69c0fce6aa394ac54c0c5d -a00661ccf749007f2ad1c869a944e7160ad31c04e4c357ed312d9e67e7435f80 -ccdac64694fca0fd849d1eb71ebd2af367eaedd043d589f2afdc8dec99d96918 -40a6b36b87f444b338f013bd13dfb185edd0bb386ac5d9880720438503ec09e6 -a8193e8e57192c0a83e3b42703b61cf7e624117d124d1a1abab1aa441cf75a2a -3820e691456f4e588dd2cd227b24570e54a6a809669219739681fe0657d02df3 -d5173cea9b4eaf8f4600ff96c6ab14e5ae0f2abb2d428cb9576a38c81b4eb084 -3f70b0af5f50fe8b346aa2fd4b1f7aeb114f45c6c49f991813093b4d4f1d01dc -c472663230311f9662359afbdb49cc98c7b23cbfcb753ecc5aa83e9af33735c1 -a40e69216f465723c53bdd3f691b7f35a893b0750cbc01ad321f525338ffd260 -3003894c177d2a72396878762f9056d7d65090bf15a27fa1370a2ec963a70869 -17c1618966175a14e54fc3afe9587d00a4356b98c42e92db658874004c3793dd -d4a075dd2c82506e84e9fa74f32bf5337a9a5f5609d024e754032df6d73464ed -75c7ec086dd9c3ed006070a59fb4bb9b460f6bc99611806f49cfffc5f738f8e6 -587bc19ce5e808fb9ecbd7b0804a11a2bb7feb2dd3f1c2e75cda6495f0115b38 -f7b2d1a8e016753342bb141bb469e398da1d49076f0cf5b27222b7d7bbbe4dc6 -fd128938de784ee73e01b8b3a5a5bb9aa5dfbaba61f1c294f8f33721e18c1dd5 -93720d88eaec019e4b94fe592aff31b97cac68a51522ed828c54bd63dfb01690 -bb0bc0d036faf2807cea61fc4de67ffdb7e353d4f6892968874012303da379c1 -9f8ca5e57eeab034c4a6b465770999f42141754b3acee626d302ddf3571d1061 -314c240fb980d3efcd3a8af635d4d61b6a5e670238180b308e74d567a6134828 -87d861aa76b031a221baa83e2479d6ccc4111cedabb075a7f1a5dbc8d5dc977b -2caad52e5b220f87d518e4c58360053125f954c2e47b220472a0683162614c4f -253a0d795938bc905e8a909cb71d7e87b251561997bd6b9842bafd1eb7044850 -a0be3aa098ae43f712816d918cb144e4f13137244f4e607bef688bbe1620af61 -73804df3753c4b931db8f67a5ed3ba974e26efc293a17a0ee3df8973515690be -433c07cc3d6df25b2ecb78f0446d21ab7111e80f770899a2f7f7275ff07426c5 -b5fa3864cf12e62a7cadeeddf1b42aa0b8c7871010c31c07726ed156ceefa233 -7504f37424ac8949d64a56847f0aebf0152ea8e14ab401d19ccec61be704ab93 -cfc591e021c576a16bd403ae6f696f8546f7b173700fb2c14141b7106a4a5d7e -e62c0110d9c69d3980cc8792d4aea33d9d6c11215e13f39d86835fbf3bb5c64d -ebdfdbee34600a088c6af2ee5d0c8e91923ca927347670157898ad7bc494a346 -2e2683a9202344e5feec0add07807652a567abfe70c79cfd470aa9c4f3f31fc9 -177a73d08df5fbe27b260aeae4b48fd8cf3f1c1634d360acd0b676990aebc4f7 -b6ae204c94b9a45e8a0f48c20de163f98b1c7b6a2277fd390aa591e5925c5d73 -84d7cee3e635da74f954022a7d66dd2290d32238c58e523ee61c575e9442bb77 -cf938b213fd8c3e8246a581b1de0786c75ff4449337dbe7fdbea762fd520818b -b534d1d377f0f876ee7d1942565faac707a2930f059e62a0eb609166b6a048d2 -94b6ad58247b65271f8e248712559d82b137216eabb6a0690d0bd5da519782d0 -8de2c9cb67232950b08af18b6c7a030de179c250678ab125f391d91c58b9eeaa -27b58128107ec4d3ea2062ed788318f34a7a4861be1f109c3377dfcfd5182c0f -71fa354a9e52dd80ac3ce3db81619d3d5fa34c898e09f47595ec10ac3f4dda2e -6fd6ff1b21dd50a9a53b89b4acd332ada3c96d7abe1cd49db74a8cbce4fc9ee8 -7196260bcae61b44c748cad2e77e68a862a251c617087e8972355ad8247c6038 -2bc57ea0ca2417efe1bc0e010fbda0d2c7f410fbdeb780b667c76d3f51819e1d -298929d39121cbce7d2d2fbb3a7f03097e5b68bdbd186e82fa333a405881129c -870cdfa7fe710b97d8055860f4c0f7cb7b8341c7e68f58fe68077f143b1c153c -d3684eff3bdab4593932f429ca7e3477d1287799a76f674556bf29d5e2476b34 -9e1a1da17baee1f33988142a4935f91291aff3c34af247f50ff4093a0418a049 -9849f67e2d4f0c49040c5d0a55d6a3b286643c94f3ab29911a1e3a8c0a98a9d8 -50675db3aaeaa65c8ba0c6babb1bb07469acf70c170341f3202557f3c4c0b956 -566008dcc83471c08bcc17a7450f97468f5591a552c5f67b6fb445f0f311d3ff -d05a15de3bbf04a5ccdce6ab12ef532c9c52a58f69be8047c27cbbc863e42e65 -93941cdc57764a6a42dd59e03f508074c87735ecd8cc33c48b39f0a3a61e3f99 -1338d35804b70c7667c9daddc463a443c78582e0074ea3062f83f6f038ac3c6c -fff84f048a1f2a4f7a91d6f556a7a8667ff31258e9ce7777033b8324472b723a -a8a982dc355c43f6c949fa4d5434cfc9a29a34806ff1f39426ba39910e618d1b -0d2359161717edc9084534eba69ebbb8ed9cae7ede0b9e59f6faea5b837156a4 -75baaba22b5a63c6cc56685f6c85e11e40e80b39c16a38ce60a39fd5d0e31a8f -987bc78a6b9dcb4832ac27fc0768aeca984a27cce0c6c6479ba20d1f20b53a9d -acfb74a674d52e7a2c9b1c321afe2f406b4f8f188c6884378cefc56ca470b6e9 -abe2a9b869f07fddad9fc0d4448663ff746c587a5045e207030b54ee970293fd -102027cbc998f2d6e5fa36afa0e27a2e8736eccde982941f1c27193b23cfa282 -60ecb46f1c3e2561631ba48da1072c41abc716631619af6d37d5ba55f598e889 -515fd13902356b71c43374575efaa3f5a638d615bb44ab50415e96f59246a2a8 -05ef00c3cbe9e8fb352430ca4b4ded78fb68c08ad5f64d1473c40d86041f4188 -31ff25370a0cf0b433b14ecfaae6d6a383361680ac9a9d88bb5142f57e7bdebd -cfd42f85c8b02668b3cd7313f5b2105bd3461a8849a9f2e81fcc8bccf9e0578a -4cdcff3a22d58863df55ff0fea6750548c9c7de1f0e6d3737363f0fc5964c16e -9b929db0a3933773cd49d6cb7c804491c8506f5b56969054e8f0f2e49077b01c -1a7a2391bcdd2ea92c2ad1e3a6ca7b0d93f61a17f50bfc31a76d26a152818c28 -fb1cc9486c20458a572a855d4957bce958b10e1b8786d8f0acd3fc730887aecf -78304e350aceed92cd52841b0781bb642c3fe28066600d8dab4584387165e11f -c7316d4c88d24e6c1c5ebec97a31f5a1002333d6ffb8b843cd7979ee87b7b614 -0cc742d5ebc63064f1aec8e795f37b793cd011751af908d9e2f3b41745ff5905 -51e8497fd7f9d9593a679ba184798d6ea6d565adffc7a9d27be9cae4ebad4318 -4ccfb4fc9180163d29dab98db13f7bbccb4ef47b395ad27c6449b935b1caf6c8 -f19e9eba0f71db59248989e89eb0a8b389463d29845f96d87c3a5d44baaa8276 -0c87961fe91b21b632d16758e152def763adc2c8f2a694b0c9bda0b9b4e91fc2 -ae533b530b722715ac3c94cf31bc34f507f4b122021be4f302cbed32b1bb1556 -e973214585306557f73a52e01c233ec74c2cea00580b143968c10c3030eb32ea -04258f952ccd7b72ed8fabb54d8d697edcd1e1593889e8ff047b516251e64dc7 -bf1f794e2d98a3ae71ac8dfbf26d6fbe2d02aac17f7c22f0b2f93844179cfbbe -3ebf72c67e33dcbd5ba61b81fa52932e14bca5458830f4d8a226015100016910 -09cee0f131eacf199616234e9f6f9c6b670e4862a5a642f961f395af1b00086f -623fe2a8397460c0428ba38add163be9ceb002d5fec71c120cc90b429085b661 -f2f77f810df1c48abc77ae291a70ed513b2592134a451c7e4ace69744c4d77c5 -903a197b1dbcbf24e71c9bf7c839e2b0a2fbd3c80771348c9a13ee77bc26efbf -e48d199dbfd4c501c35845e7abd04795f8f56d339e02c488043b48e0f0a085c6 -1649f9db63d29ecb2d00d8e25f5dc7b5795bea0cc2d03e49a1785fec1b67741a -f8866d811db4646c6a8240018b407fe5ddf9aa478a961b12c9709b3a8f2e1e6c -341440401429f6806f47621ecd4760b9dccc43b3be729b787ad67022b88e95e3 -273f155a1977ff25b8e7a01bf918933c79d653e4faeccdc73d064f6977c20053 -943fc7e2d1756fd26e96aedbad003ffc7d1f51840dc186d341f619dc99daf00b -71dc3237e980022e05ee502c9969ed294ca42b80f930884e42cc1d46156444bf -d77187835762a9c249c9f97758922099157204cc578c6951eabc236a1f8c9ca7 -6cf97a1d3f648914839d0e1baca2b5c44349f69659600dea63c1cb1c58120ad9 -8b339495ebd237b407d4263ef93b6f84cfe70abeb3f70bd9c72cf55be742443b -e637331258b73618b1be411c13fc9b4a4664b6e8b49938861b11c45d54f81615 -78ddaf95dfa06b6dec253f812a44c7d910460c2e6ee1c9dbb7e038ffe2804a0e -63c1d125d00b469a35a5de55196cd62dda71b6e34cb26439f8139b0b274b4587 -421d93f066f2af4e44752b42d87b9ede93d5d3ea4b57f8d1c5889a6ff4854b1e -63767146bcaa3f26b20bf307e4370a4d16b43bddcecdeab12d835c2651b9c1fa -9000a488145d16df1fbd0d86312716fcdd4d98275d051230c37a882ef64ef54d -bdf22049704cd5cb1566a482026770928b3d7885af3b91c7bcbd36ddd93df9f7 -58dc06b92c2f00238d86bf844412f7dfbd5cacdd2e06636a2595abd6aa804fc9 -5d3b8ba8f6ea187ddf37b925e4b450515ee4996d4e2e962ae5184a3c875fd80c -7305b65c0dce36300166baab5321a296852d14e99f1913a590a7c9bbd0119dac -a2c0bfc22bee8ec1d36e514e2dad6edafa24a27c40a07b652103f257a88b71a9 -e887c6494c3492401a956bd6b4fa309af59e820ca44a854012e67990eac49126 -2eb3ea0d0e9e90c0ae6e97ec5ce0f1fdd8cfaf9e0ae56ceb2ad794506d72fc79 -2108c143e49fb4b25b599b15eae0b51aab35865d2a068bd658c2cc05ed52dc01 -411d87da7d11013006fa4aff52cecf0593a2fce2c6f257eae51b8a8f660cccd6 -d8640270d5ea16c994433c340f16ef49f3e9043c60eb96321086ca78d6894573 -15582edf53003e2dca565edfba3f96a4c64f278e127b565f9b179e3353481fe7 -bc32058f7607cec3bf2875e065c959d7c4f15bd74e23b6da7274a0b23e682aff -f52db820dcfa2529f64821bb4a7ec19f1c9ed6ae3243ec055da2e57ef632f18e -90cef26fd694c143ab5186649a1dc595d06f64558065dc88b06be2ff7895aad8 -247f4d7c634657d92f490d7af12619c057c21b6d1eb2670d8e5290658e61ca7d -c72d34682575e3fa24c6b3a2302a2e393a80571c5bd7886bf6aaf6861f7f08c6 -af0f074aaa4e94e17814ea5bef893853c74aece56946c4d8e2bacf3fdb8570e7 -e66255906e641014ad4695cc80738ce37581cc7b9f96186aba07b71c90eaf971 -8b4b9faeea0636a1369c91ff5aa2b3fdf84b1a26236ebf4e8124030734d96e9c -2f8c994f4c133084215af3e7b056fe319846a6362540824caf647895dab57ddb -391bdea6ce008d66556fb5559d77db23db2b2cf6ce007fe41349b205400c3a7d -cc75f866844cd35b79e9f6698b025dccbab71fddf949afeff3bc0ef03d508c82 -686ae5fb9437400a0a7b1cae3b20b2a89b48efbe4cdf693ae0ad4b35a00b3abd -a3d0824cc227a3d50b695b1f849e43af96bed2073b16e2c39be9f878437b14b3 -fe7abf8d049cddf68c8a94dbf561db313de69ab12d21434b09c55e14c1d6389b -4d4f3fca7076af70184bcbb52df12f77e6908f5e7a73f6f3a4df826aec0a4a37 -63fbadb4c0827dfcb85b3a894ed0eaa4b2764c94d3a09408f65f89f2b927ed8c -64d11f822d040fefab05d35d6b9d3cda3682eac0970e944a8a48833098e64445 -0275c417be667776d2f132b88dab518c85bb94b34c651ed0f07db8b80c084543 -6cbca3a5e225289a01ee3983db0abf6f53af6abcbeb3880645a3be6d43eb77b4 -4ee7cdc1b80ba30aa84da7ccf7084d0507483464f667f77f438c0f256db5e7d7 -83b635efd63d6685cf0b17aaad912ed99353ed440a1cbb54b7b1af9807b5957e -ad2e86b8b25ad57d4af26d6c8444d9e1af5f23f195263f776c97b96a4d130bfc -d4daa8e611b750c665348a94aec9c97e9ea2dfefec054d6cc1de52079ea0de70 -03dcc972430e24bc332f05f515b6700be5b8e64f8aee673b54ecc99eb49dc7de -5e1c356cdcae5cec64b5110c51f2f560baac89d44c0fd083adfa4c99731147af -ce83123b386361134d494dd7b57b32ced48c5068756063d7b16aaf965258a0a1 -6ec95b46fbcbd9932c1111577eaa4b89ecb5663778a16c815b239c3e01b487ee -263a0a8880285393f3263d231da8214ae55a6147d663a5b49553a0f2603501cf -5e70124bd3c391f8f30f3b07d2c0d9e3f1a55128d1e7b9d26b54b27af89228af -a02f0acc85cedb2db5da29fa8e2dab1bb8f5861e10d463b17d208bb341c8d7a6 -b790174402f863d6f096a984fe6bc438c955b698bf572d2d6158cdfb051a5cfd -f631a79d18a99a556a93a504795fc39f8027542a1aecc048e3b980b585f08874 -56b773469da9f8bcf314bca8988a17635b05e6e6e16ec9c7696876996de00b42 -5c3fa3155787aeb47273db58a25a27ff98955c77d2699737dbd05d29dd400d8f -b8bf24dbef5680b3cd31c4f09e8078d6ac48ebbfdb8391e8cd6aaf741bb6781a -6758fa5eefdb82d8f0c628aae6a1e9b2c0a5bfd138b41d084bca3457c610c8ec -aea9848f846e3ff4d2d786b9351b14460ee089b7c4aa2651f8c5ef33b7d7f9e2 -7bfca753cae27b75c1b95c59adbfab31ac6373627a7fcae4b506640907c72b7f -e6626ed34135d216c60dd22b886f8015fc65640bc301d064b6f0c7d4f1868e15 -7431f3edfe0cdbeb1e8d9c8dc69fc8ccecdf697ac9d38e93c24265512fc4c4f3 -f5d5828562f3711656097500f294d125f411c30a8862ccf458498df67a772b4e -35799239f474881b449816a22a59c88ab9768708621cc66370c3a63acff9b869 -d5797895dbfd962e5575496fa55556d9547f2b6c71a5b157f64ddca6a05eac26 -71c862fbdc9fca61745e4cf6a2c2f177d0b372bff3ad3aacea51cdb1f5f77879 -6ca0993c89de61eec96d10d499a0ddb8ce7fb5dfbd9afd1efa83a2bd7936a7e3 -25ff236f80cf077a07fad9bc2cab0eee94eb55edcbb335f017dfdf6e39f7015e -a2ef2e6022cd8a7ccae98bc4dfc5f61ba3abe3b3d3e33127351fed9d052e216a -132bfe442203f88c1f6adddc3591a750d57000e00049af0f079c24059fdd9ac1 -8e0b967e7e4a64c3c39fd0968c3052e26383431e0882f6e72edac878f0450755 -f402daf3329bb6450da9d61622578c03b9bff572730db063cf262445284535bb -533713a2186d2b054cc102b806b1511200ae7bd72ffa24356666815436cb893f -f73ffe338516c6aced39026c85a0a29a74b5fbaa72e959c9d08361cf6706f516 -828819b6da4546818e3c51c73a49406e4f7e474e0c0ebf6fd8b4417d43a352f2 -127c85d7782219a7ce314c5b740688b2c577d1fb8df29801ed39df9e0c0d4f0e -004792fef973b5f4cceecc9de6e8fe114320953bfe027f1b2da4a4c63d87086b -7be27261fcba75f865a1702fd02f1b3ad3ac838481a656d680e7cd7567cd89fa -97caf24edccb6a9a9ac844ab7c53ceeeb649fa1926246badc08da706d10daba6 -08058488d29f4bcde7c3e0bfa0dc3e538e59f77c33df294e3cb78d8ec883e450 -6574135ad1e430ba735302bb224d5478e72c0664bc0aa1cd2bfb628d1750a19f -731238fddf3ae476126cf061e206c0d6c560b17a303d679ecf39da4908bcf88d -881e285db0479d59590be3559241f2e8aca46aa90bab19c2055c052dccc1ecfe -9e4ebd99343ad5ca3f39632682caeae32cce38164100223e91074d7717e66f4d -c5cfa9d3b916082266d7ad35d5b2c6a915494bf5808a0b1e5740450b0ffcb4dd -489dce6658ee49f8f91ee608437aa0b8cdbdcdf5e7e8d419ffe61e62c6c77f7b -abddf7eaabb9a9cb12cb1240ec2a563895b777dded8c360a391c3d6b322cceae -a75bc543299951394252ac218415205b1e799b38c6ed8013762d6bad186001b5 -94d9db790b51efd507afc785aa0e1f8530710521b131045eeb967c2068594002 -5c28a1ab70a17ae15002328ffcff2a20851ad24ebf59d28b6a43d71eb95503cd -6a96b1410658c8f5e9a351eec91d37921cf34b7091ccaba1f5f6e70bd589b479 -a9fefb01baf7290ce4542d292a5af4e41d2dae0da7e7fe8db798fc571b167972 -7595500ca6d092ef97722525abcdc91e22f7f8b0cf7d70a6e4a5ce2f372dee3b -1bc3080db6d5c7e84c22774140caf8beaf265f723d0a682cf2c49268932c6a47 -2f1847c48b23d287e566fcea7308a93e58b588ce0af0b67f7b38be05f6723ebc -aa64fb866f004d3cc0b0afbe99cc6f1794e6b87b87870f426971ff1ea206d91f -01b10c96af3ae976988f8751fedfeda2cdf51253c45827e8ef8e301d6d2a3310 -2f1c0ad078e0875d5b12aa2d441113246c73f03dab1f5f6ba9bda8a462958afe -c265c65c842c4c68647c2cc62605d1dc35c8d43352c39bbca54583403adae299 -1f94fad6c25254158e771065b03a281a7142f90a04e55ac2a5a5a7807c6c34ca -a56f7e02c4fdd3b6db2407509c7ed9ee02e7f4682f403a3a8ab315149921e97d -ee39f670e3cb9c06be2adb18fb64c9f93c632d887d4d39602b9d9e78e47ef23b -a7a8694eb28b423f950e9dde3249c346c5c7e3e3d01fdc00afe6327f52c8bb04 -1ad015ad3afdba9c728af9560dbc91ac1df31939d18c87d4f590b404f42246ea -4378959ec3133529a9db834392279289c0aaf8d20e4b726a0db44c023b1fd8f6 -6dbc606b202d4f5fd24f6e0f7d72a011ae3e48494fb833d6dcad6527dafa2dd2 -e26583e985986d934bcea18534b21731567e6ac6c3cb863410c18714b31b894a -11bcad7f22af25dda9cf17e66603cfc4d52f7a90fd39ecae9eebc5cb396fb5f4 -26892e05d1d9c923555770a0a5f063363a8b51d7c4af19f9008e417eb6731c3e -83d2ea07a7cf7261f47adf674e405cacd7e23b21846aadb7e56481bd21e1233e -28c6fe67e5257a3f778aff9004c72890db614215d86b6f6083b0be8cbe72904a -9ca178ae142c139e763b6cf832c29f87bc1f72a35b3a8ce3e9f24e2d02ed7f5d -08f1c2531c80046e6b61545a89c069164b571f505b937f97614fed8c898ed5f1 -4428c47e1a24b481a26a5b8a6da16a3ac32adf2770bcea47c9df125f3ccc3820 -d9ea996988c03a74511c0fc48842eeaed4f46ff92f954df3a97fabdaae47170a -261004871f7569bf73f2aa7f22c03b9a05433c8c2f5d0192a595084339e79443 -de5d394c15050b636a9d2bda012147d3a9dda39170867472903995a8b7b2af1f -27b0aaffbd58d60a59e3c3aac5b961dd6fcb3ca9a73a1409bf2797eef39cf9ab -0d9e59ae6d7ccb4470d66091662b98a777573ccfb1a35b2369b0d50a9e5a519d -68f498bfe450041e4de194cc1abeb812c41797b7145e367922c8e03472bc557c -dc3eaaf9949419e3b40b85e6841a27e4a19a25aaf6caa139d0502d17b613c46f -df5d375ebc4032ea28403b23dbe178dceb09e404f191dbaf59c8867c95116baf -8736fa4c7b7d838633d76f9af7f1779751c54f5abe97707a8a0ff3b05cc8c8ff -23d96dcfcadfbfbaaab3b27d652a757f5ccfc30f00b122b1ad010f23c6683a04 -c5a53f9099d25f55c2aa5144887d6a89d5d6c3201e5edbf8e71b33adea7673a5 -a7f48504fe270a0b133b32a7f2c167ae61bd9805a7a9c4140e36345c3d1e3176 -91bd38beffea3445fc1861c7118445d075f1021bf44950e2f2eece2f0342ed54 -34531c7e9d53bc2307add9f64097751d162c4531bd991db9c7c8c71a8eb74bd5 -a9e1b19ea58cff83e2d25c13166ffda04024202fd568a32600b4e0c81f5ad684 -528be94e00741a8c3b14357bf93ebb43c7afbeff8800d80fe6676dc742c3ac11 -d51c9e1f97512dc239783b9275416d2158322f535896174204627af74f363c96 -5efd8dd1ddbc710923eae44f44fa69e274e8b84c67d42212a189c51d7b51f829 -b742016dcae77fb24440e416c58085baea55adfeea589a3c58db273b6fd395fa -092b27b44c408d7d8eb773310754c9597c77394b32b4268b9a02cc5e4b8ec06f -bc7e099141bf3ab12ef032e9b6e022e13a7555559940e8339160f8e6760646c5 -5402617fd925888c639fae96a05d94a94b34ae5e8f8f4c88690813f2d68498bf -cdc9328d523ea7e6df94c343a4f6cf3a44e977b6b64778de0b71bd116e43991b -6292760dc7ae25de194bf35598761e74c5629eb7e1b196ba087c88ed23ccac07 -a50bef7592aa928aed2778726a499103c4daadeb65515d170a840eb562e41fda -cbeba6f51c2bb1ca1420aa9ba7dc079c7e5accaf8fb64ca62b31552e57bb34a9 -74c799b98540f249232fa2b6ad01b4b8ec6364ed53b164e179c76cfd09a6e0a6 -245f78d0fcd392bcb68a9fd37e2b68d7f07dc031c7d466e5019c43d7e2a1cabf -4407e522d32e8e67ac25c146ec09a5fee1ce83f84bd06b0d92421b75709aab1f -8c8748e902a45c6500d6994fed6c097cac3a60267dd9d4303cd3dd5883c33369 -a9e57e68c2d59c758e1b8715e36e186534ce904a061bb649e7d086bd10d11cb0 -ef811357711b303389b678c9923ed408e38e74c4fd39511d91c96ee5d6cdca8d -d6dc14cf8146ae3b83620bf7a56f5f62bf80034edc1a7306c859acc6da4b0e69 -3622ac8c774569e1fbd40359c0037d9fa7bdb6d59b3da01a7e2c5bf7a6970979 -9032ba9e5ff72aeaf8ff576d04d05aff0d3b82627005941244299ea42023e8e7 -74c5223b1cf4845f7614219f13c1bf0100789b2fe56cb9471a4148885742657c -6528fbbdb80c1568001dd2608e76835bfba17e613fd28467341b79661ea85684 -521e9d6d436ec08d4fc523660779eaa82e7ee2ac862341f48cd7ba04e51ed6ae -bcc6306e08ad8d8689ca7d8294ebd8a014ce383cd0c7a58144281380ed6341f0 -34e733c110bdbd72302d00c5004005399f4ed454574e4db6fe37593e0c427d0f -7eade39ae4d2ff83177574ea2f98625837ec46af3834cdfd5e21b92bc5e7ce68 -5c2fa7c99a9b84c1c84e26ace6d4d620a437503ddca52403f7e3bf7404114bd6 -0c13a91335848d08c162340d86f2cd3aa87a273aa31582b52ea8cfdb4fe57f38 -a1072b84b6b1d43772135481e010cb1249676005394d13ce1ba344f291304496 -a2cd7041cabe75d149fd123c6cbc8592ee8777f909f9cb65582f204d18a11d44 -1b56f6c1c2e7dd82a261c9ca391c81d672ed404f1a21f48b08c1c83f1a2825ce -a02f8e98974883fabc4b98f30ffcf44a83e665fce77986a82e431e2b17852d19 -f6758ea3565f643506f0fa8ee4636d8d5861e079599992c1b3fafc9ebfbd98b0 -aa56a89571d79f3679cf2d9e76ac0ee7993b1d8a1b8f2f082bd0e04e59a3d1f3 -05eff532823cbacd76d7f5e0a8e062befc338de93b859f8c909a685e1d437e0c -5004046087253dac6502c0b973638fb3edd95e9cda5204faa8511d66f15e1519 -8e18f1afd93b9d7ccc31e8fc9fb37617cf6dd5cb632b8f2a5a31a257196d9835 -2584cb4bb6f3cf6967e0672df090badc3a2690b5da1f2f0f4da1ffb7cf8aab6a -ea5ae9cd0c5bcbc480be92124772f5f7883822ca05170ec2e49e9e922f2af79e -64c496496767ac665d5a6095c023897fb4566edd79a543a2a992ba74010cc614 -80888d8f70d0e39b2b4267a5dd2510e9de401534092107d343591c4047f04c56 -a0c60b34d8fda26f9138ebd6b28394fbbfe6870c1cc8782c30427f3973536844 -8f16f032c1e895a5cbaad7c6b97a305e92c303d51f5479ecaaecd417dbe27d53 -0095209a7ad4fb9626236c5f8ed4da9b2d7ecae54bec567c4f8e752531929919 -06abc7a3a43c59ad783044ba2173974a132916675d6adf87ecbf7f8002c0156c -6995e29f3ed4d35793132bd016ec07d383ffed0061026686fab542bcf66a3d49 -49a671a8c33374802f3b0a709adfa03dbc68e099dc003704ba1ff3afee1f7685 -59df4a2e78612ddc8c1fe96833bb041ebf58ff3327f564a8fd8ba56e046fed80 -3c8524cc550094d97ff6936fc62b30ee230fbe01d01a8cc18cc282123ba674b1 -9a4f38a32953bb93e6f90a0f0448c5e1702c062cc533018661e6f8a648511182 -c13e6e909f3cb76940e6ea127f472e3065829c61a0bd411cfd0c0f846afd1fb6 -9faa3313e9f6dafaab1a1bcc14532e829a2534733cf194618224bbd371659f62 -c2916b87fad62bf3f5601a056353196f1111f5c09bb6b0cb1f77831591cbfa7f -5791221e028bb133440796901dfed41d916644cc331e315c9a15325cff29721f -90f45344f0733220c0ab2b931ede4eeb4c680b1684561033b0ed6802c30da326 -aec3cc58d57458e57847c59c4929507a9de6b349dc0349123e7e11bd57f87d53 -245a69e071ac177eb1f65a6c8c6deb80eb025356b5d7d279ff0f0d415770d79c -c1877dc086028e857f8b21ca42bc4b45a7ed930b6101088bfe80e59d3cea364d -e969dd1074c46234150c70a6afadc2cea3a56f55e0d7de971acce64f8de2ce76 -86770678f99f221bc8b970a68a68ac0d06336b2d55636d379005725b10d08795 -a6532b3514da7a024e85509ffa64993a90795a0f6317ff2a4f65783c716b347a -0548464a2521fb5387940107f1315bcb244fa4ca67e136f5569d15fba2c53221 -e56604313e65892a674e724c33ce66ea501c8c51129faf95a6d419278d3d7b5f -637c5dde1ce7a54edc62039db4a59a955477451600a5eff73fa51da41ca7fbc0 -0e37e888242b92c94adfca36d958ad7db4bb03de11c4448dcf76c6e3947dc9fe -4b99459817b8a6f1e64eb879e3925fdad24b2e0cc3d4a267d65bab8e6725221a -fc29966b5c914d1ea25de480951c62fba783de240339486eae4ad1857d3e5981 -6e3acd432da618d68f8a8a066883bad457c976152e21d6e268cc4cd8b996dc2f -c86b300874a9302a9f0b1dba5227f0fa96339e58c4f4effe4fd5e1917fa897d6 -5a3415e251fa9cf81a9bb469b8bb32251779f1732e41c167462892d517f1458f -783d745076c7773e577d654053bebfd540465b07e4e51bcf1d83ba87c4268ecf -2ed50eed378a0be8ae49539495c23cdefadde5e2d19c46350c44f4cb5bc88660 -e32fbf87072b3b667768ad04564a35e2c22e8e79a35bf3bd4f53b91644ca1d8e -fc5a0406a984290d906711c90373d668a2eb25c2b974a2831aa01cfe3c27df7f -d0d193cd5bcb2d49388e656f32fc4d1d0690701bd6c0ade60076098cd04d3b03 -91159f2d17e43966565608c02dee1089d86bdc611dcb5d6884c25e0e709d45f7 -eb98f9dee60ba38b05396808082b2f20970b73e3375e6ee941ee3f2256239089 -75744167f3fc0b372189898cded856278168d8272b6ddf711067a8c69a66692a -21813a6fdebb43533bb33793b10f70be6a36060b78df6f3e3cc5b871a92edb85 -806d8686fc587aff4e4f939b819c88b4896cd70a08d453b9f7a681dd861f8cef -65af91ed90a7794f90d9ca7afcc9c833a04a3d64f487017cac3d604cc7502992 -5e520caef7efb02f1cd208abd2b5f9b735c5c6d743a81ea1317ba72df2a200e7 -02dc7867d79600334f74bfb97c896c46eafc8d27a0ffdf4d005ceb4335b172b5 -45903a927eae2ad46f61a11ef6fbd60f10892d44508769041ec0b97744070335 -cbb1d95f9c5117668f15e093b87359fea8f44ad2285a496182fdfe50f9874b3c -2e933f980a45738d042c54386d52a1e18b2634d234aaef4463ecd24d66acd338 -e2e809d3d5048532fbc14da378a1c88250c6b16dfde5e0a6b4a44f38d40ccaeb -c02b381e8bde7e479dbff3ba2d7c3fad2de9ef5978cb2cc01c060c6035a5e0ca -ef32997a36e49b1d9dbd5b53f5e80951e4a8a9985c2dbb68d84d3342c176aca8 -0024b21131a97918a06b92c10fbc19c6c026c1267ee5fe00bb4c57cad1198e15 -39acd0b62e0ff0ad1402a534e9bc14ff41855ccfb35981b6fdfbc3cf04bcc4f1 -ed691532a920284e5154b8a0bc9eef4f52b679eb8ac4e42256e7e4cf7145e151 -e0110241386ec32523ed555b95c77f7802682b675e8d0360120dbd2ac3dd9ab8 -27ea52aeb3a2cc4a85fd9578db79e358497916f564879da4dfc327ff638c84d5 -ed34c06755faf71305aebfe027a6062297b50c1f3aea03fa2aa0718a7ffc830c -f2801ff35722afdeeeb70552924a964a87e47619403e10f812faf030e4e269c5 -235cb6138969427473785f34e51a8fe86b0d7868d9cade51511e19e975fd6155 -9a5ecb133146b98dd3df10fe0e821b58ed0481d7bdbe4eaea67531d24ab1d684 -23ad14c3b8dbf1cc00e19bf1ba116f7944995b61e2524daec92b41eefaa8ecbb -2d8d53e185a989d64b7ea9cdf2f22d77dee8b8a1ae7cc6a13822f782ac67a90a -253e7f0356a511356f4bf5b1b0cdd5344165d88d51831b639dcb17158812cfb3 -2175dcd1d87403404881f4c6aa7a87d395f752bbd2f93ee45470299732a2373e -cb8b0d79c85093eae9349237700937a2e9ae3236b38749c097edd66ed5eab99a -c938174a37fb3ccee4244c9df8cff6c83906a4a452a2f2428ace663fde9a4b31 -2a0cd10fdfc3dabe91b01082a2932163e8007af5b12674e01014695a4e6d52bd -d58ca788a4a3c77f3afac76959a417dc44306ea2684ce9b1f009202080c6d3a6 -6f614f7c75bdcef9bc925c2a93d921448e4aa2f25c137b1417996a0824b854ce -0d43c9d9f8e676e940f619b85346528d337e4452255f38bbaf001f45fab93b54 -f1cad03a38b367ee500a290fc6ec5495e9bb131f05ebf4d38f269d02738668f8 -0bade67eb9d16daac6ec3dbfaee65f4a443ac5cb6a669089abd86bc36c089f13 -6f736b062959c2ef136bbbc0863ef1098f395c89f888e3016434158a6738f884 -4cbd70e9ee34f37e48c56541958fce7ce2d3e1b89c22e991934407391328916d -aa2547b078630733d777c4237f7c1ffb65a023d037692840200a396afa40c67e -6b8f938a762389a2e81638da72e03e67fd70c8759db5565f67250ea4204f48e1 -2eed71bfbb4d6a36932bd650b507e611925a902e7e794391b2066179182b500d -d91cadc29e2168d0c981fbda6be8a7cccab5c310e93c6af5be24864e3e14aa57 -d44e6e3fbd9ecbc2ed8b27d6ec04d8867fa9ec2a4dfd1c0b238094a83c657cfe -71c2c3e7d6cd118497984127afad20053c41d29a7ba9909e17994a48acbecf44 -3cd4713017418357e26818ed99acee5ae9abf06279986e4e8f7dc31be83acd71 -dd14e522e4907e8d9594c4591b72c50096acd5f18f584a613004f0c99b3d2a4b -5cea9eeaf0754d499a8ece3dd4587d2202f064fdde4beefbd212d697ef053125 -ad790187306f26c63558f5aefba0edeea36c7f5a66517b2379f494818c79e027 -57099ced32fc6eca9445634f19eab79c56033e08d463cfddf692f0d249ed7342 -4d474b2b47eb4ae7e1092490295f7c4aef9a04b2c388b6e331cf68d210c2e923 -e31f53bae8b88f933be2e12d6c729466e761d51bc7125483357bcc71136264bf -f5c836d8cd676af3581b9cc63b7edb0e143168ac6311aac90e7acf73d0d0dbb4 -75f673b2dbe72538ce4b11c25b68a5c0684ff5da1e73cdda2dc46352d005661e -7e510ab89af0ef03049db9c96da50369aecb765d99ad9d08a27dc17fa9a49b4c -838bd34df3afe9c3cbc876660263a38545599130e625a513e5a10cca38e67787 -c2d09e8e1186dbfdc952b02de01e2b24293ea15a9820da7cf3c8f5f02c0d6b8b -89af16f031c58b22bfac7ca177cd29156a0a66c8191470535c9945f92f1b4fad -1606d4fbcb4cb9457a31b77a35187cf69bb2dd18fd416a28a2f761913bc1f041 -8319e4dee21aad948d6d6a698dc7be9cadf12592326341dbfe78ce5551ec25ae -b08a262ee11fecdc0f027d41bd422279d49fe1f21d2fe5e92b2f2406fb337796 -072d2cc55edbc5389b3a9307b72a40e0441eef66d425ee42fc886e673efbcd78 -29e56d00b14a28a5d41fc8f550c0f10d0c7b7e348b4e2a3d45aaaa0e3042d522 -f0ed4080bede6afe9f6edcb797864a1cbba50057bc134a437eebab64a370697e -547819a98b67e1e815e04dc4a830453b5630a33b30b27e0f74b7791fa4de5f2d -db62d1e9ce01b0aceff871ad301a7f0116b1b871d5a31031dcb71c7b9510166a -32e575b64e549e5a846818cbab62d4de6fc07cbf373557e0f620863a2975c848 -48d0ee27715721fca724493d580818b6e53468eac5ddafd9434eb2a44f6ccc0a -0a54d4b01a6eaeb7e05e28ac090e305013ccf7bc120c0c9471a5eba6d84342c5 -cccc01f035d2ad7fa6c4e81a76f9b6c0dfd13ce59b3ed2dd41f74a2bb20c4540 -a042e91a0c970d22d59d9ca98883578d9bdae3e8c4b1949e06c24b7a05fdbd49 -ef1adbdba6397c864d75061e5ef55a6d4926f65323de2547764080d9c7f38de1 -dcd434de74e06194e857c9a1d782e484e1070225ca40c7a30ed4cb9d1491d9d6 -ff5eef2323a3572f4dc8fbc817c8a0eb456257aed7f5358be44b3a817c28abf5 -a83e296e3b016ce9a768f14c9eff546cb3da35b72afc33a1405e39be33df153e -f82cddc67eb04904e016c3c75e80b73eb3a1d7218ed19d1f8c331f6bb6797627 -096b5760b85896ddc61c4b4a33727cf796f5917b426ae5f0ae4e0cdbe6751f3b -b9a0c42c1104b2bc7d45ef93e1575fc34ed4e42ca864b7604668cb5e72d9a402 -60e85f0938124c7a4440d9e6b1c0392ac953dad574652f1feadbd2adc4e46fb9 -c867699f8a4e4aaa584acab394bc24b80a600beddb5b28a977b222ffb497e577 -98660d3019806955daa68b400a3b779e6a998e58ccc64736f178678d7036752e -2996ac63099ce40755685c87df162fec86724a7946d0ff00a5dcfbb7280070bf -4b83b15b75e14245870208f04580dcab0ba7365973dedee104ffd28b800e9aad -c6eaaf798384fb1119d5423131bce97e2e6ca3ed1b9ff8c77064dd3abd0ecfe5 -cfb01c6cd5229fb360d6426abf60ee470999720cb96f25ae03698b670e042e92 -d6886bbca9c6a2a2cc9a5d22f5eb5dcff54a66dfe5d8b5324987e69f3b93ca92 -850e51fbb43fa1699f9a7eca215870db2f3075c8bee1ded30a061b9d7a3cdb2a -1d1133c942ec089461bd05c164bfdb4fed92a151b2b3ed0e577dd0242da623bd -c4b7d5bf74e3297ae8c39a27d9a0607ee4a7946decabbf11d4afde517dcdeaea -d53f94087a93927dda4696b5d57ba551d3db0b1ae356b58d80bd5aa85be1c3f0 -907d9bcaaf200478d9f3179ac93826a969af53105dad469caf4221cae5652f4f -3ca8d13e2e5ed4fc7867450823899c05426073b850e900ae1cd0b3c81f3b27f1 -a537726923d4c724c4b363013d305a9782d5eb14e73125c2aae3645da28787fe -5055a3477c8638680e2d08bf9503c23be5551f3782b59506fe5ed3abd5eedb60 -3ef9293bb3f795e6c7353d53fe05d25612bea17a3359223fc41b16d3b068a8b1 -b2736e61c04ff4723c3a8a5a2f19fe762fcd905e3621ac18e6fa388acad8d71f -ca75815a0000a6eceb38091c83c74a6b8f7ddd641e33ed757e5ebb8825c3bcc8 -9468f311e40c732cade916c69b078b9caa675de89da4578e0b970667e3de7fbf -977398692c79e40ee55f01a6d66c8ac14bf36dc3215c2dd446e3de4ade55f94c -10d4eb3e7da36eb3ed5471cd02453f5eacc6439f4bd4bbb815f097e452a50545 -816c75fb2607b4bc8088cff32e6cbc98612d0c3cb588f4032afe851a9110a09b -5706702c8bd83b9c28ced5a584dc915501a36b4e55b5e8592593c1f0bd7b4fbb -15246446af236f4f202882f809935d3e9d94529566f09d7052862d36fedb583a -8e68938e450afff9d89ae7dc4ac6f996efa6435dcee69289b4291bc038104062 -e41b2651237972563cba8f5cd2465393a6c3375f9b9d64719ddf4a4101d7717c -a84efebe10d766d072578dba7aaa67ff652c3580f5f2549a939959dfa928b68a -0df843853c4a1c1ed3667076a8b288ff3ce1ebe740a52688d809f5b2d5960803 -64d3b1629724dc170faa44a4e656676b9d8627b6b4d25cc46deacf1d9a64efb0 -4fd8d77ff4121cb1e510866f3a0762d1b41b45888cfda3564e35349f0fe6f55b -709e466a79ff7e923e861c1e7850eb50e9ef2b8a116d66440c83a843332042e9 -da32e41a1b38a5a1a2193b111b762a1efc596530731c73c8f06f50c7eb386a8a -aefd424d2707430aabe649589b8adeb73ad9a955a65cee44bf1a2659e0f5a21d -85b470e491f3a487c631cf99b2ab9b6ae6b56d81f53e69390520b282c516249a -ae64844e1c164554425486fcf34f83051c035122e3ed72ba6044fb0828ad9304 -abb0d38e7b13d1f09d4eaacb4f42e8e5389f3c16478422171c09fd63a67df3eb -74795426e07c565bed22fadfb64d84e2fe35534d2d2ba0e5d563fcd512cc110b -fdce8a10266d2a50aa57ab30d60590f0af9bdd950190a53ad24e6b3267ea0ae6 -550ffaeb26145b73516cec7f62c550637546d4dd626014c8121281741ddd8f4f -e4ff6496f8069134fbdaed74f72a5e945c41cceff2ca7c052bcb764ebc8c9c3b -bdd84fe5cef11d470d229a966e5f67122b78ef4dfc900b97d5543d1200eecefd -b7ce8c7c49c6c25eab9c6ce375f8b1975d52839e30b370a5de1f4e50cfbb9e9d -155b3554401c40ab1a0d0b7500d88d4c4dcbd7864b5b3158d75952fb9b719dc2 -e6e6871f8d53599a3819e048eaa54d6b99422f5aa93423103c2f0e01b0da316a -ee3a8b70fecaf01c9553168752419161e9c5c39056607614c32437e2d724a5cb -0c417eaa7e129ef51d705fcd087d86fec0dea41e3e79a5a12ffdf183c52c251e -03c8704b27eca423c2804d5fcbc082c12f2e91bea00d18f286ed5265d892047a -e426e53794d9655829c09d0078d501ead4088de8b71b69de903b416fd4d8cbb9 -35e00c72d3ba6d5eaf1f61378171f581e34f7e0d3b6171194e258b09ee3bc4d7 -d236cfa72cddfc5f3049c99d002b93c3ebccdf4b4ffdd210933e827a8c74b823 -a0ad225ab6183d498ffe04317b56a9912596f0c54e951c1fdfce2d90bd3771a9 -6cead69c98b1d8d30617c80a704a85b7662364ce97b0322b98447a97fc827584 -f607106492b23165a0fabdf846ba4ca2c43a61dcf2b4b8587965b5aee46d9216 -ebf16e18d7e06cae263d160e231fe24a5a750eae53ba9996247d5bea1f1d2b91 -3dff420ad33da68222852c7225850778bc04d7193ca5bf188f9de98c052a27f0 -734ba510fffad2bec8cbd0674925250add6d27aa81a64bf04d3a71a0f31f4a16 -88b05bb31287501da54f4916ffc2debe02ed12fa169c34fbdc268c6054123e9a -d280d8ea1c5bf83577c35d3995b3a51f076b4db9729cd2207ccd51c84c8478d2 -09081529d97b31e96c423f7e22e71b64f2c3f50c0572fc30848112478f643e25 -36a5e513cb564136e121d795a08d54181402bf96ef158c4943861cfeb7fc57fa -91ab500281186248a34dd75fc0369b6b1ed694de67a4ab236911ab7a81a2d9d9 -985fd71259787802bd490d4fe2f8cc883ad063371978b6f73fd00288a8b1d508 -6c9e379f472b3d90407e11368b1c2d69333a03e4e473d9974f571761c8803862 -9d628fb8df815a4cd7ef443faa73cc22b0c8ef1bed922b7665651140d509ba1e -f20357614fad55d940b521f0d58197231be5122c3f9b584f9de040bc966da17e -65929187796a493d683d8c004bd6c6c4ae39127d5ccd37ed8038eb4b6bc135e4 -c4babf07e3a8173824369001a5e8c34dcd7985e5f72527d560c90bbe1651d0fa -258006d1e2c146c301bf5741217f0ba5ba5598b65d9d54cc7d77d662e9b46001 -d1b64d00f93b705bfabf0b0ebdfac68684e5b4f6b99472e0054465f0569e4509 -04819c350a6696b622e8d40c2f19b8a85ec206203f1d6a5e23fd2015ed1a6f8f -822cd41c389d61373e3c76bbf4c633bbb837276dad6b798e78eeb8fbcba6ccfe -59060283c4e3e70c2aed0fd9b82d1a39f5272b5f163426d8bbdaeab88b2e5ce9 -78dce79019a8063a227bdb91b52a3c13081db63a21f1b3036fe663f97bc87f5a -aeda4aa3d044fcb0df254fcefa524a1da78cb24f73767caae7acb059398b1687 -5eeac36f9d721397aaa8aa93ac392e94ee3f2ffc8adcf5d0975e4c98fc85d754 -eedd6ab4302ab58623cdbcbe337563193c22612cf425793718e2ea61bbb1b115 -6f3b4bc21ce8ceea5d69a35f0d02827c90fc6087c6502b6a465fde79fdbd890d -d3fb8a99282decccb3780fb6c82448aa192b7bb09c3a922912a7654830e93bb3 -6c4e2e2465e382e630007d43f9dce2d114fe13cfa3e09e99061ea41ed89bde4f -b57f88dc525f256a2685eb92ceba55cce8015cb1f03ddaf16d1bd8d7a96df9c5 -d6018207164f6b554d4d8ee556a923d831a96ddd89a8d4205693e9d8b97befd5 -ce3f62a3cc399b9f8570693ca6cf5e87756bc154f96a0eccb69fcdfc0133142b -ba6f5ef8b37636fc2313fcef7cc1d0275b5268e4d5cedaa394eebad68059fe3c -c8a1ec659be58bde3f4e75dfae037d7cec8a5ebb211d899e31ff4918e89e75b0 -b9679669cd8d2e522e9cba190d91ed8a2b9dc56e92ec9cc08fe1ff58b96a3a0a -763083300db6ada58e5d05a64b56a174d2301844d54298815d9288dfacdc5aa2 -39e22b20f7de218a1513a6b068b78925c083c12d9c1d964392b095823312ba8e -246853f6cc7bcc5907742550ee41ccb009028ac5e80c9b5824faecb7c4eb4b90 -5a4451605f89d7b5ec2733458381b91097f0cb5660bc8f2aa679941c9b24cff1 -0a8f0b6740afb9fb97cc6eacd7cf39f70f7aa717590eee87e83b6e04a67af211 -bc0e8e1beaf8210f03edbba8af900da0166bb7d9bf9df91d63f1ba936cc15d59 -1d487be4c7cce1096d3dffab5fb95b310b9e500d9b8013dcdf8d7dc1b2458c60 -df6816cfb618c3d305f3174a6e0ccf46b554aebdc8c4ff31f13f51900770bfd5 -5e29b39fc6cf46f6a6f30491076b1ca18743eae590ba762f13c9f83c4a12ca29 -cef754b0ae5b76ecc29a56f500d81b77b767a7e45cf85b73fd75af3f50cd66ab -6cba72617f6206dd6aabe1d70eb909653972bacca73f40390f03ac61161c2f38 -6274f484fcfb99a62832c535ba8a2dbc5ec415e570011e07ae6d2acad0304109 -11a0c24c71639e49cf2e859d02495b3bbf3edbfc7ff82979d1819cc132bb1b88 -24a561c53f3e98b5306bd8d9596889e1ae5e5f99ffa86974a3d98ea7ca6207de -198b87a93216c4a7f601cc780b4bed59eb54f4af717e8e9d007c23817966732a -4a24f5a7c92694989291acca0b33861172c5104f142dc5c0297914c917cd487d -e1dc42d4cd6011486cf129352240d2419b7336c54bb578f33a6728e3f4ed5ade -265bec7fab902d50e568a755529b1da96f4bae7d16773fe9e652412c94fe62a4 -9b90a9dfcbf1b0466a1b89d3abd532a026a2a45330d90890c27cccd422dbd9af -633af44187ba2560811b297cb3c720373afff729d55cc873e87936fe72475143 -336c6bf027b71c5f24fc8ad2bb7aaa3779b4a346fcd60929f42b2ead0d38a14e -4653e3b92ce14dde30e901312da82b38d61b08eec80cdf22901ad41093788a0f -c61a8990eda88ff813f3f0866909ac7c56c5dc0160abc9e70ce864e859763b54 -a423f34287249f20ab24a62602c5164b1622ba42c28febf97a5021378c2c30a3 -b5e5a73ea570721ce916ac4682cb679342a177657ace0e890f1249bcf5fe3519 -bfad392fb4a7a59a33fdf00ad6f3c58131f2c82554c6281a903e19e2d2d5d49a -793489bc2a9560ac738439660b4bd6e535776c1766897feb2be25d1a7e6a8f22 -e37da2cfe7ad779b1655cb970ce1a5a92717a400388e316d000337d4848ff6bb -17c7b703fdf39539fe3c468c79cf23b70d10f75ac34a55035d8ad5839dd9466b -79b69c08146ab3621614e641cb83c7ae915cc5ddf518c9188ab4b124769e9bdd -55c2cdc550d10dc2410b49a5ca1a4928e1f830fff20c24268b3208727cbc1df7 -b550ba7d05269f4cad9c14b86b18ba920e80158445d07564a1a6ceb77df17593 -50c7fa23fb9eb18976c2ac82ac67e2b8faea4949a53b1e2a263ba8f2d2bb1525 -78938b515736367b3dda6cce6923628e3a4ac7052892364f0d0053caed5667fb -ff2a7a0b1f15f61fc6e2c39754f99857d6ca9a4cd848faf7558e55c3175e386e -5bb7f42d77019ec0583bdd58781e6b7e205f686b27ea79926e471e0d73660b63 -09e2fb3244100dd5f7e6c873974888d77e3f9f2b989996c4236c83b8f2bc843e -560e4a07d45296158ee3a164bc49b47b37c2617f2f26c1ad5fea0c6d50b1015d -0aeccbc4bc1b62d814f5e3ed87bf17057fc2c437d6ab9a716a7e4845275112c9 -de9d5450d79ec87c68ad22eedad4e14615b135912dc9c51b55f0def2a2ea85bc -d7880beeb30e02c476a5200810da5c61e914e110c46504ee97ffad58958c133e -af2f7274f7c8866a5c0cce5952861ec271121c3517964500a9c312559c2a0b32 -7b51a3984d51d75fd0548f146df90849bc5a565d9fe12b181de4e5f7f6f5293a -f25bf7c82d21c044f07df30ece184cc1b7c954a368377a8676fbf3439e3ce2f5 -75f35e694648e040108824be5dc7d3ee70c4ac9f724f93d68827183b8346d46d -75e854243b6585eb6e78be218b44368c2696bbec8dda7f7b6bd2cd0e87ad5594 -28195afd178533d57dee4d2e89897e9db709247dfccfa4df88adbc1a9b5ddbc7 -ad17691314c7f7f5b988e29d355747200b5a385d8e34511b9de70cc0bad8d759 -3009048cbd5cec2a24df414b098157adace9f132d62ab9a4c38f84a3831cee5a -7f017bdc3affce0244f8b7e17e67778e84df6befe3fa6fce7c0a2c1725d1f3ff -190edd33f307bd472b45bd0b99df6843785d2ddbbe96e23cd8b831b52223fafb -069a39c4ad99b436d0cfc37dfcdee9e84b8757b253294a5d52e137f4ee653b56 -e1fac965e280d0e9aca00f054e1fa218c8d9527b81ccdfd686dbc7981718f321 -ba00e1abb7366f70b7401870dbc84d64df270f31d45b59fe621b0144efa27e02 -79f9bcbc567fc07786840d767a72e35da495a5178df401eee6a07fa3a8d60f8a -abee6895d11402793687d27a4d2cd035291f76a4db595907a65e5b2db5c51737 -f2a3cb61df8b9d24c21a4a323eea8cadfaedfe9f3eb72f79bfc1286a72fc9f6f -8288e0e47d572f3c43cdec4b660c769102649621ca67886b4a754f33a065908f -08ac4ff44bea04402ca0f932d47526e674cd42e3db9cd5b51530190ac8b65c62 -bf68e2136cce0640c22c218c623071b5e8fe843ac3b033dd21021b254693de46 -c672f66512bf73a58d96399a35e8e315e9bd1b7720882b1a7cb257db11b68cc6 -0417b60ac36f82570bd28d47f52e91eae2b8caeb67cb921ec3bf77510487953f -bfd4dfc5791225c5b1d25bc77bba59a1a4ca2c6d06bc66f35c38f7c983dacca4 -ce4154f6c5932141eca8bab3e216e151445ab70a430cfa4baca7519464e5f8c1 -684ef5532067ab3ae32ad25175e6e6d74e058d9300fad78a6e7c32738d8e7e23 -c2e5a701459f76dd9e002864503c3692305d1618550d0c1132e5aaecb3a59ef3 -ec1c57dd4a443a99acda7cca08b82bf436865a315767c1bfa404f6a17b975e95 -11e08b40fa5b11cc3e375fefb04c1f81f05dfe85dc1d860ae1057ad0622aeab1 -036a09dd71964a944206c2c88c888c96004f2a29121dc298c38ac352bcea84c4 -1810dd09f6e2fb7be9bda31363cc245d4a614bf47d1ccc872f4e2ef7d07d06ca -54a3a5ddf5de96b224c03b65f1b924fd2affba7aa7b43e6c9e0a2011cb6a4050 -96200a4e50cf62bc2f405034ba359570213ba82d0d779f4433269a42e39a422d -21dd5806a4fd43143659aa223180d6633522d82bf563966eb97b2e298537610a -c3a501906615784fb6286d961035a397294244df1b6c10d794c3b3058d2db76a -78a5d81888ed75d9292f3e8679e28c08c4672e454f525a71143aaefeb4af50c4 -b7bc4ffe4fbabec4e460a8f3441eee53103ff98ee35b6c6f25b90217b0c5003a -c37514bb6138f1108962672f00685f10ebfe26347c9e4c80fec60ac46b64faee -32e2c3b82bf4882260146ee10e2af198d6046c4007bebdab12bd7652e6c14d82 -8c9dd030ee4f785c5f5fa16d2747f8b3202c91068f4607c72c9ea2f934a09322 -504bd3567bba36b1fc211cab06005f981db3587e7a9500599080c0733b063887 -34db6025916e3d71c23236f851508b8c0e04207cdbb87578d46040f814c505ce -5cb9af671c0cada35b750a81bd67f06a52651a4d4ddee09b944b4fa1167ce934 -0855aa27c3dbf11338e0d016ffa14049e7b932f1c907fb1e452db60d34c019ff -c4ee2d7ab8c2bd78215bae5618d3010e94b82686d918928686512abbd2bdc336 -daae9b8e344562641f9b3ef78747b1154fd7ffd265ead2bf8be75aa52a0b7716 -f09bd982aee6be75020d774a5a2d45f03e11aab7ee12d8d248417b65cb3398ee -46cdfa99d6b43ae536998aab64b2425f2c0709f6efe66c3f5d376989e30ebca0 -59497ae04804576cae98fb8b1c0ef2ee8d36fd4280ac6e08332bc6f64e4af3fc -432a757ed3c9e95559ed187a3a12595e0abd95e1177935f867ae5e5ef11af919 -5d60d7c2baec5c3c9ca1ac22a2acc77f35066122ddcfe65d0321b70025ea1330 -a7e0e2b8ef9dd4e2123244f7b071cf669f342157e978eda41fa176932f99b914 -ebdc6711df3f917d4483ea709170843ba7b0a7a5ab8db6f0437152b43d253bbb -b123bcd27552369cef3c2104a01b5658ed965e16f353ee70a0edde24729127d0 -4a3b8082fe128d972e657db200bbe368e0a90006049255c3792b5f2b6bf023df -548ddd41d3d3d82d7faa5944068d0e1e661b52f8e8b698ba1d2fb8d90806bdad -2cdf1e4ce36eb8b775be5680d9bb043929debf5a1b50fcb82cc39a5ce2e6ec78 -380bf8f398f74d022acf75f4d0c9197ec8efa91bc3d7c7758e1951c1ae8a7f5a -93f6d13a50fd23285c58688f20972cc2e7cc1a3fc5f4012d280337aa92cb387c -19a7d447a1a76401e377b3b0b54f877d982c849844d5e9bfd60ead10347c53cd -ed804d709189f7c7280e665cf13353ccc96bf6bfc78b1488c07def5ffc76dd3f -d24e2d4390bd99356ac58dbc46a919ad8721c37b7fdcff3c8e70853bfe3716db -8bb7efdf2bd5144e8fb101ddbffda33a49264071c8395817ec2b396fba5f09a2 -dfcb29ea9b5cc166fb6a8f37bdcfe8d92b776c5e142772e048d6ab35856a289a -cd05ad840b2b776ebaa2e8ddfb578695236a4ff74b936f74adb65d5eda696a0f -0c33dd11682be84bf3be77cb3a46936703f2ab56240fea5c29766a97def91f0c -b44ca4d5a128fa1bce6ea7468550a877e1256479370e0bc3dd9ae33f7e2b4907 -e33001717fbd5dc620e3b59d7635ab53eda7e69af3f84f50077258a2c1cce4a5 -92a2afa1ab5e92d9024b70804b4b6cdcde23d11592926c84c8f4bb0f2ecdf0fb -2c5c1a717c1542a662c358578c4eb9cd9846a15846d9b9c12afe4fcff88ffca3 -ec09c97913f59a331e873dd334e5d917d59633276aa83c51dc1bb1c12609416a -6fe867723baa10ad68b88a9fea5afa6c45cc3908660bb13d10aeb7d98102beec -552a904793730ddd5a3a1c05645ea490971bde1fe1def881f57e7224cbebb335 -329994e1d630e5ef915c36022c4d9c0ef3f36d6afb97fdbdfa21921e926b98ca -669c0384466bbcf1359c48980074ecf292ca4efed8c425c038149710d51de95c -ebf1bb9246ab57a7a5338236a1d6da751e95363fd6f96c24c6be45a153cde7e9 -1a0a48f3b681d51242b6f5c16346e279901d58e17b5f420033ebbeac11798ad1 -1f61627eb3e2fe20b03d8c457f343e9e66bf3ada20dd44e6e9614f00cb81e82e -632f3ce092cafff676f1073d43616b020b7524c2af9a0f2fa8a38da653a83adb -54f3d091055c6ecbcffbdc2464ce17978397391ac5449957826e0e3597b9fd2d -427ab9f60657e0cf61428be224868f380f43b87e4896690e2e28f5a33255fe7f -3103fdfb6b0a1a3056fa920a4d3b05a89a033a457b82a4930df7e78246b65f30 -0ba800ac3ed4a554b5137c20d47f9394db07686e33f28b679caf7aaa9e94cd4f -245ca89c359415fc084cf2fd9dfa050273f67ebb58745ab59a683232c8113b51 -d1d93d7e4132c21dc8250c7f58c40e9ecf6bde312812357377b562e1221d6e42 -4e902bfc149ce19d981d869c1e985220616cf7ce6f06677e6f92d923b11b6a09 -eb8428c28f16e348e671b2f8829f32a4e2d3dfa07a4fb82e09f99e38c3f514f7 -15914a1d3f1193e4699d35c3a38624288dcf1dc133a14b3092820907c22a0f70 -ffd15c37f50003103010bcbd08164f572d739bb5623cba3b3300e34bfbf716b7 -f4851b5604318461fc8ef6b04873801d745f51e9fb3796391c29bd89932acbb4 -a0215292dd73b8c7500af82cbd0114923e6a5d971f454a5587922cdf21f6ee10 -7cc299a84b5dcc435768eb2b31adbc7a9ff06e1ca3171a72a0612154cef005bc -eb9704b140f3ea6f46886a15129b5f97cdb950a01b6f2928407c8429a43672ac -e5e6da99927c3d53d86702484a1c8345d156086b8dccd6ff33b730508ea52c08 -6090985d26a46349a9d7dd0053c48aaaccbcaf21c2582564aeab5bf87dcb2f06 -6107db6d62734edfb5697e1d228963e447878f9b17ca5462970f1e329ce91a05 -46867b6a913549e92162231ad7066d9684557154b55af80f60cebd53d731a9a8 -599be015c13a2c217923d757b1a2ee2b73f428b13b3e7c3724790e6e73494cb5 -e8987f60f13783dbed0290759f042c9ef3ff34a80542b4afeb732256ccc4ee23 -b7b28483d564b5b283c1accd2a336426442074d5c3fa193534e15681e3ed4f25 -2d505ae434ae415e34933d6b0861cd784cd794c2aeb54e9717098e1a0c4019e5 -6e7a885b8599c162f4fa1c25d8f0ea5feaab7cd0d6f4c1ad4ad4a0becb5dab79 -4c05416d0a20da217dab9b00afa9a566bab7321de3b999a00ca5bdbfc0bc62d3 -8e910d817cecfca886f14c36a2f478efcab9d11624b61de5476373886a002492 -5504d49df4ce1bccf2fa4bdb0c5e150b41e1af1b4ea5e5e91f862aa012e8fff8 -8a20e8fc845c4330d9ea33e84c5b0b77bd5f997d6704a19849d7353c2bede9a3 -738bbe76d61f452d59232c8d990a02eb2b79173494566425bb2925bfbebbf4f9 -4b92c77aa56406cdc3eaaded0edd9a189d149a929a9f3b01d86a8480aaea7baa -f6bdae10bf0dd59da643b29e9b9d7e3531ae819ed99d42e5701678c6125c2b79 -8859cbf8750c0e2c36b59c12eb693a9d0a245be59c577b42312fb335eeadf439 -64d7401d56da0b54e506994b5e217198b53dae5152622c792e25d056f81eaa3a -86653158299bb3945f267baefac55be57f0c83bd6154a3808f4d61bae5e9511c -928ef00cd9b9db903285006fb3158a4672ce2d58163f6ed6694aab602d9b4282 -8063286b7b911e0291a94eb1fc1dd1e57edb16472b2157ba97a6f00e7fc69177 -f2db6eaa0a7fe2d8250c600c3cc61cbeb3be19c1ecdf7595cd9d17745922e05b -840760d8750284daae7089d5401e0d46712fc0fc05b43c7c923e04aacd6e7e8c -f2dc04b9c6b3277e29849ecc8e702093f8213eb61170ae0e9b80867d682ceae5 -6103c6015e910a0f805d74f3bd826cdfe1ab1dcf38f5ad68dd830b5baab91609 -cdd6d409a84ef803e6fc7186dc044323e1f336bde6adb85b8743181ac0356ae6 -8ae872743205dda0a301143a23ba1a8ffb459930267354426cb328ab365dea54 -0fce3782828745432773eb366a948bf0bd9fbc1d44ad7016bb8d7c0328572b97 -defda7c8eeb1415cd15361cb9fe5dedad3c7ed3c34486f6655a8be7f5a882965 -3595f9af65f6778bd8275ad001b208d12d954c243450a30239ce490624ca1c95 -0136b8eb77c70d9da2636c0ae65767084d30ae9ed8ad7c2ae114740d6d967543 -143b1ca5c4e4acd3ccbe3dcff1be71edd051ec76b1e66cf437b44d1a78245152 -e6cbf550307d159aa009a85dd6acda2db4bedaa07325747b14f8cd1ca2443d31 -ef50c85324075a18c96c5e4949d689f6652301919b7b4a6cc760c2c1b435c923 -639ccfe9e1a7b48f62cba709a7e4ab0b726b1961b265e93bb143ff5a15b226e5 -75a5b73fd54a7cda553ea63a256c17eae8ae71c662afb07bc45508f8145dea2c -1a4af3eabc396bf4f7a28875306661274d33ae9d2027f1809122e178618bcafe -2d7a0174818bcc2431286de124e09b53b3d5d5dd181f0b6abd42dc4330de51a8 -7640e632adc9a302c06f8d416fec2d6fd8e604c322a21bf5a45af1d6365a5a67 -9b1810e4cbd19ea381af0492ba7f698d56e8fe97308e0329ce094a8bc19fe824 -16eeffc010e29f6d596f644366e96ea56eac030cc0728c03e3bc70073d907dd1 -2d20810d1f93dfff04756c9808891ed510ad9a3ee6508f49a49159cb5442876c -03aa8d839aa93159a9715572283782030954ecb010f2aa0a0c646e2074badccc -b0fd5c863b872a4fafe454907e5e13f6e09268b175becd5da0a72a457db1aae3 -78b159fb2f5d481ed918eacde3cea66a7a67c91cd99aa9c69815604b03c9f672 -20a108ce6da614beae32725bcb925cf410f84fa586305bc0bdb512f2f0c703be -76384b556b38f9185f77954c40734b78d589ac990c29777a90dc965d98d0e851 -b333e806fdfe35b8119f4e0d2f4ae5b2dded1b5897e78cfc6b08d45e7a71b791 -2d24b0923e4aaa7fd616d37a89a471379cc372611980895bb605a919628c3b15 -a41b902d6ee9ce4f5b3ccb39f8e03ae0ca3f54a09fc7f9f19b668b70ac9ec7e6 -b663848941f28decf6d480426c8e52259e024209ed37d007d37a831577f1cf4e -19caf4cb20e1eb534419b8af81abb654660d25c76f4c4ba1ec516e2c1154cb1e -81952bcfbaf3e2e8745b7f785eeb623163f1507bb691585f4aefee40fcb5c907 -72d375163c1d3aa41e69ab8131680bd6ca22a4bf9d1e00ce2d4c7360569b6800 -5f28b7facc9746a18bb74bac5b3694f3a66e1c56b5d7d789686b81a53c9631f6 -e48d478d856cc9dd9508b93de57fe932d3ecb8646aaa7490be8166a2653f37f9 -67e2f58b3ec332dbf806b248534b63150075ebd1a9a929cf01a8d9d7fe93a1b2 -23de35674b6119485f361bb86f075276da15acd538fd884dde074d9fc65b17d0 -8ed18a2a3adc48a1a7c1eecd3c2c8a694f2d9c0f19bb177da48b6ed69664e203 -b356000fb1daee9d1f2d9b20313b53db1a991068f2f482982448d543b11ee3df -686c3043a3667f0d64c055b125ac3da66f8d9eae9b6408fdd94daa824a764d0f -d67a02440a19280c4025960adeab8d4de07eaa1a52880aed95f42eb9fce5603b -d4dcd1abdab582c26379883b15c7561d9d7487bf5ffa07da45a858e6ddea3c90 -cd3c32206bb1d6ae9d988e1fb406d64fb95f2f869eeabbf736ea9b5217b2a8c1 -c099e8b075487c092ec832ce7139722c5e021921aa2f4aeb97c7498972aa7e86 -10601a2aa8707e305a060cb0f6198c0bf4ea59174a0be5b0af4be99b24a05f42 -ac07d4f756cac2b475b04807310810204c54bd1543c211f976e168033d917394 -c067bf4b5a4797731e4c33ebdf1cad4f7b8064d88c106e9a42b9990963035941 -fec61df103df8a8f1c1d41ba1e8ae1060e50da522792df96c03cdfd46e4c62a0 -13d396d291f534b9d586f03d3aa08102b247c2f7dc05672354b9ee2e82b3eb03 -48c9aee0aa650deed166e145019329e0025f80fda0ddc0b7bc7a91a33e2b0de8 -90285f7931fe5ce58e2c90bea8b30f457ae9955d1f175a281416f8f093982234 -be899e8628e1be7390ee6681cd1ead8b3d1fa49394d628fe9709c66b40b44600 -4ceb1bea7a0c5ccb5cf7656ab7909e47d3c5de126888d8d74c500d2bdfbca532 -c645f5a273f1a83ff72b77ff98e90e0c40599530a7953fe3277cd04289efab4d -61ba6749d5274a6fa9880d2f13a16519760c077042bd8cdb04e6a6021f8a2d60 -e282d89ca0d3b0c18cf8485992c3f9c8d8d6f4bc00d4dd80b0bd0939d975f020 -ab03046dbd71dd81269ceba8efc3a5fa819f1ee38f39d2c17e01f270ca97f933 -09c5c3ae0987ded1eea51970d7bc38ceb018a71dc9f7637ab2937fc635c2d977 -28c3d8629c1e0f191bfb5ed9314ad6e75021d22eb8fbebadc9ee3848c2cb4627 -b483c61166cc8333a7c9edc522e1af78746c63650b4ef2fc35d68af8d67ec0a2 -9868001eba2099a234c6968f173e7b324fb5b97d67a87bf976fb53de5e8b7000 -14f35b0990016f7eb933377781fb530d6d2ca72882827327b73f088aa6290529 -2b0fe237427f81dc7706150991003bb3735a9b5ad2c744d650167d80525b3cd4 -1b4f342a9bb873b2e1864f4980ea35dfe3377f98577c91c1156a3d309f2ec63a -495b6f4ad7f8b8099aa7f7f5f768dff11cdc34269bb2cec7e3a952db857c46fb -e238190a8beb0c051a08cf40f72fe6c496c7336fc68f9044f16b06a091bbf49b -76621b67503f6cdfe4d64da89008f158b9888d604cc0c421435d478fbb7b6616 -5d6e76047a3733b8f1cbd24834c429c283ab9b1e1b6100c9fe7c26006746e21c -e148673b057b745f0f51eb3765a2eb794c8c33751d77b8b6c5f2fa4ddebd67eb -b867eb45c7a96b9ddadc95cdb7739f1ccc2f8ed19f3b9973a7014adeeb718d29 -823e15c7f9108627cc608c69a32dc821c7c6973fa65691904877cb3dc5fd6b4b -20abd578a0e0fcccaed769e926ff327d1466bd72f0c92dec654c3d5701848da8 -bbc54017d7a4f48585770830fc636f98d288f48b2af5f8880a887d0dfc2dc5b3 -f503674394df1f5020bf9972f5f872f6a1360a1d859373d05264e51850cedc74 -4fe81fa7ee47c3427f29bc4e29e546e8c0959d9ee70731fdf7b8aa38f76e518a -455bcec4f67b117ad18d46416fac48b9b8f859b0b891fe2c4188a10610671220 -865385cdf8f33a5f68b77536f393e59d74f177207e8dd27084f0f0c1c3d0c679 -0b04632b11bb7770841b13317435e0d2fdb11a9943eca60bf460a9030bdfb105 -afae3a07525f75c3e2f738361c91ba9c7071ab58fff925bf792044596239d81c -46704c4a04892ec0a77e2351b4c9e52e1fb94032c55210b41f45443b380cc768 -5af57c7be35243a3d0719099836df53a496085d7d5e5219eba80bfdc3878077a -f50b22c222cee5571a6201d3e70113f0fc379a0470ca270d5c6e4082a4a3b974 -8f8bf09a1e843dccf1c0cee5e39ed85f30c3615d1ca530df55b3a3ea5cf70f2d -fa2fba3e942b34138ac99fd8dc33afcba36d95219d901136e4cad0273ca895cb -25b6d69353e557e4b5257c64ac262f38b92b3bbca1d4f2357f25949b94a217e9 -786fcf3d715a8647f6276265f79de72725d2ab56a85db21e2565fb64ca111dfc -3e2237d8d5888a749f2e6952163de439b2e0ae3779ef541972d248f1898ea3d5 -5acfb3f14091e42af2386b12eb414d480eb676295f2276071dc7e443b6050c9f -3786e7707ef77f07e1f7f120a6544291d2b3c84d1e6c05dd21900ab923af8a1c -5ae32200760fbc4823eaf9de690b9fe359835685f82f36d4644d3a91c39d3d6f -1d188d6edbad9253e561bae3f87130939979cba8b6ab2716e86d1d1d35390257 -3f8b795a8a6493e504065f07a8304a6cbcbf92cb8e6993b65133db100a5a1e12 -962a1cf4c295702a9a0c898f3a9129d46abafb2916af572bffe168ce88cc1e82 -3448bd62ab0fa1affa0c669f90c5636fee4df33f139a267fc9492fab613599a1 -cb64dfb9a4cfdbba40b33afb235a60d4a666d8178d2b174412f872a8f8198df1 -8b3768ea06e73f4f1d56b953d36471843d4e02eded01fea728d131b4651b6576 -a74601f2d57bdc6c07381587cd935e481f16bfd199159bc24efd088564084012 -86a9153d64ee621bdd503328ea9357444d174b0117084d46d9214f2a1adaeb09 -9db5451873391c9520d209e9b9cd350dd8e121785348f2b5d76f7741d8e5ce56 -b42ba82deb64bd20585646edaeae5f4be5061cb3dadc21a551f8d02a2a6587b6 -d7e674e6b88613a75ec0f8a80e5e18b53bccb86ba8413241fe15b29459dd788f -3b46017696ce1583e3d633218c36f2385ef559f687b9953be2369ae171736522 -d92f549ef58f003ae84c25f1824ba12912ce1bed9a4bf9caec2afa03ab06a7ea -bee845c6bcdb03ef6abd07c65b949e7564318d26af7426037ba8b751dc58e580 -cdffd068316a1a6cdd8158ef59cb404fb156467f50aa010a59ce15ce69a3f45c -60f4876a88e4f773a92627a68d0fe4505cffab9aa6afbbbbe2c6ca6531f5ce3f -1024b4e217d66ec6c67de62c37e44bee0e95b98f11b8c673062e2af995851613 -8e9de7c3363267d054f37a527f4defab8a6a714ff865e41c8f9a0c1cb3d9251d -5d2b1bf7acb24ff2290be376343157f7704bea10214b701a08455db5331a3a16 -435363440998bb9d8de1cb15165ea7e8183c9f49700485300872294cbd399425 -e31b558627568bc248d7565a87acb9c197c0934a4c554780f87188081adef86e -924f837411932322cfe7bdff98ab098cb022fdfeeb4646e9902848b587e0ebc2 -a54c5bfe91c944b8878af276be6fbc08866778d944ffe7ab86dd0064fccaf25f -6f523966926f107eaa85b12182c29bdd0991fb8c9fd2c6df567a3b78efdf6b1d -b695b8917b75e4ff802310a90c679b48e7c14aa48a2725c3b86320c84b8363ba -e888f033497eefc22105b7062c84a568e58434f7e43f0f5beb8ab00e6bd09b8c -5bd1ffc0bb85ef249957fb803738c2ea7fccd1ec349c123d442e43ffbe9070b4 -9565281636387621d854bf9816e88561183274fd022d7916fc95ac4ec74b74a1 -a2eef38dd7dfd4c3f2c040d91c20f637fbe05aa2d59b561360a1a643d59e238b -58b53a52a6d5dd6f270ebecab33fba821d5bf09dcfe432bf52c3082abb1b2b45 -7f0c4865f9140b7145cfe477259ee0c9ba5ef8961ffe1438e4504b24fa539bbd -a710c26629eaa04103dc7077b06b823ebb8bf8cbaa9a308b4a3c780f2091fcee -54ea943146b33fd2ff9a1181d1fcf6d7ffe8654015ad2b6360280146f77c79d1 -25242707d7ab3fa55aa4c7d3c18a6590f5815758fd66053d18bc68e6e149db9f -6b7bb1f7870aaabbf127d8d419f00be7bb1e039c31f600268b7b60f06498bd8c -0524559c858b993fa1cc94311d0d75bf21565e9a288ca18d9f334e14cf1bd2ec -90e4b3a02f6d3a30d02001b271ec47d2dd96c728772e8e410f4f084ce7264c13 -c677f577ec54fc31b58291142ed1f89df5516bf55d99a5666f3de6240ca45e4a -4b9b5342d48a722a4a2e5ec959931216e9ff349ee2efa03f0a36be06394ea0d1 -62a708c7eb181f3a424ccd9e6e8f001765cf4c3b3556fec13a88f5634607ea13 -97501850153ad0b901695e3f1b35b7ed8bcde3a9f194cb73a3b21b06f70df73a -735f8e1ba5304b6f88b2386725d9b251a702a2acdbc6f26764392a94511e9958 -1aac07c221e1d90dfade5e55ef77e6af76cc2efdbe70a456bfc4af12a2be9c4d -0675d938bba4a8f2e8861e3ac086aa54acfa4b58e7328ac5ab9cd71034958b88 -78d5a818e44acba9cb4db92ba87e47799c49fa415bcff011cae3725477c40bc9 -e8ed54a7fb3e6afa07b52d37f912a8fb6ace71ab1a8ccb9b77ecb3a046cc4191 -78fe33967c4747d2230a83338ea3351162f948bd1fb4a02a53f3439a2b994771 -a0a3f4ce21346fb2e4ca0940332ee9b46a272f739e3c13f32d0938ad7c858790 -0cf8c6a8bf6fb592b8114901e126e7c52556482784993b4d528cf87db5e7112e -1d0dcaa5e98b2f12ed5cf6a98af066fa67914987a8c2849a4f404471d8c042c9 -70ab5655e68c9eccaa33758b66a84677a6b21357ede896ce86be1569dff2d99a -8be0849a5e0d5ecbf26384a5d2af27acbbeecf78c165a022144f1fab586c7c46 -89d82caf949c5f76c22ffd5f6e32a60ae3319fbd9e6219cf029db80a084e9142 -79ef07873fb9d496552df20578331017e35760cceeb7aff3b4fd170cc5bc8098 -f5a7322402f06deafea01409cb10a5d990b316ef2a089c78cb3012d56dc16519 -1e49cf592e1da681c3c230d0adc35143fd300d5bef2d02900501948bb0ee411f -39e33eef9f98547f6b12188f47a22ceafc6e2e92b9d60e3dd8e9f99f70fb35ef -073f67591bc0674479680b469a5d0adaf213875cfa870c4e0e5bd953dd0ff242 -95f91794a396d90f0f167231b8c184418a9a481cc34c4fa5fadf95afc3c01aaa -aecd644e3441c8449507e97eb5b00a4bb538f2b355f0d074a8965b376907d5ba -030186e458c62efd856f36552853f500f5acbb6ed7a75e61ae6274fc94572189 -c3a7f20633bb5cc239ae2f7d8f1820bbf56fbb19c8f83a378b69afaf7ac0858c -b63dd627a3cc329e4eae14d3d3738d690b3d0f6d9f0db46d36cf726535ce3ade -ac9accbb7ae3a921421b236ffdab5a32c8714b0b67c719c58c685f3505adf085 -c3164d352c2e5df7b083a22b5c4a90b1b6860fe406448cc7d1465835dcbd0a59 -dada128944737ba23df6e90cc754f78ad4e4186e01db8533430926d1fab3b33e -34a808a0148a9a1e3ac259a26fd3c866a53e60f514003d33b9e451bc90d77a0a -5903ca17155dc3a8f7986e10eceabe3d0f152b9e3f77007c44af13d814fbb40d -062b554d27f393d28f20391a294d8fedde506417f276f2a4442d1c5c20c2522b -ea02f519802a3b3c01ec806d156fd5c40c71321d978d160a004e90781c523ce9 -bef7582cc802fa2a0a2b4fe491fbeb0725ce595dac549286b609855e6b16f727 -4d78a20fe5bfb086051fa99a1886878446574190bbe1ac3827602ccb9b78a73a -f16ad542486cf65edf006912797b4a387d8152c13bcc767b90f0ec98609f438d -6b92bfd30f6cdc2ebce3027067e817bdd0567352fc61846d9a7762f37ca620cf -2c37e082d50d27b33e8ffcc90896e058454d5299d2c8d5c90b9d82a32a866cfa -49a7cf5b89cbcde3e20da1cf6228a40fd975a1dd0a4b69494f28ff890aded139 -4712fbaa86482eccf81e7d84d7b7f08e26f455a2f01c585d483d73fdfef5ffe7 -4f7fb185b42b699bb9b08338d4165912bef88b097279f568abb6a5b713c1d905 -e4bab47cbd740ea0984f75dd5fc99a56ce239d23a9f41cf84f6417fecd5b405b -901dbf10523cff1691fc5b59689067a7a752e7a957dda181ef21f23935d62ada -f7d34c1199cfbdd1194be84740afa23c2a63c254475f1955682b145e47462dcb -4af3e9ceb98362461e8bf9a6f2114c7cb1e0c360eeb3d7a38445195044346d5d -e1e2e954bff5fe038eb3f7dcb815c1267dcfe58b0655a3052a12d714c92b4735 -07fb27c82b695146b75c9c1121dbf9b84e3cf46fb5cca0c4e7ac6a814e13f1db -7cc0c8afa4532fe98b2b14bb8780c88a50c7cc2f62eec7554dff4c9bb2032e9f -a400e6ca315a09a21d12789d163ec7d36089dcf61bb8060301f7e8ce85b89e76 -d36648f43926089fe8d997abfa48520d872b53ddacab6d12922dd9fe311fac17 -34d34507537194c1ae913db7c585674886dd70433a043c57fd3d4e29d4ffd186 -d835b5ee1ceedefa48a2e6fd7c9cae2dddd20a3a986f4a1e9dde20e62efbd2d3 -6fbb6b2ef1f314c2d5ce0ef74336bcd30af358770ad3964911faa77ea7103981 -5e7b80ab8f720f6a4f494db1045950ddaa2c6ee71ad530ed987bc6a39cdaf1de -6d6e819e821c289ffdd8f333286b9aee5dc948c24bd24935d42466ffcb7a37dd -d8d075bc80cd608aa283ddcc361fe96ec323d902f290c472d91388d64ccf2efe -5c029efbcf4fe890839f654551d9f7697c65b3afa5a7a131ba09ab6b8fa518f0 -84b7600134e741a7bf642ed6a89a6e643fc5e4f298a9a51c27d4c4abeb49043f -008b27aa816cc9f01be008d6658e44bf4876eabdb31551f6f037afec6aa9a18e -0d36b89511f90306d091adf9be86805eccc6ef2bf98ec664a74ab31e40e1faa4 -aba56b6e64b245cde40e603aafab777d3664f2ce98ae1a4ba3437e2d185824de -b5a98d4caf05675a4131bb34276488e70e0f97dcec92073b24ce900a23484e5a -f6fd0fd78da41892d263a5931bfaed9d9be1d1f9b49cc175ed59a688ad9808cd -c4c9596ca8b41a3457e811cb360af508c42c6ab285315f17b06a223bab6931a4 -5870616857cfb3e128c8b4ae53afb6f57f16e7b5773a0c864544e9448dede0d6 -9d7286187ea81b24f6333ac43f9c8fb60a893d49acb382afd8b0dcf12dbcfafd -525c635a2c82f19da6242ec5b29424ca53ffaf82381a0f04f676d4e07beadfbf -fc6f1ff324837605a31328b911ba3076f052883f75dcbb7bf96cf6b43af1e4a2 -2b302493f6d6404f8d127ecfe3faa4219fc5ca9e70f70928e979c3043c572be8 -9a2264cbbe28f89b955aaae5c8a7b85de2123cb230ee2e14245be7f457c81ad7 -d689a317f198f820cc9654bae52bb37e0a5080fe8b5486c00933c70ba9f8825b -f67d6188791794cd02da3e49f6313b7e7525b9a37f90c865fc07ed4f76f55f0a -a31f5a74292717ee0097b503e4ce2c9ba6aed45ba7ace14c7a8ef81506224415 -1cc2f5d608156ad32b9ba3e491a832becb7835b2d143f162574bdacc4aeb70c9 -a83843b7ebe41088482876ff20a0dedfa6d689e6ee8605c5be8f7c657fb0fd6d -b398293a6893adad17fbd10054b69e4fceb583f07e17b3ea4f643c8257905210 -ebbcc47e546398aa072d42661b4645c6dffbc22209aded7dbb5ce72fb0cee9a8 -f559bf7ebe803c9aa312020495e6bb98ad5deff86c27fb0debe0bc6e03dc0885 -b9f9fca800fe03905b5257f10231cc4a1144dacc145a1885f118c7f118b32b38 -77808529c10f5b17a3d36862fe2d3f0f663bea8d8cb74d2668a52c20afc7a9cc -2c6813e17dfe1ae0ed3ebfe82bd172a03cca6a9fe7a5036798b7f5f90b87ee27 -f8c00e98faa115345c1b1d0a22a4e7b434dd0c86cc9c5ae12762dca74c939c92 -f8588efc81d26e4325ba6165e099482a117371e0c75406984e085382102106c9 -acfdbc79d9129d2495fad67d125a8505024d70d612cf0a3532558d9cf2ff749d -4fafcbe251e02ca193a8601c95d875f906dcc440abd7468d0c0a8994ec07369a -bfa91f6ec942a60579fc23c52fa0960564348cfe0b56b49bde8e7027b8862b56 -29f5b3454f5a4c7b35df8de8a47a15a37f3a47aad8149489e18589f48efbdef8 -79778f8c2366f7e1866c3918668221e06821bffad087077787ba6a5a437fef03 -1aeb546ad045a52a9a06c83c13eac6410b23f4f562bf29c8a814766f37dd53af -a51218545f5f64d6bf3808babe703bee2ffe03afea3684d12e9de0c530beca08 -b613d5eca676bfddc6d3a7ec85fd73043800cdd2fce153584ea8572bd210e072 -c9a0f25b9ded9ec9d808eeb97bffca0abfe67492eb3b56c7db983f630839dfc0 -1f7d671554523af2810b3ec9900b12e95b502f52af60747b1494e2d9bf2ab4a7 -89e94edc102385c66387512bab50ea5495f98b4d72355ddeb70f5f1114f7eaae -c3d85482c7bcdfc059165614237131737f0518e439bccb6a13ede9267cf845be -4c16fba55df487b98ef2a7af2c6e3588cf684ddaf3adc88615dabb73dbccd0fe -ab06f1efafc4e7b3f077f02a23c7d05c3b5766cab64b72f5da62ee996af0afe3 -73e59cf9aa0346c008ebd3a503b0452ae49c6f3801bafb98a398702559ac194b -37fce3b71e2ee7eab8e32fbd65ec56c538757a596548cae6115d3e2762cdad07 -3183f6772435aff3c82573d091ee4aa933c35d0ba2f3fc8c0b9f51db198ef8cd -293bcf237e98238eeff5850172d4f42a345375c7e57b57ea98a244c61d55fb7e -3e4438c9b41ee433f6ac93d90f9e2ff4dafa0c1940954b4fb9259e9809f65578 -dea1499fea5a22148c07050469a40d40d1894e0423710995eff8b543f1d26f3d -1dd39a42db94d54898a9bdfb22f4e95bfaccfbb72d0dc4e06598fb67d62d6559 -cc8e01993ff19aabeaf412c8e0fc8fe45d50c9dd0050b139a7d392c3482cf7db -37ee242bdb05663bfd694b47efcaa86126bc477a8ff218b40668e17b1d9c9db1 -3bd80041a2bd34c789bc36b69690245b882d78509b98fdba395cf5375c19010f -c2e26dc7329cf9a3ddcf27d445d390ca8367306d17b7766277a546219b465563 -a0a77c008d9e97372c8ed2e0db751ca8ce19abf83a84efa748e461def39f8ee2 -44c43a7d28f1384b671fd75cac5fa28fee078f88d3ea92c17ad88c75f0de0643 -49ef3c204aba345d4b87e7f43392de1e46b514b4b77178e4926c6b1d6c0b60d3 -198447d592a2bc47b5dee02aa901d9b8a3bc711530455e3691500172a9135b27 -e449aa505ff90d8b2f5d5b6100adb2e9e6d9a77f4b2676ac0c158a88d3056a97 -db1844240c2a645435a4b35b1192fb884102802d790b15b15add25d53deb8a57 -2d587422a9ad68eebe6cbc7302dd43c9b6012cfa7d1aaddad41341168ef329e5 -f929c9b57b5cfc107f7d2245c983d98ce9cc8eab759f09ea3300cd38084a617b -6f76aae4001e47662f1c8814601decaddd2f86fd932e54cccd36ae960b8c5451 -a36645500f83223a4f886e5e819ec1f5c20b3d99057b8f0873c2f88bdf9b0e0b -69bf1287ecf4e17c61500bd12d1b7b223082fb89d4a9259985a82b5e0a501a37 -850dd987d093b6bbda1bcbf65a37d899a3e70468e736ce74e84124089dd36069 -74f0ee7ac48306a996b8cf06c00bd8f15cb1a38febe8f06b45eef081d475dd63 -07cb14dd5d173697a9cf78b93b65c16e18e0f81fbd3fac2f0f9e6cac4a6b87c0 -60a6fef4e8e6a661347d36b4266e98dadf246c647339e234bfabdfa8617d73bd -f43196c91d85897807d58baabaefa6f3facf8da61d587de9fc0e7577a46d6610 -5ca0f56123b30ce2cc6e2f23fa31ecc218634c42bfbbcd840f8771b894188bba -527f85ed8f74e5dc5b2ad3abf771132a14d2e62e1f2bc479ae8b1106180c51ab -21d7a34137aa8a0acecf32c5bed3aff8066c34904abbbfa88352d71d102de986 -3372ae7d34bf45633fdd4358f3badcf0b00f3a81e49183a3aa5bdaaef9ccd647 -d43320e2aa493f5f55287f92b516b35911e167a4e16efd6806096496b91262c5 -2174b723cce81a1438318d9d2e2c0dd50cf6ff37d2745c79ad28bf1dfcef1a70 -437615dc18cdf189b509577cb368b19602dcb315515852c2595b3ba98d5bb973 -825a15b0a4de19c481c5fbb164bdb0e12a0cb702ae1245ae1759ca08dbdc470a -bc7f1d9efb4e480dd04d2c17e41261c9cc20ab6a00a41737df413a18c102db14 -4ecdb090f633bb71c3179810e05b0714c2b8621d40208064b3af499077c2c9d0 -ee6705bfc2bde6ff60a5936f2b242b9f588c184b97a3e788295f33bedffe89cd -fea8cd99bafe51d8432175e342dfe8a2c533fe76c49ccd42c1b3872d9924d760 -8f1878932441515d33631b996b5f9116a51ede40393eabf7e9e4208512ea03bd -967e1033e8fa9dd0dca782b1c7565342c2d9edfbc7e6a6e2e4f73c8350b49599 -ff391902ff40466c1e04ca213bbe8077b147da9c3b975468aeb3ead4492e96be -8f6af0dd78fbbf4d8258d61ce40b94c42a2250e4df3a5f0e7feada93cf613462 -8aaa997fb0a1f6e508ba62c97b4ecd68513dcb0be409609663f881c87a04a23f -b58eedfc7530d54644ca56a1d72588511b2c101019fa4842576e567f387d0a0b -96c54526d6491603b3f85e861df91126eb25d7b7aecefc114afdd1c294447f49 -56f29357d85aa10149d8b1534bd52d404127258df79dbef01b6e05ef7e20b957 -50e4f3c5eea0c53cf0e613a3324a0511fb89715d091f61f24f0981eac0486e52 -0a9587fad67b27215e17e9774c509adafce3f41b6684964101e6f721ed1f1feb -e76101b4d399aeff534f42adf6e0ee6b22c782e0aff2941b0c2a2dfdf8fccd66 -3aa8ab54379ef174093116519e3ab6eb68c898b9ff166be6b8780d782ad5f05e -c99a3ecbc85d8898f5e804029e4226669c4b569921b163fd1b3cb07a986d6e3e -39ca2da295749c737bf0d3854bedc4696ee08d9e5ee43441708b1ae616b081cb -92595420b64abc959dfd57bf3ba7934db1fbf7c964511018a64a585bc7f45097 -bd09e683206e71e5d05fa3b09e9b56fe13ba592107b2d8daee9c96663e5b1587 -aa377957fdf7db3879812c346ff677948a98a53a8983eac09bf961af60304541 -0d2a2d9e841edd3989af39bd3a1a1743dde31b472bfd80e188c2f65687ffa11a -bbf4b1fcbe850bad7e61f82aa17d0f6f5f96104985cd430d2d3b6c844220e0d6 -4a3690cdf3b92fdc59205482ae6b8a9f7063693b8e4647517bb3d594f0dc950e -a5ba321957bc740867def7f90d45dc09d99ab4c633f4a65cf3fa3632a5c9ab29 -a7385b07bca075df39941ecc2f2a8bdb321a14de98e49d13be0a3c8af7ec63cf -e27c451413016267da7b685fb3abd2b41ad6d0cb972c6c14762c74a953be35da -f0d170bb348786ccc74c7ecb1720ae766cc5738942127df9af338ac00a8574ec -e7cba7cf2998ca21a8eb7fd80318bb64a8947cc4e3512c6ccc8c313f46ba37f8 -f677651f64e6fcff360ca85daa19732f7374b7d25519ab76ba61b484cb89ea0b -0f57768b483a04c136084bbd10d36fa4a5914f2f0bb7446766977b738be07917 -9569ac6e6d33c5fa7ef2f1d019042728adaeab1d0e2c929ebd280c065d01d2f2 -d6441fc74b41d7e3cea04ae9c38d86e36d2c6b8df0cc4027eef45f56819735b6 -b2022dbfb8b536224d3d2192bf923957ecbd6e3a7edbbf54a58224ee694bde8d -633126cf38e0d2810ac24ec8176851d7a59a193b83e52016ebd3e55a79046c2c -eb24ea8d6b7c67854b53eed744ae787fd7866f5cc54a1b704535b94a0fcb81d6 -85e32529116b325ee3693e28d6e75f6f317b728698c688f699039dea6a70a100 -2d2bcabdb6009f16178681c5d7f49e1fa6d9c33a7b6538054efaa1ba8241aa23 -91f3a1eb0df1b826ff60c61ca5584f2fbb98622ef90649c8cc8a1305d755a861 -52683efc368184d6fc3c3c5d4cc46021625f12a1a3af82ac498bb2509ec7b0fe -7c065a70c0b4897a1e2d8d341c4aed77bf88c8ff0bf576c0ee8485f8cc533e7c -00a6fe77dbc49e3726aed6d665661dc493fd2668d6bb6c1f543b0dce7ebce7b8 -c8ad6f35e315da333b13206e35b4755139731b093aa38999929f8e6c005580f0 -231c3b4e9c17f4e367b7a171fe4e490e900a21bb7e18b844ce82b435508ed381 -e4d5abe386c8a70ebfdbd8d575eff5f121009385dec649b6335d973335ff904f -a09738a878cb4ffee65279ad8ed29792c614651c45bb89a3b53d1e0a8a3becb1 -b25fd839ba086e1d050974c97fa42a327450e0f2be7438e4c5fcf782913400c1 -21f473fd74062b858745f0a8434cfa76cb89289eced88be61db5343e4678ebdb -91fd931d6299603da5c097e8f4223062ccdc52d89ae03a3d1a68e660d7f101fc -6825666962013119de9fa6aa5af265b4bac3b1063e8fd922b545fc9f5197ef86 -a9242214ff1a4b01b5e68e6a8ce8a767e1153cadf648010ee70dba79fdc6967d -42e705a83251315ec553769efa6f7c3cd88379d5847cdc1fd0878e1498492140 -8486dd8c5f353b02f967df7cffe3b44c8808ad92610009a7adde4c5411c1f396 -c2b717b66753e00320ebcb43280c6287676c2f9db2c598aa2a4d5fcf4d983a1e -1e1a3011a6d6c3e30ce2de607f5a2480c74bb2f379503e3ae4b058901ebdd8db -4c83a2b44af8e1c2f7d89f34b608ec49062e05f0fce81633d513186b46bcd311 -5ccdd2173b246b2ef877243dd06a599db76c927b6f99e539a5fa0b5829f60040 -f4de1ca4b6b78f78b5d56208823cb35b1bda9e77da247b470d3b3b5e29c5f472 -2121951b99aa5cd88f56312e5fb95ad3cbd3c43e18ad80da42d300ba840086d5 -17806d75166c779716a525f31f22336504866abab855d23265b81327a7a0c051 -e94934236eab04ee0f37f9e54c9e9ce3566b25b4cbb18a9ed57acb4564dfdaa0 -44f65273273158b97c198dbeabd454609e95f1e80268830434ca0d9e125c83ad -2ceda508d21be3b61a25e2c7415e6dfecbf192fe8754ea9fdd3db7310e2f40a2 -61b537fab243ac8b856f1c21cc53e0b67250c08abf50487542916728ba200f3b -2aee33b929931d05e2ee91dfef3e88a2e0615c8f264dd3fc1a79f71c1c5cb12b -f53551f6cabada8e9622aad5e6a6650196b5844b6169a8b1f4abed6f47e407dd -47656dcc771c48ae7a9d863ff1b3164e1bb47c5bbe8ce7e42f0609db1ddd2623 -896ddd1d56cd19fae182fb66fd9c7b57e3078a4acefea37a77c5d496d4c2bbd6 -e98e03090be36ee31d6e03ede1737d5724ba7c88369dba7654aa22abb1ada2cb -f1604069461c31a8fad7ebd44ac1a1d89e33d492a919b5238e4801998c86ffc5 -0c6cc1a56d40cce60f6495ec8653bee33ca6fb04af0bd01b1b42252db17aec95 -d155e09df2dd6fec1ccceb37ad47db867ebb5278bec97314ddab5eaa1eb5b833 -03e0189dd86f0e86fdaca9381cad3f9212885a372d3137bdd69de912aef854f3 -582a25993b3527822336f831c9873cb991a12bc05c26986398fd48255a144616 -7155bdb599a91d4ee8202efa5e7246ea6c438d7d235d382d3fad7d74b5cde5a0 -a151218629b5fe76ce8019403cf18dedbdb210310c0fa202627f2a16b61e252d -91631c7c2d644ee16774f41261b67faca3c0c202c4d96eef57d1111b07999ad1 -7ed9ae36707fbcfbfad323b48b110dd251f2c575396fca0393015172e20818da -a21155c8a32546eb6d588a54e3c08264e865e3a2bb6876632a4a4028dfb9f42b -47a20966623a67a13f32ed3eb38c43f410e06e6fb27c1a50727844dda47e6fa8 -cf0cb5ba1f471f8e004aa677968e49a1f6987905e350ac24cd3c0c2f37698538 -603d6bb979b04a3fb78da19e41831521130406741a94aaf35a561255f5c02cc0 -82f4d8550822193038028cd1a8aad66365dd347c97f43cef2c0b777c7ab3f6ea -788045447603134515c65a28d39aafcff578befb030bb18df6c1d7c176d055dd -81607c6096053a8c913e8f3b2e10c64a4557c6f27c75601dff6cb7a47c4cff70 -63076160e5afb24e88d07939fef281aa7abebb9593da52c937ff6052dded6e36 -1a74070fb2499d52905e6ee91bf82ac61846462a171bbd0ea6563397f52b8bd9 -e670bb83eb98987231d6930dbe406270f6200fd126b1fc931e9d2cb17cfd0e0d -37261b8094d868de7717b5066c8e9a5caaa68c21eb7f43ce5b92056dce98dc1d -0faed0956ca1c9ef57e6de499d575accfa857c8ba92c67d02338bae6be911e0d -a8ead476647a76db404793eccbe877a21c04f8e3dd455a4ec06d89aae473f0cb -4ae627995730c5b15c24de761914b181d7f7b4095ce096aa6ec14aef349e09f6 -537574e3fb5696b0ec7e4c442ff441dfe299096852ca82a90dc65d3f9e2f7923 -b30cafc2bf623f464f8d9f094e53271d885a6e50125c1f7cea72cccd3dcbae2c -38ac6d5bd1149a4ba73c3f2260c6404679c56fbbfdc2797e7725ed63cbc1d0fa -951587c7a42519588f0116344c13e80acec98e58194037b70be00452a915947a -b76f04f0cf4bb9b957d29896d5e9697c2b0f82634bb92de78b04d0c4a87ea8cb -417b562f9e1465703145130d29e610b7361dbd65d6614d4b6d4542ff89d6e22c -c6b1da26e30b9f3bef4919cb75a9334245a2f9527df4565c43c2cd05e4bef841 -49795f869e895528272beff1f39ebd63668064d3778ddfef6fe4a4be0b8ff414 -150dc74cfb7bbb19ff4acd5fe75658cb5748feea63c602c383f8f48535cefbc7 -808a8c07261ee15295a2e52506e849737d58d022b187d2c1863c82d11df1dd6a -eccef89ccc25b63808cafeecbe4766faafa497e976ee6bc7ecbec52c12571e45 -bf80879592195c692e58876cfc5e9eebb2177e6d5b95e18bf1f6b105928cc8d7 -5ed19827a1d4b1e3592f87c46a717200bcac48627cfd4674e41d90dc4e19744b -4c07f0a43b1ae90258a4cac371085a09089ef9a125f17a69bf338c00a1f5491f -5f7336ffb469909af6de8496e6c7461c9314e4f6cbed6ea0e0c38be220e4aafd -4965a3466fc716bdfb59d1d2f0722efc42a46f125a72318d8ec43da52aa8ebb4 -cfbb11d2c6fea7765fabded4895d838881f1c5929d07a73f8a2851826de7a227 -7d485cd6cb4133da20b62df6b19e810cd52859796542c279e091be2442fe3b60 -7d05cc5e2cf4d37f82ae6ef720faa0ea22ddee0ac3a5e7bd9b7226998eb5d8d8 -471f60e887866d73417a0902c4fc38bbdab3170a0e6973626d4fea8aef166708 -481659ff17da79b56f3a7da7357a9b4d5982e189649cae8cf166a818cce1d03b -1cfca035562a73225cf981e918fabf08b0d423741a5526ff804a77482a9d94ef -891d7993ab84fdb850462e6fe90e0f504557a5c5b840b855404432ce18f8a4c3 -ddb2ced91676e648dcd7773b576360c3c88386bb2cd3de88185d7425771ea4dd -257a6a54e9f7c377658e0adc70f0caecba96d1fd1e376e91554d0edb392e4f60 -913a7392601efb15cadad9bbf5b6c53cbeb5fb73825ac9e0b30cab99d658e09c -d21d4f7b76115f79e612f1cdaa2f7abcf565334d3a013ecd76d09774d0130174 -d21f0f27ae72b695a11458d20f0393635af8a5e92d6b42c32984b4282ac9b9f2 -0427943bffa0501ff24b66b7aa584e9fcdeb7afdd830c01504058755c530650e -7404d8f4f19034f642c3d9c50b4ebd52e579d09d24300d7834d4398b955f914b -2ae913b3900166b07096026cdf61347c37261029bffd3c02b646fba3285761e3 -8475426979a524dd7a9dfd4fe64303572b9daace4573384f5e9230561ea481d2 -d79528189a40780c3b99df297cdd8d2a68f088a1dd864636a0e82a0906a876e1 -a3b970d8838604ea0a3d536664357430ecac2708b44ed30d05a0d453d21de014 -cc5866d3c36b9f6bb2649879f3cefd467d038a9e4d006118069b7126b2030539 -5ce0ab36d08b39ea2879de1d5d34b39f67fec99a91c1163e8317e0510f553686 -b62402519dd2c8e289cdd01a97286c0f827d94b2b586ccec630a223b0134b47d -a16716a4c6023271ce49faa415ee79ed6448f1d944cb9bce3f336cf286aa4698 -5fef2da869535e77b75411ffa3950dc8ad6ce1970305a6900761ac52cff47d03 -1b3b8cfabf2aba556607ab906eb7d61e54627bef4462c7f114d8cd0fc6d09b61 -9119ea9e986c01fecce81c64dd74f58883721dd7600cc467296da6639bc6f9cc -53f82ac7ff876d67324264e7576d99a6bb83612b92398dace911cb1e0d280984 -b99a5a5bdc07847e400172ce09592a1a9c2d84f4dc87042036b8e3464ffb5f1f -46acb004e29328e1ba85a33e51ec73d7dfc4f2e1a7ca921e21e2e934220584f8 -ac9e32e41ba662957c311baf98d51d6d120217340982ecbadbbd5a9d7c3f527a -38b1677d0322b6f4cc28b583288558f7413ca78d1acf9ddb5dd8d2530c62ccf7 -71f7359565ade21c8dea4fd08ec24cdf4ca7ed3e16e7b4df0b4abd161d077068 -12935409196a7c0798bbb101e7588abb618a4e4739c13e154234340e36d8f2e4 -26eba891942302729d8c55d38567434c4ef57072f4c859653679b94c8378bedc -49a345f557495b60dcc46eced3d7c1b0b9883edf8bc79a8599efec98e763ffe3 -6274a25d433778f425eb942dc8037b9b985af3205f0504ddc28997604bc72082 -18456cce9f8e426a5dac090d91473365a2901d509d335ea5bf1c5b564565a8ce -f027607052ef823638b900ce497890dc351866d55e39a6d26e3b505b7e5a3f9f -a3e28bca583cca9402647093a9ad751e2390681e99dac2d3d0f36384b35325bf -4ad65ef847102fa2b47598d64ccccf4fb2656d16e0218e4a5c2ff69582d09639 -cf8d83c13470d525be935f69b129ecbca6b56b10aa220e18515be5760971c5a3 -55d19d7d9cc38292ac5c58a507e5a35b0a3bd5d1f221a6c461fcb4b9cedb4103 -e1068bb154b57757559a2ae96030baad73841a232f529cf9b93470d9a5f18f81 -22e4c8e8bfb3e027207785a352e3a6058c6d762e07124bb00411b6ff05adedc1 -440411ba70b4a164173603b235c71ac6a50c566e2e736cb9474d9e94db81a0e2 -69413bf0763027458a70f03a4d4f24ca376235c78397dd343cdd7f98410502bb -52a84ede7d641d5eb2f5fd8f3f1bf743eabd7d262a8bb11ff1875a60555b2994 -8f6dd4932f6852133f4d3801d8bcd703831e166be167eeb613e77b023afb1690 -22eeec004022dbdea0c14697d2ba61dc4f7d3700b31eee4ff21c4c57076e616b -214c03574df173d3d848294c1e061bf1b1302fac02e37f6c9ba0545a3c678e4c -1fac86e0803af2dc80276e71d9637c9d40f53e5736db0c9a3398d7dbda6dc21f -515165ceafcf48d3a0a09578049d380314172af191a6a433405d57333213e64f -361bcccb4c1d5bbc36ba1a628df39af69af05855558fc6d4c1b2f6999df8bdbe -c696d75e283cc6f574cca2c87a5d3e1fb3747193d51bead3902f8a9d21c59204 -7d0d55913db817513c7311fcc743722e0f03e7408c843b698199aa6c3866cdc9 -337eeb45f23fcb017e1c0828130c45a29fae87c258e2739486a9593a7030a054 -95967598e6b299a25d534c2cc5d501ce6163e4a41b9d6eeb5452f4410968848f -9ed131b33cbd3f610a69cb2a1d373a5eab0507e10dd233753503c7460596c067 -0fe5dcaf8d6e2354c380a489d4be4db2cb2a0a5e614acc741db537c41ba06789 -892edac1f1f1695d891ca76a32c4785e229517d11bd05bec4dc3f996f03611b1 -2d2d96684bc4a35ccb9f1cda038420acdf2955753865d7bff68c984fcb3f1f95 -63c211a628129bef2e41c1e63744b0568d005d7d2a62f38dca05ba9459e79cf2 -e9bc91ba50265eb16d2d5965f9425c1c2d5352eb3175082f33507b936b2f0c2f -942643b9437e770af26974669ffb292890e22e936d1ddbbd5d45652e2bde41bc -ca252664a134bc244378f958339cd9bf8b152cf4852437cf4090b4446106b1ae -5c7a828cacbf144dda3d4626b0e9c1e05d8ab9612214f72a263625c7e5ec6f27 -004fe97e740ca9a52da0fba7befdfeffff54cfc4b320dd9ede3174daaeaf2f39 -3f16d144400b3970312e34dc09f4bfa5fe458bb6d27a58f3b0a24d467c24f42e -f7003e0e3637e2dc0fba526d432bd145d653e8df80e89b7b46b626381a5bae7c -aafc87d97963fd383e84d48f6227f9e512649e4f727dbe5e68f98651126e7114 -d6acdd1882dee5ad14a0fc39f166704682ced74bee4277bb07232b009db2a0f0 -5751e74ce72efd52e2756ec32425a7c6df2ca1647432cd1b7b10f265659c5fa6 -9b82a7d55ea1a64bc00621cb41a1fba823e42a5faae90924482dd648f1765f95 -29aa33c24221767a879ef2c4425643da85f208d2088ce1410b53c62717705e27 -c6c44842e260ab3b4fd85bf297e1fae51ea71acf47279f11c3557a0763dc2c55 -939b49e97663b71b9b89ba8028840fc878f899e5b8d74f05bf4dd5de996ddf15 -1658f798ce0ca2391fa34b448549b218c0d4291e12aef2bfd1d3029b140f8e6a -8135be50fde4443c57d7a7df12c2003b44d7ad998bb5bea2477ca30ae3fb8914 -b9badf55bc588d0d1e86c7945f8e9275a71831b291d4b7294fe3bc74eff32b6c -7a8fca04c89ebe9cc98a55362dde3911a0a2f2195af608a6174a9ef38513a4cf -8cfb3bb81069cf1b31cdb481bbec9b167569ae6ed035ef3c87d49b879ede1923 -a2135801917bf934e16fd3c82603d7b9dd900fa66113e53bdff92ad1bfd4a8fd -ca7cd980e3cf6f3e5a5bda9dc5820aaac5ed80dc8765941453e6ce9404db9ad0 -76d9e588a5163bd338ab8e518571c15cc1ab28a1f3d4d7f25ee32785cdb1321f -c2c4739fb869b6dfca5528e55e2057bb17e1c43f172bf7ee629084eda067ed3d -1385baa978f9c2608e4911f90b4bddbdd228f5987a1e49391fdccf9be93cf092 -f1e6c6b0acbc71a831383ff2707c9009aa05d03563a0a228e806ece60ca3a1f9 -2ba3918191254ac421598e707fdcacc9c3f7fb0c752332e30a015c612e8e90ee -db9c08b8fd401c40599917e4ba053a58bc61a4e1352dabd2475ba4869fe84fe5 -a02b690d866a6c26329631768b2ca058fe2f6bbe0874aeb61154bd27252f5255 -64f0825c0014f10c7ec976716f7b23c3e86667cf431352f7dcc58e271842acb0 -da26ec49987c0442a484c3c3c300a69e37d7b3f21e4e50bfa456a312cd877bdf -409806a6f19a3a742a869a1515a1fe2e5c3aeb1db0bec37a824e3b9a4ebb5115 -3c24d79b893556df8c8d0ebf2688a521fbccbb3a7c7930d8587cf3ce8cdfd119 -0a0d1c0261c5aa3040b361138cc7d9baa8d82bb06fdb396557f00387680b18a9 -cf7ebaeacc7a7a0c1052c5f4103ef4e1c4f69ab697b1ac81c4b13e2a107fd1af -97cc941b34344b47eeaffb9693f8181aea6b67e4e5ac71450e49e11a603dd499 -2bd525cce1570e0871903b338d6335b46a31ef20afb6ef502949fc38d68aa8e6 -23b1ac6a18b104d2bef4414b887dc988b281f09d285b4a9df76b122528cd29eb -1fa6a4edbe53c73453abf32c7a50be1157c0b4480c044945916cfbdacb8c0da1 -7e2bcc909f6cc16bb749a1ebd595c377686d1a6e42ee7d5b27f3cf963c69b005 -357f558907b24a9106c8f21eada1e38b286746f04fa18f15291fd3b617c550de -ecd68736f341be85098fae47444e3f20b3cb1b5f168c44b1eee1b10184b3c7aa -ca4480b1c62caf44da2e75b9fa1469c85509eca42e494bf7cff1e83058debf28 -9d2df8273def70fa14f360270dc329ea8969d12091abadbbbbe9e083b7f447c2 -2217cea4a32b9681a5cc6f995f9588e7caf5b7a77876f29d8b9190d9ee9e5eaf -e4dc55a8786d9a351f91c97dc772a007f4519a5230bebbbac9793feec1dcd65f -f1355a2805fe499dd1fb0ab6dc77898f1e4fa0ade063fbda15e7f456c4d96fdf -adf6d4cd1d0d506b5da663c19c793d76d53b14f7f6308feea0ff5a2d02aaf0ac -e47e36157080ef5412f956327a789ab3e05276a16f1433f1b9154251857366b3 -c357c352eedf6f65a6f5a781f2341053341dda8d0456bad5d0663e1162425b95 -6f9b7eace1dd2a98b625043fadc847d051d1d695d8bee1afa9192da3a21af8e2 -822cdf6d4952bc6df010a1e6c4ed232d33276e26a382e65daec9fc7bbea69608 -706b7f5f39d14a69570f4dbcd481700b48c5d4e05737e511b897c96c5c7cb598 -5696ee6320546f235dead3ac692bd38715d38c0c881001e89ee5b9d83aa5da58 -532b905a17bca3b8e867d2da162e7b230df7bf3ab7854bfcd07ab5a4e4a2ec23 -866bf4c6ad0f4c9c75c1d82347cc66da1831bb9c2205cf1563e4c2efef922eae -bfa1808e2381f8dfdb6a634d189d5aa4559b829428a6a92c63b1afdf93e72e6a -34721ed8d0d6123066fcb96dac4c123ae9444a8e826dd9ce9ce381cdc4dac32f -13508b60df68c5229d1495e125044e4b060c2e208f1e433369065369ba1caace -eb2c4a0f8e9493c0c65e7695938146dc32457165cc87311f111aad7cdf97d9cc -2133c6d2c1fe773cadc95a789dc293c387ac6fa594cd43144520be4297a32d33 -720ef94704cba5e0d20b628ffc5489c1c3f5beba061f5d5308fa82fb6bcda1ee -4cf4387a9dfaf1c21ff66fa4939e9f449ddecc0a264406ea45efaed33f76f6ec -e50c367d8ee0fa4a05f8a6d41679b548f0cdf598cf7def0c5e3d9c32ff875d2b -895b23185cfad73a052fa4280996cf5b346c2120334f90dfb3c5a833e5233cc9 -9dc77ff7160b9c1f022290fefa9ef7ecc00c441f591ea1927a0ec1a9575f3099 -4eaef8bc471e8b6f663bb0ceaa7f16c721989a9ff1405c852b04a7291e0a90bd -4c851c5b18276b3e6e324a5f35be0000c7cd1523b6ad59f2a7d5688e2b1f1569 -71f7390ab8ee5f2d8bf456ff5cfd1e17c35469dbfd0426c200c6bae6e4e18159 -fcee66dc423c903c9b9e328e1edf53dfc269fc0e383b75d4a07d530d304979b0 -68be546ff0ec64608dea92b1955e00dcc945a3ac63704df6f48a84afcdd4bb8b -fc9b2c335a566c1e19f7f687c4723232385e344e8b1b73f62d9b0c0cec0d1605 -d5c4d00a9526ac633b8be773f1cf3b80ce855ef826243addc90d8d7bd4a5face -99b61a182e1f34b67f7934aa702f2c93e4a09b71e4625db7a1980cb42d97fc7a -904c658a6ecf863c253ca1e2ac04e38210bab9dbbee0be7f4ba0de4adb5d55c1 -defa92c814fd117bd987c9fe90e85f6133afc41e49983118925490b1c6b65d59 -3167aa093dec0b39bb05e62c34ccc08b8077a2ec8fb9b4bcaec950c5c7998652 -913f6279871f1ff3a2ce1159328a2f918febad3b25e1a9034c7eb54872bbc6d4 -b1439c799a23aaab7f90abaa2a0aa11cedfd5aa583883c29d6b25860210360a6 -3e90e79a13dc92b664cfa9c35819f34a2beecb77e0f24bdf336fb0cee093d34d -9f0f9886dfaf3ca545bde0f820565e2ccb8570794d3b0ecda2f702fea58ed09e -f86cbcf82ee89d4dbee6f9e824c049629b4dcb4b23a57819eb3913753f628eea -786964e48633604c3665822005ca4e9a7a12769e194f58ca7d7da5f954b8146f -8f9a487c3403801a4ad20b5d3fe388ff7b30769be9e43936720ffc98b912d465 -9e8726618cb19a836a81edb2dcb9d1d405ff47bedcc044446644bba2f8cb62f2 -294462e2a4802289a412a72a4ebeb97031d4ba19956916318f8534e798eee975 -3850eedb198a5690d86896eed105364d7e8713dc1cd855cc2562bbc3ff8be663 -dc17c062eb85da6d56fc1d25ad29288df928820958add7b183fdc70da907d41c -686aef26da51e772004ca12147682ddf8f11b4ab508dbb51e13f42990efc5a79 -71551efaf601806e7feda29094d1f4550148b14fedc032ac207bcb8e28862c3c -3a0cf4483580c378f5772eb22cffe2a20b0779e7b948ec3ff3253eb83d221813 -1d4573ea688374be205137ab99db43c6ae686af2bda7cee067373375e8d3a86a -34da137c2eaa157ef698b8236769ee6bcfb44c1f621be3d8899e5a4530fd103b -9e99e4a212e0e7a42527c773a011a922926dd75dd06bbcd3e95c04395ba0e228 -6fc9c9b2d34bea57f85a3f6d09ea928f8347f5946c40266eeb27d2c341e617e4 -19d34cfaaaeb1c5b84e2bef68122625cf8ed23cb9d02b9307b9c220edfbe5d75 -2414177769d0ec55bd6a35123002ef6e7d9f1f54ef9fbe65ccebf9b0181f7a2f -d2bfec7c070a5f869f2cc952ee911503b0fa8945dce8bf9e7df4101462fa0ffa -6ada3241f0fa97c65f5c1077ac5e76f433ecfca896552725d05cde6d573708f4 -1a7bc46e4f72f9179b4ec20ea56d34d3f8d03a1d8a2b4fd51c642c2980639910 -fe39c8ea179d29f0071197c3e0caf45d6a46d2d29a80539da69e2fd70a1cc7f2 -f46dbd99a503179c17da9a352d38f54dbd16c38db19be77c7d80806f3134d1b1 -c63a1a9143bf0438955e5e2d1a3481208fe582c16518af007bfd8ca2f74743fb -a441a5e1cede2337884d7a17c9b384ba2b1530828e28276a956997275fc18684 -21b8728a434d9e2ad305f562dde525a7ecde23a84b14cace97e79c33f1b49093 -1d1e7cb04a68b41b2f22e247e39c2f4f925d5417ce6b1914788cb1dde97a1edd -8744464081051b0c5bb61497111e9e4d1ab13186a2399bf3ceb66a1e52d640ac -22ed5a90a969bc1a56ef44be3c481dd8f06d9a143aeae5f221c314c79d468d37 -25bbf880256da501fb8314e830e4fa56638745cec6e41ccf28de2075da3222b3 -67d0d941d70f6a4202204dc8da38c65e23c09ca67ac7c2a2e361b18c2fb6f9dd -83d071e58b9b93270f977bca2b4c2c51341a362c4cf94503fddf30d0f9f91429 -de76a58df6e3e3cb2b7607a130a32bc3dc19f0e6ac0df3e327fd9db65133c053 -71da987bb5d91c7ab6724468791f3f70dcdf25d1c8e17adae1733ad0fd48693a -036168c6069d2d0234de65bface177d0270e92e1c423465767080374b282b218 -ecc7c21e0bd7147af43616343b36c7449cd2a097baae5c0b84e20b93a434b026 -8ef6292583a1aee2e2acae72a64b70803a4779bf061cfee4ea0c2d76952edcd5 -84ed218515c0758e014fc3aae387f0ece38979c6987d24da93d2fc80346ad0cd -5c0c96865648a74d940b94462f980bc4653971463e0f79f9e53babbcb0a71af8 -f71c91dba14269ef4d4f7828cecaa7df1007129b9d136a66321f1659ac9cd2f1 -54a5a78fe9ceab12b3ef923c0a4437d71950c9a3cfb8e44f2aee896449170791 -52484b8a3d110e69d651b3ce22bfc51d845a2ef0761ccd624132371ed0a3bb4e -9669cd27853cb57122f9ef19933c78f66dc55f3d518df51f74b650e550738b33 -ac33f72b975dbfaa031077baed9602667840ca13e238cde527a8195588da428c -7e18fc2c83851bfd50a706e298f87bef6637384bf7d304919d39352ab6930e07 -9169f4c844f33b1132971f5d13276e7711dca2158c1bbe55490e5e8f98ea14d0 -52881839317717cbfd47596a71d8d4316d35984739089d95fce0a628eddfa0a3 -37685fd04a487dd5f30d7d27b7b68d01417cc30b0e3a1de3585479feede00ab2 -1eda971da147b66e591813c5076878e44ee1fdd2aea1e61d274cdcfa699d09fc -dcf49b13679660842f6043b923f07426d1e8a70656db730d8cdc1ec2dce4d9f9 -64f851feb1f773ea034eec4c20b6af13f71e7eda1c7f9b9da2c0a1fb52d645af -b7b81e65ed919799c38a009950b5e5c92f0818f1eff32701fe5f24207d46a4b4 -b01ef12d0dd6279480b24150328f0460a915981373333ce76015232299454399 -9e38a0db2f499985be3e466ccb59a978a954e271a81057624b24cb4d89e0c804 -9e79c147c56e86a5716f001b3583683eaad287ef2caec437d64de1e006d3d804 -35cd94c8c89e0dd9fbd257cb17b574c0451fb22761734b5e8d941fc037d94517 -8f2a7f2fb4f098147aa1da321cefdaca9d861d5cd383ca1d5794e67916c42e59 -1faad7a45629c48ffa027abf1fc1737b1619d596eb3f415066a2a46ca8833d69 -1461c2d857abd536a64a523c6b9ab331bb019cb3d3391dafdbe4dd8b45d15490 -3638ea44a174f194e6565ac41ea91f6eee60dba8fa8e252a118d52e9debb541b -ac888f5ddd79719613a5293f46f90db7b22d3fecaa4dc3e31b6a5079153c14e4 -526d1c1b1acab303ada0513bf4f739dfff1e8abd772a75208643317353c32ef7 -60ba32e999ecaf1419f395f29ba7afa03c60ca2673aae47bdabaeeca2b758dc9 -e1e4c9ef902025f7d49559c53d7880111ca386a2503e242399f1890f5db9ff32 -ddf70291beb1135734ad64fb16687fe7a7ab0101e85189d9ec112e8faf2e9670 -42779a2433bcbacb86a3db5eb33c88eb17d7282022b2ad07fb4138188fd01cfe -6ee1112dfbdbf3af7317138fd00c22b3adc2ee91b109eeb0a1258b6d2521cc67 -acd872d7838ee120ff8fe7ab5127f2da7fc38b5619b622bdc71a1526a571860a -028be5ecc750a56de6f5b6b2244fc9aa5f8ee7b6dd76d2c44f96ecbf01f82296 -fc43b5dacb0837ca4dd3f7a207687af9198830aaad5cc95259a748912f148665 -cfb52ba801b0874fbb17b0f672949a39a95d01feb64c0b45c06964eee1948dc7 -d2de83c5abf4794404e7ba0b7d55f2fbefe36c683d4cf0160f7c65c10c55de9c -a5f7c67432fead218e890e89baf53e470fbd5f07df90d38f1095acac15360090 -55017bc00f69637e73500d53be9992946c3ee7b0f98733b15bcdd247c9e9a91c -3aae65f8cac14a471b7b86c69fc38a5b9bbbe19eed02de855b3b12ba040f0785 -ec9ea47cb4834d3ed072fde62e941fd067cf9dc83bde4673de59ff2239b7e834 -4012f6629d5af87c944ac39e65b0619b91beb0cec74f261bc14254e4a0b7d97b -dd501eb3cbb472fa337a1be19d3b179fef2b36faa828039bfd0df5602e51efbe -37b67c4db9a69e6ec7095c1c5ed8ea66d9fc29386b43ad4295014e50deed3092 -4d58026b0be817c38e352507fa63e62a3c9b49ddfd99d8d9f74079a9582ed180 -611be43f784fd320cec0f5e4cffc1f36e2eb46d2fd6b416ad59905dcd91c7a8b -0b2c39c5eab9c673e191de0ffcc95c48b37a7591ce7a868183992900d507ac40 -5fb6e9ff1ad0628c3a4977559dfe98cec8d2579fc0211eaca207315338b75fed -e371d4c226637266f39056472e6a439dd30aa00e51484a88be167a8f50ad1d1e -96f6f6954a346ac69a41a8e89e75c0449c2c0e262f56f521d0433b03fb1de267 -cbe3a5923cb22950cfac11099157a0c53a1023250cd1610b02fdf0239d1e4784 -f47de59987d6c893358f46fadea94fb5ecd751c15b84fac3dca22d2f7200b503 -695900d9c70891bab3b50ef295520687521d31e084dd12e2504cfaff5fb63c64 -f4804f3db3cca4294b3404dd42378ab3480ed9df63e9d470427af2c176e462d2 -7e21a6305ef880b9eb97da2c6e03384289d4aac8c88219450c8315e4b64ccb7a -859358ba612e19baf9f51eacaef6b5820662d278668175e6cd70d3ed44aac8df -ae875a8ee5ae6706147135f4de6bb36eac9cdf32842614f3ba707148644b0e37 -ab3b12c7ee88ac4fa05a5f600d485474696e00f4a990da42b504f393badbcd73 -4be3f3b39c0c4f7bb713995a70d7475e374bebc718ecec01088523bb02d62120 -41c2122bb4c059ca40e5dad1aeca84f77068ada0e0c8e13ddf09263fdea45ddc -b5fe620639e25d737051d8bec4de390b441ed9e95df59a31f5ff3156dcd42ab3 -b0d7a9a6a354496321904c60666d9a9a284686abe95ea47d4395ac110b7f43a6 -d400be6345a1389156875a426251aefaff3657e8c26a920aaacafd1cd343d390 -699e8118f8381efe315246449374dbfd551ac967add3681419b8bf02ce1883d0 -4d8e19a6604a6a58451c5ae258a344a5c698c20a18a1324f7d145c5c48ebe457 -f4e4cc1eaa1d51684344785c581c9ac4e1f4bac603f02cfbc8119005ea0d7979 -4a0e99baa717b19a1854eaea9259fd7c1b48657b9e38f64e6cd9ea6115e37c62 -080b5de7c2b5292f31888ed33fdbf3cf85499e4bb019b9691040bfb0dd4f663f -87e8f0ae6ade87928e05dfbefd9e49c047eeae4eee4b824ef854bc0d21754161 -d28282a976152160adcee2d89f43964d0ed1b370f60274a1098d2ee179c57452 -e6f3d687f384f50c4e784ac30cebb363510522a22c0eea340525200432ff191a -2927e0b70e67cbbe3d87fad2435eac9b7b9a7ea1b3458e99493edf7a6a021a2c -e7dae0975b739fd279aff8fd0cb5aac26fcba49fd2c353c2bedf09e2fac1f41f -609082142d76309e5eef468022a431c59f6f407850e730f075de1ff3ae0993b4 -0e2ee19a4df47fa0c380e2080d4e9ff90c498570f802325fda69b1c484954d13 -ee0fff53fa365525447a2243f32533b0375b53cab9caf8f851dbfa5145ac0679 -1dbfe1481cb43a356b892989c4a3e9c9dcf76dc6247279e7d5f30c068fa5e96c -a832db7a5c7f500bc2303bbc50976cfa7771be57a3d3137f6ef54c2123136618 -c8f531188f84641bf06f7751ce35fbc5a5f0124d50f86f57c188b1ac7666cb4e -ae86a50c0319948b149b2eb3e4c117b2b91a2e0ac2fac82633e2f8cb3937043d -aa77c3091e8a47775b0ac55b646e4f72a97382423850bc91aa1b375999c64571 -166673bdb5ebec623088c513be1444b0098c8eef500e5356919a746d701f3e80 -f603373f3708be7031215554414f8e6c915f6d67cd6ea821c82ab09b5e87aa28 -ba1611180892c337ecc2f91165afabf70e6ccb3d1ca4a92b4d40a8271087cee4 -e36c178cf40c6cff985417799370f0751796fcd9b66ab47f33d26395e35a61c9 -e1fa9886e71c996bbf461984718c2a5b848b6b49c4b6a257279c6a5cc79c8f12 -848508bd7f3d983b4635bdc8347bc4fe338207f44dbcb86d88617d8fb1b2653d -0db18f7edc3db6e006648bd836613fc4df456bfed8f341f3e94d407c2b0e64f1 -6c275470744a56d56119782d380b01d768e97fed4942ad1df7887467b51f259d -9f9abacec8648028d13bf31d1922f4be81d75c6daa869f351111661081aa547c -84b40d315baccc019fac8e394ab54c23ebb2c1f2dc2db93dd8ef19592b1623df -3777496a3677c81c9a2333551f1cf1bb3f2f9537aa7deba7160f26770e32fa87 -f5e2719d8071ed7e70692971f1ab61eb41a81fa1d7060a8b99b657dcd0c16c69 -fb7490d97d3c3ec7b80906933e19c056f750eeff9ee4ea9a517af623aa0fde30 -cd84463ebacf3cecb96769ef53aec7e990d729b09eeccb16863b132cb4edc7a1 -3bf982e5502a041d5f6d110146353627b14b3f3bdee6d64ca1631fb32fd8f75e -2c2675c760a7163c30fe9d8352fa603b36925221d8dc1de4cb34dc251691d5e7 -0f5f3f26b5a0ef4abbd897466c8a73188a6a1dce07dc7d985a51395b411086c4 -94f9e515f7b92387bd1239399b3d22dbfdb6470961ae5eb7297838970aeb0bd8 -eb50334d741b694c895a474f4a02c3d34ad188bb35cb9b5d9966ec36dd906669 -ea83488b314c83a76c63b4aa89239de3d257c5e0162c335d08e9c3ec82116557 -4071d3f5ad23e60bb893586390d83593cb7c32ea37ea85cf52029d8cc843fa96 -f3f552427edb5edcd20d85dddc9e9e60774fb267acb46cae0dc22e1413ed1a9b -2dd19d9a663dc8f49456eb9695fb5fe338eebc948977d28ecee486b8970a8cdb -5d07dab163d17216342e3efd02e68db4d2e6b40034e921d868f0fdacfa27c4c5 -2e14c20b047f688aa96da5e17de3912480b5d0f829ad71309e72016f16239c98 -4632f9c8d256ec67b9e59d3a0dcb5a90adee89bd3d5998a8fc0e697b9096bacb -1938cea1c30c8eb8f92adf9abd344ddbc191d1ab87c200ddced2982d41629e94 -a15f8c084c86b0d16b7c2dfc7365e9def82f34b8fc9200d053d74e956aa0882c -70a4811f8a305da56506b1dd87cb7c5c930c0e930039e4e2e769a00357fa512c -cb396fcfaa7d5f4b51fb4c7e90942d0a3b697a3f7b2e350bc5e8b5bf83c663a3 -4d020e9f9b792218c159f3269588a67c82ee511da3576466df579b99576d5571 -332ad8f4c7b82a1db2e993060a3c2e993c0754bc4fc3c5790e12b0606cf143c4 -dd9676332210eb37640616283e9954917efcb63e354f88b70aeb1bb27f4394a6 -38608ff9b5a35d0915599a3ff25c876420fdd2187b0ec21763919af15d9dde35 -2ba08179063c273f5df5c6f1d9b771e974098a3b72c87714de3e858d4cdefdf0 -93415e097c603237729d6c0f0d6f8d0dd83905572e64b1d76145f7ab970bfabd -5e9adbccd21a7a8e42e54f02d3f9cdabe9c44cc49c4ecd81c9c87f10d44e689a -97acc7d2f4b8fff013e6cd124211d5dc04e9b150cc5100977c1a4aeb153d5670 -0fc536d3a57ef3f28d675dcfb81f6e1f64b4b4f5f55401ae7feec1f08ecba350 -83a44088ed2bc42796d67efd3ec8465241574878338e2d908f4defd5634b1246 -379b443f006134e93b2139edc0cb5a9d7621617212d7461d37e1a42e6f9ebe57 -3e0ef1e3b2a556ace936c6c69e1fb533b5bb5f453ca112372284d443b0116c35 -d9fd7bba8769e40475f646275490019c7344d304edf5a32776b52427ca82d596 -0d561bfda6ce9725318442dd0b69fa0fcd737b25579fc17c527c32bd63c12147 -bb2c1e124084a0a4934544c53b54a1f87552077d3929facd95c45b1f3373b14b -689a18dd146a34dde710cedf03843bb29e0405323a8129ff3a978d6b11e19ba8 -0d011772454e1771fa30c1ac4d0d614b59db84e259c10a0aabf890da2418e9ac -5a18265b389976e103a65d0893f84a7128bec31a2b7ac17f190083e5e2fcbf78 -981fabce3afc7925f477d7b3a061173dd23241c08cc9f1e6589cdfc5ad2f48b1 -068d25231b20461492d7247a403a53f5d130fd85913e7b9a08b2c0747fed51e9 -ad5c39388fff3e0e9b0ba6a8428ef684dc96678a36608119daba75bd256e8a6c -e88e7ea83c2b0257d4db4c66a4504a3440e96d7309fc9ca3f24c226b857bc7a7 -a94188df30865b9d69b3e08d0a08b9fa886780d76a73ddc8ef3c8aada5018f13 -7c45715ecb779599b7c94f2f0aac06a33d7424e1174637b6e59741741aaad084 -7cf2832a41ca590e3a60dfa17f73165b3e01cddf404afb50fcbfce4663f4ab6e -f44164317d3eb0595801bac6dd0a8364c28795f00b876fad837c7a49e48dc8a8 -b1ea98a2f18e659cda8f5d9cf21bcef007319134e205b9e7d9be72775ba1bd2d -71434ad560a66d6125c16300a01685aee2c0aa3d4f8f1808a63d348e5f02b42d -025b58441b3709517e7bcdfcdaf8af30f29675833aeb9068994597ca128d5678 -f1bff5c2c9e823b2d45e6922f59cc01668b56cddd5f1c93dd18a151eca0e804a -e88021c738ab04f14a24c2fc37ebafead48c2941440045069bcd1454a57e3c78 -df3d39d5e5f3eebc15ca917b825fd43034e46747e94569e731190d59f8e61d13 -78fcae15e55fb27d8eef3cf5170ae787551b1ee3ee253b80acf45ec3b7dfa02e -4a1e3eb9dbd4be99faad507e7f3a9278c3e1bfb8bce827651a2bcda12fc342c8 -7f9cf3704b192594e29edc342314f91caf872a64c4b988cd589f18e907323eb9 -3c213b948f4a3cbde305ba3dbf6d18ac017a86f3379f0c70f717ed5cb78a8b4b -0f882ad5c553b6e5095cc388783a0e2f06d93fd55c6ee44bca0ba03d6a1b024d -050dc87f3603cbabe887695f5e6728ff102f69b6022637161a0bf2676a687379 -bbe0694e92ccd3fe31d45029fcf3bc2dcea8c38760430999d50dc0d2e346dc83 -ed1023d3632ff142280907cbe4691dc89371a6f18abba3fc6059c6c2751a13c9 -c0385a361c2ced35a06ab97320237ea8dc9d6f64fc5ec869e6c7bd93b13bea09 -2711c2e9a53a9c55ef8b80f7e407393048db97759f9726a6481845633ca6daef -1892254a7f2a4b8790b729e203aaf0a8268698dd9cb57fa1ae43972fe1c51473 -b071cadb77d59a99f0e4d6bb2f60ba353a5f37ba59a57f12e7b1325246351252 -4bf19bd703ba5dc17ed7964c7ea46a3510dee628e375045d0a5fd78ee8db785d -f45f5c2b29e15945d35213073a89c73b85ab5a4baa26a3733efd71f03202a08c -801d62f0adbef4c7428b9306d8faad9e124eaadd5abfdb0de9d504d7bd360ac7 -746c416911686fa5f759c6798f169c55817d54ef77e4e691a1670225ed1d1b30 -2d0cadea00b00267ac98159effa92238ccdc11e8988c58cb174a7c378fb4f951 -e369e64c279e0e52190e2293be5a24e860e0f5807427eb0e2e4ca757305b7903 -c3e18aaa582fbd61c83761fe7581ba385b8da6e75e29b8eb3b4f60a146953a52 -82261e0cb84d4173f1914003e1c956c34ee6865fe92a588b7ba5414570644714 -bb3609074e17e75b9a7a3a0ceebfd75b137025f1bec04e0875894400e75c2be0 -caeabeac218267bcb7dc90e29fcb13450b17c425025e966c1dbf72742dfef330 -452acf51749241a5cef61b90bb92d44ffdc28bd87c362018d1a34e0e6e6395bd -3b297694b2d6c6954798af7570a4724b87430cc23c689a37aad6cda49b618e41 -328e0fa01b251784566f805fec8cdd125c233d17927972ab6a4238e39292432d -ab6ac1098bce32dae21b589e15bb82961740f9371f7de415848c1433f7b1cd9d -38a8503c82dd151338459bfef69f7fd3311649d81022e466c1acdb1e2bea187e -e4d2844876dc5057044b7849b52801ef9bb15d2db56b617e3bbc71a7b7efdf5e -a479308d0444872fba5883098c7b910c67fa9fdca632ca95186f4a282c4557c2 -a78accb9c7cc539b6791c623455d724fb72d53ec1f34057e9852141424093784 -c14a2226d7ddb0949130e8c95d9b91c32c908e6ea386a2563c3afc3a73c3cfda -2083d941e80537e780f8a42f2cec22b9ffbce31b28e834be6330778277e0f959 -972143d934d5f653484ed0a640572e19b1cac1d1c55a891db99651039e528127 -7649224f5ab959fb4376c80b24527cc5c314e8ab9511046d30432546a2494940 -17eb48dbcd9a3beacd1362c68454e00f2530f98319f23765dc9c898c46c953d1 -e16eaf13538d4dc9175e1bb9c9520bf14d6406f3e5518cc781febc998e35f5a5 -ca7fe77aa7dae4088043b9901549ed38d9f6ebc3af35a41c63093f637aa7c4b4 -a0fdf27d3cce78ba17cfdb75232ccb07088e5a710e713cac1fcfb5f36d5e714c -67e0f5c03e9287ea9e67c6dd7fa75d9a26b6671c820a818c2b23c42b581720dc -fcfca08ca5376b591b3d95bd15e4cbe8d797aac02c65a7e11537a4da7f5a5bf9 -d234be43a377d232749083063928cd86885b4c9539e51581ca671364685dea91 -81d27fb43a901b0e4de10310076d378d8db9d1dce16edbf7b87453cce4a80c67 -8f77b001bf36602c730be2f69a37b9456e357b1b8664eb2d1b89cf94e817cbb1 -1a82d9ae60f7aeb42394df3bfdb02aed48f32152a555dde87b5dcc458835e886 -1d82623ee78005c4b6f691156bfd12797ef20ec5e00d53483b1e8c79f8f1f46f -e6faa0cce79f418833add9a67195faeabb73e1e9807a340e783a42b9cf098704 -1efe5a016a90398a8002823e16659da6c913bba04174fdc7df920d2cb19701e4 -e5968eb90c8a62057c97dac75d8ff4f5ce3688e97e0d20436ad16d4b589d986c -77aff1f909083337243c59a1e4ea1fc89103c8389256ba14e1cb1c71ece869e9 -a51e242e59b4bf240d235672d545840f1c83f250b7fc165d09895e7b9f51a729 -2541d062c9c121e46bf145ba961016644e90363811dafbe0992dfacdb8d850a6 -b0f240e549e42687ea2c8bf23032c201f7e5b16f530099097cdfea2f05cfcb3e -53cdb10aa917f4cd94cb53b1e9356118b5e9a1ada4636a4293aa6c7dfa4116d2 -513d25b0d0b546a706a185a7f9309eea5fd53e4969920e11c36fa4b833b3bf4c -0792ba2275c004e9361300a3cb3f03e20ae313263b727ece49d2714b2da3d752 -10f8fe5004effa42d6e6650343b1ab47321cf811e1b51a50d37699155cb8fb75 -193fda32c12ad186cba4f02bc76658bded443634e40969f356a4b3fd878273aa -1d86d487122c7cfb7961fc85c09df390624fa891198eac778eff878cdc920e98 -1c615ac8c425a2727e73e8bd7fc99d82cffe9a9e3e858506cd50d1f41dda8ffe -eb93391c17be92eb6b57bc3e01741aeabe5804f2a7be862fd0d495446818665f -6b8e8d35b7357681a6449ba9a073b6d6d2bc9663f1b1f6c5881d9e1793603c19 -39d4c9f602d7532c0b83bf0719f0b38aa1fb7b587c3dd544a0fbb9965b0a9d5a -849a75245728c3eef61f83e50f969ea729d77841a4b908e173b88edecb82071f -cae18d20f95bb4a3ba384508cc504bc1d65987b4c60e718c02c740545e3b97f0 -dc94730b72c73e81d8eddb5b4eb9dc94f2f7d774ff43daa6f0249ee522e64af3 -c8ed48f50fc412414d3d4d77973ba870b1fb6b397944b4ebac0b3b222343dd4d -da3fa7394d5858375c6b64398eb597c91278f2fc493f010833424b13692d557b -a02e72d5c610488e7d803662ef06c716d1b867049ca9e63842301b2b168fee78 -cccd5b63a332343cefdf18c725e6d6038915e62044caf569600d8674c2a76151 -b9fc26541f79176d796f7f067a30122e165d9010df9aaf43a7dcbf3db2205637 -d086e6ae2ebc2baeeaf434cce88fa6f5a7549b30d4f9ae5b00493b764272d86c -01d0c1518ddeb7c6fb470f05ca78750f31ecc877d88cadf37dac09914ae8d648 -acb01dcfe3d37ab6e8f66425b19908457d62b4ca9c987daedfaca3cfc016800f -9cdf23eb6959ea21e0764d788063d5cd0c5c2f87414b80d219e0c173e078f604 -bf94ca18c33aa9efa6ecb846cfda141ee6c7e01323d387ab63951eeacd50e1a9 -626d0a1319b3111c50f368d538a1c8e0c189bb39e0329a849a754ebba51e5147 -74e2038d468ae8a73c15432cfaed3dc981a6bcdedbcbc1a077dd3f5ffbbd1069 -0700f759e50098e0d3d1bd94331cae2cedf3187557edb2bbc71100c80a9f78ad -800b200a589750227414822f11274a629986e90526e046eda4221a44e72d6663 -9d1bc8bbbcade788d500dcda09d9173bcd96eb2f5ef058996cf4f51c96831f27 -3cb50c8824c15d0a25c253404f0cf93356ce3ac1e3ddf6e35991a54ed6774771 -8c6273e6217b2edfc364a1c179ce66bcd504c0fc371b918442e38510e8bcc272 -949f33c77cdbb14e66292bc78ebcdd18055eb92083cee63b70093726a1f82e7c -e74c6d319de2ef067bc8dd3d6aa04a37391063adb0eeafcfa78fde0bef380b02 -2f4e36e9809ab4bb381de29876e3841a65062cbf0ff44f77aaa103939e1260af -8d6782cf4ebeeef633d467cf5fdadcc3305ba5f4b240d0dd98a36825d87989cb -08cc8278fb7ef17d373e432ea0e436d7d882992d3355378f45c55337c9d861de -85d34f6017e5f89298e08e377c1d55a74bd329223e88681d70675ee8c17051be -e7523bcfb65c0740f1bf32a906bfb305460e09b261c2e606785bc6edff3aaccc -6a998bbe7ca2e0d068081152f965dd117cfdde4486a8f8656962e33c0914fe0d -a14ab03db5161500ac72ba005bf58ac94d86b4184dc7603e3368e30985454c81 -40b6a13923a82f892c680d8beeaad8d8aa34ab324b28bb95ebc4038897a4a037 -ee3f64226b0a370b0ff0e7b1c26e7986def3133168b401bde2b9c04b49830261 -8302c456b106bf23e1a52195458e219173165ff927e0a9ba432dc29fc06f96e4 -fe94183fb9a7f8ceb1270a4857a3114cc942cdc7929b03de23599f1a244133e2 -20b25eb8dcc82322b18e81f3efe56c8668f98258bbf1b36c5f18a7240bf03fae -1b80407007eb3e73e67e8655bfac27b3350ca32f6d0d7c4cbdffd15e1428079c -8c43f42bc50a6d9627c9b6b758cddd00aa0b156f11f197d8b496a3121a5b64e2 -2274d96006037c190a8d848c90d13d7582bf3da7db63b613fcf705afa43de90b -59e77479558ab7a32b5bfc7fad8e7c9a477dd934fbec7622817cd023670a49c0 -a2721ac2447bb87a87f559ec3cecc88321b1d4c65c8d7de54a8def554ddab31f -5a975fdbb7f66c11f76b169e3028f0bb143edabb0474f93234d770e8c4f6e048 -e16aead36eda0b963f6b56c7495fe2165b0e7e65aa3e88881aa8c19cf4634f75 -ee504112398571be0cb87e89d40adfc94026054ce503acb0615c022b2d258ca2 -30c902dfca8d71d6b4004415c0d406135085c5a2d4c36d3eb8a4364853245824 -3a122398990cc801e768b3cfa594ef322f01b43faee5b2dc230874a562de57b3 -6c60507b49fc7b9eca43ce7352fb5686c8e397c81661eca028e55aa9a3b7837f -1cd973493cd7b1eee0187ee5723296b5779fb65c76bae14885392aebbda6e787 -d7a02e9455f1f7b7a2e86e3f17cc5191bbe25be4599a81f2000b28da4625b6ba -8fe91a7044c5d8c0d5f8a3341000be5b1acb18116e450cb820e0078fee03b4c6 -55057696b8ddee72670b632296419dc85d19008904b5bd40d7274146fc7ab747 -4d029cc611833e43abf15ac551dd897bdc76727360da2624c0ac3f3130176460 -8d0220d75b419cda1bb836d5badd14896372fcfc1b83668ac7c78ffe43da2f92 -c28fa45182bad41357ed8b4fe108e7fd938212da3e59bb3c8bd076578f9eb71e -50f29ebd3b3ef3604819707868dee8d8fd0895752a236bb6c91f40b200b43f07 -ca234ee627f6dc1c187a847620823d7c4e622c5512380f908d5f1e9f48b32b95 -8675baf0235aaa0abc1eef97d145b89d9deb758daea4941c4ece9d526c91082f -67a21f58d3d379912572b1c66706b5729a2dd3af1e9430eb73be7eea47d9b1c4 -d290423b38e645ac5bed4f69aa7db56cd970e98bcffd91245d02ff7e524a4727 -af8175f7a6c4aadd9c85947ea3d265e9eff6813b4e8afaad457325cdec5568bd -9f20e6cd6bf06947558d85e079959586cc86b61d829e9605bd0f39d6b277077e -90c14c1d8534bbe1e256f90f2317b5b35db874b58c8b7b2b9783ad7be5996ec7 -eddc96c1922e819fe7a8817a8381afe16939b4ce9172d2b85e9be54aff85f0f8 -b3e3faaf8dbb9f0bdea873353b41e5683ebe43cfaf508c3b939171c70f582234 -2808865bc64670fc950cacc27da66a71cce97d74eb2428d33f14da1370c3c01e -9b7210523ad8b4feede7231d7fa683f4717af6394eedbdb95ec946e6f76c6523 -0e83142348ea23d6596fb7ec87abbec96389b9fbd446162e5f3dee518c187ea1 -f5a9bc65487747b9e75c21e098a9bf1cfe30f38cbdd837c8f21240d3ee72fe35 -8722c1a94045d4b78ac82328b8f2ce10ca875928f8e334e3ab966bb828c96e8b -c5f670efe6a844ab70e1649782710ddf5b4b48d9588c5c779d90a0886afb434a -d4b6f1bc46778e6cd0fcf4b698e7153ccc431054800e3bf54eb01a23ac29da75 -4fe22d1e9ad1ad509fca68ccf3aea9fcccdf3320d68b8041ec6a11242c8b4424 -0807b8d6e8b0c683f16ca4b982215d096bd71403d771f38f409b418eb636851a -6a2ba687069282aa2f81ff2cde7ff2babcafdf4ae1c717472522e92a72a1c267 -7725485a031321e459f45a674b8968ff68bdc1618d59ec30ffbdfe0cb5706fd0 -9f44c47c9ef25f48b2cd05cb0827f6921e23f9d3e3855a79419d4631198ca85f -da165ab60210a306154f94ab5f69d6dcd03ea855f5dd226092cf8650f42f9351 -b270cc011613d57525399e7f660980881f044fa0da7161f5f46f258232fbe34a -5a3277505b82e688a7c3849b794fcd03f33bc5e08c8c02f906571befc53000e9 -b47ecd5567aa52c5c479109946002b522b79e3641d3de5d9c76a4bc8480d46ca -f4d24872bec5d1f057205eb0fee6caff25e83a404bdf0ac978eaca3208d802be -2d3893dd7118383d594640bd7a0ea109793c26f91d6e9e2b610a79522c64d4fc -5ca3ec6865129bfc85e78d8d9b1cd00cccc990047ff0239f62ef8d842257ccd9 -d45682b6fd46f0d8aec91d9abcf7a03cc940dd66f6a0efa4d70520293be09639 -0edbf5d1a8b15d60c45ed5738baffe6cfd17a64085d60b9f683ccee0ba80e4e0 -3f26ba6e0f8ee65842f5c1fda82bdcf790023899b37b0201f806a3815e29881e -ceb764cbd74aa1f425bc15b7a7d3f46c2561c1dce091c5bcb40619269b504c95 -dbc96931727e342d7da904e014dfc4748d59755b6d257644f2015d15a2251bd3 -d31cec5cd51b6ba383009b2da20edbdac440a52affeca3cf90f398e7348691e2 -61c38d6b4baee9bcd2ada86cbdb1c8af4b6f1c06bf554d11c0309f5e0b234035 -893e4fe55552408fcee702cd181df7780bfc37423a4d705be6fe62ad380db1c2 -5f91298cd0e5bf2071f85fc148f20469b9e2417ec34cfb3ce289c844371f6b7c -1ff5e1d2fb809792d48840e7545caf7698fd8ea220dda2162c2f82906c8c4c5c -61fb4825570d7c732a88462494a890fae5949835d52c1a922b1183859ec2269a -387c7eb1e3f084e25575d1f70b0f91d57b22d9e6d3b862fad567988396f9bb22 -a90311a7af4cb6cc7b34221415de25ee9e3641f855105dcb555cc13d9b273884 -1a4ff877ebb3d58f545314882034ea2c49bfbd42d357fde9afc830aada4b5b74 -a1f1a8b9a2e13c17bcfe499db12b702b6092601dac2b71dccbbd0f2f2afbbb91 -75cc4d45172012e742c7bedd20e5ae428037d061e0a96b884928900e2330673b -69d47d47c2cc3dd4f55ca6aec9960596ae578e32dab8230ae12da15be6c6337b -8a4a193da0a7ba2996b3d5361366c80bff8c0ead4e56c5d6b7b1f246b2c40d78 -7dd8da6e968d0585babc814a7ab2b37442d2d96bdafd530ce348e8780dec31fc -46cb1817c0673027ecdbe9c6a619e4836ef44d651ee0d609cd1e83e1e2a0a924 -26c2c8d6b3974856941eaa86fdd1b434f174ef82de79b46b4234289ee2f6e875 -c6bdeee6cbf59a107706366768576915ba28540cd90217c19da7d3236956a330 -faafe830843e199efaf27786b3d151b8f644f0f9b2414657d785440d111649c0 -09a62bd75a8b6bf8640f8d732d158e296363cd2e4e044d6ad57fe6f5d3db0e8c -e4befdea8d8d544ac3830b2a47523d0d73a4611d1747cdd1e45fbd413d06246d -d25dbc337a00a2fdb1f630bba2b01a51e7751d05ea8ce8d14ee9c36fe9693123 -4fd6295263f5572040008b7d9c88afafa5ab5e17dbb290c1aaa33ccf20c02490 -ca82268807cf8d7597302fc030ff0bfd995cdd8aff45434791ca56db740738a6 -59500fb4c1aed556987d9f1aac027940fa240e6798aa49891bbebc1102cb0e55 -2dc0602edad14710e1a675fdc74b46b14a65fb2ec5877919fcdba8498cafb022 -a168a16c5d686e942c916b037f24eaef65d9cd0b9668c10f17cddb8ea132df33 -19cd19e700df79558bcf36eca26637b6300154d294daf66e174421fe45f25e62 -a76c3c48fc96d67234837c658b8588b4b7eed532439c1dcac20d34a96cc6eda9 -e7f07378a77a974e1b713576bd911c0bf4ad1017efad04494479f134647cb05e -6c6a1e0afb3cca8286f0b56a4529f24f4a2d9a4df78cb396a2d775390ca518d6 -31979a7874f016c4d34e09d9b551fc6903ad30631ae94b37b70be9dc7628c9d0 -ce3198321127da76c45405f6555c1c8c60e21427a15d4c0ff6cb590d947588b4 -9a3b6bc77d9dcdbb8ba2d7d07d27508875efeec416d8001ac999135a6be7700e -20912f1b5bbb0133ba5d53b22321be1e18797fcc9a79c1ea32ce9e7180b08239 -7846b35347216ba5cf6550f6e74ef3cc81cac6ef4b01537003c0feaa58b59503 -5541e2a1c6420f9bdee377faee9d8b0c86e94b466b6dcd9a4b3fcf2c35667ccc -93c03ffabc8838919134f5c8e91b5f783ff94fb9e4002dc4a05b82df0ddcb1aa -a899c03027d713a7f2f52f971131c7ac5184d2bfcf1c43432e5ccf28920b4986 -95be9321b3e3563813221c06248e6f4ff01d6bb6217d6baf1a64d9fa0a15e534 -9dcd9bd4e5d784d3272eb11b6febd854c20d4093839e36394e384415e56ed90d -6e30521acab8a4497f70a4e967edee1962505bad1193a398a227143b9dc0ba07 -cc9aa44fd3ead0fb2e4d225ad6a35ba06fd39fe404d67c79954dcd9059f4bf50 -51f521be9ffb4bc24bddef8482e9931249abbaa33a6885f214cfa4b216a58220 -c322d54283299fc2e2c4ab61183086b0e8e650a511cdabcca64c28e735eced9f -38521eb60ea0e5b78d61595fcc0c961de9eb17f36d68854d0747ca19a6424ceb -134940efa3f755a98dee56b78f71bf2809a4848c252d73f1983983d8a37dc19d -34c1e657a8b328abddb3f48277fb532c2ee073ab454c0816751eb66cc8e732ea -da06875d32e6636be0605cd8470c2b893de3623da52cec766f9f30cb51aeca0e -336524809b9132bf9d541995cceb3b9e3f3b93b1d2e403ed94de100322f62e1f -9504a090574a3fcd4d0120dd853b9804efde4cf44a695746e0d3382d69f5e4c8 -689f7fccdf6231dbcfc6d1a3f911e050dca3eb8d6013876d38f79e332fd51333 -1a39edc06f4a3aedf10125efbb9a3b63921955590431a460f659faf91b1dc8ef -14dcfa9ce4d37c7e225685e89c8d33042696d506d84950383190eb2c935f016b -11e9a681a5d1cdeeae1f22b2017c63f18433ff48221efdf4460586d93009317d -b6ba4b2c4f918c53da5631ed2a426ddd96175ae012d463947c822c51cca2c8e1 -4b30bcd6e519c10bf68b36080419d5ad3db7aff3072081a3fede21f7f1ea4701 -48b758a8af3711b4f8c7a427b0d63765971952870fb580deb8538e5bf063d042 -3d0db851d60d4b5e551bdaf9f5d2cff71310dc66fc80e04463ff901f9d450221 -26a8a828e431a4537527bb13fc10804e8aeaa7885e780e8041d1f3ec41162935 -cae07c888ddc77b34db5e859c59bc1529fa7da92c3e61dd7148448da7be5b5f6 -1eb4b4aee23ebfe0acbf8d8139725f870871da3e22b332f5af2ca66d8233ccda -f09025f95dd4b4480b3996ef19f6b9da8c3c696f3feeadb24fe100b22c8f38bb -1da00f1a81425fdd02f3cb957cf39db222043573f3203ce4412d16c123543656 -d1ff361bd22219e15a2f116ba971338b9cccbbb739d554e102bdebffbdcfa66c -afe0821918bdf4ae4861c71ee6961144043def8211bbd06bc1b7a17fb7b49264 -198268534c5f7eb90027a484d2088cdf056c76aff000fee1b66ba855b52cfd3f -063ea1ab303a5e1198143f62e84a808bb861946bf886b8992725157d3a559138 -85cdb15c32a2fa2ef137de0a9b267231f7f1c9e8186859226e85558fb9f53240 -bc1bf559a13c47432178972b3148e5d650f6a9309b3df8d614055fcf94a25eb7 -8b0bb7b74ac62a9019a873450100a102584795b06038ad1c75e69d3b810da852 -80246bd861c0cedea278a8418f53f57b71c765fcc4fbe2beefc5bb23115f27e2 -f205c40cb2b69976f76b7555373b6300a10ece936855b51940ebd489488d0d06 -0e9eea6b4ce423ec6f6de963f8891e3740c8baf572f60c732022250eb2ad1186 -2cf850865eae8c536ea6cbaa21b0e6066bd584493d6d5b577c55fa8e06928b4b -9bb0448bf84e502ba84f6f26c3afe6ca955d975b335888fa3d7c7b5ed0482e02 -e9bd1262a91d2fb7ebd1fccafc7c615f73d343b0188d28dd6d109bd37a902101 -41b2ebd18d43bcd5c52ff32f3a66bdbe2a44a82908d9fe39f223cda9b8822428 -9af7eee175330d8e54b3b725cba75f5a72bc4ea95ae89e023105206726c7ba03 -c88beacf9fe584639162133c01cd2bde282144b3b254055d14736bba3a99e8ab -4783fa3b93a969fef3f49eb7bd688db128e61a5818404cb64e9c255e8d83c751 -0e750b7523d0e90aae154d93b4440427e80f1d048eb8f3c87c3a3c081ae8e5fa -df69ef610ff9aa3fbe01a5f846463f63f3337d3271967dfb7b0697d026c25cd8 -fb74d5d1d5bae0716f19d566274db5f271f723436a7dc02f7f572d6d5a2ade89 -934afadc18b02acc23f6beacecd5f9b7b4a6e65563d326df922a37e85f6b74df -b5c61c03b3f5b357edc5c5e7c1438a59239162aacd623619d7a8c3e015f1197f -c996048106e71c63b429cd5e8ae6a5d99d85327359e4712f96725fdfaddd8027 -03f75e32792ed1a37eaace2f936920c2c3d524fd72e10ebcf99d12a7758b4878 -654de2b7de6b558e0c819368c6e02fc875f7d3069b7b6fd18d24f2f92880a993 -c9358c60991f8a2df33f9aa00626317bfca08bcae5fa795bf210c4c1f42b59b4 -cc5862be719f8f2306b86cb7d73246674c4e8c7a7f0c6468e041a7570e8c40ef -e469ff58fe07bb17428af645581b195181bfa07e56260ac413b4d196d71741e0 -1aa35a498904816b203cf4d5c0f34bee5bd976db1167332eb38bcd5295fd22cc -5159a15aa66dd5f3eaf5701ace24cc00747f2392ffca72d194aaea76b787afb4 -bd273dfeda9ecf6bc479c21a6d81fdaa18e53caafbf54ea2b034c62d1d74579d -1c8ae231ca3ce884e3fe0d04ceff6ef3cd9f10abf98ffd7410a42353636eb6c4 -e67c3f55c389ac0cc0c0af1d2a103536568f69224e114c65aa33814ef223dfff -2438a4ff5fc1a1598dc9146cf68a262c2ab1e41fa1b8edc90cb0410a27a1a419 -db48bbbd5b9c638f4702fb48a2495aa6222d30419bd1c7f3437f3ebac95b1d8c -fd330d6294894070bcb82a779061e4cab91ee255c6e4ed93a90895536fe1bd0d -a3aa357a13e7cb7fcf3f45cdf2bc102ef048150f6b4533b7dc8dd523ec238fe7 -bd48a3d87c10a2cda9289f22f28f73d7625e5d89acfc694f0a86bb81126f40ea -906ba2d01a46f952ac227ecb6bc3c238846d2481efa96c47393a42fb0056957d -10d8574d2e31e46c00c712f0c4dd12d2b7b05918fbdc4007d82a80e5bf55ac51 -baa09a5265dd5e6cac1d6ce1f9327e9da2a8e8dd29dd5a3ed9912f9e9117cb83 -f5ccc9e7491ea168c692b7961ab7a1994d566e9b036443c60bdc1d8e45cd6cb0 -d0ed69a15035764ef718858375f1813f090e70fda588d5e90c8832796c274cdd -6de76ea8ee3b43ac33f6dbce921cd8a9aa55ad7d54fa64145d50b0f62e47a0c3 -060bbcb8bf4527c37a3e19f974b38c9a8e03da5d34b7517887ae3e989142d5dd -74cb1bed7e9c3b36e2ed497cb0f7518a4430fa6ea7dfa2dda6904c9af215ffeb -22b9151192cf2484194d491354e8a5fdbe6489b38ac0a65357dae93f6acf9c09 -fb9dc6e2e8c235a495332f26d7b08f698e5fe97949846e08461b43c2c8ab13ca -bd6a127f02e36237bc8b640007924c3ef0c4aa8758dd76bd6f76aad1d9f32941 -14dd1481e552e5395ed47f107e00a16f5d8f026e66edb63f86d8e6cd54b253a3 -8d8f474ef3928a0568c5f8a7e35ce8042b0eeb136cdd8eae1a2ee8dd432fc6f2 -c6566f4956b9f9ba43703e862ac1bf5e0f23752044e6df337b7f744279cf9c6f -b1ea71e92db5ff2d4384f1d7223d2a34b777d95d0c996e4a02a2ebebe6c92dd4 -41b7b6297a879aecc0bc6c063fbcc1786e9bc73ab053136ba4d4c62ff46932f2 -27f8c2331a759f997f49e4e228093bbc15c679d9fd42f36ad99d215043b9145f -bd3a797c64b2fabbc86fc471553e9810ccbe200fcb0bd6cbd73e144b587c63ab -e4435b6d6a30ad741a86077ba2ccec2fbc2fae5584839ab7d506153da60594d4 -eb1f264b5cfb4f322e4ee161fcb99189c2facd5c8b2d8877c26bab1a06ccba7c -92a540aa371eeb06555386d619fbce8960a8a5d556752944344a5484cfb6404a -75e5f3120022c19cab28134d483f1b1cc485cfa0670ee507884216f016e01e7d -16b7b81fd93f57bdfcf9b66c128a685a8fa7721f3c896ba09822d2267cdb1a5a -94fcedd3a28a95edd6cf1166d85696ab1036bb0c6a8a51b2bb0ead830fff501d -e6e432a8c9f3c8443c13aacac49b09cbfcf6349137872780b89c920eaf14c571 -d55cebb08cea88041faa2fa1ca2657d12838fdd674c2d75385f408d26663760e -e556e20063f21bc9fa40a57a943f1ded897bdccc82172a6b6199246f2cffb670 -f1bfd492f162397a63513a25c8f359bb75db2e73ea2e12b448118f2e884929d1 -92e693926ca8640008eb1bda4ad1dc39640746372d5526aa0601f07baabe41ad -fdf9795afb4a79ddb4a9d3375334445c08c4ca5230cfc29628113c26ec1fbb8b -a72bad4a21d36020b944bdc72724b4681988a9bc7cefbdf8272bfdf4a0f64dc1 -c70bf7fb9c01e4f15ad9c73da8cdd2c063fb3352f6efa0af70653b1a1131ce4d -01319ae71d968feda31c035f779fbcce6286ebf8ff364348445e4e28357b888d -9343ddc0e44c26a43aa755579caa047da07d3a87ea21a8f034a4f5c21173fc8e -5279d60a74af1f399f673a83e4bba9640dc8a39d42df8b7005df423390a92f03 -0a43e5e26ec0dbeec3730d558d5d16f70f711c81753e774a4571ba1b8cbf36f0 -0ac45a9c43fea15ff40c443cb16dff8866885bb83df4f020af493f9706999940 -e822f6228ecbf05d6824f9741aab36db392b8c79f286cf6998172beb7a418ae6 -560a3ef36c700e92d7211da9a5e657bd884b9e5f0c2b24f4172c7a10381cbb40 -aee6e4e7b97a0d2b30009b83951297d4afb8e37ff153882eecdc7b9a142d4142 -15244e6a809fe8adfdac7a7b1e47eeadbde4ddd7fb5a15d315db82f36df1441d -b188347e6d2cf06a289d49a6a4cafb14561f0c98d2590c6b9e4b47625779cc94 -fbffeeeb204854fc3a17f5bbe279c71c4f2f8131496a3961895e6f41df9324fc -3ae5f1ac9b4348a418948ff24334873cae759e7b16abf994cbbdf2b94ba028a6 -0f5bce596012cb484845380c1acd8950207e6ce308709bb731666fa7049e318f -f5d35a7222eb599c8e81803347343162a4e8d34c409152f2e5b3814deabbee95 -358ad55ea0dc1bc6670d20d8f502d246ef4ee46b41e396b8938f3cfeb8ab2893 -0d9c25a13ef723bce2f12e0fa00817596571bd39fbc95e3901d59c3ac16d08cd -ec1854dd3681cf4bf14e661d23d098cb6684da8165c94cab4e46d60a9615cd4c -4a86c6b518a1f6a093bdf55eec7bff798e0bf327db272931f179d128b9ebf7cb -f7545a1b3a46cdaffbba89ae761f428cdc6ef9acf4b60de2c8816c9b6b6fc254 -6bdb421d68f3cf7bc11b8c012a8f3836e081e0c8b182f6623796d5723dfb905c -08812c6e1fe8a116570443545f5f06d546d1adfabfb7bcbe04a20fbe169b6085 -bce5c6ba106e9b4ae054951d72673338713efe3e329f1066639479a973e9ddfe -9b466a8819e319c5066daba8d9c380a9385f9a70710fb0502a523038039d6eaa -b980fd2e33575f2b010a99fea5e2e6aff033fd853c4e31b14f461f3723f64097 -f41c584750d164098a0eeda2589a859d49c83fb6c1e8e753f4eecb5afe1251af -312332d7b4508fe78d9165133fce1730811030b69813f46a3df6298b65a75e17 -142be042e2baabcf43557c7d8162312bc6b47e10fe521b0e013f23d731c287da -1e34ffe32e161b89a78d6bbcc03b454fb6663f0b102675cf377acdb634f94b70 -e99b1ae29a2c27681f8f56e7fbbcfd5bec3e00a98462a1e9979194840e8cf6d5 -7335abaf1174a365cac6b71c7ab15c82cbb6491d3160661b6e83334192c460ab -0d5cd6a26f7add973c2665c705bd1cddfb09ed9e610c45c44fabd9ff2f57d1e6 -8dcaf6ff5492ce58307078dcd0e2bb654fb7f8fa2fdbe8ec0aeeda3886ecc223 -1323c16edab99189cda6f86d8946b5ced3f6763ad8a34e75c9c5dcad3310f176 -986df35ca02bec29cd98ede443343ef0490e3de574da49ea1f9d7158164bcd01 -98099804d3aa0eb5a46ba0503ae60951ba2dce7a1fbf0d963a167d80cc4c97b8 -d1676dce4c4715528e8f981d8b1f57dbbae0f888c5ec8b3aa1ac3954826dd0d2 -9d51174a78258be7e894a4d768bf2cc7e3a7b081403822c57f9cad672acd17fb -f421e31577cc7a837e469007fb25197c0c163b7cd1faec849852f71bc4e597bb -dfda5eb0a79fc0b7aca5018cc59ed9dd101b9615e58dd45b8b931b4638c8ece5 -f7fc3f44dd787bac8d3c4255125733de5e96ea289bb49805738f244d1721ac14 -b0ce3bea7259d06d132e2dadf6ad6359d5063e55bba136ddc3e7c5549d678429 -1d9dabe9f1c1edd8f6e8b5c69e947088640312d912d7ee6ffd6856ee61f6d7fa -5992eec603bd2cd4a1c1fdb3f334c2e0605c551e09c018146312b3bb315b2807 -06ad9b05541d0f4cfed68b3afbb204cec85abcc17297bc98e1e5af676f17a3b3 -24f6c205f50daad12194fda7694a0e1d2a9fcd9af126f13a0dc4949aa24c7a8a -3bdcb44ae0835d346026d2e81c4fd311594ba5d2fd5dab23e17ce667f175cc29 -822fdddecc12c86a916e5bc67e9d344f33d5ec32244ee094fe3e21c5e248fa31 -d81149f7af4052a1e7cdd1dde063626b9ffc2be1afab01ffb4583a124592938a -cfed4467630585e57ca96dfe6f2f7b9117dc19c27252c8b269c445035891b334 -0f69462fa2596a49af4c9141afbe915660f7ca8740f816de8335051be4c396e8 -4b98ed635ccda08ea93cc8235d05597ec5f205766da2ec8ea272add76479368d -81375a60110111006a2543a6b86218eb1869363f52329ce456adc08f7b661681 -949bf38dac90e23736e45fbb39c2accdd21602cf380ce1d6cd26d4fca08cc0d3 -c1d903cd594e86067c0510d09d445abfd10116a9f39d67e3d68e145f9c8b4f37 -aaa4ffaa7ec3e866a17594efe52483ef7bf6cea1b999281df9047286b89f4d54 -6d27c5715f542d5fcb95b1b2d781c2a54a363bb05f4e9dcf5b9c949eb6c2465b -2d605a87a4d5f1b74676a19107df7f33288a5c5e2516f57eecca5d24b9396678 -35e8c7ce0c6a821ec58015d172cf919dd5d798d699e95745a577e971e6097916 -8a39291208dcc3b8d907aa149f6a8aeb3239fa5fa9b7aa28dab14931c8dd7ee4 -1f305e30d1e40282cded6e8b454457c3c5e3fd02b2b2db855a8123545e91a1f8 -9442a1671ebfffbed85cb7386f05cf1a7d1979c22ecec55edbd4c3bbfd4e68a4 -fd3040399fd44a643116d0d4dbda423dbc24fbf47a5c8809e885db76d61e6d10 -575df1e143af5d1a8f3bff852aaa8f440316d3f5c6357b54382ee4a83bb2a1d3 -e4b41884edd5827b46601df9ba4953d0cc202110568a6a14c18b5130ad25d6bc -060b1aaa44d7475a2c9911409ed784a63cee43baed684fc5775aa9def3df72e9 -0fee32486fefa8dbfb0dc8378ca798d23716e71c7e06035df322f6ea07a802f1 -91884e8ca2ce73f9c669a088e2f54e4870a7e3c3f5ede346838376cb43c865ae -c317a6a8fb1d57e881c810ca8bd63a0368132953d3fcde1e5ec2088681cfc12d -e9873223272535cf7b28444f14f9955c92618dfdb12ef9f1ddc76af16bbbed51 -3625f3a5ea219193007687af3d509f0166d80b9af3353a68d587f10f850544e5 -80615dca53fefc354b94c588dde972968e21903d4dc4362996d75c16a8e53b43 -dce8241eb743fc0ea4f1b99baa23ae73fd53b8eac56646089f56d3e7ecbfa3c6 -ca3243b28890c6cb9596ac97f9f3f22788b32a2e5c765c9339e499d0844a61c3 -51174c30e638c31ee18ba86c3d7677449b09ff201653c2d070882a00e13dfda9 -57e33df83850e15a22e1a691b2aa794d192dd64feaaa8cb91b5272a86cfe2e17 -d066eea1aa0000c0e6e36fc78d0685ed00d0cc9c618388922a72733fb24b506b -ce9b076dc27e8c76915621f855e3a0b921555cb24adbae5b664e2e0352a3d6be -10580d9f73b7843294b6e36a1c61b5c63f5d63871e4ac29bda479b8c8e6f51c8 -0b51463a1a2ff98dd2e92f30b04d7bc4a1e6d2c100fa4bf2a1bf41851ea8b1b4 -9d17598349c1788eb1936e7844df0af5fdcd21a4edd1b5b5fb931217795dea07 -70f6fe0670eb97b9e8a1b0eeb1c743b783f53e17dcd84558e27ba64dae7f8467 -016c5712a58edf87ca69e1953cb22cc66036c4a500caac0aa491d4ce26a40f4b -5683185f9b824fc2b4d5b6bb0d211f32b1a895e1ed6ad7858cca24c4f1ea2b74 -1bd3a3c93e10400da358eea545c188d1d7d575cbdcddc324eb09c382159ceb5c -a9ebb4b8ef2beff670e9e66dcf82d3c931a5f561969573baf05f65526dd4c708 -5424add9b9e02caddbd6de219eec64440e2c24b0c01642c9bd91836e3e81b1ab -03d859436938beeefdbdfa2f7e1ab4beb9f0266714094b9fd2cf95dffd149ae8 -af1140dd0c3759011b71677d8130cc9d1b2b61d74c2cef58416ffe20c93be780 -028fffc223417dc98b14e2137d15eb85684af916fbd8200b9cc71188652b3df3 -fb9f51bded5adcd375dd2f7932fd0782f23ec2ebb71407f225e7b4601e625bcd -508a0f3668c5f2254d677ea3ce36ed1d89148f065877b39e3edcbcf7bc849c35 -e1db16a69977070cb9ed217a9d601f339b1f943a4e596517a47bc239a291e454 -7296b590060eca428f604b7ac852138a5b593cfb95e417ae980d0b52c8353295 -6fab35d520ec6700160e80185915996eda97f53f97f1928b67cdd369b7e3cb0b -cde35f2ea974e3d9b398cf3fa044de37aae15479b4ad19a2a88c9e0ca0579285 -8552b1817457a2ad05a8bd394de54a7c1060cec6e9e95bbfa3922bdb5f1d53a9 -3c177f9c3612bb8beec2c42e129ad09c14d52acbbbb0ab3590c7cf259d154840 -83aff8fce7c5dfd5a3e28ad4d3777fbe0bb595db0ae673d7d86e4803dada37d8 -8ecb99bc8c525c1ee931cfe7004c361ed7f417be1f4ff7e92c636c7abdef0f92 -994cac90c900b6421582731b501eeb68ffef1beba128daaa668adc4225100d83 -c55f2b0ded6d9afce03fe581da3f1c955b7270c178347c885b0b4af97c852843 -1dcbe4bc5136c8255ff89a5d9c1a60b45efb940fa8b1efc8877d5ec3b8af027f -ead2db50d1239406bcb22b403f000d75af7cfc8120b81d7dfdc8e1deeb7bf39f -730c24d3c25795e6cc074d328526f78e2f84a4a0ba908c24377c344a957b2d72 -b5c88d59035df55ac115aaa16d852ede9fcdf9ebd963941f2979cb5616b000de -c7c768dc91ab6c8f23d6da7b41d80ac211f6da66a69abe273a24f94f8f5e5271 -28715d914cf1f8de04bc825337168c789817ab21f70d49da38fd54de9b8b4750 -d6ea45a57e25d615ca086439306f5f89bccc61254c95fae90368220cf5acffb5 -0f3c24bc9479ccf1ea9e0a9b2e2f64372417c44695f43b9975fcee1328075471 -9c32d5bc60bedee497488866881f8a5091f4026eb04c4d92984daae3554c9bf8 -04c3612798180ef599821e5f5668c280a40625c1bcd53f6987a4bc2502a2a362 -54f080d704dc71a1927f573c67476bde1263c99178f4f817c4477c1daf1f685a -53aabdb6b3b2fe769d36d262b4fd1d4d5aa7f8523805d45565b476dbd12f27b1 -3f310ae2a7f75dc33f10fb33c618504753db5721fb503c9f3b20f3804e22fc82 -ba2e42b9f336f242b543fd69c14be16d636bc49b79477485b3a3b9ea80010ca9 -e929ba1402f0c4284cc17cdc2c04193f6050356dc71d4f21844ce46f64d90284 -4a0a6c6e53a7c8ea0f87ecc694fef89c398a6f27b66724390fe8884e2c58b5cd -7d51099d7fdf251c73410009eac66f505137bfbf155170858fbf4e1f04307d36 -853da4868e31f32a3d52714b617e74114df0a02116b1f7ec7ce77d302cd2303b -421b022a85acbfd1a46f04c8da3526e5af6749c8395b1f6d63aae3d2d8a565fd -991db80296d60c895fea3daf637586cbf074e06002576aa35ec234edc2836e79 -e6dc1c3e3f8a6153506575e6c532e32039a97fd0d3491b2cd856e874af3e8742 -0be1daea756f7cb4ed2da886a7c8794227034bc7e3ba2e1d90f067fdd541e6bf -2da8afc4701e05653b1f8d1bbf87aa82bf6a186d2a910081b9be9aa3e6acbe77 -9b9233d70393787b4e9497a7f9cfe7f8ecbb181795ebec11353ebcf0f3f9bcce -be6ce24434c54af9039a9eb93771ac617e0193d7c8c1ff12b707f909b391b569 -279d783c20f50eb9d6219f1c9054c6ce5d0bce09ea407c126c8c16c6349c12a8 -f399f125d4b8def3b2bda369557751df58099b38c8e7e5edbe73699d6ab9c5ee -ac56052304c2c0337ed830c1fd09bcdcd6f2abb17d069cfcac6efec24e399be7 -b3ee5d0cb814f37aeb0f4bd173ad0be251722ee41ba04a103682e5ea2792ea86 -e933a8c15d085edff08b7868ce67cda93888e0b31b97e0729627f6039ec27f96 -502512384d58ed44883715439ae4f7a83bb33112036a065f63606a267b4d89cd -7b46d7f1d2e9c6df0a497359a3092a2569f2a46ac77a2e341c46971051f24579 -57ebe9c382bc8d165132c3072acef21e861bda77e1097f819001729a743cd02a -d644688d24b4078c2e75a1bd434d3710dc44e87f679e431001fbe8954c03d85c -f4da29154b9b9d5d89392e87c50ce1528fc0d4523dd3260fe1aeac8f9f12da31 -0703c9f1cf85a6d2c43ac51026c7684fdfc4e8a5fced726f9e83e25312247c9e -a30bce2c93a4538b01899e51cd3a90bf2241cd5676a1c7591fd1942f9c30d7ed -3b520b31d17baa14675f14e855c73af0ecf5c37627e75410ec7f6dff0d49d966 -0ec5708687d2e4f98f1c6c2e9ca9876a1136739bac3ddc34935f3001d6ed03c8 -00244a688f21d05b24da020c8a237b77140cee264227542bce90abae597c9b6d -69ff0db628f48fa1d1f41849461c934b4a552b7757d1ce32f0fd1f60fc85f788 -0fffd1e973283a49a2be97f7a9d966f0d83b486e9f72f14b14e7936397b75390 -38b9b11429d2c3bacdf7fe14159ef2d9f8e9bf7099ff7b97c734c17ed380c151 -b7e60ec6bde7c63795bd6b758ae72d66947748af540543945f85a1e6708f2d65 -d6deb82c1c59ad42a53dd65a451815bef27b8e295b391e93f1b3d6a980f47006 -ffcde9a86f3697e969f0f2cc3b2fb2bff35f8f5feb2c3e3ada40157056b550f7 -a0701948006dcc43062f1cd0de1b49157c06e218a67350ecbcbfe1ff847c4f6e -e22499406f3e8a12135ede3a869b5cf327a60b5dcc7a11cf52ef16f6750fb7a4 -825c13105d75f8a74e2e456837b7e6f595c260d372ba475f47d966dbd1cc73fd -a0cf1f406e11dc12baa68e8cd78b8f40abd22c35e363fa469fefaa00d914b5a5 -4095b064bcf62fe9974fa15035f55eca54c92e5bbefeec40b28fef657a54e1b4 -072c00409251fe299a4ed0377dd4199e7b9101f4c86825e7cad1aa177353af45 -ac940e154f9aa8654e4db0ecba0878b9e9b51cebeb0acfacf489a12afb611ba5 -8d095a545ef7fe67d9bae6e8ceb04fd83bbc401bef599c2fb5dbe80ab92e98f7 -de01052f2994bbbd41b3019de65647decf630c05d3bec04d72f857ab9ddf0cfa -49b747d6563d4198227c76745b4625e515006d7e40fd109d9694acf7bce35e03 -b8e544300215fef36442dd9ed7c7c892f2130e65764c745497ff723c72fb4e1a -ffd51b26ae752c148bf3d6df2897e6fb46ba6b68ffd766714a58d3aeaee8ac73 -5d749ade73f43f51abf19aee5e5f34a23cf3bd4b7a0a6fcaca2053a9f2660eca -b7ff94e539a827514c1ca1b3d5b02c1d804efbfbc4f9154e54a9c4df6f14590f -08856cea4d0bc4b9532b8ab5ed61fc05b975627fbc45602ab7009d880aa5a6f2 -05c3d0ee506b960a269871dee1afe0633a33b8e82b6df97613b443e9903f0efc -e861ba7246fbb883aee3f50dc694cbbdc42bd985bdb75a265e3b9fe370808327 -bef71875e8fa3000025194304c13d75c9540a531be8b5a6e3c3539d11506f1da -f90a4142a02b4add938f357478eb2ae36215296d2ba15a2860e5e4732af331e4 -2a22f359ad4d223ca013f78d77d195a6067feef9700806f3bd60d69812cebc6b -0e5da028744912bbac819d849ba960f0f6caa311ef914e369ca878c605057832 -737d2ec9bab5f4ada68c1f56bcfeb54f3e75fafd4cbb5bd5661427e8f59c1bb0 -b0121054a554da666f327dc0dfa82f6044f07a18a14623ee53f720fb7d2b9eac -b0c2abd6935db93471355b17460aa07e3e841438344e70261d7dae4286e44743 -8604b4065ddb1748d22806f428d2bbdc68702d094de0624c606ae1d5423f7792 -bf41e769c9d8bed663961aeace9b4bd0466041ebd9a80f0854425b3a9ac95152 -8689a9aedaa917a403f1c4f2494ead904370863ceb3c385bc05a10fa8508fad9 -a0a9db1efdd89cc2ce838b72b8bb249ceae9e129e1a60a9d78dd8465a52da5e8 -ea56f894c35f223485b12d60548e3f3c1b167c005ab1b1eafaf2bab8e23f151b -c6db27876f0b4c6db8538978ec008ca130a162761033346ce7e429ffcd293172 -04febcae32f6349e726ff9c75e8049e24cc20775a844b2047a443fd9439268d7 -10c263ef30ba933da1c2672de7e1ab56c7239399f0ca3040c63e1c31644c8b08 -8ab9c0b31bee84514ff4d735bc2f7afcc43ea4ca18a4e5d734b2a28ebe7e849b -e5968617769f7f079b687dc77d81071eb5bb05a62eb5c50d8fece49409be7baa -0883389789b265f0a032e7a0d3060114d5969b2b114f330eb0ccb2e12c4e2497 -f47f36f7229a598f8018ab9901a6b10b64958bffc8b681b20949a9576f9503ce -069f32f6f3ce23421cd142bf633bd402ece7771cc70e6e840828a88329cff4e7 -6802bf11aa4decd69e81ae8eec511c3c190525a193d73e925d737de5313e0c52 -f55d1f6c34fb2c7c95a643d90fb7dac64fecda7734f2e517910822ef98d42432 -435681892841ca4c379f77ba51f1681711e2eb76d22e1fdf3568017c8c6bb5d0 -cb5ae6602109292ac180dc75f2eaa25f4c3e6d62cfb30020f0535fd43ffdd0a9 -33f3e6d3e63d43f6c223e8c345cee5642a3d5540596717d3fd0f287d2205aa4b -50b282e7102dbb2913f1781c5f2d0790a8876d1bb686e5070274aa58608d16e8 -c9b4ab78186b4cf232abac26b8a26e1c2c12b0671055cc5f9fe4aca92d60e2b1 -83718c968ec2bba1c53c805525cb5f084f6e5c3c71dd487e40f5a101111ee42e -aa2df73ec0b480dc82f11015b6a3d358b0b3c3214397e97c53c65215416780cb -57784eb0f988a0dc54f1871a6e7fd15f8b9f169b3d918c676b61a61955bd5358 -baa7e7565a8c1ffc0aefa031182c4b23811b9dad9e08b74a55b2aca752b1240d -cf0c0b729571540f0a4866632ae74321e3b2ab41d26d0aa1fce7f03f217ee451 -2b213b0bdf3d8a2148feb5d35e1f8a6da2e13658f139304205db38b510a57429 -2d7abb567b3086db63d2c0ade45d73b30684080d57d6b6b25f612c40eaa81fac -55cd578f958a13f7cd0e2fcb34a660f5106d91971ee729bb090ab8c37bb67953 -c1ea9192644717a218b2b37b03d97fdd4963dd1186b9d7347e7c856527c1fc7b -6e55e247e383b0445323845609b35585e37f383e820682979c3d1a78373364f9 -3c31324f698cd6ea07c91ad288dd751a04fe29540515d056e08ac7e4b381b1c6 -cb2bbed1322d9095972ad368031e05b6176897934584bbbf34706b5f0acb3b9d -eb8b8cb8eba22d236327592e27d4b0830b4e4a7284d2c1896b5ef98a15cad5c6 -7412b8ce2d95134f53ba2395c2e397ea1b4e54cf49589e83be2d86654c849e41 -68a42bac0e6a6aafcce3c8f585c1f381f51b45abb58ae1aa4794caa2dba420fd -affc83fe437866b1aecc1d910643f0f9d70b0da41212f9714d1b1a3f43e5e725 -1267c59a1017f8bccb6cb813845d7ae92796ae6395e5d17f8aeb3f7b733d6c29 -856cf66e370edd3e1162307b39916b89c371e0c930a8f7a8072925d211fc3ee4 -e94dac824598611ab5546a9f98e475460058ad14d5bf507145b6e70377ff092c -2c96df0115b97563c3d8ad3e765180639dafc9240078a9bdc4d05c38d760c3e0 -940b3ecfbb6f12c3e72ba953ee6736b671ead09555820cf7a2ead9fa6cd063b6 -6e1f93a17d8d7ef5a33407b115bf86677b254d78ca23ccda6d38b77c343c3149 -bd2a1ffc2c173841797cbae994e7fb0a0ea95fc1666cbf26740ca2d87800912c -b6ad51767474ac0c1a9d2661b25663dd2e0e5a8f0a3357f9098c02ce4be52a92 -d65bd68a775d0ff3c8e4038f4e263832a3753f12097957e2dbed99297106e612 -aa46399c0ed52941ac0f468ad788d06a901912c7015453577db8a30c2415b172 -a291150a270139013a994817dfdf5946b9b9c41d115b2335ddca74f9e05fc546 -3c1b1eca6615b3be14b6349bf9432377219c3c7c35b2adef1d8544c47af2af13 -b71fe636a47d878c753d23c0fcd6fe0bbefd26642a4cf5cf6dec4791a31f0729 -3930fd1aedb30471b68bb4cca888315b3ec51e1e1211115d363ff503fe9c337f -87be8655c8f7e7c382f4715e8442f797954ddc7e3c40654a39c01a4e3bd91c62 -c0ea25a24f3480e721f8002ff0d8057cff5a972ec0d3d8464882f6b27271e208 -6f0f9c1b371bab4bd14fc34c9e798521049a37cbf299302230ac20131f9818e1 -cb970c0844028b18db324ce2c491384c519ec0bee4ca16bbd5b5da8729da1e61 -79f548f38b42cebcaa3c2f95768034006f3004375a008a2dcc4c6b695f191168 -c5b994a8d65e199bb2ca5b76235bf794bb325c1314cf0610b85d38a5aa679552 -1c503dffefd736407a71a0dd79bfc59050d7654e18063285e53c71ddfd527bbc -792ff5628a05cb9cc0aa40f7c0d3f31f391fcb0a59fbc7b1e5bf32a173057a89 -d92b24773bb9d14d3d1a5d42dd1824d7dd7ec7604adb960cc85c0dc76ee7f8e7 -cd521005fb367c642882ef4ddbb1cc7e18882c067a628c5f78cfa23624324628 -f3769f5e4ddad6c4e91f29c9c4f4dd03ee48ec5a580b507bd028407f2356b218 -c5c5cb5681abe3c28502f2a7d5aa899a7b255ae639ade27d2d06d3bcdb63584b -80d0468b5b7ce8276851cc83060ca40f181fec9648401cc153ab9283431a3785 -f2c189fd0b94d0119f97e211a9594a26b6c452322da798f7965e51a5f781dbff -9763afbdcb07a202d5bd494bbe893db7e2ad917bf224b8e6543cd315e16881cb -7feea2a370720d8d35237f4e4bda5eb2eb750364b7ea0c6f51a4806290f06012 -f552ca1c79890732d5582cf29eca1a0e58211bc4a5141a19161e435206963a75 -69d2e42f5cb18a2d93eeb84cece026ef20682eb8a0671c7c241f1a0ebaf725be -9587029eef3468db9cdd8afd0e2be464d69b5ea6e69cfb069ff2196fb93a64ce -05e2af1aaefec63a5ed47eb28f290f90a3c6b145fe9e86e6c2c79c4e28382471 -e79f15b3e650fe7e072c81d1f0816bcbd314317da14ced23981d7edd9823f96f -2d7768a0683ea097aa66e1388f7afa30788a5e801eb4fb77b60558b870f970ab -8645a60652efeb100083a15848b11ab8a660766a8e0bb1f27d56024ebda2c62b -1573a2b40ac6beb9f7e853e0bf1920d1f2666bb7ea87cc937efa80d213ac530f -3e01be49c70d9cdcb99e10f378d16772a75a515822329c22e3f8c6fb5942b1c5 -5ec6007f497494388b1690b72cedf322a8e3579fd9595a9db44f2cb947b5bd2a -e9080411ae2da507d98c8dbe8bc15d8c49e378a1a08aa327fef6001ea1077312 -006e03454f592bf328b5f8217a90bff7efd38a4db8d12d8ab0f3e36ff9b5e4b0 -11a89cbe302786e8b3589346f325111a2ab7cf68d13187de0714a38236b532f9 -18565f33a363da30925eff4330aa9f79afa84f16cf22d7a2e488db4599338a93 -e656a15a0e6f61c1d6ed6cfd11d0148922d2cefd4e21f70bfb3034d1fe55d16a -447e765a5ff0daeeb2e308028eb57a6ebe6a9c2703e6b326f1a34880f9fec857 -7823a64c0ff70dfda36a5b9174627889522862c765cc2633e67aa7ea78dfa5e1 -e403301d63ed3d154bd27739fdc23278588bd5e27184d91fa1ea41db9e9aa1ac -c324e067003018f10fe44ef3d7bfa1f38257edb617a7e2cf59816a65ecacf17b -15a7e41319fffa5c1f6b92a4c7d4c78928433ba7b9df24904ae2c2a4b707cda6 -16c1f00b5b521ed8a2d6a0dac25f4c22719ef0dc9adfda4d241d32202c88e337 -74794d0b19993f4de1f5af6a16f0fc95d96829ced11c7d5d548fcf46c222a856 -4b0bd3c2af890f84345f6f60cc06e7cdcb91d7eb79956d6b7d70e862fc2fa79c -12029fb27a650bf011fcf75146b7dc3c7f093be97d53c6c720df3874f0141fc8 -783bc69f5499b61aae6d7cbb5669bc51620bff7d1900d3e526c6521012ee1218 -9f5ea225c5c7c0547151f5305b20a3b70e25c30a50125fbb3793e94921d6dcda -998307dbb029fa75b418c6a6d850f4a1b4bfa955693645a79d8958713a4888fd -9530c5720a5705bf8b758d494f28c735b37e134d57318938790f1d64f69c703c -c214a8fb2ae2fe87d991074cc8b5935cc2933d87d3f7919f99507fa196d6fa88 -efd536b33c10218a852c135c503b4efd1392815caa07f92b3bc5fed375142407 -a66ffe12416ec6c1dd499f32987476b56ae1148a717295158d0e640f929e136c -d0cc9ee13398466ac34bf3c36ab46afe809fbde418aec5f3452b8e7f5334e834 -b6a140d8c674a9ed043ed3d5898d337dcf8f99843cad5f398846b5ec54c7bfcd -f445d959c497ff85d7049552c4800eb823b56d04fad8d3eda431a4596b3d7fbd -e831c5ad2668b46180847f8be5dc94949c5d9c10125cd7656a8aa5adb9b014da -39b2413bed1b5d5f94517f84f6404be1c3785d674470966d8398a02a46355244 -15948e9fd8629317506820e0aef35cf8725995a27b72c148765c6fa2236292ae -ed1c13c1a32d60671eb3f33048047b771ee037c3e174dfb50dcfb05196591e22 -4632e22e8ec8d17ddf8674c2fbf821244530bff0b30bb4b6348608a38ea138ce -b30712eecb5cbbb9efd6314f6e00e659fb0fc4357fb8001aa97cd94880ddbc7e -a3820277584f2fd9c209619a5eecf1cfc523303363db73f254c3d0533896d5ae -b25e014af2b5699e69b07309895a54d0ed020f03081303933fcc22fcdb87b732 -f285c81075f2bf18da495d19a56bc4af731d5b47e09746074d5c3f531fad7a31 -243cc9af83ca4246b4f31dc9508bb9eac2fca186185db75ebfb47ee97dcbc0e3 -9feeaa85accd73dbe4be16d5bd744b30a604ee76910cc8f335c2080b248c1246 -5b98afb156408bf778edb1be82acbc91cbe77df94628402f41bf2f89b5f434ac -25038664dd20d72c7272d9421e26d84a5ba58cc10904e3f399adb52c583b8f27 -455a16eaeba39c17699647617b48b094a0e0c6d91bda7d986bb9d1ac9fe73f41 -5bbf94ff781faa841e9aed24cea0a2f3bf17517395a48cb52e98c37bd6024e53 -bd6fce272346c172e137e53478418be67aa5f26e007199e3910e1ad86a4d70b7 -73de64abb72fc5dee50290bd6930089d9b7602ece3282ae05c4e74cf35c7c28a -6659d794355b46a75dc1310d3e326bc4e2069351df82bb301e6ec56a0ccb96eb -79803c1cf1c791348794b0e418ceda6dc11063a83660874130b97adae889d954 -a3b93a11be9ee60eb86e5c3601f510b01a002740a1c1022ce6df49947361a831 -9cd8a7b2c7363d5734ba08779b5dec8673acfdecb5839bd46522de38699d1fb5 -e65699eb5f65784b0bde3ffe885fbab4917e0ea82fd98948f3f575e0f6421f90 -edd14262741ef80169c2b3dda090e8514f823616493d2608ddedb28dd5729c37 -a7367b06d6255bc11563d879e66e16a89d4dc5dd01c9f4288cb29d409e5df969 -4de4ab73a45ea936be8b612f084722243511b7938b1be6e869477c4580d4b390 -bab509dc1ddba9ccbf7e209a9cb95f1d6dddfcfcc2aacbde558709e1350b1e56 -b2d913089491df85e7af642c4e361421e34746f9d4d436082cbb432278451294 -fa7050306d05be7165776e2f0338dd41498bd3a3610d842935215ebd0b1862f9 -add9a0ead6bba4b43ed5e5754975711a077133ff09f0e6c91cb4477190444717 -e0cc0b692ef5294bb093f4a5b82f3b77614082cda745cd968cc7185b7ccfbef0 -c5985479ba1c47d22e3ecfd57f3d3c7ac8d9673bab7335865412bc35b8296b55 -4123d736187e2217dc9a6a89e361a0d3376e617dc113b0c077ec0f6dd1ef51e7 -7731f8564de93c2c8c6c840dea927464613a58d237e510fb85b4c584791d86ac -f7913d79521d555e34f1269e2f0f1f3f98676e34af54e3a923bb90b861d97f25 -a4d3f2e1220e2bfa2c4b90dcda31c1a887bb4d1576092386155900cd8d3c1365 -b7248d1ec6390847f39d6d6c50c87f46e097a41109ebe39ef4713a1597d189af -7d1a8c27337839aebe4181a8bc3af998fb1303b7faf9b880c5be5f11282ae941 -69ba505008d09c8ef69783661bf08621fc66fd8ac23aaa7e86828a00f6c3c350 -e300c66d8b9a934a03b643527b0ec23abf84a00125c6795640c53d65984055e8 -af1cca1ef6e73ff690555fdaeaa5bd9f7e8b03dd64434aa9b788248d9bf477fb -1539184830ea251a4c567762209740dc3c16172f0e73155468005c4a1fa6611b -743fbfda993f79c9814d90289f2167a0e675135944076d702c4e9c44c89a2f62 -53a41c53bbd7a41667fbf3bb86c342d02d50a7fd7bfca40c2ef9931f6b5bc25b -4a9241f32146c06f0aaff87552388a9520d1de7d9511ee4b02c0a9011bd6758d -9065d3a9f8ca2d5897be7ad3e0c13383133be215ac55ecb29bd97302823a54a9 -88c686b7e979289f0fd215389bde389222185827fe82a912438f1d78fde1264e -7b2fed78f67022ef5ca27bf1b449537abcfbc3004ab0845a969c52d3f4d8b2a2 -e618925923f70bfcfef1cde6157a03ba86396ca1156b98f5a91883d821781ad7 -0caf360940cede3c2a4c29536d8e18a41e196fefb191d27e26a4a0a141a4737e -237c99d4fe3710e0c7bba050db3dfeef6554ca5802dbcd60b5669cb6763920f8 -b49957341b36b96123f446bbed7f71a35b40808968f2d5696a2f2dcc1221d119 -00af15c01257ac5653e3153a8f110052e579a068f98c7f9c8fd54f66ac7d47be -2bed6fb56f39841b3ca67228050321b37ffc792ed2273a8e2b75275f58ccbe7f -eeeab27311db961b53ec231b361fee284ff549cbb71330c7505725e564472e4e -9853bbbd643d99a4f9404f5453ef07063f69c881fbe5b6df70f4884fd11e40a1 -813800fd655704119f7374320689b8388682069b9115164e70df68b8b8efd30a -fca84d981402d9caab679308dd00f3d515d157ee1254f73c9b66ebe7d90a2a7f -9c0b94f3aff2639eca6327778bd0bfd1b4a822e626f92f8010d0f8ba3c8034d4 -e9a710546382d0f4069a1bca6858600c4077aebbe651dbb1e5669de252407674 -56017d11f1ff1a76a4313e6032eebdd96819757d1e9a7efa2ae562712087891b -c88daa8cfc4dd031fc2124a685e7792e5c9ca300fb99883cd40fbc76af131064 -6a06e8112083af1ed41f0929832bd0880dfabd4d3c5627189a02512121ab67f8 -f326d30070d6338a1b28478c65f167c2b83ecb40305c6c5f685265c3ed756377 -efd4a405a16bf53401f1f42d623ecca0316895b64352c261b5fefe05e681fcb4 -d0f9db17a4d8e68ee7be1bc69ea9deca02f35412c58614945a2a1b3409b34ff4 -f79bcd5b7598063e6ac27fbb6e9cc457f69a5036b0aebac608204384716dc5e2 -183a8e1a6c62aa1bfc21a0b1bf7f098f6e81adcca0e50e4d17d3d2f3adcf34cb -18fdbf18183865fa8f8bf66ae921175f1c623bc7798bb6fe30325591c03eed1a -84c2305a4b9a077d82429136a2fae3f601b52a16e83b1976322cdb5f8f0d6450 -924f4add3c9a87afef2005e6f905683cc623a01e961c089739e19a8ebd4938f2 -47defd754f64649f987759f2b8d0e7575d656b872231f1bea04b83d725e06384 -b2d125f4b875e43620ca11721977e2e0400d09a639567872c5a040354fba6269 -2f326941acdcedf088b1747e5aa67864ce0746c09e820f9c8e33ab0a771a3733 -d9cd1fbba2d0c9738a447886c211a1ef67f3db36b178b150de4c27551dc69611 -2fbb7f2431caaec56994380f234eeb0ecf32517ac8ea7ef41bc26986868a8cb2 -8a7c75bc343855518ccb36c9aa50dc9162d8c9e2c82a9b6b41dce1d83a96a1fe -b15b3bb6428068abc99d384e8d5f4501851a0b1939892b342cb70c0b14e802ff -54f67d1d9fb8476ac633862adbedb832bf471b4a82dcfde3c79023f619f496fe -12949b529c62e4f5171ac81d93ce9f908ee812a9a9363d1857ed0fbc77eb416e -c0693997f4cc74e97965859135c1e20b2162717c7ed8c024be6b8227333dbfb5 -23e123e2ff34fae177b534e368d9101ff1bc212b2fd80d6ccb95b7090792984b -443f79c06d2b2f5403000f9023adf34a3901314f5b882d877428a95025bfc957 -acb6a095f654f95f42c7108f70b87b7141eafb01d8baf5622727e2de4776ac4a -7bffa09baf1c487157aa90c1ab4dc8b318670ae756ff3bf453acde40888fae0c -b65652d226b1b0d50d9957268a2dc7d3e556130cdfba08a0c59c5582ab16732b -99e4752e8a4ccada72e97bcd16dbe80f6a3cd6460696a3cc84dea297f385943a -8f97ff600ab5bb95c7ec6e1043e9d6033cc98c97e43c0cb13c3ae02581f14004 -a68b54084cc731ba2d323afeb3c521fc04bfcf679f123dc66b472f9780fb1b7e -b1e9c7022369c2747c9741c25482801241e6e9d1815cffebd0f21c3c2d8e8556 -14fb7ae4e67a769e9d98502adc9c2ee00068cd804bbd8e0f13dc940b135d8bd4 -4a33139756ea0032033a38b30a19d5951813eb06408b4f1282c832231313b25a -a14e27b380b47d9f4eff1507c81240622045a698529c1fe7ae6bc32097d4074f -ac7248120aa0532c3f54a9b274733b8d8910a9a359e6e3c0259324a6b50a0624 -53d8ae995b734e9c82b9ac9c6b49e34b6f76447012b3c045e8054cfe2e283f8b -8a95b58e3af998f01a21c5c8e84d38e33f407268dd08265d7b41322f45df50b3 -ddd115d289688a7b264d0fbc0d3f57b4bc45595d02e25e816d08c989abfe27f3 -119c400941971d6f45d935cd56bf47c6df416d39d0ffeed57c4d504420688d68 -dd41ff7bbc5dc0047f23e68ebe0cdc6e25914c50ab5b036abc2cab5f7a1458e9 -a2bc4b8e0b88f21a7e0a8f0174ddcbc9329957ab8706186036653f24d6ceafab -55191214435ddb7de0aba134b86e69124a04e5c9626d8d74ca6c789642a7bf1a -3d574bccf87add70e2233e3bf4913a7de27471d107345f0a579807177c085b0e -84e767a95e92fff5090efad57048a458a67a09be7abf4cd2fd9488e5550bc504 -052f8cb37c9d925cd6b88088220d7876669fa7caf95926f3e6095a29c18d3a7e -a9888b3b138b70dc3ec317eb03d51c00bb2ad496f38402c30d9048f1fcfcedbf -731028659716fc0236bb86268179beca5daaefa2b12e9dcb4325125fe25f4058 -ae7d324fabca69558b8a93de15c0069022feada2d89082d83e559772dfcd6d05 -8b5ae536245c0728af1be6d5723c549ae9c473703265111ed45da33cd1c81be9 -4322573f0d93294d7681c009b0a2c37a4ea7c4e7800c5ffe08deefa18c8bb8bd -12dc9bdc19601ae6d7aab209f3ddd700f9fdbe7cf53a46870fd0c0dcd64089d8 -031bf4a8e0e4b19d50945008b7b05a2513d93b25d37fb905ba90bed1821507ce -a4774ee190eb8a47df7a034b4e1fba9f099e82570ea967562b86af62eeb0c754 -07bb1a9bc4ac831d8494abc10bbf8b94b6e80bdc189a1e787199687508595176 -20d191dff0426fcd7c04cfbc454322a94f2f3d618301aa5fd81a3b851c0d92e3 -a3ea488199f5108f78d16436a18ba5501497aad36bd99aae29f6a598ab25f928 -1f5d08cc177f790a32ec9457bcfa67e3cc4369204c5af61708f4dde15db9a6cd -c761687bb893639fac890fb6c62f75078d007d2cec77a5980398d079aefaf540 -f6434b0a3c7408e976035a87e52f163dd4094bb59cecca8f831602fbbb215ffd -08a3c50b1d384511875b1e2b7eb91378d3c00ba5339a0ef031a07d7811f5f8d5 -739873ab88cad6ebfdfdd37329968fa1db2d5975990e936fcae7d3da9959345c -bd6d78399f6ae1ea9d7c0d843ba166ea7e4e7ae5101fd064c019206617ab2379 -72d932f03c8ee191a68f8e569c85caf46cd7d4c14e036d3643211434eca67863 -ef5ec95088ba47d3e6c2744f3fd6570ef8793b71fc976f4ad35e4fb571d1c856 -992e18bb3618dd6af584bdc69358522357751dfbe21666c34fec8f491702c88f -5196ef6a92e29cab4b9afae6e60ff3c84487786320f0f6170e221abe12e1c073 -d29dd1e83a0d0fe4c5d3db7ff949aa602950ae14acbf1bacfde7c2ddc56f1311 -e33ec4c6be2044d6fd04d18106766d44495f73ac441d68922c3e9bdf0e954009 -6c0fb6fef686ac7c59664e255cfbf8d7958f398501367dedf0e99cc0542220ac -8a6152de632136f6d0b3e3b8e9c8eef921768f3d2db09cdf1c7e0a2872d3b130 -624879487969a34403206b96ed7bfa9f4889557010c9be37c3592993c0f44dd1 -7fd5c57bd93b563686047193d5f14d9203da916e22fc83668301bf756c628df8 -5016403e57a7d8f0d441091b5f8672f1d2bd4faa42182c5c087afa483f76cb5b -2bd61b1d129102018f85400a1d36feb45ab10c9cb2da5f370d6a8e07538e1ae9 -58bff59d144f54439c8d58498debfbaa37af934083677fe4c505c6397f47cffd -620fdb2a7bd35da2bc9a8510ac2acdc13e6f5cf7569c726a3dc3bcda959d3663 -b4a0010ddcb796e74b2e25bf52fa0e04bc813ab2553cad5b21f86cf69a043f9a -eb9cda04a2fa6cda34b055d85574ec9bd28dcfd76ba3e1962f35a8833275bf86 -9bd81923c06cb58f47c86eaa415303e912e0b9356824963fead43d7e95e5a6f7 -293aed17a670cb4f23277631f4c76ed9e83cc3a98d63a1475966f2e5c42bc0ea -111da2c3c83cae833b0d129ff3d0f43a44066f87e15b0a34a822b5b7efcd48ea -a0f59844e9d629bf566c159ba930576898cbc990601a6cdbe8c76781a0e7b6e8 -1152618dc695436262a5f6faa4cde7c38d1cf2581d9ea6f2cdfed603a841d1a9 -07b42284d1f883a85869c9cc511444d72466ceffac5c877183881c104be411ce -dc086ee454155a7fa2fe549e34a9503145e06dc953874643c1e026fb030f98e6 -f95a97c730f6967b020e030025294d7f7981dbc9f1cbd023c187490c4576b8a4 -0bb3dfedae11018b5409e107e420926619b054c57260c4e241a56cd1ea97f696 -c7c74baedce348b36d804e25eb0cffa5dae794148fb0f1a534d216cc886afaf7 -e0e1680e0f5824af3620625ebb28e34906489436c41c480fb716cb7150600893 -af244d1fc244076d444a3a276a9f784a7ec8bfb5e664dee91fcf72d67539ebb1 -699db0e4cf51a0df881e621a2d518607acb69029994f17bb498371c6b55bd57a -bce6ab9491eae706336bc41519addc0e0c3ec14feb5b6b4793ab1edb7af98cdf -653e1631d7cdccb2542d9d5b3e2ab35e9b433bc4adfef3a61c29b51f703a0f18 -0537394bbef86f952b2296c37c9b4a3981cc1ab667dbc9d8101664ebf685b406 -d10acdf0f0f6f6d7414c88d4bdd47226495893ed6e278236b823f9b53b7e9606 -f9c77d67f32ca3011a0f3f9d925da5d7d3684e23585424f1d2c5749917ccd585 -f46f0e537cdd69d2ca901b40550d1f66f4eb5a277d5e0f35c6c511e8fec1a8b3 -5465d97f3e6fa0ef92d9fccde9cf3322ef4cae69c45e1a632f82e7af9e53b304 -b4161cab520fdfeef04325674aa98a5bc60633e1dcad4a8254007fffbef90ef4 -52c3273f506a46c78c45341e557f6ebfa502ab8c0255e8594b1ff5e6aac2a6b4 -ce0a979c6527a95917297730c83b8641576d886bb38514e1905f0cbe86e3cab9 -4108f6ca3e8872d1a72107a4ed1a4f4719ff2b13ec51d5b2e2d6c5923ba77acb -aab7dbaf75c3a906181a0538a5928e6e1759911969bca395616cc416c4274a8f -50f4bebb60da583dc3aaef9dc772a6c395fc750cd43b6e4d83b8ebdf0537041c -21bc1e19ed4b3657a9ec8d030966b40266b83094d1c0d13e2d7d0ce0f6736360 -9e37567ee9b74ee0a9d9daf699b25a37c45cdaf9fc6f620947fa0c9309899d93 -b88bdf7393aa676d1bbcb47da0003423d0df204e9271a5df1af3a11458f1ed8b -dbd7e77e5476eb4f751c5239c98003344c82d6f332163d238e93d32557333742 -52ba9c3d1326f008bf93ee2778f57c11c0ec83c355d84f26542122471ff2a37d -ed92b9928ca95dad3d622877b860d80bd2db29208bd32442e8aab6fde632833a -7d01f641b0d56b73ba3e7bdf365e401810ac785d68e69e9df94d26cea3f1c323 -9aabd70ddb04cd3afc4e561c0b88a907dbefe63de2ee3ce592ce8feac071a3b2 -bde3b8541c378367a4963ab7ff7a4fd8b02443336d981b169a4facc4d8ed6c95 -2069d1eabe7aa05e5e152f3754264802350b4e9a6f0234743ff404dc9fcd46a5 -3ae8a0ea707e53b86351389f35bfca0d7d57f47a1bedde1b70f815cf1fef0e24 -8c9144562f56b73183ddb8597e5d4cf8c7cb089dac0af7a9896c9a2971eba344 -b858a81a210fb080316e60fe88ee3fa382a74f5f00512f2016159c274f41f67d -fcd9b3d0de01ba4c74f677e03b945b491b6fc9bfc183ef081b829828faa2abaa -35f29d1316ed09fa67217849d417942234c09b08c990ede511ea03b1299d680c -1dfb99da9c2a1df3aca243f017f89d640639dd26c1937635a4c29bd2d99ed639 -53db076362ce94830ad1a590980819edf991bb8d17242dd65da07288b6159af7 -2af093d4c2f0c71c813df498600b99a14d7c0e21c6079f31c57cb5d0e464573b -ac89c640798be879da0e6cda00d4644060e69eab9dbf1ecf6e356cfe4f47fea7 -608a81a7067908dba67ba8c23b9402668de33d90dad15d1d7dd5dcc20fe58e27 -03645549ffadf8f1e2d37607b84bb297f91fb72ea1141fc337ce7836ba53294b -e642f4c9bad340c712c3bc8c12a3ecf4e7c685a1f692a51f46e406b73d1c766a -c5ecb3e64cc6ba408c52c664820c40d8b727140752623ba0ffd152d58ffa4893 -70e39aa85a65317e379c0dc18c474cfa171c294d0d8a7c8e6f7f25ca30adeed4 -22da01b39929db9099b3ee2ba69851b01ade4c03c60a5a9af94a0a6985123e20 -2e457acabb88545d524a1e878be5ce0a6194ea9fecad8704c6ef3ed08d0b058f -2575bab149ccb05c6235ea748bcdfb0c21f3b0824aa3c26a5cfbd6905eab7838 -03d41b42420ec96db3cbcd59a37b9856efcd3dbf247c1075c1bfd82fefa84b08 -4f0a369c1b66f6af318794f8d8fc9980232117447617b51a3d81d1e09c780ca4 -02f2338c8adb4bfe1f21122235f7f82cd20f569f26c5a824e9c6ca93df89e56d -f0880511e5d652b1c69b0466cf45a670607391094ff35fac107515a3f57d8a22 -67d27d618073a18b4efca6bc4ef09fa889a000406677a1c9690b11044e483a33 -7093ab67b43ca73c16033ff16081c693559bec99e76ab5fe98c6c52239439ffc -c0f5e6f59300454df1af0a5069537fcb84037db4fa75b99d5f540a064cfe05a2 -bc9056038f48c8bbf0c45a38a56fa2e8fd87c3ba7bda19ee89b4c137e27404e8 -6b7d9632d64ab0abd7d55c7c3cd92191b9c942aab58f4108f00820f44bf0b4b4 -87022ecb04303456d7c5395a7e47edb94366810260a4b0e29ad43b31858253e8 -60fbe01a3947218eeabcd198bbf33e01fbad8066b12c31dd8187db3a1a4108b8 -44668de8caa9ba9e4a93fbe115a3a13d95d3ed0a69337dd09cc5af5dcd05703b -d9b81380a311c368c3f8a03888492e2c8217c07812c0f450a70c5a9f35a041e8 -198eea2c046b8817e331b93d3d1435c6e32f36031bad1060713db956db3abfb8 -7cc350a5a1e260bfb4d8808c1d9a6514e3bc764cec31d6a1c76f11c24b1a9683 -948b82ed945132f5f6ac84cabde365b7c35e8abcd5ebd8f1056c013f07ef20ab -8e3be119374be52c34ce41d7b53e6a637fd3311172b2d076b7347e4ac1c665f7 -8672193386f0fa918c531886b266305a76a034e98143d4b59c6f6477740656e0 -87a2b7149d0fbdb907dff5bf17a4a3ae04cd9a22a8a2343960fede26e90e201f -293dfc94031fa976a5c48d05ba792baa8ac2fdc639238601b490a4a2021c4390 -f4eb8cdf25ad41ab3c9fcb10c580b85b4aa8cadb0ded02390e05c130e1328ef9 -4c39c6f17f3e9da3896593f0ec5d99ddede197d2bf2042d2fe45535a5e12bb56 -6e15664a93abea4a69ef5dd3bffab98dc3622922a964da37b0f6e4b7cd1e2ba6 -c642426df1f8a714d49b78497c467c64e07aea394504decc5ed7166330e0914d -37f4d3cc91e589678428a6439ef68f1c85f3417cb48231b422215821673475b2 -5bf66c5f385fcdd2f839e7ba624a0202da091259bee81d337125c0fb5e5aef1e -546ef32c50c3718d8ed84f52c052f0e20bcb99845893606b98288dc5942d5f3a -0298d66a8f0038d9a53cbe7fe9d59d6dff482b75386cf470b97c31b306d37952 -92c60aeaeba33c45937e6a2b0e95a3f76303949983444d2de617ec7643ba0f08 -c720a0860aa8fa45da3452db23c8d5fca7a5ffa3eebc8b8ba7083ec75123156a -615652fb9d241756de3bfd5124b938627720583f901e4989de5f8f7862f94db4 -c19d6d0d3445e3612f74a480a6c48cae649d508de54e106cd7e73a14fbd37bda -ad81f673ac72835f34d7b56816e0ff406e07086ec3b676085c4e3b8e19375714 -de37729d23eb0f55306e88751a636770834207f0252cbdce23f4c8e1ee9e0cf3 -79a88288766355da37367a6364c2fb0c31cf954e8a683779f6adc43c56e2ddac -1329048891ad199059c41f623472a20cd7a16f24e87bbaab069278e61bfb290f -ba081e1e921b37c1f3414f3675836dffc269f29d23538ba0b6b6aca888c6908f -ae354dfbdbabbfb74e39a81fb3e460e7703fe3a53a52b308b7ed196e401e0f26 -cea7df80444876997b5f5c99eb2b28639fecb536f827ab93e0f1c48e40acd51d -841b11fc086d0758c72fb91a5ea65ca66225373143ed0077cd61917f4dc44a5c -916b82cc4b714dfa3fb533b091618a04d7d860c051fdaaaaf4990418a65e1f8e -989a0b0ea936ccfa8b9c767ba20c976499fb52157949a9068192213278e8df37 -4417e1c386e4ae3f59b1b700e49d2e35b752614b04dd884b061e345462770d0f -9d829a7def9f2e6f82b89f36172d9cfce19851ed506e06c496a6a23fd7548c43 -b4a14faaddfcf52c754f3a35dc854a55e0051636c266a4d934897ee3af1236d9 -eb20f374f96c252ce5e4a7934db596023afd0fd420df3365169ed7a4048b1e84 -81702d31972ef546aeed2700e88824e12601fe41ec5253e8d7bc088b874a71a7 -a12827956cb63d4f2ac6d800e78b213c324fd385a83707d62dca6c351e78d18c -9cdd0af2bcc498fdf31d27b5e387efaf2cdbed236b343ea9179c5e99e7a34a76 -15f2e3065cf561ba81520f188ee44aa6549de66b8c6898cc63c32393fd360741 -9e7326dbb42cd38eff7aeea50f6b939c305582db6f772308ec1e5dbc1060f50b -9e2ce61356256b91dcd7ffb970b2fcbaf33f700950247f29f5035144a55aa13e -2190a24ce359e284d4d69c500db7fbf31fe129678e2d72883311f165ccb909b1 -dcbf4dcc325036356290d2e3af9052db9cbe684cb50e86e962abe46dfc691f0f -c08fd6fdb19091eb0f3439effda71d3d2df07b171de8adb64e334edaf149acd3 -76336eef29b5745dd10aee7acad93dcd62c590df2c88b1783f595797238c928f -598b922e0ab9fdf5b9edbd44b35b1d41e309325e34d7b1525da510cec5d7d291 -93ecc002e4fd541b3be2bb49cd741854615603c93afc734f1442b11a6780fcf7 -b7e7b75837dffb8ed245fe85cae4106603b7697f379c6067737c618b70ad472d -73f4f5ce2602d60d723521fa84d12183222b00a139e144f2d403c3b22a253a36 -01bb1bbe3c676bd04628119f7ac8c2b93d02e3cb864a6ddce16618d725216823 -3134a298c911b4d80ab931524968e516ee1632c42256da451143beae6c2ec113 -e691be5f54b06d4558aea1158f9d5053e36ab2eef6ea7e06995141eec9434b99 -76981d7abae3d5753afe5589149c28fb9705c82838e9c3a1acf8dbef47e03227 -20e514daea8fde9f3d7718dcfb24abf266f2c112c1a9904d595bd7de7bd2362f -89701ce44d935e39920bf19a11d8eec055c5bdc70e62c6ecb36762d4b7d225e0 -a61bd51405281c20bc997647e69d51451225d0c24356af318be3ee10c5ad7dec -02fb48853ee708489bf2ec57116824a54176ba85d6168d08a619c862b878dc3f -467f7fcce0751cb433bf323ba10816ed10d8db8d6832d6818ffcd5069147f652 -8e7b44b5ff2ef169ee7c9c0ced05340813e4b4ed6a1ffede2bb66b3fe26a86a4 -ee6c83d862656551f13a56b3c58ef1fd0114bd6a76d09184405a75549e87e4e3 -3b9c6d419a60ceac5de1349b704628a715ac6987e1c7491388beffe039c53ac5 -a9eeb526932f1bd0d57b5b21e2a02bbd40f911b5da88a5ff8b9eb2e4c119e342 -19834c4b2378b5031c4cc7f7e3eef6d4d1a041e26c4f95e6b9a9bd0193ee3854 -8c092d746ca2cf1122f85dae645beb75e2d53e5905d94df8f4b3cf6b416e4f0d -ded9ef543b1503e003a875e0e67924974e20377810ea231d444f848e8aa8d8b1 -c8932ace417c78b3ad0b4ca4ab38b18cbb08ce8bc08c0d3b7aa0b9c308163f8a -7e1969fccc3092f6ce687c19ff401a52510c52a9c5453586fc78b1b1b1b64abe -779d7756b5a3d1a9f1b6d2b12409efc24c20b2062a1d31881bdb3ca8c5425132 -8607404e532a58d30096a7f934c58b93cadcaf93a73aff333d3df0a77b98c00c -02e93be0af063c9195fde065fbac95d92a03ca5ebdf55ad5f76c559232db9cb5 -a4b08d5c34a72fdbeb1ab6f86661b100f8e4f8d0c9512e51bd0746060ea82eb3 -b592fff49bceada8cbdd60fd669d947482068d54d9923fab26847d7656835bc6 -42ec15e8557a0bb79994ad670e2d45d240c5e80f0d42d46b83b7c233299cbed0 -33b126f5b1a424ff16807975b273e540c5678cab5e01f6ea5561f87cf2119ea2 -41ba4397f9e47ebd9878e97ea2a8f86e0d8a84daab594385e7b64f4730cb24f8 -9d04af4d6f362f6be2fd1133d416dde82b2b7b12eed3f8952ce56b94d225fb20 -457b8b765385173c7e5247048a2c28ee49ea561964787c88a36b2efb1f6b469c -3e6122273c8d8a67ecd79c9105c9db6e5fdb5755b5d1764876273d2265f1cd21 -2d3ef1d1238255ce131884e6177ceda204e3614a0c834b79674bf0537e811a3d -9a64fd4fb998414b988a4b5d3ffef13252e4cc0d760e4921f6881fe0a8995bbe -3531a62cc3572d25c2bb9d81a5d87d6afd659ca644e99355fdca71acbd5f0895 -8925af5784129704383696510304f31ba41ca819882d6dedc9e22fc2d0aed84d -5e655a26ffc4d09a915de591d23b003e4443885e9b30d51e9ed28a7355ebcae9 -8b448a211736401c49adf53fc09114d66dfe4714c902252da31b8d67004ef79a -630585673786622a2c7bdabc347685861d7a9c269105dbce7278d9e08cf5b701 -538e4d3eb30c2f32f92f505a96a946425fd88fc3fda68048dc42f9b4c1954ffb -3bab24852a266652ab4498c77eb0ab83d1d30463f91acea571974b67001dcc1f -418886d5ae650f328cd3cbab750c4bcfe46d4e5ee8de5c1bad9b81d5f9e628c1 -7a42e517aaa4622b0c9faa2812bd93d0255b5da46483a3e5649e9866f4d98162 -95225d3ba2ed93ca7dd83e808300c51ca5f94ea47b424bc81d64dc87fba6fa67 -ee21b51a255298402beaedb508f9aff077bda0ca161dc8dea6cccd5b7d038901 -cc1c16283ed4b80541ace9909fbddc869687a2f9b7ff10e9fb8e29403178cc86 -c4de3177a319d2729485f37ffb01fdf5abfed2db975fa5285e780b76fc41eebe -b675ee8949ab6bf9e52e8bcc14fca3188e87727e24450031af0ae66e0b7eb450 -022e2e36a028f28dc2eb256844b42f70bf1508de041e93f215ad3d4fdead1e48 -3ebe29f125adb652ae9a6d5d44237c2e3a97f6ed45eda51b2d8cdb856dd521f6 -9cb87df4bae78a82ebd9b276f4d866c89e254dac840e90ee808dc1dff180f434 -aeb656be8f3de7279f731b333ef5407ca4ac98bbc120fb9ac3dedb795b3f3428 -a51e0a7d2bea5b46912472b761a21544911922097ba38c02a36db7dc4a9dcdec -82a3ea057212c03d8e443d9421626162fa24b58381cc59de60091de0cbffc305 -e3e8052b240d383a5eff8bc002869ee54e7ac6fee709aac6a26838e347bbcbb4 -c706ecd1e14ca4c66dd8c9bc4815c9e58fb8f68005845b6eb5f05108976c01e8 -1be114ed08a0831fc3475820ab5ea303923624401bc4fb6bc01cf82e46d5fcc9 -2fb8d4e3b4f128f451a448504508223c3b6bc90399324be021f0d77f1b0eb859 -daa997bd9657dc93ada20b47750d164e90f46002aa8ba1d42130258d12f54b2e -e24792aea1f448a8b87b940dc3ce069e5c55bf11203730d638b57bcb04b21e61 -059a48942cc5e52966e13b95a6af9695c7e34955582e5ed28569f8b11a8e98df -271232ece486fb2d5220325e6d7cc1943f5c8f86813c842bd11280402b5cb311 -2daaaca424db706ee5493dd03ba573961b193e26b7c14d5746beed7204a9b865 -94a15c4ffa333e787c0fb78dd0364cd9727ef79c1a60b50ff85f4d8edacfaf94 -de2efefc1f6d373903017fc4b456109e69e38d2474904a63e1c33d90f687b5d4 -b6f1552b13eba7c5e329403cdca70ae02179ae25ea88baa206b111be3685607b -f80cf03ee0605cb0ef090e85f64e317c6dde1368077fd2f60268fd8293fa46ae -65d1cfed24f7150f52cb93a712e290321d9bbb916c646070a20dd95afbfe1a60 -63eaafbec0ff10bc8409ff145d37108cd9d1b60670a737293b11bf475d0a7e22 -9c7a846f7700b96db683497b2af7730a50b2162408c91b89ef16e3f87472a9d8 -eb2c39aa817b1bc16f0cc1abcd43232932b0f056e82529c003e8b3edecc8a2f4 -fea94f2784af9c218d0f16e9e2b4c15c815ab44bc4d1ad78c264882aac71b13f -53fe7ed927e53dccfef4bfab785c87e45cf255b5940b82263920a54663f2e056 -04f401805f4e77dba4fed097e5d6ac0cb6d4776732f26ba96adbd8a1604768ce -33d1225ec1fa2d769b5d8e5454c1d2de6f993754124c3b537ec8847e7d403ea4 -23c0940a132bbd7d1de973a4ece55f1fe7bb1b47a860b8ecc9fa127dac775754 -0ed420fd8cd7ec4d654b6c19a637a0d42d13a5b8386c4a2d44158dd322d2d8b8 -4a1fecfb090ffe07dec819bd2c0e60bcd167785a01af92f74dcedff09c51eba1 -34c1e3ecd3876b1eec440650fb0456147d991b72fa19c2875fdde686ae20d44a -b7e995b97f302e47bfbd0d6eef92817fc2e1b574586cdc02f2f9f1762b86b62b -f65d93d12bb75fa0b880c338900c6427a071f1d4b6083c9ad8863f4f3068e550 -08e562680a2fab888ce1352bb783a61b6a42f513edf991f27833aff151f347f9 -9d473d88b172e0adbb20c2e00cefc36fccbb64f2605602e856bb7ba7240d6242 -e42717791a42e566aae40e599a84f663ce46970c90b572bcf3e9d870b44d8fda -fcd70fb84573e7a179698d7d1c6f63e944a3db61e059a690c6d8456264637291 -26911dacf3d9be56a90f7ca9409fdbb1ab71ec0b792a729c3fa867781dc5b73d -0fd1cdcadba6a02c89e1e2f13bc06798534ddf787cca9df9bb06a548180497a7 -754de3eb43f3e3be543de322dddee9bc4f3a26eadcd64017309b6c48703ddb4d -85d08374d4f5681bc82ee987a74547cc86924c565f9469bd7859afb68e30599e -79bed34c4397462ab2668b9120891f4db792c5fe9d76f5028fe586b0b1220fc0 -5d76af77941114d8041991e9b595ff6aad2a720e1e6f58f54b604ca19d1a561f -9a1f3f6c9d8e9f17c147a0367ed23e8153fd67f2d32f74e580fb606e28e1cc51 -cfd09093b82a89813eba2ca76014b814328aefba1357ce6eed45a1033b1dc4b9 -e7a68b3a578fdc44649131b5cbdf509c3c4141f09246ce69a9746f381f724660 -84910d734f1236885ae905a791bdf1f869fa009bd3d05b0057c168252f940d3c -72c58517bbe27e914659c385656b353b9627a6bef6ab7bf6431da9d93035cc40 -2128bd7787460df2bd5ca0f83e42489a8c384de7b4c6d9962253dc9450d816a9 -3d28ae297d80a460cfae38ee32aeae23f36bb2b081deb092a0a4270a05253333 -bf6268b8f5a4033730a63a079958cb2d5568d513b1cbd579ff5bb11abbbe249c -17e8e9e3fba49942c1ab6c5b89b06c866dc552276bb659a99da67786d9f1a134 -4771fcc7c6ba564370521c36774626895d53775e254874050e24f93e81568ed9 -307bff46cdbf3aca9116e3e3ccd9589e65111c558899bf9ab2ac8e205b36afe0 -528cffedd8b9ac9fb0f105f418d05119ee1ed843177bcdc58764414eecff4f04 -be10bca3550d2ea11c4073ba44fcb2a6594b05b1b95b7544bc38dccd23f61ec6 -b4c147a43c299f8f12b7f67a3fbab77cd44a5117f13d4ab637fb96fd5a4b5742 -ad46eb6563f580fd05b484b095cfb2cc9a0a43c85ae048d5da2bd13ca1e03620 -c6019832b8c0d17609336702bd240501b5e0b7be564365675bcd3a474b42ab45 -63704cc986e973d7341386ec9d81821669d14ddfaeba4bb8b7e7b697edd0e845 -6a6f04d36d7b5044d1f3c68c2952051a73c84918f23b7fc56a77a2a9ad97346f -045579479ff05e5161ba9528682747a7e628191d6c787a0460f964881a04178a -31fee3f10125b7c3100c59fb7b420e822655fb3ff5c198c8104e42ae4fe1758b -aae68eeb63204062afc4053da7a7e8954795c46b8dacee545008e5ba7e5279f7 -0dab2481436d9cd51fbc9debbe2869b2f994164d05940e3c2aab9ccb52d9df47 -af127ccc2bba4c719f59bab12cbc6312b0a9f1192f923c4e9ee75df86c5c9b34 -ff10bf1d567112d96bc91f6794cb5450fe9fbafeb43144c64373c4fe3ce31c60 -3ad0ded4d1f505d3124b97854102d08913c202fb7e334bb58ecf5c7d1a29e558 -0e65e78580e8ca8d75e6dc118e31787c2e122b6734ddb83d1904c18ae9027e1e -2222e5af6353abf633e927af8ac0a84c12a756dd2988f9dfdd726045ce98cc8d -fc7658f8b2f40b9f8a2159ea727795fae99b4961c6e7cba0e40796dcf6d2a61b -47666901e589243f7bee9ea4352eb869285e5dae6ebc9ef8ede5bc8004484fe5 -50119d23bffc36e15f09f7f99bb37a82fe7c92731eb94006ffbb131ae6eaf82b -443fe1d5ebd425e223c4574d6273a49653de31893bd311e19b5bef306a0384c5 -a0bad9b7902b52642e2d1ca87b01e08b420312ab48ced2b982dfdd10ebf34f72 -c0f5557c17d8fe4e7b88771d0a4b0807dd30843a9a242e0dee8b5d78bbfc5f44 -fef61b649f19a16fc5b69668d3960b3cced74cf1666dd2a0a34811c9f5b8f641 -9bf7a2fdba3869444cbeee72af90f55432c3e5ae9788e70a7e4ab7855edcbc18 -2e42e443d9ae0502c50121b5977cf6117899147b47d3e0ca50d2274ed4683cbd -c5c9d532e2f790bdd5a86d1dd56eb947c68b059535f79573850f535d9b01cf76 -ad8ec674c3b73b6977ab0a572af25dfb987fdd4d9ed22694df5b0d507ebdb0fb -a802254bd192203e79cf65e3a8699d7d73a2be9008e32a0e2543fad1230f946a -1a3504a7fbf2e5a3c3cdba0c353259cccd7dca2a564157ffc9cb55a37a185833 -7d9d214fc1712eda103bdeccaf1e160b55310974a0fff28337d4d86e6d14d50c -dcaa4dc072458f32df406a3901719ab2904e6fb493420a850e8e2639e77d94d7 -6af7e633bea9a2257312de91212b0df45dccaaa4c78e33756ba05fca0e407dbe -92d88e652338b0974696530e12af206241d00107bb22e34f6fce8ab16db478c0 -acce4702bb633772a86755643db3ab6096a6f465fd3609c784adeb63bde3c6a8 -58547246bfb22326d53a6e81fef83e1390e6053dca839226e55c8240134e411b -e46285d48b60a780b14b9eb45bd01898b529ff5b4a79b7c3d9fc942431135d59 -160fe9cd113c7ac83a9a032378b37996805bb1f927815ad43295374940d7c458 -1a68391c410f3eccda64d2256b1ee80e8ca89c7cb714f40a8689689204f7a91c -15735ca9baf3074a05f67b35f55a7921238049e9dcbf631591a23f4a09616bcc -41eb8741444dbf9e05aaa34a722c05279f1d1b0752f51ece0dc119a0cb874369 -8f1f8d0815ba02be8a742578b1d46585e117e902721437090f8de7093e42fe90 -736d830bca72006f00c48dae33be441ddc4e56b56adc09eeb1be77825adb8b95 -1b798ced887511b5db87b745ebfe3a3da01ceb77de0b089d428570bf8192a00f -f34ba79dda3b51d49465e617d30035c416ee965cd689bbb9a26c8cb7eb55a1c0 -f183a4d2c35684769acb193e699ac248f5701d72487c16f8dce907318955f109 -fd49c94e525d6e9a38df6e60b9e30340a898df4598e5787f0af31b65f7d17960 -e0d0548c1677feea07ea303c37119c18ad948f64038141c6b45cc1c9c352f9c9 -b51435b9211936c5b736d451035894575206d77f231e78be9a81d9c33d9fd0f5 -528a8fe66a43ebb3d0cb5e9635b5372db1409347413a533777f8fcf4726930ce -b29644779f3ee4da634621590ce9831bec5dc88f5cf7dd4ab173277f4b48de14 -c1c6fc34432d859f62c833580ad57ef0b52fdf519912c9744f90e67d02c22a86 -5497de28f4d9d8c8fa77efd6822528f1bcaf1ff9cc934111cb2235c1cf753c89 -d070a1c322d8cc4de90700cc5a74484acf62471c1be4005e20d8dc65ffa72757 -c9606f75ef11c5903714ce77af93f35b3cc1acaebdb3ad361873c5c8483c9814 -5bc1c7ec5737716d0c912aace8ca526c39eec516521659124928e880f6546f64 -124a4c1012aa640d536f33d2e0652133176e7ff09e45823519e7a043a3ab5e13 -a351b79e1397a5a8f375cde10fced5faeb2f56c3c7bd4e38b984a57a171e33da -dc84f6a909dbcffc28521c5e651fb6993e84e225e0bb3e6ece2c9903e8b333c1 -2ae880c163826bee6c3ad5834383b213a35d6d135d44f52c933b2e0403502397 -c89032be86a5569b21cc21e5eac200a1ff11e94e7131237842bf49599dee4763 -fea582cd6705fbfcae44b5b836d0196c39d0deefe298c9264977bff13fe68c4f -f879aff708c71851f8ab9b41a0f5d0210dc1a390229d091d13bb9911537e2ef6 -f44b8553da0c91801eaff991e55366bb474f1beaa8cd89f47c215efd9bec2e9b -0a9aa8aec7a8647d5e68df8a16e9c7c693e5e4cfef688590a00a8d28280a7d56 -71215906e2b97a147a1995b956ea83ab8fd85bca963adb46f9af15fa8d0d3d1b -fd0d84b8bdc06a74657234c8557bd77a1d0479701647d870e08fe34eebb0dc27 -24e31b3d938ed8eaf9f00dc9478ade83f6d9cdfe0712d88b11127a4d94bc477c -0991b5934dd927a90648386380bf9a61fbd37c067008dfd208f98c41bc74eb03 -9393f6ad7b29781256ff3e0696daefc71b53b7257444caf0284ba075972147f0 -814b5079b410c7ebf80c3d092837561733c8a9eae8de802a7ecf12e39cb86838 -a8f0f52177bca4321a461921d0fd32b34cae45c8edddc8315c6090ec54a4aa81 -2ce3d5b65dd33e7c0003f6988c427a7c9d7ce8d0c2f7fc2429a19ce0d94f8ec3 -a2112fa5aa1fcf9a5ed54ee4648517df9735029dec11ac8df02045b47b444417 -56b1e606b0b279c5813a69bd37c6802a21ffdf44982d45f639123bd9b98177e9 -f4a55acaae002ac183ae4c12f5db31a9e69e427c69bdc3392fcb1464491023e5 -68b165725a2eac9a7e6e1e7eb43b8fcfe112f115d5eed55e7edb96f5cd5911fc -d45e31b8272d8a8b7ef69964bc99b14e30f90859750432c17c0d24bffe922db1 -87e3f1605fdaccdc3a3245be9d4d56ebe60909b81a1166f2fba7ebf06d859365 -5538ea90c3acd0cb357c1b0a653d98d63243fb95523ca8cdd7c3a9b501f63e3f -c9688be1a5a1d4dc2a4cfe23f53e9a1539a09d5ee5d4256f1fbf14fef27b7939 -261b679ac70e74256503128871bfeaab8f41bdc771f29b68aba462bfe43ae9af -5516937437cd3298bed43fc933030d40282359d973c25b381d5c997a073cecad -f93d6711ca83ccfedc2506068eb2032d87144e323250c987f6e586324fe44314 -cdd6fa6a7218360f79f182ab3f94bb80fd17548b424dc9fee52b3b69770dc634 -0b2f061e6f9c187bc6de481b731dac64e6f3584d778bc2c06c0c08504bd2be2d -73e3cb8c43d628efadccbd04e5e9c47db5e6fcc6cb4bedc49d5e6e01c3fdb564 -586f56c8e03c39ab3f0e4b1605534ffcc2163fb26179bafe6e577bcccde525e6 -cf5dff607ecbd7174f5afdd1e97416be0c55f43efa028cc9147dc7446fae5a69 -7318989bb15169887b1ad23d2675f8174c116b08b2b6abf9071c815f68a051f1 -5783b852ab99f9d31bf7f45b0d706a263524a3f323e4047d936a0dc557482746 -cf001de8464a3f5fdac1b2641ad42ea4907530daa985706f02c2159b85b5c1a9 -e4ad5d1ae5d362c033d168d30fe92e32db4d094075b5d789d478de2599d6f952 -e2f3a4f716defb6fb70dff10e395e58a8548a6c8216c9951879d3a9d1024d7aa -f245b59d49e6feb3c79ebb6fbd672a8046486413d95b6e72af70521e9bcef55a -152365198ffaef0e3ac599d64915fe9d9fbdf0006c2e0858cda2e0c4861295f2 -9e42a73e14b8e0375b46076cfbd3d9fc2415312095f81afa3ee80a5282a6014c -b4832b886ff771723049d1af7e68b0e6e9d6f735f87accc615d3f4574345d0e5 -51ded9a939b4bca1cf54af16d43b21f6dd17d7c05d34d6c5e0f9c86a8c686c5e -a84fffe4d9d6473f08d24b0006eb134e9f5ac8c08a3cc7d129ebfe017deba14f -305daf6d96e5280ea1de141f4d343c9540ef1312de1224e942fae877544e375e -38cf9f60f7b71eac46f29d2dc5221b3c448ffa0eb1821f4d9bcaaae6189ee272 -184ef912d938e15068d33dd3f91eb5a1246c5986fb05a893ae634bd0909e2df1 -5dae479b238061917e97b03a51e076e43197bc66679b9257dc93564dc25f269e -5cf3508e73bb2c28fad61a76245c246b4ad717eac7f088431168b80795ceffac -d22aa776e05fd5665537e0127e64e82c3223ffd6c0d1f233be184c495ea604e9 -419387d3cc1e5ddca3c0bc3fac78f06ff91ea2444109b0d9bb99820d35320c09 -b4e6a389c6749eb48ee51f4d59eccbf942257d45a4db2778002e8d027761cd73 -6cfc59e05642b7ce23a84859de14001f13e2e38ffb0db84c941e1e5834c7746d -6c4f8e2bbd52a115f4f5728f4a9cfa027af75b443192b00b3aa603122976c6b0 -70dddacf525cb173d8d630c467b10b63fb1dc47f5128e3b237f82be73cf51926 -801df925957c01f696d2ba60ef285c0b0883e5a4efc82fbf007b7bc24be53cf3 -c27fa5c800fb825c0caea257cb6e666426a2a141b353ff4194aa245f2b8353be -d443478918939a1c8107d8a80926fdf43cb10480472d6bf185a121cd2dd77be4 -53f6b8f8694d3624fa4a8dfe5e1f75bdc841bb5f2d2785d992c03ae02e0d4b05 -b04a1c27d06921a228ff5be300554eda56d4e3a1463e9cec82f14939dc6200a2 -bdce7bc078f5de2c51402de5b80a2bf134b68170e1f2bcfbb27cc65e4084559c -f970493feb377ce5b51b69bae3472113446a0931249bc70c763dac4cb1123916 -8fcdec0e834f06b1ab508a78663bdb1a17e05a7095dded1790083bf2d4199a80 -760b5b09b81d60b552e17979d74e64d99b606778c07c1e2e2498882534866842 -562401b57032406bdc1b3a07e8c4230945b7759545d77d9998e9cf8980d25242 -96df3775fd46e228c7ad6ce1d0145ab11001cfbbfb2f0a4a4573ff636e497058 -c7d5e835fe4c5651a2759084849f7fceaddc32c716146e89e4fd43162eee74a1 -40cdad639907c4b711e167f085ce205a87fe439b5dacaefc3e5ceef80fa9ad67 -9b593ec53c29b437b808179b3e03c3c2c61b98175db3ec5e97e1afed6136dbd0 -bfc461be85de4c40b041664876456d179d8988b3dc849e7cd94734b9907b91b5 -04312b37f83cfc50fd9b5174312995b1748cbcc31ba3593ad27ace426f50b2b4 -69538141069617e389374bbf7a790253aa9fdb0fbadde62e117d9de2117c5ca6 -1f33365d73ec21d6bea6d4ae694da4c635c3ea1656f48015aaa810879f467ee9 -5f58beb35659c59ff33d79ad6be7b9b2214e71039d3a33ee8d4e3d786d7bb4e9 -6e9b05fcea4bf31b982643f8ed7086df60e2e8a96cb791a8a6b7db402dcc261e -a2fb759ceff7339764acd4bfa3ab699325b29c48e133f07af5aa9b5862c54676 -c90860a29a2a124f7464a0eb570a3605f3f1f4e2a564348cb40bf8c51752c8ee -4094f82199700c3ee01034adf38ed7d44f1d016f2186fba410a3da169c4b7d62 -23c3b9f0fa2f2148dd8ae9dc0e94edc1948fd4ede27b0163ef447b49e9288bc6 -91c47105f1158631498184be4572cbd8fd5e5a00b107f176bf01b288819b47f9 -e4d77cb96ce62218e3ff7bdff1789a43c53e3807b924cc6671d871dc3f294780 -c0de4423d6e0755c739468c45bfc03c00100dbbbe1727d83f41e6a375881e511 -99e319e79e3fa28000bc6bce1d14d4d841b2889b1bbfa9664fd4d7712ac4df71 -3972c153d6feb521cce90c5b2804702c904d13aaccac02edf02eb6acc1b4c108 -f2f0752e63c023b83bb0861bfd7aaa9e3159da7f3be0fd1ff6c3c6e9d56f585f -a01de89fdd6c29595f705e720c3074324ac6a72d1c556b4b59188c7cdcb0d105 -af0234141c27552fb74dcd88c51720433d5eb183652907b575aeb5e3976d5342 -894ebd34ca5cf54a154fcd58d4b9a9806e2d76e52c2bedea296a25e8163d39b4 -86e6d3fb64c73288c8e71fc27041ee16d5117b93e7d8f0074ae8e1ac24cb23ed -a75b001727ca89b86987fd98ceb4f03b70c7cabd5c50aa3ade826fe3f3a9bd14 -7679c69427581eae0650322769829eb112240bbde0b158c97fc0b46b3e8ab914 -1d4e4f9a6694ea08db53bcb13c545d1e5f5d6ea986c73977c4315a2639071def -ef36370575fdb61c6889dfd035d5231b095f8704cff45648980324430f3a6c62 -5b63dd274f1d87de3b1e3b24da015a60a225c4735c4385ef408321044231ce02 -5f1949c7e2388d29176c548890cfc93821d8d2ac6944441cf3d3209b56fc972d -29fc3ae13215c98c853b01ab1f9a8d9b30439141cb3f545a6af40ec146d2d008 -6a3105cd70cc380889b7af609f4c133e01e16c4fc2215d73b519f890141df725 -58a7e3d11238edbd420554bcd732967687f54dc91be1ad917deb5eb1e08c9867 -3bd1cf0af4cdc543dd699bb5d9df7384ae148b646e76d2cd50f8163833a4227b -c6188fab9ad5d223040f4c2765ea353bcc962ad208c68bbd0e4a46d099ac0a7e -c1d709e087b331ce59ff3f8778eb3093df6a408fd32d23c2f7fceaf8719b11bf -f3e7d0e1071d008039175b88cfb011cc3c3b7953446a4ae0552a1a7152fafc87 -038609a99b748b21cc86ad5f6284ebb4e620ec95dc0dfba9d127774b91405b3e -3257d883692f3d364c38eb606fc2445b2b4a0f6f69ea097784b3859504266b0a -10e1f8f11b47d219f1e71021e55e0c5184a66584928b437a7251503dee725dac -33b8134dde2b23145b696b23d2b9b06d8ac66a2ba926ad3b7df6f8ff6d430a9a -7cd2c45a3b2359438ecac1b7b45ae9f0d90f9e39f8758018020586890a02d87f -7d683d7dcb9b490fdd971a2f372fb292b199b2cfe3d469367a4752aca8b9419c -6ac973eeabbccd6d2b47686a568ea15ccda43f234451e74a8216972732696fa3 -c658360e597e3afa42df4a2a0e26886db8c7a1cebcbd01901d1a212ee8d9a03f -4bf47f9cd47a496bf7c5a13fa0b292bafe80683c0f705598575539181b65434f -0c9c6bb4a3dc538e7654ce286a68c4530003d6490fe093b7d8d6297246ca7bc8 -300463a8005db6477892abae52a97c82da0a13bd63887efc0ee782f484577be5 -fe1f6916c75277ba966d1489d42185437023c45c0962afaa1144f60f71cd8cb3 -1b7f6d3dc06be128d21b1875bf1175839fc6377c6fb4e485b22020b2df76a5b9 -e795757ffce8f1e3c6793d5cd9c80cee2a834c6d0764a8e0b8f0751fc7dd3807 -3b460b265e9adb93141912148a5de598005e078c2189effce12c647a271ed9ec -c08308290065a5e9bea330795179bbb06ff0cb7d81f6a05fffa813093fa03d24 -70a6e7dfc57bc3299b6e03effa9f6f111ad89956083da92bed432d1e7fc45e4b -ef54a003dd01e89ab797a48182047a38af270165df6ea462dec6e50081551733 -bceb428c0f42f47b2a5bc72cf90cd75f544915a42e70cf3c2123cacce601aff4 -b427eb69c6db73ec7e04eb42dd49822877f8946ee406618ab1d865e1e818d50b -2c97766fd431aea72d8f649ca5b49d2824c2b315aa3f96e15ba5d1061fda38d8 -fa30d45ad2cee1592f6f7e08de46b6a31a18d4303c31abcdf4599f96b80582c6 -e32a67faae19568af74898b8ff05ce6f2d5d2fe32632fce899f10bea6237d656 -5d7fe5bb3fe23829c1437d2ed09cc70a65dcb048985ba4136204812d011b6ebf -8b04410ceb1a1392630cd28fad5f97fb5f2da44140a4e549a2a46b04b400340e -7f56e62ec9df4ad6234b5860cf2d3112d4ef7df8a1667efb641a93caa620ea8a -38a0a3dd70a1aa04933dc86d21fd3e35dd0b84e3725a5f135eeb88be6942f968 -c7986108d000763c386beae76341ac329893d609e6d96e9e19d886cdce18e2dd -a526625c2d22de137b72f051b0833f42f396912c850f65af58172d278014e6b6 -78c8387af69c1968f0875653ea3de21a9d1c068ea239798f04af0ccbbf0f1452 -3957b4e1891e7fffad1851b47efa95afddec6754c57f40b671607d800d2b3d17 -8a1f66ecded1aec72bfda1f548c7f680fea29d1ac715b09566b669bf6a20940a -0425a8add1cd8ec7a2009391c517e0c9970160b7ccf4eedc3ffae708d5ea382d -79f5f26c6a5d2a572676f4d7acfc78e45b5118b5536058761b40a75685a3f76a -92a5616237d6f8234f8571bb6ae93dcfd3c89e31db3ce93f0e435b374a02f8bb -d44a3d8b5c6a963cfc4b375a67c209bf5f0d5ac661789f429a568b0b2864279e -4a7c5ecc7524aedae5d7222b474ef6e8610f981c3ad83be1970ccebccca9184e -34eace6d5c0afe47c0a671e33692c11167dd33b2a8c37a61d3643b392065a684 -3cd013154e0630b25d7ca3e6a07f6c0c4f0c9fc7c3cf98a90b595d33e06a530c -bf03c7484223debdbfc6e1f5a0c0dd96e67e488b386836e1ef0868d054a70199 -1b9cecf3428fe9f717d544bd6c4cadbf70e28be16b6bdbd405aa66f99c4c8541 -89a2c6241fe0be5a039184f86740a80dce185120f98025248c98dd27c85bbd2e -8a3029ec74467841c9a2f1572e6e373e25453fe22934d7b3fb77ff01e82ded42 -57702991f77957e19a4ab347a7fa1eb4e6517605c7760778439102ae5b8d24d7 -cb39be917025461fc7a4b7702bd77b7035924a1f5ac9c93f032e1e4400067558 -ea8628c5f2b7105dacb356519ca42c5e86976a4487b52664f005e8a8cb1e991e -f2b68ebc3a8ecf9298a1afc9cdba2fa129a674b7eb8059d1e5af915d47f570ff -873d0284290a01639bc71494ff7e8a64a4959e387140530c5e35389f0374d555 -2deb1ee43b2e0c6978b5de0ac21cd967479a998e5e222afe14a10420d54b21eb -931846c803ced26bd7e9c10e900a544db9915e0871bcbeb6998d0418e27e4cac -6609907a2ebf2e616c6328ec657c7250e9577bfeb0fd38ff99556da280251710 -ae8ff3ca06b375273ac4bfe6c05690ffa2cadbfd30c868d1f39a08f5deb3e709 -e0025e2d20c572fdc08e01eae126eec2e4ab9fe3675921bbca5c218d745c7e4d -c3069a1a5930ac49bc4b637fd4cb356930e4493e5f22253e2771e8afe03338c1 -809d8d5128927121d0f4ba0ea092c97b297829372bd6fca45b62bd030dd77fb9 -76f49ec35ed95f8a3d487bbee6e818c5ceb24b78d201e6073696b923cd662915 -bdfa2a2ecc1fd9fe8904f3f30de825c2870f2489b36732b18eb18b04c6baec7a -9c8a47978cbde08dd8324245bc29b13e63d8c8b99709ca27ae470fb0a2ea9061 -c270758e8c45bb005238ce3b072b5af444ec29431736d60cb4ea901ec6af98f5 -c43c6751b60e2f9f9d39f6a189ab66f34174f50d6f739b307af8ce32e4f166f7 -a651eeb2baad8b5430668c9c9740818fe6c2874b844672240be918bd89ab33c1 -2f2f2f0eb66430c5e61015f71d62f0189fef761d35675364f9a68688784475eb -d84b4de7339c159c3761afb73f9671b4e14ec91a622b25da97948b727d0b3f24 -e8e98fe9b96b34e2a2e59fb19acd8658809c324d499b28d87b325c3e156220b7 -d53834a7f4a3eeaa6140cced75eefbd48b29c2169fbbf8e201cc654ca06733e9 -ce49923d6f678b448786c8439ea3a8590b1627ceef3d6a5f1356a46d9e071aef -72b9020100fd8c4180bbac2bb9a8f414094d73a9883c338ea9bd264862c9762e -7f4e379d73710dec2cf740e45dd3c9ed4ba7e857b95623513d755351e18041db -a296ace76b02a41901e56d02ce3e0067390a423b5c9db53a5de8c3a4485429e6 -fe477472653b184599ad8cdf9908b7d2119cbe9f2b34fae6a35c728e7f93e9cd -d893c9a5cfe7c16f939391383c4e3bfe77898f5c479629b5cbcc0bf665c17275 -61a49e128cfc0e7f90c2093ea94ad4bd4c640eba3002df54d59b5db47de8eddd -8f5d89325d08c7ee41e4119866ed047b78ef942a3c3606d0d1f3ad001c1cdf4d -e74d078629986badc53fb80862e0fa8c16c4ca8ef02b1f1aac654ec2c608ac61 -6c6c5c653d9c05444362864ae02042c61f71873743ed8c1765d665d56ebeb4ac -c547e28b954d997cf6b6c1962444e1159c664e82074f25a17e812a3c85917f6f -ddd6ab172a30db10c47ed1cd1eff739d0d5559d10885c83b96d100abd032f83d -7e6bed6fd487854f48d5f1763dc5a4ccda76a84d8bb90a5d106c0a287ec17e26 -ea59e6c42e89ef3167697377495a0ff1209bbfa321e112651b866aae2775f76a -bbe4d2570e4bc5d03ceaf28a77943283d2cf2bf31b386af1544b7019005b9e6b -e3d6894b31082f5e83e224c9a0f20e6917ccfed422ec9f8bc37283356c2cb7d4 -94902499108d36f0620d7ddd545ae2ccfbff35ee2ea115f6e71638ca05c9ac71 -e7e2d14dab199baa62179dc1bbb14ed19ea92f9c2704ce37d1aee07b8a4c0915 -ed54cd5c82c9653cd4907347bccb11034980be483dc688aea4e0ba05b1ea04d1 -c5487b40c811e79196a4aa353ebd9fe6c6eb207e0054ab0782be388a1bfadf6b -8ffa6467bfbaa6a6d157dcf00553da4575b39039637469e97a0efe91556610b3 -e3a621a82561fc6908291c04fb57c4b6b210ee2455cbfc10443c34759a6c3ec6 -e0cee718596a723ac44c6a5bd08393880243033bdcfaabcaa1f91e47a204be7c -d21fad0a225f8f626f6443f4e13257f0177cde626bccc051b7e9b68969a0d791 -c1759b09a26836e75e298e1b5a4552bbcb51417a5127853f29ed9b22059057e7 -1fe881bf9e191cbf5c41940cbdc7761dd920e23842d7d3d9a5e72da9a0e15b7b -a86c84feced011e6f8fb317b8e572b01e7963f0fca714451192d6e1f1047a0ec -815fe9846545bf797fc096d5ebe25eb48fcfac7b65b8ce063e8bab60a4408e81 -43122b4b6c215802beabbdebcbc93f605db31d6b44fb2332cc8937c0cb8707d8 -73afc9737138325edae9833184c5d6030ff6a18a4238c82bd89fe3843761066c -1c6cd32a7594ffdf410cbec6656de6fbe60f88e1e86a9da6a1c5c89c1bde5c73 -86bfb4d204956ff4142eb36e1a70c58a77e04352723ad622ad8c0772f598885c -866d64430765dd5bf1337c607f44b1efbc2c57db701bb1e9745f7a5766032a56 -4a153b6cb34b6ba564480e9a4596e5675086d3948d174050cee5bf9f5a0998ab -7a6b29a35aa272c3e1f2b726a03dd34a6822ca2ab75eb302b1aaff9c90a60df4 -a9f5268b57389f5c5c2309f717bfab8a7b35597c53d0af6ed0cce7a334bebf2d -89dfe38739d0e9d774836283005ff83cae570770b414594bf201d658608d5d8b -c7e7deb67233a69023bf21a0c33cbe1ee56e23679950c22040a9aea0c22fb18a -d637518966d06183571b4f524dd308da8be58e6cb40d60162cf2020e1dadaae3 -f28a46e085eee74aef5dff7c7804657ba8fdae7b0b283844af97cc2216b31a23 -0fe05a295d986b17dd488ba36f4f3fc7da05cf320234aeafaa5ed870da8cfdb3 -e5863016334f0402c26d7ba70f6c6570aa5c83be15b796d29a2999bb6abd1428 -755c34ae8cdae01ad43801f070a41a57856e09a25e9ebd295fadc76a91521008 -934739bce7b354075b57ec30d8d2f93ee34ab8e47242feb43d1a110c416abb24 -eedfff9f14e57981070261e8234cad5d502091a64426f5db0868f553c601fc09 -5241edfbaa9f9c434fbc2a3d6008b902edad22ea0a4031b17610edc35ade65e8 -d658bbe79b6b96fb4be6ccb47152209988726c45dde4a33c9ae750a3fe6705fc -98953ef7fa65fdbda6413e32f2bd449fa9213e80eb82c306fdc7873750b474a5 -e6d6d47e30b5ec1deec10c246520e1d4323643c13951eb16b7b2e73a38fa04c5 -c5204e98915ca98e814d9eb82ca1f73d2fb8be637c249b776088c514ee47cc2d -bbc400dab767ffb03d7b6330354201560b576f8fc0a16f3b9c16526887c86af9 -4a6389bb0fe568a34518afcf19a0440c006e82d0a82f9cf72261e2d8b7cac1eb -0eeca8d92ef465dc00e0a9f9283ecfd9df9345a0b3fb64035e1cf7bb7bd1ebc5 -5ccfcfbf2de87ef43acb7dc435334eb8c707dc97333411e2cec53f7d9e0a7030 -fa5c851696227a07879dd5dbe9891864840d2848d56dd6cddaa4d7f93378ce87 -16009b18ed1ef7aec9d20f12f3246128b5f613f504a222a5b0209c5ad7367c34 -147cf482d8b81a4aec691abb755fddcb5ce8a3f0f75a943e5ae2776c085f1c56 -03523da51ed5e061dd42d913ec9243e4d8a8c28cc740029b0b89b5f50ff672fd -a16271b71dfe3bcf81b9cf962ed4fb07a9c33d225bd1bbc76a1028ac6400e5cb -14bf248dccef9467ce1d5069f206eff749099355522fcdaf018dc92d5883c5bc -40f520a5443f806dfa8e6df7fa43e2aeaea613649733bc13b8c7407fcba3bfb4 -dca954e168fcd399ed6178b013556266c68f085981ec5ace2b6cab1297ccb5a3 -5ce74def28ae9e1bcf252460306e827bb482ebe2fad28f7b8a9724bcb261301b -9f934fc03e0a73fc669d95a7d11d169be6291b2ad56c0820c38d3da6724f7288 -9e88517e468a38c7b18d1a78b3fcbbdb1b0440fc2d2e4304845067af4dee6969 -30882b4b4c0d604b127e4d9d39a03fac95e4d302ca8b2e503fc5e71a4df9a189 -f4f7bdf2222d7d8af1a3f72cf2becca1156c658202ddb7b514ffe9bbf15ffd7e -5e355d26f2323cc5cc9ea65d64854e77f63c633cb5c7f8d8fcab74b84c54839c -d844e95fa88912b390e7ddcbb5ea484c80c5a23dfd56ec685e74de7e08b33133 -eff947ce849f9474fa08eb217b2de554abd9f6e0bebe6b5967870e52bad78d1c -fbc2d9329da4d2242371cb6907a0ff43fb0760667daad3a94f844a6731cd4e0b -c822701640910c54571e71668f4985c8acee685c99a655159ccaae1b62a7c750 -c1b344a5661f8a03506b122ad9c764d43bcf35358f1a2e8db008247166d96fe4 -20fd8743d342b7c1dbcb77e10e034ff4abc17aa65fe8741b7355322d627f5937 -9a24835f0768f61e715feb5ec4ae617fc253a4d3235d0e730431dfd8915454f3 -e677cbe526f7c1d657b84a11b37ec1903110ec922d14e260552176b7c33b7a89 -852e1c3aa5b6ee7da91c299e1e315cb542085a1882e3bd2756a0719101668ffc -19cf462d1dfcaa3a932b810721ae024d615dc7cb2c73c8291aa40640c47046f6 -b2a0727a8594a310c142bd2b5805352b8cecd7298131a5bc27c59e7ee09f32b8 -472f95c7d15b13638c83a6f75806f016923a7623521452b5c1cf50b01f219fdb -4bd1f50665870e01e87fe5dc3ca456bfbc7aa7d39984969e8e6076735843dc2c -baa3818b4c14b9a8e95f38c8e1eeeac106105e9bbbe09fa97e962a6a973cb1a4 -ad4af5aec8d3f41ed1ba9b643727e666bafb707caae5e8344757fabdc61eeb02 -34be7900da9fec9a5cb18ebf5133c65426d8f6c1e8569bbd6bca5035a43f2419 -ee2235e47cf69d3f73acd9ec3c0e6a3f8bbab88f5d451d524ef87bab3bac683c -6ef13769614eedf714af67f0bd5d5441789456d61d09ac410e8480040aef32a1 -84b5ceab66be5dc476b989bb1ef4fceccb7796d7da42a13f7171d4ec79f0fd02 -f5410d9c8398843583ad9d7e7dbb1e1f00b2ab03cfc88adc1b388407a7f68f4e -30f1d39bc3d7619ed1d4c1cd6be0b3aaaae513bcb878a743a52417ff0e8bb9cd -98aea3993698bf78e004b8ed990bee80392edc6eec4a3d768618d8f30c7add10 -deed5a262bb23ad7e29027d2f4c3786c4b7e99c2a5465d89b9fd9a46cef8e534 -ab5d62495db35b52600c68aebac0d414b9721b93e315d4c1540b5cf91e496ab0 -59ca37542d61d3a8c47f5a0976e5c797f82275e27a4eff9f0d5e51253052af4d -e34364ce4c1ea9f59537986a5417a36336f8ed624a8e4a0acd4baeb2360c75d0 -8e39e8ddbe8ae8368c06c3207e88df90ce5b645f7a5f792eb125bbc1b3009074 -13e09464da1d766eaf70d36743d8d9dd3568aa4189d3c1f50c0fc8f9ca5fd2fc -70fec0bf2ec8178e0f36e3b4f387044628a3d13844aef07b4ab4bcacedcbbfea -77549640c79f078fa7277bcf08cb552cda4bb9c113a367ab860fda5fbb8bab64 -4f1adc050532a36117c80d3c1a50ad5c13276d1202238c0bb1189167d8b92f20 -604f4ca5b4cab3d20ed17667c21ca0e13582ff0006ba3c4c3652d6e2d4add119 -f34fe8381feeee629ee5b56cc0f7613defb3e3a61570865b03e1e2a6af79e19a -81966fd7d5f4b7a97c67b1818b498e32e2406d1dd08a973efeca4623967eac3b -c362a89e0cbd5ab38ce56684e45800a05efbf667769f3e4eaddb0b2e9f455aa1 -5ff1cd2470f386f6cdedeec9044f0fe8ece00cde988ef98ba0e9ea7d32e16627 -8a98bde0023b91801574e44bebf33bac8f816eecdbbec6a7b71288768cb34566 -f91be024fe6b6d7f3250ec89f31eea8fb719c72a4130ffe89af12355b5959079 -911c0f6071c4122441c12fdd404adb68c24d6adee8b6528d51dca93f980b9c6f -84c85d6c2ed62206bd3ba1caa80b0a9ae7e2a97f93ecf40a550e3043dc9196d0 -78927c6bd5799052605acf2ce5afd281a36f5f0d0e257bd965e4a33da6e52c4d -55b78eb2d81164dd3f9ebcd891ddc3097f2fe5a4dcac54d3954631ddc72335f8 -307f6fc018a54f0594f2f3efd265d754f88b2db70a0f2cbed68c969b8a46a0e0 -1b16124c04b28affffca36838695beb9eb501df5bb2d75c734e05a6f812ee355 -0ee5b435ed22dc144091aed9d8cc9d0167639a8c27ae54b47fef0c2d03c1cbea -45fe2f615f55248d12d6223ab37b6d2bfee6c22c97beb6a1889445bc4d580cd3 -a5cec3c32d16caa25be9fb60531c82df1d0ce27d47f2cc4ee467e11ab3059e36 -4050f78ea62f76eaad91c0e61791546a2e397c5ef717ba9cc8fc5677db96037c -e76d5e04f88c444f816317b085719913e2a17b1fc972ef6259cfdc3c5e5296f1 -d6837c826891f87c25e94bb2b7c467c9c47af3ae8f8b2d2f78db31bf70f6d441 -2b8a759c1bf95beb73486ea94a7dbb3e2ffef29348d83a86c7e881f1f4ee2cf6 -20e47fd71d878adf716dc5661872686339b04b830a71afc47aad8da73b4e528f -35e590921cb7aace547bf65026e95bbfb954bd61200505ae2fbfb1786b87ff29 -15fdc6728228d8df9908b4a9e0cc8e63ee8248b4be9515b43254ce741d121ba1 -da356bc2f810e1ab97a4a3989a74d1f756728f1d2939631a263f8982468e19d3 -89277c4ecb6a6722bf8a64ca61a9a24a7ad91712395ae0a5019167d36bcf321f -0a15fd2c8f5feba266431f9e69008e881946a0439b87b10359bb7512aea2dfba -0f3681e86b5b5d53a9e16edab4a966272af633965173d18d714119043fa51cdd -637fe373d28b1bb993f09f20011ab2498a1747a8d3d472af21ca33c97fb8aa32 -07dc6989da7d81b951a6d408365265c590a37ec5dd5849fe970252ed7004e7b0 -b5a5f458a3fcd438bb00307301fd68e9e3b6f28f446145c53b6cd7cc10520fd5 -e88259ce39940869a6b15c2410478f53dd59b93d68a798f479527bb48ad1a9a8 -32ff0b7256e9744f4a2ca2c057487259767ccb30abee8237de515677c6cacc4d -cf5814245ff60651707e85d9e1c82514a027ed9c6b487a9ee53cf5aba2f3df16 -4fbee3f9411359da890a379cbc0c3e63f150e5f3d50223b673f581af077dddc1 -38baa78428fdff0368531582453f9f3ed17ce9b8d65205a88e23a4c33cbdb3a0 -7b62e4f0589cffc50259e40a2df7245cb1e49d2c1fbab2643ecf7f4fff907501 -dccefd8ab9a8b3766061b536e7dceb4449480c098d1b7b215d774f4de6ab0bec -a7533c6334e0f0340a41cc432a5ce03c503ce4f619a2cc80f6aab99f5bca840e -928b564267a98b6539caaec93fdb00515ffe38752ab53d0005b4fb676d71bda2 -e803e388b9ff9edec389b1df8c970dc94703e76e49ea644d610f8df2494e5b1d -670ce13ebbc55d05a64b8aee0d3123ac49ef3aa251b98166bfe8d32a856da108 -15e6e93c8148159df46ed944bb06ec0931c863c19f600cb71ff138a726c2b9fe -40a71363367668b54e2971cf8eaa596808428d3a66bcb6b56a5263851fc4b4ea -96a4d4f2a687f2b08f5b22fab85ba0b1783c5b29ea3c0da7cacc53ae3cc1c545 -9c211adad5da6788400e2c9f707dd22558427baeab93a76ed81126594f11b8bd -097fd92770cc988cd9a29182afeac743fc6d78e559628cd827b041ab515ced1a -a6c836ac89287624fbda6d8b17cad34e7082b492bd5f564b3feaa80ac642bfe8 -66ce3b80de0a155d07ba8ecb8979ddcabf2d6d875304295cb5aa678e17a7703c -e58990f471248670ebf53c27b6c5de6ba5cea7d8b9199475fcbc29e88ac42332 -c9d9399f8ecf73ea3f2449e91c9e49c0013b71f03fe6aa346d0ed73aa295e799 -399895da22f920aa78e0de030a8aa258a9a8adbf57503a55269bf4bcf7c3e0bd -e78cb546424c713d39c21511edb1679fa4f0a142d6225ee8f51ef2042c09099f -b715e4d9cb9f240de1233e0a8df6ca17d3aade3adbcc8211d16a5615f4817149 -ace7352c3308692da82dca88442aa329643f50f957ce7ddf9e60c5d646cfa4b9 -4845ac53842cc63858cd6764ed20b60af6188aa5d1b2af30e5d8b93332acafc9 -3fc6e34293b35bc3c55dbc4821c8acbf77db79b6d645c8c57ac4ee35a7df70ab -a2dc8892444b05abaf70fe01ff76e8d6eb53d2a630256395a7a37100a3e27b15 -9f537168599456f0b8351361d65e9a7cbad5f1c8cf135407c4ccc5a63b745bca -5ec67c707c4439c1a4c4e12757665b6175a421aefa238d2905347abaab9e09c3 -70560b8225c3ab2245673f72454b0d5de1280b6e1a74ed538333bc9ba5dbf55e -5248c56469b879ddd427ca95dbed730606c83d06de427ec717fa976f3fc7bad0 -8d3b067d47abd223d4e84ce5b121cd8079a749c4d4682120811e745eee4327fe -9d32138185e9e2bbb035f38929c955941834dc3d97db08aa0a8ea6280ba6ebd8 -e10340d1697c9f006532211c085505e0c8e630a2407ae908c1c08c6d28133bdc -b4d7ef02242474285d171b1a45bde9cf44d9e310fc6909072a27e6cb2d380237 -26fd5904a4860e93084b449d42769900bae4df9d0fbf8d32a388bee3cb768f95 -4f31b5f5575e9ee29735ad0aa69b6995cf5e16240838575c071e3699f56bf392 -c9fc6d17369dc6269cf13c5c2c24dbf908d45c76c24fc9a56da318673f09a38f -ba3d915761f15a4549f0379448bb8ce4c6814811e5067f05dfa0088d20deebeb -3b66229d876e15c9de62f4204bc22e311d2e453b635df66bc86758059f93428e -f2e07d4b54dbd5654b3587b0391114aaecec317e0c4e231f11d4448e0605b385 -585d81d88eff71d680315dc7f8902d44bb1ce2b413efd8819eb797f1d879ff40 -db2323e159f612792c68ca6efc3bb729bbd441417dbaac830a4fd5f39a7982d4 -4d175a5f65081b61ba63cb32da9ddb28147579bedcae0860e76916be726b2a2c -0872dd9f957781ba37f197c1a787d2c94b6d6885c1ecec87df60d1332ea860f8 -fec010d9e17850b6a705ced2677204352ea78d5ed768348f4b61b0f58cb786a6 -e95b86711c2eea4cc71b2a2aa215f23807300446f850ddac2645246a77b9d30b -fed01e070a03bf90e42511b36fe93a0e45fc5698ccb6fd1670abbe2b2bbd6070 -7f4a60a7f02f226f26d5b5613489af37eb6bbc03d2a929cdcecaa01fb81df875 -1d26772bbf19adea6c4f5c3db9f7fce89f8877b1e86a6506975d501ed60f6fc4 -8a892e3f5e4476f8fc63f33d644136c35f6f19ee6dce0cc3454052560bd421dd -f0c83d2ae3dcfa5bd3dea878e1c835453a257a52e2c3b0e4bed7739eb9a0526d -1f18f60236955365ecf71894fea767df1edb08f6b4763abc3f1076c76995cd8a -5fc7dfa1a70f2eaec68454fd5fdcb820b05be4a26702e2c297230be969b35e42 -96c5a80d8472ea335cd4711eea45e9a83089486a4280dd2c778b76fe88117c6c -1f20b7598ec92e3315b205a17a2754d0420775b14ec1dc3765305caf15f60ad5 -0903ed6577de3b00f421cc295358c7d23bcd10b92906290cf409ff3d08974444 -f3975ee10aa9eb793b5b9281b2442a00036ee57d04412e8ba2de230e81ef8cc7 -77f2ef1076f805e32e6cc81404ade720763a24b3ce97a3e97a796c3731af3b1d -188ec7f6ce0ad969d187d18e87d36d32e8d56b1ba67bc1f26588ba7a5de5a8c3 -2db53d2959b7e9e21ed7f4838d6a8da7610897d9c79ad4cab96b88d2addf724a -790de164aa6c4e1084fc37e3778c12ee1ab5e1b45ade59dfb54050f7aed12d3d -43c1e89f747f26802af9fefc7a09e392fec618079e180ded067f267ec8ccd810 -25b35a65e05ee7fde8fdefe9438fd9705ebce6e7885fc7aec4c18f8ead5e50a4 -4b29984d6e7599bf8eff738d5bd7ea0b29cdbc804bc6c92314c413c6f9fbd013 -5af956c0ec7c927c4947da81e5d97650e7ba10890af1d338072e575602649157 -8f64a18a5748106434e7354ce4d0be25f9d867801d204f82faaabcd6f57345a3 -7b81b75fc9adc100403a8868d37d347ad4045ddcac3fc80e846a1c54d0e7047a -4d9d911dcd086757688f3f485226a3e5551683017ff0ec0a4eb94524bd98234a -c4676b12009ffb04993ea1358e6e189fa552814de8ef7d558c39bd110ee1b823 -f92cf7a2bd13a54a7b9d548f0b780cf978a1b60ace40f77410837f43f2757464 -0f3ce9e0c16f0598d44f276a63d294eca9ab485d3704f0f786ca4a243481fe83 -4002f7401319cff93eb16bb72a47f51c300845780d27d81edef84b4871b6dd4f -872e39707d9092ce18fb071c58e7bb01771b5272596e203e1ffc47e33efa0a9c -fb73b12729f4294fbb1efdfcf6719dc41ca146593ffbdd1e1f586b906616e281 -4bbdeee5b4ae01d076728f8e27bf34ff7c0ee32f69e6596b54806da5888188e3 -1dfb9ef997613106466fb23055df196e79aac1da1e757608d04097870dd64f0d -3d1516d02b91cbaabaa7659f8460a93f2491b97d2854bff9cdbc6c9c9f17cb7c -fe88d5e91a63a3b668367999d0ad0925d22848b2521fbc2724e160d797fd5e40 -4e0fd2361595aa1ad5e9b06856b36e3b2f05aeef0c4e7a1ea4cc7f4dcd7014c9 -64f192d576d70438bfb352430a507a941ca7521dd869da6c0b0ca783ff67ef8b -a160b16070c5e7fdcb8a487e4f2274940ff32d6c33919510e473034bb04f1dde -60c72d9dd5d7c939c886c818e8c1a64ebf589fee9abc1d22cc5b8340f37d4289 -573fac5a93f80a18e93edaef6982c412e6b001c11b355434e79ed88bee588caf -1795bf249b95f4a3c2532e60819b61a888f357c12d91725d15e66a5d3807d21d -0975a1e891ef88b5ad8e7967b7f13264c7e55db3fcfb7393bcfe4dfdf4936457 -b60b8fec5f9d9ee526f6aec3f2c9888eff4e709136c5bb916cd63df1364430cd -2be80757446e82f02bb1252281a337136e59d863d03635b2617cafddabeeea57 -77acae289c3a4e9ca4090f63d7770ae89f5da664baeb6570d157110ba1fc8fab -7b9353c29318d06b690d3684aed6690073bcf78cf9157f8bdfb51225f902e512 -8e4320767948e384d45436e5cf9846ddf7cdf11c4637625b9fc8ec8b74128b40 -bc2171068b897a5a3f23f8e58aee15f5a94462d8347c283a8da42449ed674bcb -e1cdc0b27a61af1a9ed9ae2c679d5fd92d44a781c655df2ee386163b6dc261af -c01a6b4ee4ab5548540781877b366d3c1cfbfb0cf08021accc1fe9cf89cc0f84 -20e86d28ba7b69a1692e84fe7845a2fc65fef4f5aa8696d8b2d01b6365591b91 -192a0725bf84d6be2362e0412e2a34ff5c253451debf45e250098231c0b00f38 -717a2ebe59516586c12efe459576ab48eb0bd4119d2e336d0ad276bcb854c0f2 -ec3f29e901cfe13551a6936e631c26541acdb42092b90389c61a35f417dd5beb -cb0d44575b48a687c6725a1ead3fc30eaab5935c2bd56e2db7e9975bde495bca -e7d76f2beb0c3ece576b136ace6208c4d26fbd0882c432fb6475733d9595b198 -be484d34ecbd5dc9f4eed403b7d07826648436561f969079b03888a66318c0a4 -00304321c7726e8dc672f1d632d804b07ef133a34fd1d247f20152f47f116295 -93ab91a25bb98ba7945c4d9f8f5aa3514beab8e0062379677272befe49015351 -6832c2d5577214282c8874ec5e9a9331193e1af4730586c5c8f666930f34e0f2 -e2a442fa357e74f8cb5df4232fb1add221e3157f17f92a4d7c34025d73f8c6e5 -d7f4fe55d80bdd37b1d59784eb6e464d59e59fd8ac8e3e60fe8f2a56b129abe2 -0f9d077dca0675352c3aae70145d76df1e0161af26106832929b20abc1baa47e -03dec456c03cf75402da5bf5df58d56e15a511b26d2865b956413f934438638f -2d43328686fab8aa76ca4c1c915cea3fb51d198b4464b51a3b9c48783aea052f -fe75d4c51dbc5b728b234c3c23401f56f7c6442dde7d2191b4d152106ff3dc14 -accd34a7910dd6594d10b476b4b8ca0e761d4d50236c3fea18523ea4c8b7db8d -954a871e7454f6baec989155f8c5824492a7158d5d25718524bb2248e4d1bec4 -0fe5cfa8bc6456d761c8bdd0b0fb6c8c2b412382d844e9aba3301801482a7ef5 -564b097730239058bcf35d8869e49d77ef97308fcc50e3058bd9ed198f86fb61 -4ac7dc40ffb26ea4671c4ba45fd08841fab81dec0225eee2b93169067deafc0a -3f6150a89532471cd4685746ce085c1ba32e377f5b59f6c2b38c70ad0bc37e28 -41e3e27a8a0f3762823c025cb103c7d44aa3b4ce3051f3794e15f74c80ccdaef -99978b708e65a0312b1afb84f26c71d365a32ed4b7a89e9619f59a0d8a855125 -f6ac31e3e51bd0e08ddbe05bc9c1c39099980247641d0b7d1af738cad8bd8b48 -70b0c1dbe95d44c12df1e60fafc42b5f2df824711f30df3e6469c7786054c3f6 -3a65d6bb81f6fad927bac49441de854b90af24d968157da20031be8a0cd9f711 -5b36c1095abe3dbeb0e984eaafa024d31410d25a8d51d90cffbb3d2d8c05c8a7 -27aedaa02e25670f537c6c30307deb9652e87bc047ddbe375cdd153056a0db9c -575fd3d834a4fcf948f96e7a3ca2691c2106ae550accdc6482b0770722274bc9 -1e8dda7cc8e1084869bebab4fda9e05c42e3757c1e8d199c57b49751c3b101af -51eb614f0adec15f47bf28cd7488e0c53dd1942239fd9e5279ce97566239101c -24a59788f47bbdd525ffe2411a6d1ee74e6daa5ba9ee220eb9e8f8f5ef4590ef -ca1aa95fc5b551745d4ff2242f733897fb9b7e8a39744ddec82b2306559cc9e7 -e6258bced3bba0434327ec925349b8a60b1aa52b1f4b8a4e2fed58a3c5a06bc7 -3d19406a20fcd069d71db1c7361d3e8e37c56104bdbdce0caf6de48156067cc4 -fc2cfb22feb744bfd4e58bf732a54893b7e7c101b31076388281cbbf9a29a2ba -cb8fee6ef9f82eca761f5deaf401e7eeaf6d6befb77ec9b3aaa3d24c7e32a59b -a6124da1cffc414a691b7ee27808efbe6f0703fe9d6708355170c50d7593c78f -f7a4338eb4eee56c7b8932117a83b5a836c2f86ce1b181adef149e402f3f4bc4 -fb49cebc10569ef0bd4ade63e77c06f50237e161802d4b1706b4aad1014c96e2 -f7a710188ca7314f7ebf16af27e0557580d8e2e2106e669d41abc9193d3954f0 -265a556dea64aa306bd96360fda78f451ad152a8022755e327f42dd606acf5e3 -0bbbf1fbfc35c27f6e6096d08b93c64c34a6e2dba1e5b6eeb1ac3dce832f2f95 -2fdfd7ceb37512e8e4bbcb57c3a707a9b4cc7b027eb1efc42a4bf865f4b5d8cc -15e41f02f48392c6ede7cf2d970c26c1105f75ee9d3841dbff430301677d6b4a -cb207ec39ea8610679203f4b8ef86be77a84a34df41ed8ad04870f2ae8d7a249 -ccd91c8848eaea7f026d6be7cd98a2d8ea5995c88a50a8d8c25c5f7c5ef1ebbd -6c7e7955dfa6b3ac682738cce738338646d576094995a0a016c557e371b471ba -66efcf969d4f5aac72f1515987310d72f63bcd9b7883aa04dcaf8914fdaad0ff -837ffd1e22f0022373c9364bb22bfe532c2481d42b9e18ee15f7c5cd8cfbde5e -908f37bf3ac26261d4297f4b3356f7c685ff8838151fac00f2a4b7cd50ede439 -20665006e7c40ffbb888a7f4023873796a11520918ad529532f05486e23cad81 -f3db64b0d911bde6d18efcdfc447dbb132f1ab8c91003ff01bbad69e7ce198f9 -24ae214f03711535ac13773ba34e600edb88f40f41686f7689290bd7bf4201db -d698012994d14b11c6248062c23986b5c746f9e316da4b5254f78d8dac23c7e6 -5a757e3cc3332a910ac6602fe4a26e2fd1dbac970fe93666d5f0ad943d94a405 -b7eeeb1feb27a905c4afe46cfa80f5ae0fefa08b00a29e1b74406d2403a23631 -bd6c816ef7f1daf83b6055ddebe467e56f0a7538b8abb32c906f07415a4b7553 -81ace6e37990be14a6130f54cd4921a61c8298ce628189aff1dec9c4ae3cce8c -46e7cfe7f95989f346b85a38b0cb5ae21289dae12d541b5d4a8408830ce7a471 -6d3582a5b51ad348d286783f7e37bae597eee8005908bb552d28cabf1e5eebf2 -b5b9b54abac0a3f9ffbd3107c1e7cb4c8282351926dd255f7c31406bee3a268e -134cca87b17ad8089da8c4985a67fc05f426193e231197cecb1459fd33071d83 -a975cd13c617adfd7bebe3cb04b35d7e37ad766f3aa9d7138a21f8378a784c33 -a92eb38558fbef27895846be99f9bcfde3497434d701e3d8e738a23004b5178d -a105a0fd3c7b32c13fa7a371553397c6379cfa31d70b6bd985aa7a8e939fc88f -d6aa38c4ea9511df341a9a5281b2fee56c72821f797f1c1cca0c7ae447479e8a -49222488ad2ba09d2cc2b2972a680a6ae4bb595a531f941cb15c60a0d4995156 -e80461e93c5261f1984532f95d44f3d3b4ebfd5dfc252a65397aa6cd5cfddbc9 -6817b46b8b748d48d0778f527fea35a7315b9d036ed8b115bbec6a7a28eac153 -5c5230810da99ec76f5bbcdcb9f368b33fecafd01d045385175217684b06d0c0 -ac6360f0cd335c9515d54da7239015fbda1c455245c07c4dd7eb06eeb65ac291 -9f94b50749157f476072589075f43512387172f7e3f9f9c2f2e4fbd57858dbaf -af10076723c701c45d82bafee496146bcfee936e915adc92e9d1f71d3d3ed359 -4bba84299bc83de2ee2aa4cf24b5a137a188f01f5cee1a614fbf0779260ed511 -f03f39fc993b3e62e09c9a059439997c376edeb8bc048ccdd5fc5358202c67f7 -2f474943a6e6c5f8f560754bbcb6bf2ba9470c5d7f31ab21769a9b9f9d705e3a -17bcb6661e87856ce06f36a37d31acab734e77822232244f7a8498ced52fdb6b -68d7941d8ab7a89cbb54077b5a41b8c29f29592d1feff8f2af3b11f918b4c121 -159b63dca2416dd078393114398807b1b0fc5a314c2241d357aaefa3b1de6922 -4ef3f074aab51faca68bc3346379ccd323ae443189874f17174c967c5df27f38 -0bb4cf61c66a1d58d038e06480514cc964c0ebb77859a35201590b0c1fac07e6 -d0567d38487c669b0edd637065a815ac693102129db0c7d9ca41836830cbb7b0 -0832a60fe237451f567197d89d6b51a81f9dfeee26601c2315eaeb4d8a3dd7f4 -3ee624d776bb3f0d3331b77e5abd01b0c1ebd00e67949795e6010ecd14783f97 -7ffd18660b310bdbda83d2719d71eb6261567d924efd1dacdc1adb6001dcb5c3 -ca657713c5befca5d64107d7267a8b318d43f4d723bca3cb29922a63ff5ad630 -c0bf4dca4f87f81a7456086bfd6efebce51d2660a2e8e90618f14fe3c44de334 -875d2aa8a80f5fb70da46cf60d24a510501319aaa8b72abe84d95e758fe95e73 -4fa8594c4f9602e9026e7b96d2a874fecc61691b33c2b5eeb97f66e4a1fc7ebc -975f57c3a52e759124b60798e67398a5f7c3550147f165b53dd6294c91e922ce -8553fa08c65680aee9232954d26a22909fbdb33676a25db3d471eb6ca04d7ea8 -22b0796b3d2ce3606da7d9e3ab883f5072e47d516994222edb0f939149bd16cc -b3f86df1830e76ec1abe005138476281e8cedaffc54faf37ecc0916abe3ced99 -1de9402caae32f4d1e421e52fbfffc3801c3214d3ebb4cf9be920e167192131b -47eb36da2f3530dcaa6e478ef92112b07643071d33c6fef397fb2e88b04a0942 -9cfe922676ed1043ee2855e7fef7a8405413a354ae800d10d9acf00605f46356 -2af27cc095435c9efdd72b78fef3ade3ca7ee729e07d158ad0cdf2b863ea50cb -c9cddf381ec49c0670928e2f312762e3904229e8c7d6e0a8fbd8960c06da4049 -c5bf531a5d1b4ff992e7100ef4c157012be3885d7b74f384dd3b483ebbdfb238 -e2bd1ea743d08c2dfc3972ab3eb00745048929506677d7f60947a5540cfb2183 -ac7a53a11e5e53406007f0956e52237be05a288b087cfc21c87558f86f948154 -cc4899fa27172ebd6c5b82d8a7789316c261fa9021e0ddf19912a38d07e4f4c4 -c5476fb3db933d5efb6ca046cec85488e5a790e32e32f67bde29e574197c59d2 -2187ac1742c0fdd75708e002b392c0b3e2e72f1e290f8ff25bc0b438aea6df92 -a55437730683a2652027629f604ef9b3e3af0ad4cfee874c7879e430d5a63633 -58291c1b21faeba26debb282d145e36a4bd8eef37d8d3c3ee1377225f2d10852 -cf5812b7c756f71e2319dca8c411d0f604c3cf44426d8a13368531cdae4ccd7a -1a5f8ece4719d122babdb331a7c66978edd63fab5f5399dc1d35fa836e17fc60 -35cc782f29354eadd6994580c756e73d43ff14ac06f95c0fc096e404a7f6dc76 -215c5810ff9e061120affa3902818e2ca51ba1be1984535fce287def42e90d1c -61a738c9d1700663041a19e4985f8c2eb58de39d93596e8347e44087fa8cf013 -302e38dc1e4e0c5a3109320cd9d46186b53d69e7000dda34a155064607e9621b -8fe4352c6ec90bc0a49518bb090ee10ff9ebff078da49eb4d73945fb0d9c8aa4 -0ed9aa8aeaba26c8f48443a364738adb35f6ebb95b480942c13efe571328325f -8243cbe8d50962f200159c0131b981ecb58e2350ee08eb23aa75d1b1c02feeda -d16ad76c6697e5a559dd686f7d4a29f56e48ae3d9572321a1a328327750cb86c -737a872174c73837e51713052213e9c26c5f2024400d21ceb54465afb4a713af -020813e11046c1a94f0b80896306245e92697e5b4ee839a37c51234b80364112 -090bbe8da7662c41df4ffe2db8d3332265d86c5884ee8e8e49420ab4aea01045 -5d44cf8224993b8e67ff311f8bbda2f73926fbb22b367c77906f02cb0fda26e6 -a0d17e3be74d880e9377f4be63dc10805b2affe60dabfc1794b91ae2c9b739cf -6bfae915d780f3bbb9f07a73484c4449eac3c4765ad5214f557a875566b546f0 -c18da167a9ea6f4a321f32371779f68dc38cc2c4c0c852e9e424b4d8fda753f5 -119d214a3ed3366b258bdd04cf63b666fbfea6a3372043a4343dc8401d09624e -9925c60d83214650a977115cd8cb8bbcb96aa4ebf7436bcdb92a98ba93c19af2 -f4491445b2bdafa1c8b91aa0b2fbcc6bc2d345fa051fede59be544edf6041f49 -ffe465d3550c4c989482b59b2d8c9ff8c63513252c6956c0e3c812067c8835eb -3b60960ca4147e1fe3a9609102d883ad63f8484168d33a5f60f05e4e08293a26 -80e989a62b88257debd857badaef4b4baff2f76f917e6ceb654267e2a3ff8e61 -f6b691950ea160271c81cb460133312980c3fb3ed34abc666b53b34af56f2ac4 -6e85ac0a5b78fc3c04c73466ea0fa7a5737bef5451688738bfe7656cc9c84a8a -9c478944eb771ec53aa5734849da181056b709eeb2700a128ab4609d893accb6 -cfa37ca51324c9f9faf10ab8a0c295ea0d74db9d785ebe6db254f03aa0dbbf6c -a3cbbddd1c7b0a71110ab1da66c546c47a3a60fe89cb74c12b58e27a98f75b80 -971a37f39f18185c980536986367b3066818f3c29b136be81653e064ba022105 -0cddcea71565e599c1f23ba707544f877e3eb4f90547fbce282e24c247d68587 -abe5414b1acffba7fc560a61a6499807d0e4076cc1e6363aeba0cb418fef15b3 -b3f7df7ea8668c25933c37abcab0eec0fd378a621499fea96207779a12134e92 -0dc32206a70e8ea8b24421daf469cc85f0cad6f0747b64b891161868cf6919e0 -917a48ea6f99075fd98eab3d5c027ee2d1bb645d5ea033cf4ea639846962125a -391f8dcb248e99aae6338ebf2ab0a7e189cf09bc2ba7868879a7d4ae8d4359f6 -ac8a7a11aaef9f0e002482c55510fa8ee1443082ec63d4dcccfceff9d306c070 -0a51dd3845a284b31555e597d7b281d5c50d5729487145c7a1f5e4cd3114e39c -cf1dac7b22b9f094972c9c8621b19edf1b0257afb30dbcddde8edd39b73d99ea -f4ebe0edda8f2a307348e890ad661e2e7b123743b9c7faedc92040df6826b07c -de9685363587058a3b8f8a589dca30d268113829e70a14797aac8b62be8a3a6d -f84531a61933e5ff5bb8a123f6bb18a382984c6c08ed86ac6e9665c88fd632b2 -494c6613d4b2e5f33b3d85dac3028b82b72fbe7cdb716fbd0791462bbc7d5b78 -236b77ad88c0c9f4a854e1144ced5c9321479bf971d759a38bedd2e91d82c862 -43308558ea85373781186e050e788923030c62828df57ec68f97b50636be710e -2530e58c6d3b9eb52cbc91a96543e346432bcd0f1307d7bbbb9e3e687118d9df -c8c58864a92da78d54c5abd338726a76210b5f78b120813cd6906784446cfa3f -c966796b301b47bc65a8a21549483d288cb164963d88551a7795a1f2327405fa -3063a6b14eef4026d26a94a212106f93e2ded3b574c67981b573678add48a0e7 -5b7641ccdb5549d88715672efc5486088244309e43897ff002b0160401a39840 -09b1666db4ae35caf108b03e9c85185acbeb98f098b474cd3b52047a342c335e -00bd6f4344512e670c28a7ba793a976c15479ecd6b07129879a0264a924165a5 -df7369456ecb5ac96c164161939d414a2600947a1e0769915c6140941a170179 -a232c1036c1ebe860acdc11daca085cf6d6a3a4138c5dafb60e77b12dd1eb048 -69842e09783b321a3c7ddd1401afda46d69193a2e6dc9212da029169d2b17f27 -52dfaca4c532c9ec0b9ab979480c6c9adaf60a9f7a3bb3bd073dc04d8194c6ed -d8b9abacb2949df81b3bd4cbeeaa97cfd7792fe4fe955070a7b8170d06ae2637 -b0bae9b73dbb00be09006e369c20d1f8ac6c25c6d7730c4270205c58246c2fda -73493d17c452cc2b81cd46a01082e10cfb17dd06ef0ffaff950f6abd382ff731 -390a2ed24764c3376df2ed991fae3666335d794786ec2df2a4ead6d8e4d423b1 -50ca63300cbfe1795f26fd41ae220f3ca39af9aa54413d3b56725946e280dbc3 -6a1ecfb4b681773b7d35ee7b6459294289ef116392bb27ea330f398bc6f0b34d -ea52af7c364ad155a4785e1022cf013416d4f28eb290db851c646ae041fdc58e -0de194a700e78414351e6818ac09aa8561909b91f0d82453ae264c1cb81447cd -2bb8c198a3fbeb4e16f57e455e94655914d50801b11db14b65b00ffe46b91222 -a5790ae407f33c18175fc9e309098b55f5df6a75090e25126d869aa99871fa91 -13aee1639c0b1564224ad4ce0b9366f911db07f060ada2495b3a79c167cb639d -4b45698dd4d618a5ecc8c0c8a741b1d259b0f685a4f7ffb82d986612e6a36b47 -69030e27a9fcd1f3adee7a3ec4269e92a40400c9fab3ab0a3d4554b5a2c6911a -7fd6e301b52220cd3ebd7168eb2f06dc87be7cdab2fcf7df155d1e534eb1dea1 -7141d840438283df0639e5ec8139818763912466ead8d4a76eeb4531f85be1d1 -1dadc02fb0dc471496f6042ca993fd4cb809add0e0406ca04aca9d5368f846ae -cccc71379d72ab23b0b415e4cdb37b9346369bcf102105b9d5919a0a0b498ed8 -66ddb1880fdb86ac79cfe88a282b04839522282ee7e4edfc5a394e1c8c50e667 -57eb291bd63f30a6ed63e7505121c12bd9fd75b448ecb802d81c43c8d7f35a18 -e108c8a0d8dd9148b45ec10208593706d5b34a7ea8119de61c40c7d573be44a0 -79ef99934a3044e0bd89bbae43a050632887ddc0abfc60cd17316b4e6ad04958 -b5275e1e597e4a95a9a939cbad483cec62003baeba0bffcc67f66acd1738e6fe -c2adea69895897f37c13ba6058cdb72dfefb0cc5b4d5ab0b04e09e1447340c4c -b56d1284870f284ebba7e469b25638d5c45c00f4c23b3e990fdaf540e786d2dc -2aed6d22c0ef86ff711ceee97fc3a06205658df477226c4d3d623e9d612ecdaa -c503046d6e7a2c04c606c682d7d571b69f92a2d68a14c590719852f6167b02a3 -542d68726c83f47d31023f060f164bbf3565ccadd705225482c67a53c1135f9f -4a728a0a1d5d874fe8c6d274f1348ac78e60f0196246082c93f11d6c24239bba -b37a5cbc1512eb562b74f34e19361e4b72af288c63809030350b17befeb8d758 -70323da7c5dc8f641c09383731688e1cf56e5fb9f3b2c1ac63b3f76c42297ef8 -4cf4db77630694147e1a6d39ecab7bc07a3fb1c2832746b28af97f7358b2bc14 -fbcd57b6ad6e540547d0107d1bdc6971acae2642f3ab29907d886fbc95d33be4 -6ee7aa92143da959b2db4fa6a3cf9517cc90f30342bf790b9e3cf4d14a093a1b -2adb8aa17ef4fe7ebb0d3b61d7a55e0b66952d68fa3f1769a625ce95ade063fb -c8f46aed3fb5b4172d5498411c28d6df55c3a1028d79d77940342ae2ec96dff9 -4cae2479a896cb33f537cbe5b615ce942e4a13f14d0e6a3f8046443a9aad60cd -132858a6c97debb000ead8b575a96a47633c0c278ae97957557633482fda5a50 -9ab00c56a9e4ac03a1051fefba26d04cc0c8a4cd041d00cebc15aeb6bdb8dcc0 -9a419467e543bd23d908f786cb51095e2c754ddfe38b38ffae5331a4e198586b -5c9fdd128f64e4a7690170e84b1789958236814b29bef4f0bb3d57929cdea74c -94721807409e4d2468a5fc0a9944d4ef73dc1769a0469e03b97c9d52db106f40 -56ca9b45163159e9d38c2ece489ac44aa6d6799819f136778527ea09d56f3895 -b3959b3b580c676028e4142a025d69a4a2fd5e4680c0d9ab2eb405c75dd0b244 -b12327acef6ae92c1931fe4fafcde67972c8d4b76549d15f5022b64ff877bbd8 -db29c32e78d61294d6f8b04297889c27f88d0eead47ca6689bb548bd5ab568f8 -7f4e5bb42a125c463855e8acee73f33e3dfebd251732320b7be56b8b0c51fae2 -a67903ef6a821a10e97006b71364bac0c22c88341f201ca0c061f2063c6614a9 -a2465fd99f97b986cf7f8e4e333ce406ae4f4ebfe1aed93f11acebd76a4cfd28 -6c998a2ce5ba07c94263a2beeda56d4d01d7b26637477e177c1e6989b077916c -61f42baaa46c889bcc305dcb569bbe8d0b34cf7e8182ca971092ed0a11cd888f -e4407782a3da06cfcc4dfac4da1acf394080f70bf40324b93c54438ddb62501d -8046cfdf7efe19e318d58cfbd80644a260365ee37f76bd28198e66c6afb7b9ae -6331a202d07255165bde32b1d957ebe0de98866819cd4b2431820dd571e71cc5 -0fddc17c279ed731d6690550acc48a49b2840957f05bb891c9377a9be93d6f30 -40372657cd6150819bed309330e8201ca57bb8027c89f6160acac8aaf917e05f -fb88b5fbd3c2db18543e70c47e8e18c4cc0df46ca4fd008640f263e79f04a7fa -73382814a30c202b7cccda7ba5198753df9b614921f52790edffea4f1a6cf449 -8353ce1c399d25c057a8a9b7dacafb681a80e4edac1cbe8c96b2d785b6e4ba3c -ebae1068d3b9e111a9bb98b083013f3440195bd98de352281a66bdc408213fb5 -4df108fc84d4d49e2be00f16a371e43bfa82a232b4f3275be4e25a2bbf1a5d21 -75eac3318e3d7e26db1428f0f3aac4d59398bb601ae67d54a039df093ad8ed8f -4d228a998f788abcf34287402a34e39d879b866daff544d7391fbf23548063e5 -3084b072b26370545b9398b69cf0bc80a45651858de020f1a48e1a91b50dfd1d -ca15c5909162336aef84d342addad7c402cf0748aebd617e2e22792cbfa03b94 -63a5797219421330cf29fa56457d8bc4d2c1ca2778ea70ac126742190f07fae2 -c52bd7f91f3d06836976ad18963081eeed2c575995b0d853d63ff3258a00c7fa -18da3e2d93df84fd72dfca9ec1b492d95d05d962a7c68ed66bc26808435d7938 -6abe9ed2cb96faa219a06de798b435a89f92a9b8dd92c7602d700815d68c6679 -b982c0485079588996f252548bd07d9776f1925a680fe50fdf6663488140ea50 -6ee8e3672027706caa923f5928d84fc534dff97351253e1a80f854f963110b52 -74fc5511ab8cd1c087cef2f2cd964d6058b80dbb1c54adc7ad66ad2f7389b461 -3ed32f57b560f12f687a738bb8e842739fbd69e583939724f7185f9c45d55dce -ccfbb2d035649e0650e514ff241fdc720b856aba9ee073ea0083ea0efbcf71e2 -b712c6d9c307177c213fcb696a95b12a1ca467363761c95eb8bebe1bcdc4f65c -994ca89a47d35e961651a41f1a55bf2db7f56312fe8d5d9eaf895c804b9d1576 -73b81488476f02d9c1a0a9067483b81896b053e0346bb6659898c5c3afd4ccca -482c6832476b042aace2a1e413be10119b4ccc3863ca4d45129889f776aecf34 -769d24b5747c1f29547daf3581c7d2326d14969f2a8e75618aa2f8b38480d000 -fa749c2bcfa9b847e7975920a4f35eb76bb6281052e2360d0d2af2e11ece282d -75e0deb2c6a45901b9c2e56bedb9f430e08bfd8bff6386e52adfd5310a708f7f -5384b1d3fc71f7adf427945002f630eb3125594830582b20bc359fe1eda97b23 -0004dbc941de0b6a9ced100ae85d1e1482cbafc69cae14de60c28f5b741999cd -373224e51a118438c72746591de646d1880de8f3897bb2d2c41524cb9ff403f3 -a75ac202870cb171cc94ddd494e6009f17ccfb397c76457df4d928f2ace30e5a -0a306a3dbf580609ca3fdace1f6f258df33cdd242389747ec9beac4cb6dc76c7 -4853aab26b6963174ed0edb2613e46ffee7bd0f7590b3a4a4f08a8bdd46b83cb -3bf7b264eecddf2a50c4b8d138db9abebb89818dbbc970f54ccfed801e1ee2bb -f0e2cf4bd09bcfc26579e965cfa1e51a609c0fe0492a40c7ead19ebfd6081ec2 -88d16e516eda7284c86f6f534a743de27037039909b73a93b19e851420079083 -e2e64eee7781d5ea8f8c09a1d39ba49a0238683130d9005e5fd72c013f2d8f4b -c0674880729040ef65edeadc43fbaedbfc0be2980bb470b2c883c417ff41addb -f691606f88790c30f9845c0b7a8f37452aa8511573fa2b99dbe6eab54ddb576b -2086f4ff5a8d305b65fe9298b790b5bb3f4418a9eee3194f64c882630c938782 -59faf61079a71ae52eada524008a22686fcb2f22faa4797243f67772f333f0b0 -791bbb4ed1111781a18b6b06d36877760ec82db7dd4b3ee268e04c5dbcadedfe -1a4bd187c25d49a77da090345bcee476b9a7df9b7da05937ba953f25559c88c4 -c6b345d56b144ead5c59cb8ea513c646cf707643e38a53f24e4c299b761fbd18 -80761cbb5a9af3a1dc43bdd568a2e9688780535e165e198c62e336ded9740fa9 -098ad7ded92eada6525d30bd5a936ead3aa0c3510b0f77f7bc3d1165e07f6f0d -fad611578267f188554f9052dd877e322f493c27729fc6f5333c8bf0a698ee6d -ffddae0a87551a5eb27555f37bf29d2e1c686393b00d3967b38b03efce1c5ec8 -5663a7ef1c8d5a76617afb9f22614362da769a39dbaf5d2e4ef673a3c7b84b87 -1cfcb4701051d7762fcd540bca01aee8c785ffb3ff4b0b7e62cf0f785ad11c22 -c8fe0a151fcf1f12838ff35b1fe88d05cd6ce8a30653aa4c0ea1e01ba116cd98 -1da15d8f30f96b3980e1c142fa96a51586e9acde33065c484fc9ad9636aba935 -24e83625484bdac02d36d296848f8b73aefaa1b16ee6436c662cafc97ea4ee6e -9be05844368b213cf4cfa253cb56a6c61e541ba3b2560e6728826568128ec564 -2fd80ca7feb73765393d83cc60a3dc4d64acb37b97e728d0be5ce37ce106adba -e11c0df2733594a91549627285385b74ca30c61b32bb23f265dc4365f18873e2 -647035714107348ca9779071a5ccc80a56f09512f027d93b6f244b3d4dc10d22 -4900d6cf1f09c34036640ebdf95f3f91dc89abf2e99f39f9ef1926ea6de991c0 -94fa0b845171b487df0af40bb58969142223aac4120e37a67f9da49341d688ee -7eac5285b6a2fbd264d9d85d81ddd5b59d462882e2c7c11e90d5328e340036b4 -445b2f9c79d59d9762d5efa7b77d1a5c5defd9c78a2f8e1d1c0fb6de25a8183a -19e1e9b6c38792157ac064fc173aa0d9fbe9a4f61546e3de52c9d54cc9eba988 -3cc6b1c5ecb3376b23660cc4aafcc086388c691f8cab36f82f9ebd904a07842d -8bed22c5bba7dbdceb85dd12fb9ff85fcfa8011a05090d7a5bf6616fed097b05 -a5743334e88da65e0c2c1ee34ddaa3c01199326fabc2176ee97b78857a955c60 -76bb219fa1162aa8a4f7d6565c0dc8123e090e7b5be396afa7b26ef7937744c1 -e8fcd1bd3975fc3e5cd060baa24cf7560e28f1daf701ca0f1d005e799c94757e -1bfbb5d04f5ef6850a44271688c7c4aac12df14533d7a57b7af37f37560f538a -5131f3fc0e5b7880b6652e1de449061fb371e7c831f2415d628a6b2259092dc0 -fb7b344313b0aa96bf057ee94c9829a2e9617e81efae4f9ec643cd8f2034bb74 -24e964992cae7b758e162e8aadd3644b961a2cf52298a9e945fba3a6a5d00c64 -d6bf786bf61444a51b72a90399c71fb15473e7b3c83c9e07a117c43f91f6a343 -46d08cdb0c386c34b9b75a8b145603795a28b3d740a469e65255cc21eb233841 -d08122eaa6d44de6c096890e0e50d6b9c68aa59b109b85b0f4e7d34abead7376 -6173543701f0576df00e56ed08a636de2b4b159742d22bdb0ff3ff41ad88ae5d -7e026b98fabd6c023d1f5366f2d843f10eb4838ee2eef343ac7a2c9292f4c430 -7121e7fab9e4fdf2c327c7b102cf5b6b33544c3fda542b294719421f17833dba -ae8b64cdb64d8460157003a178fadc58dc0edfe44d31f43f7b351ea7ea9df707 -a30f8d23fd91e36bcbfb24ae456a87f2b1d8f2c7012a36bae7d1018f9bd4c29b -5493b38b3d7bb08facb9e8c7bcfdacaa77971123a7d9a66c613d28f06203c4a7 -aa83740d390c5d3d5ec3152ceb88f8b9f5e58235d99a8cec8888bc5806eb4668 -1a63c712119a361c458747228daf2dd22bc853935da06552169f0afe5b1b9001 -20bd44ae7736b5991f99b1ef56920d75de68c730c62f248d12a3717e7e6f7623 -140331276ec49053a8728f93cd194cb119776cb505232e5de66ecbda6e60165a -0d34dfddb7a36d6f76185a2325bbc46efe1e99839963541b3ef91dd0483e5fa5 -6ca161225149ef58858c8b78526cb7ba19ffb97f37be8d4ac70bf5271c42b30e -1583f4e2d25c7207e0d50aa16309efdfc99ef3497fdd9bda0a38cbb0e666eb04 -2a9d57cf6c791bec4846f3ec8fea5b2c87670f2a6290f282548c6762d667c5c6 -e40bd385698b309d9f7c50e1308d82b65239d89bd8fd24c71ee04391196ab80c -ecc4b3b33a86a3489b0ac7638a49056ac186e16c0705fa9e90a578bb590c0124 -55360eded1c1eac39250fc78b79b16a5ecdc203023b111e8528b8d8cc1b21ed5 -14e44db4b0e47982b936cf6ebf9f0dc1e5ad7c29e6ae705cf8fb15067f4f9e27 -f6a7976629ccdb833220477ba49c9e1abd5eaebe9236996069a9f869f152f817 -0b246bf270fa5a3d4674e7e790a46c5164c89052082f4e1f546a90751c807904 -cdabd5003268d80f2b699c29df43fb17ee6bdd6ff420d7c3db3b4342293f5ed1 -5c9c36628adab0c80bb93efad51d828db4dfab1eea900476a9a36720544036ac -fb4887f1600004c51a0b2ff8720e827f8dbd3ee95f7eff761ae703a3d144c294 -d96a6e1d5e39488f327c50280efb113fa5cc4d16c32232e708ffc2680c54be5d -7273225c2c79f71496d6d873337575ebb32d89fb0798f263aa234947c23fb694 -aeaef254220ddbdad03848b13c785d78a3a3d708cfde29ed68b6c2426d2b47c1 -9578fe7ce5c610ca3527398f5eb9bbaf486145d96926b558a403ea7530427716 -3aee3e58113db3dcd943226b5b5bf48985b941cc4febe086b55864dd732f5113 -574e809af732760a0fe1bd62b43a44f7024d15f6ffd83b43f7aba7b63b746e9e -8ed1810c4529b78cdedc1a3fe69b77e7245272de16c013c8726233dbddcfdde6 -e21c3cf40ce64d202ad48a76feed84543729cba52cf1622446c1b6cc15db062a -b535a3801bd08d27d8d9d230cb4fd45ea2168d109df0a4328219a88f8a7b274c -d7b87fd26e9fe93a6b75cbb153fb9d41bcb235c8f66dd981bd6462dc30197fea -d13b25c96f1a25a9bb0e92c196b45860b3af177ecbd4f945f9dc0ed4e08e11dd -a4a8ee92a2089c5d2d70fcac2fac89a9b077d8cef2921941c0966710fdcb773e -894d95cf8829e14835d8baedaeafcbdc4473e927df8611ff9d9aa6c012eda04b -78eb01115a5173c9a6ebf86f413952daeddf3641c86c66024de8f30831e228b5 -d0aa1082597fe8f2643be8691710da10cd536e33574ca62b5e9378fe125cf7db -bbe806af9718d98718e07ad277c87efeb92cb7d8c05dce8955c8678792650a56 -8b9f2b0b3cace96de0377db16cce1cbe41149c5c493e4dfab91d72863b5bcad9 -420b9d7f10c39dc17c638c18c37bfad72d9ef65998f62a37c3b0ac9fc6d13cfc -f158561317b37b5b48e0d414dac27810d143b9a4f43ba083e6148e871ea189a3 -7573e3574a3ca89af142864d628a580df38e66b684a8ed86c8372898bc5b94e3 -313d48e36b812d870554b4fd8c1e294df3595cde7f7e1b971710fe42be7f918d -4ee43cfec1647e67d52b2f3f972ead6a0a970cab351f1689932a63105bcdbc9b -b21b1e3db5e259fdae49970bc64924698104be7aa3569b16c55a12de52d2c1b3 -ef9c8309657b011cc3066de624b9ac7574a005a085c2b5d04d526ab4aaf8154a -9b60306d0d5a0dce74f64d1be006962178aef72fe6bd07fe71c1a34f31e82a19 -1133aff4d47818075f6ee9b319fb8ef3907e915cfaa98529e1dba3b91a04d092 -65aa3f8aa3c1452763c4acba7d71383c07756cb2a5230e9af05144100c839a49 -21b6112ede6d559e36bb946a773bb748378fbbfb2d1d8c5837fec8594681204a -476b6159253ed79935034b039036caa2e3e51fd387154e9ad27e0a7b02ab476e -9efc2472af5b74ba454db2e0411b1fa3196f717d1c210c3873964d019fa06edb -a145f9fc9dbf773f046db91b0cc7c63e42db0c821cef2aa241a23f95f8ae1aa0 -de25c97c03a8878c07be664b748105c11a74b65d4dea09049d6adcf7311d4b06 -90b6c7c448efe6d7ecfc6ce3f3524ca8dd8072c74669dad2c7129f38313a5dbe -21fb977760a4539e47c20c23fa9aa4e6a6762f68b6c3e9b33d914a7dec476fec -088695f936280a3b375c0ebb32209a856e764a09ed0dcde368baa885eae37ade -42cc08d2ad2e0501a0cf09794410823436de989aee5959da1c1ca92dbb3a32cf -c0606819278de417cfbdbf09cacdd34ae0897e8659fe35901b4edaab4340b17a -28f334e6faf5a5ee8e57da0240ab73e0b594f083e6039af2aeece1dfddfd1271 -7991647d149b1e88a0ad49bfa3ed82d09f88a0dfc85f972facaa2cf05291b07f -5758cae25bedf439fbba355e8650f3710589b90b37b3df6b340837f16033752c -6036deb87ff05c55ea36a5000af224f3ed8594c0e39ab0a66233d27e377065f4 -f268b5ad1c3074f4bff8d3a329c5a08b64c5ec4e13a497240d925ae890f505b8 -2559b8d4d122bfca3d4e9ef1feb647702c3a4d7c6598de1e9ab0c3b638530cf2 -7c350ebcc33b807bab749acba3cfadd6ea74664d262f2a51283b07f6edf02e0f -5922b566cb216326888c3eb557a46b12bbf295c4b0d46ffc41dc16526c97b96c -8bb4271c89e5227ca1e06fadbddb0b29bbbf33bf0d3cadd04accf16951ba4085 -15013bebd8984b227723580099cb1703cde01c807bfca394dff954a7efda19f7 -7113427f263da91bf3c1ca83a49dea388d12b487139135bd29ebfca171ebf442 -278e1170393c881a8c8eaa1be29e9b6056ac4f677d4a5acb2a62ef19136e80f3 -a52644c3f0b0f472463b9b763b850b4b89898f409ec732edcd6ac6019d21999c -4689bca732afa171fe6daaf966373f1eb0a6de104d432453501ce5bf1a67e776 -04b04b6c32b477ce31da8eb59ba93e80b9a55bf0e1deb99701a0b8e1de26047d -bbf3258c25e28614738532a8f915ea344f1ceee9cc63b5861826605671b30800 -0f84405627190ffdc02bef5b6265897aca682a667295b096864483d1489a4a11 -a6014c9fed23562788b4151ca03a6a2e65965683eb89715edf8ee153704cfc16 -97f66227c3512d4c51a678aebf135e5219fdf5e38210fbb7296b911a11f3aed1 -56736753a0c1c5ec84d7d682d96adb7322a479db8a4de2c80026157e2ad874b3 -3fb1c0259ef747377bb90d5e533af94c7e699e3903251b0e8e5c9a2e158e422f -f81c0d18dc53fe3b45e0c2bf87f9c8d07c389297892ae79c6a50cf53f6794a6c -29bb02c98f4db5127c2ab053853a9f6e8034ffe25a3594285803a54e12f13324 -4399609a9015eb605934d67b87541ece25d797608b2f65904e849611690a24cd -243ccb05c41cc43a7e57970458966f0f530e981bce85777ef050b0421a564ad7 -d1206f8621a674121ebbdb1827574605efcb8fac90d02488d62c9db830c70e3f -77ab6640672c0215589c6efd8a30289d5f8b80c90142a027ef84b8761ad0ac43 -863e9e8ef04d07b4423e4e955fe340c68dec4a3af6085cf465aabe242f861e9b -cc28de8b2ded6c6ed211f3d7a9494be3c9775dfb71eec0fe6fda28eb680238f2 -8af58e5c2a2278fcd2bf1214b118e51eb16cd1b315be277caa5c85b093e3e460 -72c9b20535300fdcd709a520f0ad03bfe57cd5e7ae61d37cbe13290b512a905c -57aa2e58832e847c8b6953f7365c5fe1ac59b8cb732b65df0f81b0157911d907 -2c4fda4fe290e0704e23c618241c228bc16c2a98996293b8714ffcf327db8064 -30b4705fceeaa1b6fb901ade9d1299b5525de2a6001140ed2e6413b22d328a32 -99d4d713ecd5d1e0f869e2209324a0c8608aafa26ebbbeacff2273f7bf4d8c9e -c3efea2a89533d804db1477c3cdf44f05360b52b2ba8eddd3a925ca190fb9bc6 -865414d272368955ebd252f5a0ca3b886312aa0ed479b4ce3ea8d609c229f335 -60355c2ae3f5c702ec6a2e7c0d154fee0ba5655b18d532691e3d388fd667beb3 -ac919c610b0bd86330edc6345df35eef2293d1b0b80be17195a4070ec4e2ab40 -76a454bea04c7a7c1562bcbe61cb83678e31700d20f3726ff94f3f32758e5e4f -d44abb803d45c021edc94d8b5bfa377424fef3e208da80019ef609eacbbb2016 -16b1c2796148360fec21e48ec7f46b80c5b9afe892925aca73a864e4be2717b7 -7c10140aa12df0876cee2104d7e5b979d750ed57daf3c6ffcda5f19add609e40 -ba275104cfca0bf2b86c8921b4283afd2ae2d4c6d8e5f61d8b07bd5b5df896a7 -1d3cc058b30c1f83f2ffb379dfcff7fb978d5681682ecc5ae999967141ab6a15 -0f2e6a72b25d9b975009616c64781e10308a2c9aa24109c683db3b24b37eb451 -505161fb91a2e7131c7fd39bf1ac89a3d5db40fbd4c62f85e6286f173d577ccf -758edb686ef00b7d463041e64799528572c1f7d3783cd158361a679ae7f0e0c8 -cc387a9bbefe8b8f635abcb4b53ac5b562f3fac6016e6e612ac4e0004a12d800 -661b5ca82290fd7e83599d6686a059ec7280bc1299b6026f818705de20efb7a1 -ae2588651f47d988ec291ca7a9146ee532409f89b28c87abc82e1d12dd051a3d -cf996e262012ec63d40fc7700166edd28b17c7bbb91d7f8ab0d5c76daae75c98 -521418a1668b4c81cd4ccc59eccc6742d74b69608cf1e99bc9b105874bc90af0 -7e6a36f8f88b4a8d4f3eca2c614c7af7fb49424d8eaf7ca51f39c623ad600656 -0d7905718066d2e9baa17efacb5e60d249a1d43f4ddf2ef4d9b9f1c6b5221b01 -21aaf98dc87055a9b33464220c2aec542b94045327a71e57812cc508e2cafccc -059c56eea35662ac83da4394ff7c084b09d281fd7b5450d10a08e63df65fcb2d -3c9151fe7f58cbb53b6017028c70558cc8f18324f36a0a28680ad6bf4709aeff -59fe29e623f301dc0a92ddd4915254a915ac408272257ee1a626abcfd0c39ffe -c4067e1bd46618c1e575be188f0cc145971c20ff7cec79d768326d4ae60cc8e5 -9101aef20236ca59298307c37c60d55cba1be22fd80620c16c41f027a86de7e7 -272a747c11d55af96994fcda4c1cced895773ee1cf5bfa42286744ee0da9899e -34981e2d8abdcb8a7500539df77beec5b3c2552275e982bb5e24223156257df2 -3f1e866ed8d0401b98b0ad29d9ce1359f9798d49240fcd54e4fa3854af96cd3e -1f4e68d47d96af757d7ce8db92820a30ef46f23f0bcb12e94697345ad3bd7e74 -9d5cc6cc3ab1e153633d6c2c32294abd4bc9a0d4a59e615e2a8e3c28b3796188 -51b6b4b2f9060275e65e29341ddba62cf3214957827aa04da89eb58a1cfaec7d -dc93ae001236b11a1b343edcba3fe3fbccd3d4cc7c97f6d81828c6d663a6ea00 -95d872908038726571c91acb0ae980ac2b91af8c18ef5d3ef96da5c5a5fcf69f -76d42cf49804f80a3b038409476902e5a6a6146dcba79335f676b2d3e10484d7 -a55f928549f1c8440e3b60b9ceb41d24e627660b660ea72c543684053f429fbe -86979b9c608428eff9bb69f5954c5cecd1d3a762e985dd6641feab10cd70f7c4 -5944050d1e9fde33cdf9c7fb3c8e93a19df15ff8131b56b66d8dacebcb05116d -a65b93f40b4d184e0476ff7b3ee8387c713fa5b894af0cc3729d7e5853607859 -9b8e354d39d3d58a2e9a6d0a2ee7efddcd38e2ca035b2bbbdfd517ccb09f48cc -4791530a39577ee028dde54248d4d5e7fe6d758b02692b7de8a6bb5944a220d1 -131c22cc2fb5b26341b9ec75cfd36fe0a831c5131f36716fc8ed06423b973555 -997b3a0e04b0ac579e1f1a6de499984e40d0dca346a129e6588dc9bbed9e71d8 -3a30006d908c37ce2741dc03b255ea518f406c96a95662be9f08f85d2cbc68e3 -1d48f613a7d51adabffe255dcb3cfe06e5f3fe407a46dc33ccdb2f7a6cb84e73 -1910fdb8148bb7a9fdbaf2affec3b266b6212f7db937198d9a3e40239dfbe576 -d0ae42b5916ec5a4b8cfcbeda5756801a9d79e7f45d1f9f1b88ba0fbe0b4d15d -2aa894631cc3e02451f117a367a708f829eea618134e7c7ae8be7d111aeedd6e -fa1a06f2e33501c8a52f8df76beece224dbc6be1779d00434fa564019e52b6c2 -0f569a4ceb1fca4f4508eb05616b2d391b4bff25aaf3df1da1aa89a2cfc008ee -a436bce5d654a84ce95863f6164d52fcf1b3a82e05e814c8ce49436f7877f434 -55be5970a685efba726766b02cb029ab5bfa1408b87dfc0a94d887080a6bdf24 -9c4cb81a11316422fb8ddba6712900ffc471b975092080acddf789402631b043 -652db8f00c247bac537f0f154054e6e1b557402c1eaaaec0f6a51f479f45166c -874925078dd102ef289324e72cc09036369364c20c5a087db5a4471befe6a3b6 -32c8051d03a45bbda9c22564e1f5e68b050bef932f364bbde9d3abed3cf89784 -568d53f5606d4c8db965da89041bfcc3a865eef363d1a411242e6cd8b02d3c58 -44ca6afd4031671e78511bf9852a56a8f16fa4f78b293b6ecf043cc0156851d1 -9671824815edfae530de22f9162ed826f060800efbfb5d2249f13772415b1794 -aed9a67004682177a95bf0afcf61ee3b154779368ae3540631d999741d580afa -b572aae83ad65e5989d412a085093f4084f25eb91ff7d49e6ad7e9aabc2f96e6 -7580fc01bd67108c2e794cadc54e1498cf468caf55db71420f3d79ff5a9ee2e8 -f5a359aec1aa46b97fc3bdebb6cd35c8400a52893b9b64e369cde267ef9c77e9 -8b4898db7bf90145ba3f6c3f5a7d5699fcc6c2cc2b18be2a4264039b60a29b0d -c3e8053f62ebf2ac6c665ae4f681e68e39cb2bc5d91d9651b3e4a3675da340f0 -51b1e8db5dc8123ae21e65414ff143ecf3bd11f9734721d98ffe2392acb93600 -8741502b90103a6e32ae37ee85abdacaf2530a4afd536552bf8dc374dc304f65 -89a23d3749d91caac7e58a7fffea5b0c07f394c9188a2af3a5d457714be00097 -3ae27c46f22b4e70f22522bb4e7b00ecd2a11c9ff4209b7beffbdf1ba1f4f0b2 -eb027597f3596436f6f1fd44b945bc1e5aa4380b71eb1a41c61c35cf862eebd6 -0627f1a53e3c8e780f5c0d219187490282136bfb63d47c94d40465e403947416 -0a24b4dcee1c4d91f3d5fab52cf46dc3504b4c271999a78ea0ba60526348bcd5 -4c5061720f23cbf528b287fe5acf4208e6818fa7bcf278335b90ad04676d1643 -3c4e2cb9ac19566d6c7662d09a28a6a426f3d3f42b39f65fdbb0c8052a855935 -a4c99d03a3a14ebdbc700d63dd01effec5007c7f5c710e5abb0cb3b76aded23b -b3eead4dff9fdf2d3f5fd9fcee41843e66681e7bc2f53125dc4396662929ef8e -ed939888230beb4a935fa05ae94db849ce3a3a4d835d84cd9d12ea6e8a63948b -a15bfdeea22437b2429e5d94201eca5c9ae6b348436a819d7110a277ba5c8b93 -bc28bb834cdab990302f1da43c4395d6c20ad8f93fb909aea60d260e928c0536 -214db3b7c4dbdd21d56c30d3521110c3d36d7607965f69789bc1927f44705372 -0dd295ed5f40407028b9cc8d008a6716a55e8f211e03843971b27329957fb950 -36e8eea482e83ad3f332864d4896410bba5afe921c2f83237cab4d16c99c281f -fb2d85e16c4a044b9f0bb7557e308889fd88ecbedd2815eb664fa67a5938ee06 -03fedc93bfe594ca2322a9b1397fdb328faf7ab82d869ec7fda9ecfa3a3d2ce7 -bcdf0cb0e827d0934aae8d15e1a86b1fd1a3cb83aa5e9d4a695297def0fa17c2 -edabbee9e1bf418eb3117a0212ac42870bba9def15a24657fba3e819ad412cfb -6b5d8cf6596751a7cc78ac8a61d44725b9c773a8a71f85967940a748fd64d72a -d5d8b985dcfc0e0936b66f22c6faf0869fd6dd37fff9f95d3cc585a9a1c92533 -5f18662ab6840e377a350b2e47209ac10def4d543307ab7edee41847ab462b4a -58f4c2688a12bfd156fd7332de0be49d527508b0d8ad6cde470aeb0197a2dcbe -d5f84aad66cc799f14248321e72a0152c2ef458ba140d93b117e632a5a3cb5fb -83fd4530af1b1049ac30aa207b4ec1b7e597f7669384748e02b54fe78719ccac -ba7f12e14f6021ca59b24fbccce61ab97197636fd0919af26f021988b4b7ddba -b1bac4c632a416281ae2a1aeac7a5dfb09d6e06721b1d39a78ff7374465203ea -fa8e8a063d2f432644ac8897d7e835a7ed47d7b66485a0503f343f3c7cb8bf7e -dba37b19864b1d126fd5f7b912e82740b6692566d107c18116df94a16c02ecd1 -07b9e94317898d62d8cbb76c31ea825441bbeb67cd7afa1a39e336015a4a03fc -49dce6b2d46870ca3844b07fb740f8eaec125f98349539b1dfebe6a8c82a28e5 -dad27399e40b4b3622caa4bbc635e79e4dc9192884e36c531baaa1bb03f769c1 -aea3076277a78598887f378ac2ae1f822b4fb13cd8dfc52aac6d395ccbb72c3b -2def6a16001bcda1d948eec43ba603bc11dece000c031ba72ba404575bf1156c -eab347fbf635811bba24d07ecc750fb6b4e0abea4fde0e0c181e3ce8afeb2742 -2653757b2dbb328ba33a60845d29e7c576ae7dfe85d6f1c8b7e83d04f11f016c -8f61bac2dd93818a6c8b1fd8b85879d67c50f366f1c8c55e31a9b8f63258c93c -886357262e9376d0d01df8951c8d1b4b0945f8317361bbd88c6e598077e04f75 -2eb35913b7e42c245e8a346ab6cb10dc4f8b43bc67909bdddf97eba3e458c3cc -ac62fd6d1c1d6e468307c45ba12b96b5f6996db868f98a8b92b66b7fae65ba3b -e6c08bdbd6001af1a023cb08873e905fd61e7891a3754134374f82c186e19691 -97a86ffc8d732be4df8f25f04fe0590ae229cee6cbd991ee9d9c1cc264222903 -3507e0ea0cd7f9731bd25ec7001f0f955baa79b5cb1d8a0dbb0d5b0a7c646267 -79d69b5042ef706a358fe2bcb5affb1703b9ac5b4a337073359a738abe2783c5 -c5435e77da447e03e87d36cf7d27001bd4b807be0020648ef057acf94a57bbfd -898a419dae2f2c6f72b2e227ab2fe454ab5da801cb63e5031b4f4e2176cd7f4a -f1eeb88efe9792aedb317270a73fc62881e32998b14fb9dda4508dc5390625db -76701ffe7d06fbc1b31335487320df91bf1d0e25ba25b32e73f4a38a5b9f8701 -45aa76bab62304fac2a365dada44ebbcfb104a203d6936945f84fd02710e9839 -9fdfd0cac9aa7998d1254bd93e2e0c6273efbae4d5646268c545ac6f0cd901ad -1da19c180ccd169ec6083588db6001ff5ad9fb9cceb78eb1ac9120993ec68740 -193281b27a41ae3c53c97e96e24d24dc92e23e40cf5198bf73e639e0d59aafdd -e53af489df1be777e3c1057fa8a3f71c980a9a788afc240c4eb1be0c78a8fb5c -33bf95563fdcd9a228b75be786dd79a85f28e43d7326f9a1c4b16fea2781fabc -f8f667d09e43419ffb6f0e52329314f1249b7d47ecd55db7eea5d7e59c566315 -5737af961d74508bf86d8535ae9b16ccc9b767c46444b7e25cd94270bd1a7da8 -9cf72fca9e596f1d190efbe78c92cef4d694056022c5acd0f0df4bcdb1ad7544 -d3e0b27d4f21e712dd7ca5e353fadfc11f07418f5b46170c1285dbc327edd17e -2578ccd5dbb6054168140a75be2810811bb9c804693e7a973fd5e523f09535cc -bbe1bcfe37de08eabb2ae720eefe0fd3ebb03ae6d32b1f3cad60fcaf288157e3 -7ef3f11f5d671fd3f93f53195f4f4ab46d00d573ed3b77dcf545510dfb69e6b6 -cabdcdf79377bcacaae99f7d6bce94f9bebd478569cca7b044f34506032f7340 -96acbd5f6e099b3edf725bec53aa71aabcff654c4388ebab887299b445db9b06 -bc2f9b6c1e485fe77551b66ae141b8eaeb36bec9e4930acf3763a5d407fd439b -6fc5a627aa61a76d2898da06e46df26cae6ae19cf9c77b726903289747c6ca87 -94b82b5e69137141a288f10e7933f98be5f670bd333eb1a70491596505734033 -30d236c9a273bb54566a2187924f44b3a5db08957fbaa0225190cc99b6018e99 -ac7ec24dd24d4bb9056eb73d7e1778869e4d80400193402fb25d31970136d7e1 -0eb9ca839b856d2a927c1fc9bdf20835cc6cf6b6acdab5370cb7e1afbf1989d2 -534361b2f1fb1a9cb12672d5e2c247370c1e7da42e479ed7889638b8027f765d -ae49494f9bfd0637197ed7406eebda0e1ea2c95ac4cab010ba5a2ebf6978f131 -d492b170754f4236cec263601528c9389687263ff02ae343df05cc37ffa62289 -bc48a3b69cb9a5d11c4cbcb0dd678a44a503b2f9e3a0d7763d3860a72ad0c09c -6137964506eca3b2cc8941ebd1ce305b1eb673fbbc284c9376f78bd3e1b37ec3 -0b7c187e5ea4c26feefffa884eca976fc71308c51df94214c332e8bc19a9898a -a8ddbeea21cdf1b4b232e95c4302a9433074b9537adfa1cc28db297b4c4bd21d -0cd27935fe27f2b9a2a380079e52de79cf437e48723d12e78b07079d63432a00 -69200271534086f78c8230ba5e845794ca384f30c36a7d34bce3ab8ed405d39f -85cce5a525987b1324312926852d5bbbb3eb059471221ae99305f46a35a395ea -a79ca5c46e2da5b517324a7ee9e60b571b6d8bcd086b1ae2065d98802e074bbc -d21c8afa17c4bd78f32493318c3980e99362b7b819efb4f2d6810ee40deca93c -015a542faa160598ba0a03fa1f8c3283d0bec6bade807248f50ad57ef3154df4 -eafd3d592414208ca7da1a6851a740e9ddb4667a351900217d9b0253fe9b3729 -9d71aa0e4c7775bcb13dada5e8369483bf8b5c899c03e6db9453ada55999d65c -aae5084d16b2cbfd7ae36b9e07212d32502f2ea7156e9bb92d61f73939cb1f4a -633b535448764f4a69132e081b22fde18fe324cf31267fbf9635b7fb36d7a81e -d9a65407239c6c3cfe10e1570594f8d5665d8bb3dcfb7b8dfbc78507c44d13e5 -5716f7385766dce6b6522d33996c3635eeed219ad78a0d76f45940227dde598f -57c859537d0d0d6b69de8b81f2a931eacb6aaff85aaa20665b3813812eb819cf -5dc07b903e379b6dbfa74c71f1728eff5768c78e1a83ff132b278c1ecfd413bb -d4a5ad7d4fcb8f237d643d3ab9f84fc24d6a2fe10a7077b82181b9ceb670c0e2 -518ef897e2923cf7a6fb43eae70a291b9c903df30c0ff3512426a17ef4cbac1b -2f4a0c581964b7dd85659334be464f37c74684543665cfa6f8ac5cb9661f1835 -238567e6ebfaf90e71c221035768466a89d45fa6da9e9e65d55bb06a4f8460a5 -97e45d3737b3c9bcf2516ed4831c69d5e4b97d8c4544bed87085d08de7d1b4e6 -2bc923291b577a2078576486bca78a12e4153e3fdbf9edf37207fe2e4a3be9ff -e0599e9bd08b9afd4cccf49a9e118dc991e8afa3c634d05ca33e2b76c04a4562 -84dc91af1e19997d5b7cadf6dfa309ff7a5342e3230dc35fc29e889899917f7a -f1772f5a491ab52be1f6dec30382cf7b73e5ec0cee3951575af46ab02858806c -27161563ffc45d832a9a32f27b21549618194487a20a9b8d1eee0abb4f38abd1 -660e90517e85511077eaa526e632e4a96b031377576e299f38c346fac134eb8e -ba0e53a89f4e2481e7b600c3a20ceec4e3288af921546bf3b3362e43db8d2361 -5bf8a9f4578ce17e7959f6dfff1b197c254db7001e83da9cfd9a70c15d76efa2 -2281a0bea332debb710b649aa5702aaf324ef7342ea5f117ade2893f3798a7b3 -1eefcc7f209ce80c7139f5e6c39a8b958606b90adedf30ddb1a6508fa39381df -c7651d68e5cf8209ef1ff9d92c7a0986e0dbf8a6339cfe5f9dc3299a8516de77 -4bc754ae88419ce427a9e66dc2a314d8fe602559e642711431d254cef1d1f70c -5fe1f505673bdeae5fc9a4f8089f30600d82aa4932283916c26f4b82cdd348e5 -9a58597e517e46986b38bdb7cc1bbf06ac61d5a62caad5abbdb4d8602d7fba5e -69309518cf09ea8585e6c76f423568ef3f1b4d9762d4cfad2eae773ef523f58a -ff60429965aa87564bcfe84bf2a9031735252ca48e228c11fc08430bd2dbe04d -c70ca98378ee7e7c965e497070785be386c3521f73fb3c3d6f48ef6e5734a49d -3a65010e663a95bc50a4afb89d469c45f226f8e545393d57d22356265bad906b -d3489ace0a30b45b556ecfcf68a008c87bc489dcddc6cc0b3465197ff105b77f -3ab47742b4af656dda2a1bbc4e0d8cfd1bca38120df1f1507c7ccfdf067bf405 -aa0e7fbe51e90afe8c162344d2b61bde996e641e0e3e381b0f194f40b01da6b3 -57d6ce3a4ee63f26da4fff7bb2470bf317ab2e8ffe8ee4577ec328bfaf48e779 -8ea30d4a3a95af58c4b4bdb62b7f9b81d54c0ce6bb5e3b9aee7053a98467cc1f -82d60dfe78e94944f7da343df10ce8038f715c17e9701b28d8387b6c6fc99336 -3018f165e30205d6fab677944f734eaad2f1f41ebde770d002b89d806728374c -1281bd82f8bc932c30201190c019eb75406522ac6be900faf9c71f4adca459a7 -d216a764c08176415f3651d4f6b4fb48a32171e29200436aa0697b82fa0931df -3e22af1795f9e4eaf7a63d3b402685b440be25045c4978862dad39565026b9ea -c06e770029d5943ac15503012ba139b77501d26a89de03873ceae14db0df2305 -ea53a3bb95ae87b9650569d983c8e4b6659e26fdeb50bb1e445b0b5671869640 -ea3af6e87b24d58dee3b63c2f638980b78ee645fc346ccdf203d77d3a91f0714 -7ebf1456a96ceb817ea0cef96388b819b6d78477f9f42eb55ec6d73bf0947d76 -76d8c5c6bf26ff54adec31c6b0dcc0e48336865df4f96e3ea3ff335e6ee91514 -eae888924a2fcbbb4a20e49b604535e40d5100951766c3b02eabb316481cbc10 -500f24d833d4d9570873a4cebde7eba2cae6b959c9ee7149425a4adb4d010912 -afe9905ee201fb555330db8f942b2a0de8e68c652f016b3015bbfe265db267c5 -bc53a3958a518f4b4dfb856f88e98bddda8d1e8b46c5f010f44ccb28eee1245d -96759df65a5212ceffdbf2405532563bc94997dd27fac24cfb80c14ab70d3f0a -0abe0a726cedb8fd2324da08fc6754734638fe8a9138894a68e89f34516fe204 -ebf362e8966a816097253169bf73059ff62e73d284952ac896dae12a0a483da0 -349825565791025cd4672e06790d25febcfe825d38c86d8974ceb7e934e82cf1 -d62a8949abd2dfcc56854e94ead7e099db1bfb2187bd0e20f973e4b5d1680e95 -85669fe44b868c004abb773d4fc9e2fbcc9ba58f1c8ba44089b55cdf232921c4 -b66c38f5ba8af61c028ee7eb23c3767f9aec657026fb8fa697163a22dfe5183f -7efe23cf0c556fb0b5f3a55cba45a4d2c22c7858b2485cc5d4fd107135f4e8fb -e0d3d3c1b68113a537f1ae29849022585918afeb922876f99f5d910bf736f503 -102a0b0ba4d24e585c04c2c7919690bb9bdd27b6e0b3bda34f1bd935f77ca4d4 -86df2a63b8e94c0595f5fd6cb4f4666fe0c93856ce55b3fd98b6f71f1105d586 -30469e4c2fb85f858fd356200c87b9cf03407c2f6bb4c5402a5511958904c94c -3e89483ff2cb81f0c9c9f31df4402e41df1d518f3c6bcfbd73811e51c8bde621 -44d86f9a52290bf8fa878d16b9580547462b7600ca3bae6ddb16e12839fc3508 -fb0c3c965d280ed0e258261e7edf0054a9c24789876eca215ec8518849d0f542 -cc01ddee9f5b075fd9f1d3d51ce65ed4994f66ac0472f31a17b2cf1f0b4c20e0 -3b8f40519efbc7d46242e43ba5f046e5fe6f4dc88bec1855f46ab63b564dd49d -12bf5491ce1a0814569e29cde10ca7b75de4a7fcae36695b5c66123b5f47799b -5709b945efff410f6f01cb873218006e075fdbc1399473f5c13a0180c3295636 -80fdc1030032978f3c1b5b4fa8ee9e3b51ffd478c2bb79989b505897f359ba18 -dd59c5aacc1cc64cab87461756220fa45e5121679afb31c9638b9385a3b9dca6 -b132d56be3b83cda0b4ba73c8fb4f33337dd7319b78f18cc32acc1a04cf21e32 -1d87c15a138643d417d11494d048543538c1e5cc168dd83534d45c9b0e78fa2d -5f4b5963b1eb68b2ef24782209bfd007fa93092f365942497db629908161c027 -0f3516be5f358e3c73e3d3fb41101fe9509f7f05533ca34678febcc245713ace -fefd58efda6769ed3148d0e011f08dd657b42b7a22cace148e5755e4695ea6b8 -cf85668e8a2dd8ab0389b0c26b67bd7e9ba287368cc74e3831a28f84a6e262ac -9dfe46b9bf39c3e396829be8b8795fd9c15d3f5e2dcff9f5231fd2f85ef08490 -8bfff58c95eb7b7111ab7b663818a93c0294bacc255c694ee5065011783f6799 -cbf3b161fe9842958de23af20234ea5f80ab40d86052d18d85f4da4f2ab6813f -69a3d4eb015638a83b57e8ab0528f4b55e4e06350144acbcbd6ab83c4a9137a7 -d777be8eaa15241a2c50b39f081ad07799deac2e003bf2f38222ce9d82919f49 -ffe3046a67c71d7c6f674904717893e8479eb32a861f07962b6e205d77611918 -6e0121806bae73e4c26cf33ab91f8efc31917f3131ebc3fb354c029d8256614e -0fd0e7e23b1432bae649d9473109462a5b53188c5cd86ec4d405bab9354b9aa8 -bfac290090a58457cef0155b39b10449cbb6295e8bbd9b2aa7afe083b298c794 -1c232d0851b67ee0b9dc62bfa3ec673e862e6c40b80563ad832774258bc9e566 -bcb547497b62aa4fa312221bd3510b6d35aeda4691c50d9d798ffa333217d9dc -e4882ab67b59e2b172d2f67952a2527e7f432734d856a7665b51a57cb6ce70e2 -baca0750926ca2ab72e9316748bf6b2140313213bd73908c77da419a767aa8ac -fd8e248f1a4474e60eed1fd76da0168bf43d4ea5c7d32013a79403f49e93040e -e346062b87823ba47188a40d8baf73ce87e46c820753975f8ef0167e2a258f9a -b14f8f2deed72c1949bd5faf6c25bdda6ddd27a54311b7f6b28b7c8d6853cc3c -a61736e3dd9c4b6a68f48465013e8bda5561f3c5af6dbda331141a0343c35b01 -f2e0d653c87048d64fdc0e30808a1755873bb1ea0d028e83fb17e2b88bb78992 -9a33546e3198f8483970bf7e1d7cf4f35d055841be6e21a83f390bf25482665d -e8cded3680ae431584f23573c49f27b4ed3ac1e6f62ef66f1adc287eda488894 -46df4b71582b0e4beb853159dbdca03066144f02f5be37a91aa05d6f1c8d4373 -0e4ed23d11c86cf1240077316b942f05d9dd2c7e78c19d48f5128ce53e847603 -88d0b3f4025d1e7dbbebc8046ae97825962bfcba594a2f4409deb2f2ba331fdc -309581855b76a9b89fcdd68deda31bd0f57ca62cd61d0effd13d051d74e0fb4f -3e08ddf7b04c76e2207317086fee4deec5c6814fe56123b3542ec66fa975ae90 -4f35e126fafaa43fb5620dcf26343b759f2e5851bdc1a39f61476616dab31eeb -9031df447af79cde54ca4fc9c873b0d60bee1887f301f114994ed756dd6c36e2 -f99993bd78b19a152965064df8afd815fe3cf1f9085c0ff00dbd672d09356c28 -6e0687dbd1d8e5741bfbfc4a904914196ed643f859c4e76570e494b4bb5ae37a -393d2602a61b9c7cf178ebee302bfac9e3e67845376b63f04d6833af1ab67e24 -dc4d5dc9e6855e727f415c62ffe22586156b521f1fbddcb502c36690144299cc -861f964427a1067be18692ca97ab9d7750f603fc535341584be4cf258fc06bc1 -3027f42f2de85251b04d6c603d9e2daef287ead66803c780b65ea413cc377cfb -95fcae3e62b9e1c6d4acfea86f3e556db549a4cf34e33956c251b57401f719e5 -66dbd3a65374d2c0efb8396979d57afbdb139338a973240f77f680fff4c96192 -6b51f41c58dde2e59ad30017d580eb59ba5d4f835279efbccc7d6aed078dea7d -dd2b048e0b0f248cc54a57c377c2a7f96b9381be0ce99d090330cfbeef723440 -d4846a19f37560fcafeffa48352aa7ee6a8478e9605e2e5f1b255bd6b63239ea -c4bbd7a4fcffc41f1d6dddaee0a7f952b046dcd6a39f6b33b90678ccb8849b1e -3a56e87fa30737328b9296a28f74f78d55c16629578a6c866051ca8bb17c24fb -f6ee9a7aaeba68fc3b734effc48dd949927046a2dc047317d375030626eec1c3 -15a7d6bfc81dc087d78e4546356935fec0a386299e6fee69e00e3aaa2d5fa1cc -ac2bab07a4a4fcd40b8f890b0487f6de33ff17628d4b6cfe07e21c72622a0a23 -0f2a77dde5bc2a85c8645248437c95cd501a7a7d8e420db9457a681b30f0e354 -ecc6d30c24dba103b8f5df8669cb1b46750a869e0f2dfd2c786153fa6baf6b1e -cb55a93c3703e913eabb6efed853c909c4d42453aa4a5ad45856daa3e4f89fd0 -101cee10e0177aac18b8a24c5815e1eff8ed74d4b43d99401ec4c833ece197bc -7c4603d3bb4a22403b6590e45ba5643030c4a9fb8a138be1c1dd5d2b80b6392b -99bdfe20c7a112d93a34dddf29b25d817d316c03fcf9accd54e4f41dcfb03da2 -0c5528f7f06859768df6b8665a98292b139c12b29979c33fef56a3d8cc46be2f -55f90f34ff965d4df7dfdd5f6a0f4447ed41cf2f602150b578d3156b6275ef16 -22d8ebe0bf6bf13f0e4d6bc09fdc35b4f5e7b881c8187a4c5c0aabc532ffc957 -c7b0a5a5383947507feb7b3b136beceeef54608132e8f585441f4cbdfe7a91ea -09c1af47a1c0a22116b2d4f0de6f6d6858ab656a501f58c3f7077f9b02793da1 -911ac2bc3eaa038d817f485b3ecf17b39566f7a496a122a8e8a7fef4eab41052 -80295a59bdfafa019f92cdef4b80f8e39b1fde0aac73ea626ad242cae85476f0 -96cdb9a80f0e3ad241525e81929dcfa074624e81ccf027dbcc85e29cfa46a78a -f4aeac2f2769274093e1cbcd729dedea78042f128b7d3cd22966f885b49bc33d -7dd52f2f7514f5e63bb712baea332c7257b75b0d1127bf666b2a96b953fafae9 -3086e764ef6206101eb1053c7d8000f2c95759420290506d3b51c2969d70f94f -e3b8be74c4a6d695297b236b9da1b33c2370137d278f8173d936032da8d54445 -25e5d15c1a890d2f364d3efe001788b15ae8f9394d1f1ffdd496e093bb45fb0d -8d651407da67056ac0eb3d0cc3ed5ebbb35fca59c65fe06a0e339574daaea39e -a4bb084406178321ec73e6305b8e7b0138509482aee861e1fdeafd4366e5e8b5 -8f5637999610789475016abd54a728302399ca7e1edc7f75ee126354114fddf6 -c24a3485329e8be9e547187abddab3d236dd42a68f779f6727a8426655572eb4 -341eae97071010c2606672910ee8370ed2f085073cf43c2ce01c022db85d2393 -71d9de999b867a019a2a20c94da35f7cfb4b3471cb0195b58fadb9ff05e9a605 -90360912606bd7f4e0a9172454ee2d74b0ea8c8f089b44a6640f9401aefc9601 -649c0aa1aca6ef7d046fa4bb7b37d62d37629ce5b6b45aa255515415bbfa8ab5 -d7b3a97183ee58dec55446c5d46802d82cbf2b37ba5076ce0ff122f470579c59 -5da5bd08568568527d7115f5f6d04deebf5ca18cd3d0b07d8090fb128e109633 -94a165077f61c9ae8a2a27cc3b48bb305ec194ee55b70a9501572a45ab38498e -6e753b4fcf4f3b98c1cb348278d612c8fcc9a1974231bfdd418baed5409cac5d -ffa096b4bd740a76621c0c42ce5a535b252c1bff9fb00fdd9fb114e91cef2950 -7867df6d54ccf36d4b6ac7d2d705eaa583883ccd90887bc74775f8b9ae183a8d -7280a908b43f0aef66dc63e6a4b93a89d488cb9ab6c43f712a73f118f9337a25 -f263da8f5fdaf4c78031b4ddcbdacc6e0b9d465c10f76bf4b161ccd7ee2f64df -817af8da86bb922a507a80e44657413ea098c3bce048893283b39a3750bba24d -9156cd714da99c65d85dedd0c67b6d38030bff0dd50244e1972b5438d4b28ae1 -ba39a352fe7cd4df51742ad1c45dcaad6372d53b00c151a1502110cb22f8109b -40f630bf5e552a5fa6473c19a3c230562a8fa2ca1dbf7d040ac849fd7887ba0c -09cb7e9f344221763f621a467766ceca08571e30774591e220754069fbbc9696 -1c0b075abb9551300003258a9e0f1bdac9cbd891036ebacf68a700ba4799d899 -9bd90db9eb9dde8574d7b794155b07731160f5c7bf4673e55c52454f3de0a577 -f2d239471c86745df2e6847a21db1a7b00d7c8ba430b92b626e894a6b3755ec0 -3a3c2dafac8c74bf59f919cedd68cf5f8bfe09a31719dcfa8aab85834b48916c -9709ba59bbfbac863e709212670a3f598f9343f797ee91197c28d0b500eb7424 -d30661b791f21df9314d948846d9339708d14c8c76ef765f3e05ba2ea7bf663f -02deb465dbbfca57456dbed222578389a86a9e67ed5834ebeab77c36889456a7 -0a8ac0aa4473a140344416a0743867d839e9ef8a0a45fd6eebf0960c059ac345 -8a97aa8f095762dc79f2a12a9d0140889d8d094c104e38a4f36ffddf082a55df -0fddeddba4f340d6122e1b38174801f9c8a13299057b89a25df2b6ed09ccffc3 -360f911b222110b2eef6ec58998557f6a218c15e55c02aa762993a7af547f567 -dcf338c13777ed7117e1125bdcd89004218a4579eeadc8e36ce251c65ec305d4 -c74e7f72a29a406401b2b026ee6fdc3126a700f16aa488736ac517ccbc4091fc -4eacd41261679c4f8f0bfc7b1804d98526b80de5eb39a200051dac043b0b1e37 -87a955da2aa12066a07d8c9b6aaf1e179076a07199198205b622c68891a61b9c -f600c0acd9833603e22954a751cc88b473044acda04a308259bec5632c56a3ef -fee96190446df55a6c4b728c8d9cdaa6d2bc8472e3ff8954c0fedb033f119b6c -248bf951524ba7fc5c468f95faf7a02b9b604b852bcd991fa41c4ccd206d3a80 -5110520e84121d2358af8f0a50b65f50f6e8cc4b7eb9816b7df5eff605b08204 -cefeaa6fc6669d5ef80aa49a8aa6a68e7a1b2339e099cdc0d7bb1610ffd4549f -0019289101e1e9a64860f2c1f3f731b5447dda2b617ef732e13ac354be05e7f9 -c150cab3c5c9cf3a24fb2d0bf3d1d2fd86ff8121b950c02e777db12427f5f0b6 -09884aaf6c89466994a391fca24a693694e1dde5f1fab9c53aa8a55f54f5e1fb -5c39673f3ee55b1ea03042c33fd38f27d6edc96bd9c8a84b9a7b2628db01b2c8 -ff701925c8e55dd4223dce67c80cbd1498393b16f9d2bd333c9ed2904a878291 -177e4c78f6f7fae9d00a9cbea22c8c3247e3982976a05aaebde8335ab54ed974 -0fe78893da3e2b565bd42f28ef262fcf0c2bd07933ad2acae38f4b52eda12f6e -07d1a4d630d790e79c6070b0040fda35053f7d2a1580b633a8c929476df2a9f8 -d91603610918648547e2733337cbed8f2e106cb21ef9651d909c2d118bb48b2d -f9c15dd12f25fa6f85aa7c5ec2544c0833e7857ad0b924bb8e02fce84aba3583 -65a8f10088d27edd207a35ca33608e334bef8818ee648607605f35e6c7060e46 -c2cd4589fa4fa74f8cca5f28ef7c13afbb538dc0302936a725e8255fd7edaa97 -004fa91e78671868af95b4da4cd5796dbc85f553adfd53ce4d75f5caa4ea8fee -f2dc1f78cafbf8fae7dd2ceff79b60ce18f1f13aba6b61d11ce2ec0b7055c64b -dcb4968b8b68b5b889810825e95580153924fc7ec452fd260bfd4b7ac93e1d53 -7bafe6afa99d4599c5253042300bc2f16ced86ba5c13d884a5dccb7c43d074c2 -2df358f5a28932f4f4196f0b07fa34adc02a4919a61bba5b3204ce85f112d30b -3dce323bd2db881f1825e3276f04a5fb7a84d93e84b31769c622c84f4259d6ec -15669e52ca59d2865809a0692b7921ff22b7109e0946383f55121c5a509242b0 -e8499599cd7401074ef238dd9d34f463c0c4472d8973c19e01cb1fa136fa6e65 -0fc72c18b4ae646485eb2b8c8598d2fa516c03018286aa8181ca5d8d3aa7f178 -efaf5058d7d533eaed8ccfcd7b4eec2c0231fdc8dbc093828f2eb9042322c1f6 -a8a848b4a777970e28ba977043d459678507e9ff965cb251deed747aca3b242b -b9789abe795fd4775f9eaeb19e5d7b26530c39ec7a7c02a3b8fcfb215a989e38 -6a5d4d2cde27afb2495cc6634526d0651bf89b90f9b2dd940c67de0474daf715 -5781226d23506f20a183408c73eb10d167921b32634f188e42cf45dcb36b2b8b -c9812c185e84df64b5def636b89d1253559d231efc22ca329e9fc61a2e299e8e -8315a69a54bdb775913d1a1ec2f038924775e72f0da7900f93c4f4c1eea91019 -6889848500bf738a816d82738d57d51cd45b2b101a4be9383d45f4825d61e059 -dd95b52df4c61ab5531daf15367efd75436004a5ad334b5fb24510d40d05c30a -3292c57170cb67d8b6158fdf370c29ed4e45e1b0407ba33931dfb270ca6234c9 -9f891d00dc5c5257a37ccae0ead4baa806dfea9f7ae9a366618ec1ec7efca867 -50e1e1540a849b8de8f9c539a74dfb6ff147f5d444ae3ac049075f712b526691 -89cad9dc91e09f4b2f113ece9550287cef96c3e6c11a9c6bb9dc92f3eb003f09 -e60ff0fb368b10edd094e67365456d848c47049ed740f76df24f137eb6efa231 -e3985f7242a00759787b1b4389660e1356bc7f4cd79ac7b424f07e279b690701 -a606beb20457391abc8f618e4cccee5d548ecf24f311e92568a1800f70078bb9 -e0a9a770f6dc639d5332bc6f30a3aa1da9c5120d0195700d5d93d62bfc66e4fa -ee2f1d8d97b6c1de9d5cc8cdb95b396f39e3e802690b70917c5dc4528b6eafa2 -76079977e4dabe14262166e589d27653c7a85619e6b3038e9e015f5a00f563a9 -aff1b87301afb999d1edf2d0c0a340f0ff403407a14def8314af43e8fb280061 -09a28ace70dde4f73d76854aff9450ea6ebd2d3856c609b674b510ea4cc8a5e0 -2dfefc599da30f35ffddfadd7ade0f570129aba4a6696e44ec9e78774a4d5a12 -71a39172fec308dd27654ccc092b7f6cb6ec5b256342ec2085818c1214a38514 -ebaa915cce5a2664429a36ff02004c9e4b381d58e6607230936e1d9a07584d9a -205b86fb522236cf610fa7f32b62afd69f5982fe6db8a889bb22cf647196a88a -b41a7a6ac456d444fc5623dd702152187481d280fa2c39f3e3aa15ce2260bdb4 -bd23f5499c1b0e744d40e60dca73b40465702665c01951d2ff28a1a8075158eb -527da642f7813d3dfef193536c5674baba30c196b2d4ef3327f90371e4632ea9 -412cdc52523c9bdd16c48d928e59da71a174de453ed6a91e9011e11b16f64c95 -b987c2bde18f56e371264916f1e6d9f1a2a08a17c264300723bf75504ed7d9d9 -c12d1d6451b14d8387db0ea0fa79d367caddffb902794d849f52517f67fe54a4 -910dab61e79bf9e017e2f762df4165bdf2ae7ecc2ddbcd19e956bb1eb2eee7e7 -55dd3af2ab0bacfcf809949c2718e4bcce6c161caa147d7fc19d02a0b32eb752 -7b9e5497a7fce2789a0481cb0e3d57bd2c5ab440d2bdd6e80c5e4f2be3a32f24 -d0a190841e541c2728a042ef14ee9813d633a55eea408e649e1b155b7765b923 -06904419d5e1c7e4f2a6b7834fe1a909a81fd79e5863f9fe565fed09902a9021 -99792a7a7a6dd6e544584a28d4c8d00796678ad4ade4bba10ea75a01264b0511 -6b40fa46fd4737ef2247b7ffd5a8ce997655318e55b0d66f4dad72fa277f1dae -419ef1aa04c1a8e88a39e026810812931e5071fe27aab0456f04e5b74e4e3377 -261958c94e232249f2681c1ad71935966699a747e2400c61ce5b7bf7e07a47e2 -97b129711f0b944bb4dcdb6e6e65ae037d62779a3c1ca995799f6141b7cc87dd -931f9f4c1ec8f16450403778d745ded53a82555413b2aa45a0facc9e1163c1f0 -ce542196e54e13f7c2a94c54cd63af6c09a22b8a7b2c21a05517e3f9803128fb -efc655e9793cfd843d933612052376b773ea32f27e5a32df8b2201794d73bc92 -60de102f8077d4a1c2379cfb3fa07cc0254cf68af0821db3269ca7f549bf3db1 -deb7d6a3b9760cd4cce37c33384affc05e312789a0774f79ab36a71b3fe01c1e -8cb351b02c8e283abfe13bf0b6b07aff603243158283e12991321b0bacce3dc1 -395f6b1aa740f93b7b46e4b47d0bb69ebb5d1d8eee5da4d7961dbf77535a8540 -493159dc577bfd05d151a6c19449723409bdb7d11875446cf7016be5ad01fe1f -a594c0d74639b8dbfa63cce85009e254d01f9d33294d0e55f05a9b5bd1e09d79 -3105368cef3bdaef7d0ed590f63c0bd735fe662c35df1cbfc2f873f0ec592732 -d76b0e8f13a9a7930bcd28a84d20c3a2eddba62f07135685678f0df5729101e5 -7083bedbc979122c7e8530d78a806715ee9f446e2fd8fb03cb3c4838c9d97485 -7562e4235667aa51b2851804b73dbeaf09bcf9bf1f01cbebe784585512a0cf2d -7054a936f34b539a2593f99857824aff7ddf9b37e250194779d8bd17ca85dcaf -c7ae8fc61b5dc4ae94c0f4ef508761e68bb2c417f4bccea07763ccfe491ef1fc -983ff34bea22c07ea93314c07b21a52abe2196984e19e38ad02b312c501ca332 -0d24c589983378a6ed46cff75e1e81db2cb676855d5a6cfbea9f75406e768a89 -6d7feed29ee34a7f28e3db2164985636984826640b527148d8078f1d832cf333 -4a1925b5945fb305d7d2147002ce962df41c102420d9151e345d6636d6b5de24 -2e3b27c3cf8981e6a43875dce7f14dc4ece37e11d57c706856fa96ff156d4011 -f987423797251044685016e6bd49d53b3c234f29a520d9f2fb8d714d7e50d8cd -26a40ac21d8e35a9433f46a9d9a7fc56449da6e284e7d16523887b06280df6d9 -d632cf83a792fbd10ee2c5ab9e79982c1d03270eb8771230e2d9133b61f2840f -657e7f28db9dab594bb09781a7659f024d8338ef83572457f8c4a6d911d361ae -173d65ef68adc623a5856d7fb0691e531d7d769e4de36ca16e90d3e82e051a04 -9d3af8e9a15a6c2003f396abd27dd67273f58558099ef96db27c9ad6c5f7a7eb -d088c76ab32c480f09884f5665add93c28fc0a25143b37e8905284c975c91dc1 -cf06010dc485f8cb3e6345d75fc40deee33d8f66258751b24b831b9a5078517d -f1b1923cbd7a4b564d2a30b8b1cadabf985d8279806f98c20f43542e6fb06af1 -2556a1d976ba39fdfdaa4fb655c9ba9d8164e7c0126305c1eb6acac79d7e02e9 -61ecd4b235525c02b6ef50980728526602a0cb8d06231a5ec5d6244798cad643 -d0a2fe80f35485ae43e2e322d918517290ba1714e18665f52d39a1e4a751689b -21100e7336b0be00ded97aabbe2494a5fc49fee5fa377020520a7a4de0f14cfc -73910ee1156ed9d58c72206198e047564e5bff8a207e4acb3dfcc3ece95a6a13 -e9bb98437f7e511000b813638ee464d1c8b71b39fcaab8584f1abcfb6c9aa836 -68293c3616e5803b88013d8f155da5748602867d02999db7dfde2a6e9f2b76a7 -d300344d1f52fe8eb845fa929f4b05adaf78f3204c6609e8238179d80fed0421 -6cf0d64d8659d076e49f040820aaaab8058d10e74d55d4c58a7302a3aa541f94 -8c122ed59f3036c8ab4929100c52a0af23fd5d70829a0db500f089a0d908c421 -7f23aab6fd305d25497b4c2ce6fd95849cacc1aa38710b3536f189848e6dd8e3 -90d765588f768f9625383ef85345e41f407361dda234cee869e795b8639df4bf -2f2e9c1f6d9a8c185fdf3e8ac9811ae3e894b464d5616e3fc9b39b3365b93a27 -4b9d76fd498ea3ce682ee95bc6b55fd8ebfe660374ca6284baabee8ef0adff91 -31e7c3821bf0ad5c11b3e9a6f3b23f90bf3ce077a1bc97432726e542d540dcf2 -9ac389af2a79d75b435101288ff85a22413cefea6b256673f4a8d619ab89b3ea -8e9b2fa9b6437a3a19c8bb2ec789feb4e9c98228f07a6b9fdb16e16cc7bfcdbf -ea42d2105d7494f4be85f1759398aba05eb7f9c9d07290a08792d973a2d5e694 -20c05a379653ba5c992a9c2420d8ee1befabee2d47e312f1c2c728da864c24f1 -b2ef62c8b73deb211936a8bbc2fa3664e1c6eca3faaff6804fedb7cf7f4d9361 -35b9f1c11de1b3eee1261324cd5e3bf90db51d67468dbe97e679e01c79ff0603 -c6802860f89cc950b111e8b526742c2b023499200e877be8ca8b76126ac46806 -61ab7de1ab7ab1b28480e2a54b09618d01ff83b36b3cef1e0ce288f60f3cf265 -a43217c0bfa87d0481d9b41263944cf33bc05dd374ff5846d57b12741101179c -8693d2265d340f6dd8de0251f5eb77ec7f8a2deda14775241fab991b45d209d0 -d969e7426e99550ee0ab4951d1a6eea42cce997c81cfef42dd2d6b3962c12b0f -9d5a1d7ec198b8e7dc7fa12633e138156df426939893d9c94fa22d7d6775105e -46d0a56c05534ad1d56e046748b2e5f7881a81f16972febb781d10b82b74cbcb -e04e72013fb2a715c9b966858d6610a5d0090a2b17208396636a44f64d3216ba -e3573c7de2dba8f7ad67eefcb10553daadc387d3d63cad07b4ff3f71228234df -956b1521788f1b6dc5ae94eb3269666c8062354ea1839b9155ececb54ac0d8ae -085928c09dc4f7a1116ac5d109a5ccad4db23bb4bf501b91be397005a4518f59 -d8a104883fd924b12ddb4dcaf962de30e1a0fbe4cdad0e32b02f9a0ca5860db3 -cbf4e43b9d970ad29283feb693d60d03c5976bbed5dd3e8f1290fce8924c1f11 -884a604bb3f8c235cbd5e60b877b38b97c70574befd7f1a141f0d382a268b1e3 -a42e6f7969e099d566186fe33b50b8d6d3cd6ed7cce827907e80ae6cf427d1e7 -3e5b8d39a49225d0d5ac309bb64e6bc0aaf4920254c5423b5f1eb5a1d037827e -b9ae40eee909916e54caa7d0f6c98a101bb30133ece88600567705f1f70c865c -cd28dbd66cf2e4e8e4f1a42036454f776ee8a61b98a71caa182198df399c0b28 -8e85853254cbbc864590b9d742ba6182d9ae6698b4610038be8bd1af3edb8c16 -061e26f548dde5d0599febe374a8322bd7e4070063f75449fc3953ae7e4fa23b -bcb83ffc22fb2763f3e2813578dd9787982afff1b6c1f4f769ef9b8b5a671ce9 -136a0bd2446c05e21bb77bc5a460c5bbfa1e392a203ccb3366b48a003e444a29 -e8e76e2c86ed499139f7ccb7de5ebd603bb05dab260e384fac8624900b3bb869 -e5ae170e4cc5e0648516f028833f97dff92231d357334f82bd6d92ecadecf0d3 -919b5420c04fe3a589a25b6b62fce2421c537d9912a6e67952a72217605ebeb5 -62864031648052a57ce5ecea79d5e2511c07dc415e496d103cbf7c1a3ac1c431 -e57e6a622ad4612dd2855525d17551eea92e35a9344b0ba2638f0b8b2c472b52 -ffdd30fa77321bddeeb531e1eb17d8209aeb88d991dfb60caf7737dde50ffa80 -67b1f4fc36886c5c7379e4446a8de0a302ab29525ae6b5889a2dcea75b98ba9b -bd0ac3d172422768dee5a73be484f9d322660ac6e9acfef7b93e6fda2f54fd8e -69df0fe8ffbe0fdc712d7d8b4d6edb4d5d191fc29e83998ff08059a975637d22 -0d2fbda086cd43c4e4114c1dade00ed02f0a4ccf9918c5e699841cae99e47fd7 -f10809f233aca17fee9103f7d19f815e61ae480091e339f48405b504bb06cdb5 -adcad025735e0934627c31b5a94b18423a964cb6498f1757370470c8ec279bda -463cb1741e8e412a8cd67c090f3d4129eb9ed187ee0cd0fe87e35299f40c7e23 -a3760b9ed6cce32d3399f5c0831f40ad770f588583cfe2b2113fdb888e1ce982 -4539f912b94caaa466bb7412e7b98f3dbbb0194327523aae9bb76a7ccae6ed32 -00a128fbe34cd3aa17db4cd3fbc6899b6b88e7134559ada907e38716319bc6be -24ac332a238da0fb4bbe7abed2cb006dd2836c1034884724384ca60c79fb19bc -713eaa3e3d490fb6e901cdf36bcdbe4f83f181602dbf42b44ddfc81d04cfb969 -a3fdfc5269d319a38776173642b5d5a5c9b415987b8438485e3409735f2de832 -e7a639953a6faa6990fd48c924036d5b2b5561fc55939f833698df78d1cba5af -d0a2b37978033388cc1e8730be406d3d22a1f2b2075b6f60ba3b8f4b740437ea -23ddd825f7e3922a10c5a1a565f75e339d492aab181f3695e017b203bec601da -76d1994054ca7b6a3c692a31d8abe9eb8fdd560e4fb74f1808188d1034e3aed1 -2ebd4cae1d81fbe0b0115a4fcdaa0b2df45f4d347e81de58c47a8e6f89ab8049 -02362e817be1e3a261176dcc26089d3d85047f5537c6230e42b69d81f2f9db3a -40059dffeddc1fe7f895a4d344d34371aced901afe4100fd5c69630cb42ea04d -e4903aee91fa4cceb1f24c571283abb1d48d88f980b316cc296506a64f2dba7d -5a28344bc6d9ac31a3504ac608894f84d14d49df1136f0322a2099fe7a6126da -cd2fea85a84085a9efe20fee561549e42232f91d3089f514cf79602347c94b4e -9b11aa068f8c286059f42987825d020f42355c6a5c568fe1188a0c8c31439e92 -acafa313e72d4d9b63041585e0717478c010c6430d1ce6cc07c7b95c136bc18d -448fe259616ef3f7cda1d5581a12013de8fdd2ac80c8454df2f81caedf7769fc -db0e94f7f004c7db7dc1ebb56cefbc3d0d9265bbc8f5b21494e770cc62022328 -0ab4badade9142caa242db06a82eaa4a76ef05dce72ac488d177cec5addec911 -3230b2d0ef20a624ee883c15ef4a19d9218de01b4fb4f3237248ec4478f91f19 -ec37976474325555a4e0222a95ff66dad7c0a282fab5d17d4ef0e9a2551023ca -7b5aa6bff98b1cc8d0f67a252af55de00670db9f312f3fb192d27f2fc3f6c1c0 -7dcce0592cb72dd1907b7cac26ced348b45f7230e6d9f0b3b5cce4b394623ab5 -4492e89216f6a03a8875e416f331538a3217a10f234197140818b7397d2fba1d -52d91bad8e3f4363498aa1be0274ce36e157eec980b213c4beb265b968cbabcb -4d96e78a6297bf79c0beb9f4724e2ac2cfdf9e80a86dc6266e8f4576caa38132 -7c50d1f43d3dc3af099e5fbe958fa0fe78f81528c6e9dc3820d0bc0eb1bac803 -1c4c098b5ebafce664dc173cbee0607169c76bfe5efe110f66761cc60bd9f83c -e12b983e1469146fba20cfdcc85553ec0feb4fe4df5b2c291aabb80d58f14c59 -4a50c933ed198d7028fcd03a15fde740be224dd5c8f9c7bd71e976f1d3f0909a -1cb9e613e23b5b4ebe89228ead527bddc88109997e74711463e63e7befc665cd -8306a506c9819060209d4a7e7f683b3a22ec6a1bc843924170f23466d62e44d9 -71e18d90f1f4155f8b40f110b5289eff1588ba6a1165ba4685d90cc1c078b07c -fd15575d0e1d61581a20d2751d7d97774f30279001663c4c1d6c9a62ad13feb1 -00dd85b496254ee7f985c472f64a9eec66c4e2e322560295ed1d18872ea27b2b -82188ecfb2aff7c7824675daf32a22db2be6b2b75f0284782a1d3145ec8c5f16 -9c9dd2e49c1a8a07d739e4b0709409a9a462aac75252d53a9967e0bf33d61274 -da149bcb004c44ba0f70f2bac9d00245187f2206662d159497323dedf67529be -132f300c278e169462dee3cd07cce93187e90062862810262b7274ba1521e445 -e80df56696acd9f2a302f1d64f32b41ec9804364306a304b6c2c4fc7de5c50f5 -ea008b692b60c1fac05dda51f3fc61e151f7640b1e9eb017dd9265a7280506c6 -c0f90a8abb98e172947174cf9061688ce6d6efcc01cd109d13269e12a4dac854 -88ba080c39364834e5613993a3d3b5999ebac4d41cb108a3453dca5ac8676602 -adef5f3a48a03292ac49f28a5a9e34fbe8552ce3a58d399ef76d2f2e35200882 -d70451502d4f172fb3b29e15717ec3465e2b3f03418f1498adf766e42d2bcdb5 -23be1ab961342cbb1adf366a0bcfbadd559de33aef4ce99f25b83235acd05c3c -981ec3a601ca593d5a50bff439ba7b33789272bcd0222114cb5798fc61354b1f -f1587975bc6d4a5af2c3bf0da51040cef58e563d1f4f205a873a33e5033e148f -e6901370f29821eca75643e3da2d250e9eaa54e9add4597ee6aaf7b8613bad65 -206465f333e67814465b41c2e8e5032270dad0620e7802ed1f927c55eeb38dd4 -3b7fab36d3320ca9b4ebf5df6810e83c4ea386597e02ceefce8d6ce88f6c97a8 -26e7c988dbf1d35d6d865b19ce453055d5960fc6dd510c35af6ab864b3b037d2 -e6442550d542db56d7637790b70ac1e9f69002ca5e9127dd655828a69bafa5fa -31e9c2a3f43ccdfdfa614145517181e0ae902903af25a4c15c81bf03474aa123 -094160f8190840dd8bc7ba4c5b08268d611058cd5294c2bc98161b80c701c87b -05fd6f950baa1d4df20a3b2719b923fbbee146390c9533d911d4c7f21b19b1b7 -69bc63ae6c54d23053d328d7823798b12078555834490886a255a4ef772b9ca5 -b4ad0d6e920f115ee3bf03c63ad031f200abdbe73214b37a138c3122fbdd337e -cb4fec68b8f14ad6c21415bcae6a97e32e57b2cd4063b9dbfb9bf98917a2d730 -a268e9062e57af64f3a621d1abe648a840e0e9813be90d9950cf310266d4708a -5b19d6d9b4baf035710b7992c1ad90b874c9d89dc44bc6c6c0e1a24f88e610e5 -c9b84ddda24bd46bb3c2eb56acb5bd8495582c99a61394ea20c1bd9c2ac84396 -38fc30f0c73a7944904390ba5e0333ff254407566a7c7da03f90a104c39e8040 -2608ad2fe6cdd262f2fa636cfd2767a6c2726b9575b8e9438bc7b2dc329d70a5 -49791e16dd28972ba9097f9e3740633bf1507930c6106a60902a15ba6e926cdc -bdaba399adb069058aeff222f768204b2c49f574ddefcf3229b70c21ea504e16 -eecc0bd4e304bca5daaa740b17df8f9ac955706df25a3ec2def6507b7d167401 -06a5bde6698f0bd75131bfd469c0b0eb8a8984f64deecaaafeecf4dddf54d30b -787a72d7a6e2da75b4b2ffb0f652d22c6e209858f307715dbe74cbdbdc597832 -97e647fe424fcec0b134737901f4c07fd64b4cba94cb347894ac38f077780ec3 -85e82c194ac5617dd430cb0e473da9ba78f7b4de9897cffacb61eb4b72599fdf -592ec3ce96422a19c8ed01dd70b278b4730be031472b50528c47093ee848017a -2aa2aaedfe6dfdf298b0269886d3c503f6a143b0ee535c137a5af16644390f26 -216ccaadfdd77fa2bb2eefa1b431e9022c726a1eee12808fbd0da74d9fe32879 -4afc1a09a4caaeb64757f921acb1bc03a4fae0d7a66ab6be40d09dd77fc9a62b -fb311b9504bff9b9049de7946b9b7d5a97c7df0816a62409e814445979a33956 -a577cf67268cc196e63e5550f1b0d3b2105657058951f8e7ff7d8915b3b1f12c -4eaafc23bc846315f8f9d4b9500c836b315a1aad412f8849d3bbeabcdba7ee12 -ef5192e9775f3098b2fbe706ce3e5571d070b62fbf9b4b53bb79655cdc8a9a15 -6fda69f8f276521e254103cfbfebcff818f17c72ff4b47d42a603529db453bb1 -b4216d80ab405b226b177ccaf0e7ef73f1e12c20bb5f72539742a6ffc282aed9 -983fb5f67c9ce652ef1c624596033bbc5525e440b99c71a8a65b37e74505aac2 -ec587070eb22fcc6ed624f949b8d1874648c7c05fa9b16ce2183f5fe20f62623 -0f58a9703e3604d1d8c198e55ed1628932b04eae20f25318238802bc1b1a9317 -8bfda4213bd6ca7a7443665efe7f4ec9f312491c6ca5c0f327548b23f55ed9f2 -a58ab6291a30df3827803069208258632da7ba63a973eb29a6b0439f8c7f90b3 -1ceb9d0ff568a144edd30134c508f247127e355c4742562c89f21c32a1546ce4 -67ca4ca2868850e1b7ef40d0de64f08470070e59cfb78a312b7eb7e1e843faad -7713aebec6dc9f59a315bace85f7b979f101125d188022d488e8303e0ad84820 -ccf18f097ab5f34b683167104025f07a2f9b49fba6b6c3bd7bb6bf946ee87500 -c12913fb842d8b9461cfd2e400d0a039bd9f39353e6aec958f217e1085c011ec -ce437754e492c3e19abcb6bfacdc64cc2a793ec6edf215e92b634ce5d6c3b5d8 -7ac5cd5e72e7d797b8ac7f9526935373763aafaa2bfba19d3ea25a2574137c69 -5aa5ffa52acd308271740adac4cc5c4c0fc63bb2d3cc4408545fb14efbd3e687 -6ad817d980d28665eaaf85e00ba2700d4c7642def5361c978af07ae3880e93c9 -342ba7d442cb882b99283c7dd0df1f8f8d45d1c5c20fc92207511b29dc009bed -d97815af8b0b6b52b782a143788eaabd6f4456db592e8bba74fbb4bf47987c50 -660ed3163b803c5a53d39391b55bd8297d25cfc0ab3cf77c013f0a1192e9b941 -db6336681cc776e4ec5bb0ad475429ddf171f066413001aa33b2c72b09e68d61 -c182be5971eb20c42a75175a0eddb139289f2ee8cf27444d1594b92e7fab1f85 -f89efacbad9984957a9c7953a4cdfb9fd8dcf758afbde395ce3be4e37749a2ca -98f6aa45a0cbba0b09c665673c57c4b53e2e2b9daa046c501b2f7427da962576 -9b2bc229a60d1643b7913cd9c9982a955fe20c39e71e177f4795e78ec9ac930f -ab3bf1d2cb31b9c3b9fb7fd6fb8eeecf3628e3816936a99225ffea9274231b1e -2342ccb527439991d301d338245a0d708c6f163a63758fcd611fdb83a67e7ad2 -6adf3eb9492cd744c5ff951677f4e2a48e963188a9640f7aa94de6b259bcb6e3 -96c9e5651c02f0db58bcf1128a5ce4d0b5e7ae79528eb7a68da7619cbd328387 -a55e0af7f998bc729d6a600cca188cf0d23daffa5e72568313a85a88007956d5 -e9b8612a45bfa4dd5337433d12a011e230deeb4691eae4f2f05b2a7f1a3b2fdf -813e8a4d9fba8abff8388ea5a306d9b490727c67d5cfe2aa2377481c1d44afb4 -3181be66fcf8e57d36f9b9c45b6401a2cc709811b363cecc3e5f2f1c2c4ee294 -8111a20cac66056382002f455ffbf3beeabeef461efa4ed7c46430c190383ada -97ee7779755762f706d981a7fe7ab9d2864fe4dede4f18293e166878789534a6 -5c5b843bf1401b955162254bb62ae5732e333a764379da8efdeeb706f3b60a3a -d77db1d44d0fcc5b8b12f56de253518dd118f735de0347a6a5736b5aa3b65e52 -c6a283c2a51babbab4ba30e567908bd15f3618c0366950288699838fd80edefb -c17e6885122be2e6a73ef7dc55a0e0e128bc281756335fbd8da08420f168189c -b1d84bb386243e9ab873493a982bf63d7f9c811921b20db9e3815e847997adea -f81f868dcbb6b9f358de7ccf971a713cba3b224078e6cd8993da4b9a5a61dcc1 -ff3d184c8cd5cd7c9325d54d5f3c2b06297e93ebf6cb6ba8588f8d8e5911af0a -c2c58e87adc8a997ac5a080e6f4c801e284e2860f4ef84ca1c3134b9194f5d33 -58086a052d4de0858d227a84c59e14c407944db11c6beee69c211d272ff15bdd -e24f79cb3c1ae8062d2884c4c36aed67be4a08d951bd96766cb623cc955087a5 -8a4ce11cbec400c83ed9b0f64ea4f614daeaa1b469c32cf2191e605dba2e9bb1 -fe1f9f713b5b46d9f9be04d1232d4150f5bf02acbce666ea443205ac69ef7389 -c5cde945e9fb5ad1b7e397ccd5340fa8f26f174d414346c0207c9176bec906e1 -93620f6524f5df3c396466cfb37172ed79782b8ab560610d0249de04c8fe966e -211a2fdc0130dd166cde276fcd8f3d9f8cb6de66bfa4e2d5d8af917e73d775dd -899f23bbb30263ee13c1fd7b1e92fae3dd386499c87f8d798f4ab6efda2ffacc -4552058dadd59908e3d0d6a18dcac0ff65796ee7894d92508407bc3f70349936 -91c097663dc6c5166e7f498ac920460d1b9b7c506e3d3301b7d038ef08aeefb0 -184057b6dc277de28e1df90ec630a3eef6bf161d5ffc37f567458d50744235f3 -ea3b5b02e0e9a510d387944c0625a9e827e922652fa38e8c97b87529e7ca126d -e6307239801ad8dee1c9bee66ac8b7d4e3e160e28127bce8bf03d8e5d9eddea8 -6a2e97997ee1b5e77735038b3614cb9287beab5dfb79b2be6d4c56c4823a4500 -10b1ec61da207a41c374f111819ed240009215715d23dba3219a6c39af237c95 -bc7c81597bf3395d5f4e408f5bcfa2cd25acb73d1ce139c802bffcb640559d84 -c5d447c1e58fce0cd18721d31127983b81473c3e4649ff3c072c42b813048ddb -8a507c3ec82e4f0783fa50bf95b00223c8e4f31d8771b4d41865543f796a1f60 -4287a0583233c945c96ec16e85045841d8de2c1eb6319deab2c03dd13adfd50c -3093f235af3f268af07cb772f9ff9b756d703916ee3823684c4da3ac36a5fe13 -9d7ee194fd7773de23ec17d48bd55670cdc7b17a86f49b51f6e1c325d1456501 -be676f60b9266fd563f03142a9088a1848a85df2f7358e013413c4df95ab9869 -bee98b062ce9e309bb040ffbd1bda7ffd94d960fa93b4a661d1b8aab7f7a6479 -287dbb4cf837a17accc57fe5e45f728cc81a2456a4f8514046cdb754f6e0d218 -a89db4014875a8a61f0a568443e0aa2fb16e287c0771813ab1e05624c82129c8 -6cb375e160550931f8e1af9c7f39096f36aa9e5c1ef09d51438b9cbbe2202c84 -1f00443222783d8af071a8eca1196173a88bc13a9fb92f40273cfcf9e4099929 -11715d6c8629e6df4dccd8422e5d154c0e12eb31669ae951843cc4a1875077d3 -b9e5d19bf7b92efb1ddcb7bdb001c787830cd117c431bb1dcca0863e8747045c -7d4db8be390a248198204a4c84560955192ab707aa18757e5b35ce0489393714 -a65df9c00054b1c67b3018e58ed4d9956185f106fd4bd37ac3249af84cfb77a2 -5802080b0fe9ec0d949a2a2d270a651a4333d25080794af7b7168882127ce61d -ed1b323fe333166dacdbd1af2e8b3bfa8f9c642a8e7c5e066281eebf93d44ee7 -e49c0f3031f68ef5f0dbf236284f7e9795f12c922ef11ee146a7b6c390346458 -d2f2c5900f3f3dc9eca680faa8950e82e182eaec9dd3837357f91c1d429a0da8 -4d0d3d75c559da0355436a81aa261688f9a6dbbfac2f636b69da29b0c6f23294 -4c7867335872702bcf7b9039529edafd1e054fa757f465efabf0a36bce33ec86 -b4553ae3e943e5dbbb3d730feabd7e0af2b41e8fbc69981d13d1502240b8aabf -2cf50f9930aac5f407c0482d628cba9a655302a352ecd4b255fd6f5a67713942 -6cea35c9217f44b2aaf6b2639932eccf05b586b08b3ddf01a466f123e43980e2 -33d52ab5810ec782c3aa7aeaed8f14da1728033bb119dbbd8f016d0babd4e6ca -37df983395652767f1ed79572203737f2ac0218dde40f98f7c4b4566be788d89 -2489991ccc2741c8460e8ed84f47c04c0b49c7f5549ca621db971ff87816f73c -20043426ba9c6f8fb25fdef5e5dc8f1dcf895f40bb9f3a8da354796d0efeafac -22d097da989b9b0b363c977d9a4f53d89a99c5f1bfacd0f9ec9176a7e48f3651 -95e1dcaa4a15fa978aa1e127887a6ee49b17bde9d43910b88a011366d5318656 -f5496a09396381b26a210c29b5517fd912f22952ca727dcce0dfc3bf2a8ae891 -c6005c542a14b26b49c1aa66834b34f2da4c4b55f49c7aa3dfedff808dbf20d6 -7ebb709ab8e0ed6156be8eff6a9d0189a56bcfcb6c5fe2ade551c40d47095657 -3c899e0ee85b4331f9c87bbe5eea09b9105d480df6aa8d281d9ebaa9d6fdaf22 -f62fb7297902b2a5654e7b4ef7392d93caedd4390b9d11f22450c772a1897e1e -ee3ea533c36cfa580ced420bbe2e47088c923f4dc6b86f02f42e3493c8d68a95 -70ea63be37e71e7570c3ddd6dbaa01c2005ffa4ffb4392670c8f4c18304221a2 -f47030b2ecb555661e36f9c38fe8ac297087450333b5f1bbe44518ec138c1ab3 -1bf07b6c67f227f41d24d497bf889acba0f666bf8b1d281fdf21896d5da11acd -f3bfb5e91b0ab4721db71b1119aef399c9823b8eb6dae01606448409afe7a30e -42d9c59f65fe22dd0da2e886ee34773437f6a29a17424b4bc7b9d66d754426e5 -c1945acbd8691ad21e721b83d6193be9d0f735a78543d6b819c7a78e39519bd6 -309f9a3d8fed07257a85ebc21c66be00016e66b020dfa54f42d0f649e7d5c0a5 -5841602f37b8e5429b233f04efbaaa486b5c3922c56be435fcdbf1d363f76b9c -8f60ad7ff6d2ea3f2995f30c0fb90ad81e84417e38c4552f4136dc7831cae454 -56c18ce677f6fb88cedb933ecb3adb484a8aacfad870947f148ca41ac1088cb1 -c87ca418c28383ffaeaae371ff5baf295d74f58529037d22b192cebbb2a372b8 -c1d39fbb37821d2a604fad47a69d70ddd0056d13c3f7c29863469bbf01fcd13c -fe63188de0df2da10e5173807a25db97664ce761314c5ff5e1185a91cd9bdb01 -6347f2837beedd8ccb3c10e7202d1752edf0085ff56b7301ba49e2d237127d8f -59bd7ae5bd02ba3562508eddd09c2dc4674618545dda89b3853fdb031db4e97a -e463fdddfa027f86b8a219a160a64aa2f96b898ccd3667d9b197e92d7ba31bfa -945b5fcfcca962fecc2a70744a253d8d258b444ab9db34eadcb672b28aef11e8 -063bba5b2f7c49fce2527eb6f7be3f1b6a86b88f20a69fc254d34bae3ba03981 -9726d3f584c5c10c606343d9b57d887e8d96a634a2c7a75f62734087d32d6a24 -d7790e3c4cb345a3302d586f3e52ff223d1cc4bbb43dda3d13f9009554618ca5 -cdc0dbae18f7b7b9d488a2dacb35e95dc3c47bb1db088a3bb7b40ef39e559f73 -bcb53cad5b8d3e49fcfbdb476004ec4cd47398248639038bac44619f676a0aeb -033ee4ad5e2ffd7a69c6addc5feb6625559478d1a620184bf0d1499716a82380 -44f88eaa63b21a9cc63971219414e8c76da289999fe2d4cff28ab98f59fd6454 -07cae69a03e421fb7366fb7f42d05fc785d8a2a27cdae938717d46d0c186b817 -7d59fa283ade2160882c917cf395e6c6c885e6643cacc8f4f48cb165e76a7ccd -534faac44677096fa9f6757ecfb6ada57e2e1a18254e0a623fd83e0e3a6d0e46 -fc53483576b55909d4c0126f3e8b86142b382e2f7b93e2eaae0b558048ef47af -9a55a3c6821a78a7fd7e5467b8191753eb83ba54b824636e20b3adc8dc643e2f -34fd1f27c80870ab49c114cd9da31691dfe8b082d911b4b0ddcfe042ed98fa65 -62ebc2959ae235f195dac567e03b2a16b96b260d1b3882e5c2e90f6d75117e08 -df01cbcc1549f9764e8da22bb5f3363aaddb2ccaedfc8ee665d0a59c44772084 -ac15750da4f05bd93499ad2b51e3fdf427fb818b5370ff08e5584cc10cb7cdb6 -b5d7d45a4f9e474aa56f7d3359bc09f34f830b2aa5e4cf00f7ceeca21e310a42 -c876d3fc476e6523170472a7885224d3b1b9d305c66c27ee115b4b9e9a2707ff -505f58acb9ffa1454129854679a6963e112da922ceb67893cf5789f0aad8a4b5 -1ff9297567796011855dcc48f161ea09a85fc748ba5a0b1eeb0b3e59240e855e -6a97c5b1df93b64715eac3e58495155ebac81879249e13f1b1620c6aed8bf55a -5c7885bcfe5049fe0b038ff375c46c928867e5f3f8f225efd74fbeaa3ee2af5e -60801a1069eeca3ee9e227b8d1a10dbc2d122dc2b07821fa9014684be743d7e0 -97dd43d88bb4d86c027fa7b6cbfa3d0c752de72c56a3d36e8d993677af85e350 -82996bbad99c593d2effb6c4ea9d67ed3b3cf39a9524f39133436ec361665766 -3e4bfff6db42fc79135afa9afbe83a9b1d598710d369948bee092996721dd052 -79b6871d7580365133b5e25ec00f76d14498282bd9e7a5fa68442463680fb4bd -4e82f71b159d232435ef0ee49d9d26d60c82652b3fb4864167560c1d22f53785 -073c296318071dc0534889f106759966032bfc58746b8348f1b3d3751684f196 -b62c87cd8ed439defcb05872401ce8442562d749bf4cdf52687e91568ee469b5 -f110de556304fb061a1b67bf080b9a1e2ab2ee79837835a15e81fae3a93c1e0b -ea3628e5f41cb99dccc73f8e95413549b4a8b449fd798d98c9e8089c7d3ba1b9 -c45ab18f7e02bbb2693781f47281f53ae0c26de6b1d9d18a91454e73fda5f60e -795a1858e52f6889c4e4298cbd491bbd6863e217888862a357ae8dffacf942be -662510b8e02ff8ec2eecf4f2831496d4764f658f5ff44e30abed1ada24b0c4da -d6bc72204d0e2c7ba11b8c941d819a97f884a9cdecd056baed5ebcd4389bd2ba -73dc65e6c9e908d7ae30c8afaa40fdd3b5dc6cb9b09b092ae3ad9630c73ceb4c -06e0ceb9b508085885ff3ca6c2422a3d94ca9d9d56603d18d196e612dd910f46 -732fc016b4554ac1cf1f916e6221e504f649c22ef50e9e11c4f8ccfbe76a4bc8 -5d0fcba94e8a6cf7c9227fb80c2c24147e835ec6cdec9fb77092de597f0628db -7df7e462acb7a3208afb01a303f85b36ca6d648c107bab4ec43785611044ac16 -d051122ade9b5b49cdcd995b3436268b9233cd63995dd2ef7637ea7b8c9c4c8b -fc204aef6fd6983739fe6b2e880eae828e81349dfedda4366815f59cdb1a62b8 -c2abab5e1bddbbbca15f7ac9371ad49cb7d56eaa2eab343e5ffab9db17e0ae91 -3637286b1f4c0257b2b73bb17ebbecf4b7d3f5199ec9463dca05a27fc5ea174a -b6662f16c331c59ce06b362c130c96d2a41ace5f50800975279598fa1c68013b -e17e5f98dd8f872e10a5405ee4a08c47661cb85cb263c0a6de7c8f1970efaea8 -e7b926e800a76035a7eb392770753737d1838c4a6a3f4e0a9fd2b66767a2cf2c -f86db07754783622f3a0b3b98b54c4aa75afd87bccc790b384d6f1228de47d66 -6f6b9858900a6de17d969d4b5ce017805505cf4feb2d098cc63ac4a45faa3696 -359e257ff8237faf1565fa718b66451c4ae10d5106c6923262e26801a1fad79f -0496f9de8f2c2d97da8cbdd3adf686df6de9bafa9fbad49e1d98b937a5ba5bd4 -dd45abf4dff63d34694315849c25b365d2b1deafbdc8fd7065c718681492bb6e -71a2f0f09fd9c973bcd8df9a18deb850263013152e80e6de813404defc894b66 -1c49c59eac2a48c0e30f065c495ca8a96e5934797ee3c0c0d091770ac9f7fcd3 -93c8fe6c67d56c47eb5c65f19979a5213ec9b78468d0b819f6ce8c9d49751fd7 -0c9ca9f6a53ecd9899b4159012d75011f64a66b24f32ee687dd5d2836fa39e77 -0e49f5426b3d798124bf36679597cffe1c6b89e1f3c3f5fa5258859582997e33 -795a0fd53c9af8acb025a01ed935c37111b4ea5431ad5d11c45585f63f05ea0c -54ee6f5921e9f490d445c6bc7a6b2bd4f68a8e48d645bb1b4d34023dc923fc97 -1469dc6ba62331aff0d89e2d1bd87660a686d793ed7f1c6beeaf9bbbf23525ff -5d73300912af188b94b9d39eb4765c0d92efd067e90484e17a683183b522ad5a -2c1da93c5468c5fc38164867501f93b4f55cc930582c1842e272311639487a75 -333e4a5fad6ec0d37ac32aacdcc71bd1ca1315d153c5ad6cf64e01d182e85d9d -f4393c5509d41435d37ab2c3f2e196917962e5c2b71ce6863a50436f1a66e77b -ccaec88d375d5627ff38ca07c89b96433b4f679ddcc20258f903643c6804973f -baab49a16241a7779927f62b7355efde4bd7fa3709960d7b398b4ce1cfcbaa7a -848b2581690012019732528ca4769e4140bb9e3619ee0ff4fd018297efffae2f -9f65d193ee4039973192bf0d6389dcb1b61d7fc86bef7711e95ed174d4d92bff -379d1ed8c8632821b0fcc5f37decc5e84e7d66e2f292cb7b08052e912136dc5c -644547494b448b7ac87d662f86acf17c2548d93d5a5385fab5c5c5044de27fdc -e4fcb1974569c9b13f13f6ec1111b5aaabd0a5be4dad97f312f155bc27e4c038 -5be433973147615a69072a93260ca8abf6dc11aa5a47504a8bc945dff9cdcd92 -4c7e430e07782437c96e692eb8013569c636f102110c01833909584004176edf -7999334ed928cfa61bf39ec108b9ee245791c83672a911cb6a08d78b6d065275 -bf7d64344e60db4bf56ea643394936f1ea7c8ba517426d18a995fd8f0bd73bc6 -9cb42f1f442be8876c1b375620cf790de1f56b4260901ce85e014df30faecbc3 -2e24ace951f6fcd1f57db65fd3c2f4bbe3ad37c275c0fbfa43650a1248e5233a -8441f1f101353b46c188417a6cfcd62fd10d93e4843335fa3ace7d3d199d7685 -0088a79cbda67cd872380a3611f3881b4d79a88c787a5afdfb395dd4b2e6d4a7 -aa52f5bd0f9d4d6529f14f11dc859090498b360bb5520ae8ccced5a2e867a8a2 -70b1f9fa82b48c316b9007d0a8a3ed426b5ff428b9a094ef9745d2f5fb73e598 -e0a1538a02956919116e31ac95f319cb5a2fb7fa31d162fbde882b3663c984d1 -dce7ed0bedc9cd7926aa6df22b945f631101ce138e840a6e00cac935c403c98f -569100d8c5f65b240e837ecb1505576c95daccf32a95479d14015e331cac5012 -97d990249bc70be41bc78013d157d7e41d7e51e7044b98fba8eb27308f061bc6 -9a538c11136baf9f29b8fb02ad70607273cb7a5e52671d8a1d989878596aa3a2 -8e313e33da19ab119fa4f1c66b505eebb0a931885479efc6caa3fd5c3e00a0af -45b5b0d7c020f903d5a7327c5f2a043354faf1be9f1abd9e4f4983f4bd08fca7 -7d160d28fc4107e1973b4343811940eb67d8c694edbce9f5973fe517b2b8b08d -8f1eec96075c00d08e22e94498aeb6dee6ea8ad82aa41f6e0e76c4f7222cf52d -fd7cc9c0d64939823fa4da12f841f318a4fd6ed47e87f7d288b2ca13b7086462 -f4f7059d47c2edd36888c3e85da700cfc9f03a846c0c4babc8cbce63d567d9d5 -8530b8513021e859a5c25b720c36d7711f9796eea6604995410aec2b7db3457d -dc81516e0d37853418eddb2bb2a76fdeeb4733c3b04529c03994e1fdd7e0d7be -ca21783392eb2f01c1d7dc27f73e21af6f54f8951d80f1d2fdf59509d557ce24 -a59f81351279a32eb71cdc7d25455ae181de109b6f250914d76bda9d84ab62ba -917956b506c3f414c21e4e5e099dbb1e4e638491447770c67b792129a3f1b746 -3d2a93e2fe966d94e32eddbaad3ba7fe46c47468cd965149c5a120d973bf8216 -7843e27ea135cc57c09acea0174f8984f8285e86f82a5f345cc021729335bef9 -d138ef5d310fd7c1ee23b459219d6ba7b57c97d0b5b3becba667282134b0fbc1 -226d45579e88a70c998dbc3da57736dcee21a65ec9d4bcd00d1a0911e678c37d -72de83951199586dd26bc70d75a1b5dbae839dd3a8a4bb146c9b1e7a4db3c62b -c8c0c3d4fabe7766ae6d08b024be16f15ccb1aba389f9ec6386f2509c0681526 -772fd3ac26f2e7ca1c29ec1d7ab7d0a93fd7c3776c11f141519875128a194e21 -9a29d4fab32923bd5c852731b3c68f2e23d821b240b61c0d0d0bf1808dfee51c -0e75620938e0f04caf535f3750f4ef083a8b3d0f8e301fb33827992d15512850 -57667e0289e59513c9c5691fe76951931c148f9a93fa7605b38d956f5e89a27e -f195a3e9ef95e62a4164be18322dac8fbb801c6f5d4f10096b88ab525ded9eef -fe983dd78b6606d2d3ecc290e2d0a27bf176b077802f1dd96b5ed03df0aaaacf -f6fd2393939ddba57198ed4cff5353dc49f6233c43b8d2649f21cddeb150f60c -0fab764f312a18afda3e783c957ecba147eafcd90d057b85218b6ba1655bb86e -4f4c38ac7d8b1ec7639f612c6624831479061c74db29ae00d6df42d42df4f521 -2013e2a59ec89770cc09124b7bed12138f042b437987b060141f3cef8b48308b -141e7af1a8ec44b7ffe3fa46215e30309801edcd5f85951d76daef951efcd36a -790e99d00b159937c32f767b3ad2a97fb699a5ac4d8339d181a1ae3dc2c37a1f -65db7b02a1415a0ced8686ecaa1a281b2ad8a820f34e5b14241b7b324e7d9e7e -90fb4b5e3d08585ac74c8653468b0401f8d010f27eb401ca1a5c7ea92c91ef81 -b6ee0304cdfa76e250fe7af2099f599017a8e3b9de066feb8f74d5b151f60883 -4b81313b4c15aa879a89e127dcd41fd9a0e44a0cefecd3a0ec79a379ef1a7734 -830efd299db81973dd75ec77177abeb4b14f2faf77332c472351c30b45742a4c -514a9633393c7ecbc1e5d70f650ee8664a7736eade06f5afb343e662f192c037 -9b27e2181b77ce49b5b79f78b78680ff0c3abc3feeb2d7e96da2854c6e1477db -593132b7598172faffc80c43695fac5dd18360dad5372539f0c13e9c23fd4986 -5af9019282ddc765e740a742e54411b4a6ffe56adb177e5dda317c4997e3bcaf -5d42530ca5bbb0a875d3905c5e97b46ce9ad248679f9551503a383cbb6b37331 -f64c0b8f817e5fd47f294e6b27cc7995c19197e4da2238fbab752ed3085cbfdc -fe7d4ec886c8377a4573a4f43fb9c042f3aa0e062eea5f4d1dadb48b522eaa65 -c01fbe0df1ca4f0e463efa5ca5e782c69d472a679f28299ed0a8b1675b31f935 -179ceab7f52a9e2c02a251698adcd3ba1d3832c0cb1e68eb4cc1464b7ec91b7c -8b79aee0ce52941a1b653bba3fb2f4d871b023d959bcd4be25be1939374cae05 -4cef3165be6cc5bcb744e2ef01e80c1e0957da84721e0dbd630c132122883166 -054d0b45d374e21cdd3af1e99fab1f21a46c5d4ba2c2946fd1cc72bdfb4b8276 -11c898a833d94997d04266d59d56f79ca385295d00e3c1dee1910a44c51e03b7 -c42c4b6435937d3b3cd958a77434b7593d490a33159d7b3b44b55801ed69016c -8323e4cf97c6359cdf2cf91ec5bf1cc7eb0ba5d57a02d20f3f12925e60fcba3f -b62f1d1830e83356646cc50d801669eb337b9a1ff064cdb6fcab7a30254a72af -59c5383c0e75af51f46802630a38969af16fb05e299dcdf5447ca28e2aed9575 -3dda994a57c2134bf25df8f980734f2c8a8778d2f62a796f9366dc15ab43d096 -58c55085b46944ddf89320aa0fccd65849a48b028bc15abe883a03f230bc396b -fe558dbbc732ba424a3d506c7ca11965772ec883a977f9580e31edcf07640f20 -163a411ef04669824183f8b194b21d1a6a0a73c6b3cc28932c8ad4213739fdf6 -1317a560002cb777fd4d983fd17f597b67fe52905f3225050a5a6e393c8cc0ba -b5e863e192b0f4d61b060dbba36fc6424e6c28c1c8a39deaac6f1ac4cc0d7cb7 -02a10815bc9df08d37cf5e3aafae90fc36d2d35931b7dd496b32fcabe4ed203a -da589f9b6a6c7b1c9c726bf6b8c6f85bd278fa801464eb8dfcdc82d931c33af4 -b4f780f65c7eafe685df9d3793bc5f3aa34dc911d833409c916f4d0c34af1206 -1fe992fe5da22362697af67edd3541bc1aad9804dc2e529c68b757195b153145 -878fe20d8c916b96169575f25ef69cec89060492d5b3578200bc13063aebaec8 -e3bba384cc8ebcf90428fcfbb790f4c0ba8da3acf603b1855b837333c060f2f9 -6179a30bafa79a376bc29b5a81ef05b798faa2ecc87f6e9ce0c97afe441ce90c -5017f37c9a53d2effb466eae848af2c93539a2b587a56e27107a46e79d1460dd -44efd1d62cd518be386e3983a055bbdf60a38a348c7f6777405e35b716448385 -79fa16a540bd48ae97fe96da8f240b35e558e5a62262fe4301df31087b84689a -d82ef7c7ee5b1e2f0de9ba0ee7837685d46d950986958941fca5e8a60246934a -a964513cad79589537eebe4b2f7b0efaa995170c8df418c84b2415a786f69f06 -5887ecc62dc258f30616f0b6317346aae1f2fda171ed29d9a26e88fcf13cbed6 -693d094ffd7b27b899c89291928e9ce3999b6ef7423ef876417dde7e6c6ad6ea -09433f2480ae50f06421b8b9fde068a6b91d6267b1d7659d90fbbb34538991db -dc8e44e328f6233c98befa51ff16a9a35be0050800bcc79ee7ed524a06d1da57 -9d0e9fac0395390a101ead1e05754a1d7006e34b1bd4ffe27b70905742cb156b -06b4992071ef4ddd7c9997635afc94c2ac235bb79fc033f72343990f618f09f9 -8f5eb45544547d8e9203f3402d1d971990fb5c3061699c8cb8185523794dc98b -14e5e341977377c13c7c72bb0eb7a77dec7ac6020a147061a36d8d4c7ea0f70f -78f0e1bf6dbb419e6ffda05e0dfb7ccaf19cd9e5b11022759d4591337c972a32 -1dfe1f6558effa62b9443f63f33f619c47cd4d942f92012bc583921eb17ab661 -40b9e2ee097611ef68059048f911894c0ce1f6cbd7fb3469177e7dc69b0bd207 -04619bce4feacec410a905214ece6f5db6787179976b05c66cdce14d1726341b -e29a4ab5cfdfe1ad33955f7b71c82da07b86ea3858a0d1fbdca0f58fdf22a4f2 -dd707cba1ea34d970ff6f53a2f56c9238b67880ceab96f8d07b23561ab984dc5 -17df712641ceaaf742cb5986b6784292f30609ec4086fd9e9dfc25aa85e07d8a -f7506bdd7500e15cb1b278a1f5898399cb4d10c7a81ddded565ea3cb8993008b -306dcda3539db19af26a2cc165b19c771c1b1707951d43e3a8bec158b96c7901 -95e8f2fe75662d94f16aa9901e8d867f9c0924c5cdef5ed212f3b4a5ca378ca9 -fb0aa61f98ed8806b105674f249812d88bf9da06a198ad04ac5d2ba3a926d03c -21f032df11ee07d2b73383fcf8b0d060c9bcfaac209f5b4ae48c22711e17d75c -864bf81007237b6949377b31d6d5e73faf1dc4296e22b9d998054371e4137883 -7f895bc38e395316fa9707edccf566a50ec905082f603b6268597c8a5b201608 -7a874ed05e9eeb8bc05ef244217a6b898d4290e7abffab0e7def4290871e146b -11376e257e28d301cbe9a020e6560bff8e239033783eb1ed471d2b06c9ff0a3f -762fb30725a6d29b60da0220a5b5111c72a99c4d4f1dbd1a24bc6e8fd018f5cc -d7a80378f7562b4da7ee34d6c5aa4af68fbf0a2a9425137dba180dda2c980e4f -9f4a0b8c8ca42040c748b9a4753854261c2a566b9668d703659cfb1ec3a8a25b -564cc75a185226a8b559bf91ed5bbdeba0e4ef24ab3137bcc4307b53d50bbdd9 -34f8e16fa6141cc0945398aac8fe67910d6d91e60a5f1b6fedcc2c61722018f3 -856d55b32854a79fcb7db6e1c9f341f1c25f7fc6a21c45389b96cb9266c9fecf -190db28cc0b9618eb418a03885f6ac3871282b61a74ffb1c2c4565548b9f1006 -c2293a2f63649d3c644c3d77f23aea06c77c5b6bb1da5a44c2d816451c1bbf60 -07d2e6b04b1bd2b0f2afc31c81b2e365a5d2ddfcd08c9c1584272c6915c5891e -9556f590c9dacdae09b1479b6d93321d1d44dbbac960c32e0d556aa053528cc5 -d04c873ff5c038edef693207e21187a824d0f4afa9842f4a7ed93b7e43557236 -624ac3729465e5a84a1eec80f1cfacc29c8908f788c1f04959b99331c397181f -241309fb2c9d68a9e3ca5c9f9d490d2dc3cfe38f93997fb89c37926956a8813c -cbeba67678f78316327adaa3c62c375aa2820affd65cdfec2e1a96810618f538 -5992e941e1d4334fde3d8e787a279419a46bb963dfaee0f647aff5b5680b0af4 -cfa7c02209b3ea2ed8fa48b9c62498895c7cc30c0667c1ebf465cb57b93a1fe5 -70747381df93b1db78ce0e38539de7cd852a28583c297dd0949f6527c8acb769 -81d2a07812e8addaac4483010392822a32ff6703e6d1efcc4015ec402cd5f1df -11bd0305a51e75366d39f934bf42cf068ec01e246f670800dda2a2a8fa27d4ee -0cea8f920d8b62d760a950dca26e9dc96f3b6cbf2a77bb7f10441478cdeefab0 -eb76f22887522b0fbb9436ae67a2a9235a40eb1d8cb54449535fe9853c82a37e -46acdaeaf1bf58c22a318b375901422388634c45e5e0eed8fe722c41b813f606 -a8b3546522ffb1c78bfcec27211685591ec575ee829dd3f18cd3656ba7598d28 -107d3598022ca9dbaa01e1579b0433135d8ec0d9177b45a249afd1f496215ffd -18072ee41c121bdc22a61d1c1eca47773a43e5a8834d99c335cc4ce9844fd148 -d5b8227e4f9cc9f272479dc08f14c78e8e9ec89006302f7b399b72591e43bbcb -e46efb4ba01c5931b52d5e4b19bff3e0de01808524422cdec1dafcc193761b96 -fb882bfa3ccaf8cc2966c6d92efdba0a9b5ce889d3fa8f86c69b1cba6548e656 -aa0db0d44ec8a7661e17b22e44656d87ff136b19cb8395cc2dd9911a72703c72 -ad0ae2db8af0df3f9c9b0df65d188ed5d6450277c1ea574d00e1d132dcd2daa0 -a696c2f9b41db19cf91dabd3cf82ae48b7764220168657ee3f66bd84e787755e -e4c8a284bd0b21e6b70257736c8fd9e53a4085e985a3cc544763ea7139a3c5ac -ad32566bbe7cf7752d9f35635f883f48218c16b4a5c6637566e691920c49d1eb -85641619ff3f6c5b86f75fdb21ee74a524f17f9f00abae7cdf6a3250bc47aa96 -0bfb0e61e5aabb5ab2be744c2c676b9614cde5dff1ea318b83ca8c1081ecb01c -798566e1c610df85e775127b6e3e33cb91d7673bbb0b680d35a0885e9a88fb59 -c7c10d3ee35401650bf1e33eeffd5cf3d201e77b663a3e844aafcbf486fa5c88 -e27f504a4834366b76ca3006c2c64cedd814879240c63e73049689941536ff4d -b2f157986e982480123676f41fa43d5cbae7bdbf83a98ac9fc671cc0f2522668 -89d733921ddc82dc4c1d64d34ad575bb499982958ca51622421d121278e2b7b2 -f3a471c600b54fe022e9a5cf69311f0e30955ac146cd8037deb0091080ca416d -8e92aef084c2251113786ec2623b94c5061fed5931a778c83cea6679c057ae04 -dd14ef3fe9647470d66aca24dfb09fb7effb6aaa3177e001cafa377012e8bf71 -bad1f39219c55e54a75ceb68a582c57c054c12dd5548e8a383c3649d7019f001 -b6333a6e87a6b3d4b4575ebcd28b7164743540bc6f292711dfa318fce8ae2433 -ff0308b5c85f12be9fe8b25eccd1d39960e25d872cadce8c07d86d8d21ba5226 -30e51c3ba775ba2dda124913850f7c34ba5348b512ac3eef783adb375b1194b8 -d3a3454795f99dc0ca4a4fab9f05a2955a77765bcfb1fe02bb7cf7ac814c1b13 -ed649a090caa309f70e4a08b7e1e7cdad982deb73372e646fcde57fc1a90ceb6 -b9c502d451b1e73e7f190d9f5f0053c49b8c8d1beef0cd0b97ccc8afb68306ed -045c1d48dd19c3361ee4acfeafe54e173e8041950274324a47f09a5872513244 -a631e191e2eaf036ec95f0066eee8b9ae0d09e38e3252454d49614f5cc941b5a -76b5fed2f450bc9d412340172be0b12f5425ff0eaa77ab6ab3c18ffd509b747e -1f5bd862ce60ae29b0b74068b72b492b6c268732e4913c1dd186602387f13dde -dc228a4e4931eb46c27b534790c96ccd6b6ad8ec0b48ab60f57f4d461440e326 -41360dda4e4cafee29fc4532e49cb927fc2938560e37e6df065b4344bc757871 -cf78662bc5982b66d48267402fa6a5de5e012367feb753e93f3e25d7d0e3ca92 -441bb078f49f8b9226cd9ffb3fa894820986d264b2c3b97913c3c19923300356 -52a940e23fa99e713a050ed87a6c1a31ba5ce348a7a3c5319469e79e17587405 -0a5dbd529fbe67be8b905504743f91ad12e76e573e3013ce06b9749d470d7338 -e35d260376e28ef6479512182eed3551efc7338724ecfa2322e7a230d4ad3e66 -0c7836f657310ccf4a100312989fa274c5ac062d8a53c9f8ee8d59983b2f1c98 -91346c0f15147dc8fdeb5f933c05ca65c6ef174cac1a94a563a63fd57247fc60 -76ac80492f2a3139d439b4c950833379ef83fe87101c9b9c7ab04b6cf3577c37 -4f18598861a2e40e5be0cda49d39fafb462b6a1ba48f70f7d0d70aebdbd80dd2 -16a8e4c61aaee06a6a430695fd1e0536fa1c9258b5d6be7c85884e01e1d804a8 -6a688ea6ef4d4bc32074cb397332f3479743fa4408f817ba8c6cb29042519557 -7edc3e4154a0929c575dbb1a18789d245d965f631dcb191eabb1d44418ee4107 -19241204ed7951bbb14e0e6b69b82469b3e12e1a1f60427f724d1125a3a4a308 -77b14b427933d964873c8eddb169b9bac85e12a98e3b08e3e2524b96f6ab46b2 -a9549ecac64ab035f0e1cdf8313c28ff17256da4e282eebc81afaf9efafd5bb9 -87a88522163b5fa9a7b262c1ab485cf0e2f9b03aebbb1d06581d644a2ce7d236 -c3ae29e457eca4d7176679f36f7ab59c3f8b3203712319c20614b3a3ac179d2e -6725fc01fc6ec2a060c79d37ebe5030a030bb09cdc0edb50038b7f85159b8b37 -370acfac57cb7c00004586d17b8be2bf28fdc9b26f87f862054773aefabf0897 -770055ff9f7c1029c83cc43bfa2971c5480d8aca3b62ecd2328d52c04b07c875 -650110473878698e50c279e820d74855af0ce4d92b02076aafd21e98858ecceb -c4ba318c671bf4b2276e3464b2dd3ca1fd060e1c561288998657a40641dbb57f -1a3884a3adabd1e13e37b4374e11a5e7054aa90ba83be9949f9342ca6282329f -70ab7d5312ac48a855efa3bc4673e009b18273abb66140ba4f574591cdaad01b -d3f4ad60cd5e4bf4e87194056b0033de8679de90771b01f5bd56c568180b8226 -30503ddb304ea66225f93cc10acdce743715b4ce91b2fc1f131d57770c3bb53c -ed70831a08d4e02f5d761d38053b40b23d2d8dd07c06fcfd45acc3dc9ae280ce -9fbc027bc56e1c261f24ab91648cf7888724a9f383fb59b6c6e6d45a26e41397 -245d9f34178e53fa4e77637f3208661568820011e029ff9b4edb369ee3f8b11a -92ed6abfba2782222992198a6b7af1f551bac0bbc42176b55bbc80a4ca64f8ea -ee0bbb50775c32081d28251307845caa5b046c2277bdf55ffc3f137f97f053b1 -d6978c235a47e597ebafee1d500e9fb556f5093c98bc734dbaebead4e9f6b576 -69ea0f8452a3f5ad58ac7579c5cff14cbef88d4769f07d82a82ab88ecbd8721a -9fcea26f1163c1de0501649c59139c6687c7fcd24ef11a58dbcf18ef97558c02 -709bd5a53271ad820832937fc61b7447b0d95fb9d4fc127e78f30c47d5715898 -db2efed8461d3b8235467f4fee18275bffaddd5a9d50dd2b94ecd86446d58c97 -3c9d38fe3875118edc8a776f41555e5e3be682a878cd141f7cae7d8746a41c14 -357a20f7688d0b7bea35f83df4910a2e4aaa1b2d4a5227367f3c06750c929f7c -50f6c54694c38b864453c3eb6c531cd2eea443b4f49e62c1af7af95debb13eff -2e964777443c0ee5794a50f3e9073d2edd78ca01fdea50f77b1ac924c81d8683 -cd31655bf910c25980b775f17aa1bd9f117e0fc00891e1c84f3823143bfa2287 -ba682e6206a18bbbb574bda2a0901765d4f4144b7ea938c952dcf10c288080c7 -f4f8d80b432501ec1038e3d95554f9afff99d3fb013da1bfda3d79f6ecdd84d8 -811d188a5aa469e4fb1a2dd9ed583f0bbedacbf50418b01637d520f22376f5dd -c3a0c5c54892d929e856935b0f329034848602ed54a7b0ee9df30b071fc6c648 -4da6d733c91edc518fe757a5e771e6c57e7c3576aa4e59ff23cc31a5c31c1596 -3dcf24b6a88720f56a51481a853abe789d950de7019db50df28e2464c3c3c49d -1f36efff386ea121a891adfe592f590712ab7dea619edcf08ef145bff9c4a2fa -cc4a252100778ed90b2dffe0e9b58d9090e4ee66c93db8f88a8d4adb7326284a -0984e895c503811e5cbc127a6dab0698338c17ea83511f96ed8e0f69bc688cb6 -e60f16a9d7fae793e090ca7288d04bc9b614366a481e0247e25900884643f417 -f01575da6ac627fb760a355243138399804504fe7cd504c5c24ef1326b19db0e -49b1b95b7d1f5d60c21c790fea449a25591c12f1e8c1d1bedc33be3f0362ec56 -20fa0f1c53f4a9ba98ecb52221fc103168f6692de428754c5644f83628718755 -4427276690b03e193bd52a6f5e258f774c139572d1eabfcf4837d1bd0af343d9 -5b8dadcd2e3c6a5c8042c362ddeee659dad2d9b03ad0c03b5e8284225078ee7d -0e5fcfb8ac37ec1b720454c24deb713a469ba767324df8687904256e9521bb53 -c53b2aa35dfe4bf0e7f0ce592b396a5e6d16c7f8202c00bb20b53059e989f4d0 -4f283c18b231d3344f6e8e59378ceec12e7b43b1942a81d0c1df4a290ec240ee -a3e3edac3df0e3d524baa72054790e8c51415673b4818a5c4f2a3abff8e49fcc -1c01d04b8e4118326e45ead4ee954b7cbf6126243086d8803390f68a05c5feaf -1dc07ebe6878ade943fe1e0c61199cc87ef7995bbb638186f6ad950ff0f1ce9b -299faed70f25b9a8164832ba06b196c747bb2c1559a147a5d5e5c7814430c6b6 -12a1ab4f7c2ed86b61b592e9f426f8569854ca59f462b804d0c9de9d399b8979 -72abb6b26bd2b44bd2f5e13e6ab49d05ce4abbdb6f223887210a5d5cfec55181 -2af2a8b162af7a09974c733778eea8172f0c9dd7e72ad743a6d423e6e178cb5b -ba9282d3bec7bd6dd3dfec6dedd99f596f34c3635d42c8f2c591cdd0b6f38423 -79fa877c603849c2069ae7789ce97dd5eaa278c60785b58a4ab98fa4ce468ce0 -f1c607533366732971f4226c664312df10462e14129e86aff43259be59da7286 -d865bdbcdb2816c297a399cde5b0e12d0191fd839bbdb2f2956c429ebd2692a2 -c29a8ae4abacac8704d37a7bb5849a6213534d705097766fd1222291f3fa0bda -2c939f26b3d1be616a3c3ea10ee0d2bc316f722afd8d430949186bb386b4afa6 -ae50ba43d8376cb545b1317b7c7beba4fa2047340f8c9ee2e67e66d486347b85 -323715a7d002989585d0d2b986b963656c1d5229b82df7789815862d04c117f3 -c78bdbaf52fa70de9d9baceaaad98735c6bfd5f8e2d001760d8838e90532edc2 -b63150dcbd3e1ecf079d33534aab77e2c3084d1492c4890b982ad2b9889c7c65 -07a78a1cedc537d472d39716d82d76d86ec8767057c1b99b9ac5d96477302247 -f3059f0bd076cc5a5a6519e997f266307e007416104e176deea7f2aba3a11a04 -bb7b807863c250a61128a472cba2e1334a93cee2f77f92ba30954caccb24d57f -ed73143ae07526b93660e471410954baf1817429eebe49413d5e7b5bce1145b1 -c3e58020aea03d75d587cae501737b23ec3b2d652a996f1c61517b2a266fc2ee -92b16eba34f723e45b40df77a443e84cd5ab88c89b93ab1f13d02d3e35f213d9 -0a68e41dcb321dbff55223a6d35cece6d031dbf5f57f347e6e3522e166dd812d -b303a4f85573a84dc57a7b17cf6041d717b3a3d2c1ad7d2592f614985f617ea9 -3bf03489708573dece92a80809483397a99be26c00356df93add280d2a8cfe2b -a8c446fdae967966286b91568a634c042a391c92848967f6476809c0d019dc23 -1afd9682147eaad9412ae20a9559ddd383b684b8ba280bb623fd1b641231f587 -824b6e4ed3d0b1324f3094807cb7b1c54f561ed252fb2534d6cf52d60568abe0 -f9527b2bb694f1fa3ce42ee120a60cbdd6a2448594e759f01bdc6b7d1eb2047a -99fa99a76f71b0dac00efadade1476272c14d3f06867a476b589bef9739d0a74 -a135f7bf2f1b47fb74d606c43865b719e9c8033c0b901900057bf3f4b8e4840e -d0c77f29ddfab3dbf243d3ee069ee7ba019210d80fc8120b338437fa5ab92c20 -b49b08c954cbf1e29a09139be66a236c6f456fc6a687e714aa030673b700c9dd -0448807be652cb266f4b970d5d2374cbf6dc0829054aaf7ad02b226c722d4180 -9c6dcae0def051f7941af2d8579b79f8825b9a997c81a9c12294b79827ec8d42 -5c65d363e2e81341670a672a61976c9733a79683965b725d971c07fe7fbba172 -1bd33040a7192bb16aa4b0e63741d98212228a2553b61f0600196798a9d3f385 -f0f6754ca0b7105d0c1e834145cd3c2afd75fe2e60a945093279dc95967384f8 -9be6a281a3a7745315d9a280bd1cb52d5b9759a1c1e79080d7fe74b1f7bc2a02 -34287e887549df5e9dcc552da41f7dc82f57ede381723894253a488f51733079 -7fa00b0b04cbe63fbc024b6a584d2a036401cf8e192669f451f7bb415a909c16 -d36a5a7a90dd7a9db7bd7890c73ceca06dac02752d95f975fd1a9a14cfb33410 -6218ba550ac336686170e3b290458c3b572ca65565b8e73fcd6c4608147654dd -3f4bee30d909e323544a36ea3b35ed3c80fad5bb915a5fc3949bf486e451e065 -f4ad1c08aa9ecb137f77c7d36cbd7c8cac62447542afd5038bb47c50827630d0 -d608a72aaf0f38d90c4b7f2e375da2185ee6d59837568669f006e63b0a369f11 -0f14a587ac88d8188fe17f11b2743bfe9a0852591fae743bba8a479fe1623129 -10af4d9dbb53163aee25eef5478a0f2a5822db7e3fe0750569012f36bec5e968 -b2fc05a9c47c07b3112dd66b85a40fa97d4fe6d5ec7d32d21efaa5cc0455f1d0 -aecf06ffd2fd12bb9e4cb9b74fa15ea47bf9c5c86d890e588258af2199a5ae19 -0d0404a9ec89d0ecf78a6e1f3fb0087d7c1035515a95b0f1ffa8fa6f090ec12a -712012cb50201c5ba59cda4f499589c05439d6240a624505ac9b8e2397dcc242 -e9acf082eb6dea7e1e69641b5b01e5635c6c3921756749bf41e3e604482af391 -8824345d31c243cd938c28f639e77d3b6a4a6a6c6ca7dbf81241ca1fa9cc5a7e -1ec2c80f1e9a7bcaf6d50cb60c73640b72ce7443d6d63e7a64119b9497e61b5d -e5d2f7b95397d11d866bb690cdafad89ab671279f637f7fc46a3b779d45b29ec -bb6b19e93e41a7f79e7b337a195de87923cd029ee173ecee1522d4087f880923 -0ea7ca843b0633941713f6bcf0166a346678b77ecc832626e9395f949d366d69 -620d213917dcacb3ea9cd4c91fd33a8300fea3ea2804fce32759da695c8a5bbe -540ee9375869d4b6d15d97ffd151b7e5a2d216e9445fcdf10f6b03af1546910f -a42362147d6ae96c4857b18c19480acf4406c0e7cc40b8214f9190ba94885a11 -66f479b272840620c2060e5da9ab803a3b83d76adeaabb6ac42f2feb3e81770c -ce682aacd764ff1496270dd4c6053938b64e323946167699f8361b31e78aec76 -972fa8f8030abe04998d6c5f24c417f5be4019949af2fe84903d178a925d89d4 -8df1aa32ebb4d317fe8e8e46a553fa40c190f33007479c3054e4b76f7bd36888 -5cbac06a433f63792a5b50457d4566fe17e0f96b534a6e6426145b25573c0792 -1acb4ee54326b923289c51fd005c5536207f480a8663cc90d9659ad5f0290934 -61463f3e32e1d643c7738dbffff4d48bbf94d361d9de1fb0506dc5a4e6bacd20 -d9aef161dfea354e783509a4837934bce1b923e4a587398bb349df12058341a6 -4f4187fe93999e86182a70377d812ad5665b6cf71f285930d9b87f390ca40eaf -a35f3f24a053b2e6e198c0a182ac28616a00122145bc2881051abc4293e3f819 -d29ceeace030161d76aaf67130eddb949698f437808219ef8d86d67c8d8a2af7 -366a7bc8f53e6cbe7602bc3bc0455fe63c2e6f960470906dbd494c3194b6adf9 -3d67ece4d854db4bde3e1dfad708daf3605c04c1a7b815f3a30ba18cfadde988 -c6a39aa2d6b6c68f9d8a89d3f572b59fd426d6ac89d81178cf1632daaf467867 -f412db318d2e712da4f5cbd0801d63bb18f7d1a93b52b1941cbd42a3e0e93bdc -7c31f85dc4aaa1be45580a46f76c2f652723c108d1ad6bb62dc12d1c5e2f59dc -61584ea3cb8bf5787cd4de9590662e4222646b0dd5c2d913754aa1aaa2b50e9b -234ba7b95add9c88992fa821adfb87bffa78f9bc1b7b361b78be6a2c9488bf4e -c1d4473a4ac2d3a9b97eb54e081ffc12b6e0a0fd147726550f5e9ee47500ac8e -58cf4bbc1dbe1f8db20f6155fa5efc2cc7949b26c3e53ca99f5d1559f97f2766 -c3f3e6aa984da191047a1a4efe99221d8b077286ce5dac50e7de1f3f287a39bf -cd972bf0913ae0d65d194125d47f54599d69aaac9004dd1e9aca08afc23f3c96 -2a3fb0689242d8dc58d20d8d9487d387c65a683020dd718eb421acae8a7e260e -f1e8a395151f010886bd62894ab29f7ebdfe427bf8db5fca4c2366fb8d6afe5e -b6e6720b181e7afc73dc6ae803988d382f7280dfbbe30758d0b917b0f6c126aa -f6ada6608015833a4727f104b7d9d1821086e216bc1e3337c6762a7d2c86b6d4 -d6895108ba23a498e34f45006a62e27076d4a9005a1aee905120bb150c352df5 -549946491df5db5f69a7b24cca649d67ffc97ef3f7039aa68fbb091391e517d4 -2f34d0b02c43bb5d27af2915d44a200e4065aba8f9a36a4da366010d5eb7cb5e -386a369cc918211b7702b969d67bb0dc8f81a08f0ea391f6c4ddb04253d3abd0 -9e854ec23db9748c01c317a26e9344ed17908210746a67a6eea2b2b9cf4c88f5 -3fc1bda1c7f187ccfeacc2ab28025c0d1c3f7770b01e065adfd1ff791d21a338 -4ed77300b8623de605ad4e44011846149c3e9d3c43a2cd4b2070c81e1dd92f58 -de3b894646190ecbd18e1560d0026e2b5e2969061da78eea43467d6793e3d141 -03825c0492fbab2364e5eeb587bca3890ec5ccfbef8f9ddbe40c21d1f39bbdf9 -13817234915702f69637bc045caa0404f88f403bd5f487bc3a3e39b1b0da9c79 -a30f3cafbd9755728c0d6fb34fe630740d96ca64b9c8a3382b069a7ecb428fc1 -cdcb242a7ad06278d68374b8c038bf31e10d15d1a78bd9e5c8c97c59872a846f -c3a76454b4c3226f33865dd7a574ce0f47bf8870569e2f235d583a485bb33aa8 -90f13ac96535f6b381ccc5645b80d19220caafa972eb3ca10e639310d8096ecf -a762fdf392741126df29b09f50e2f9a10c5db75f002a11b9fde75c62f2d21537 -d83a75e025092280d7a59e34f6b0a76b47a106178dd1cb994e50035e64abed78 -1e0a2c69dbc936e06a6951d55b00aa5a3eb1376bb72aade0317aa10c7ba4e2e7 -555807f8b2333a4f40bc9317ed80355ce64ef2744b8a1d07d473908f78dc7f74 -f821ad77fba428905ef82eb8ac07fb2808979de10df7827c85fa78e03ea5b122 -1b1a7f933e6f0b6cbb96925a0ba87567b5927ac61303f4321d84376655d025d5 -e553546cb1befabb80fe9da5a8bd6f2cc78654d05868ae4ab76d290b66cb7a46 -e7760e42357a0e3175815314a699fd8164d72bf3fdeeea60ad6e0b340bd9424f -8836a8c65d56a9854b438390c370e1e1428736dae56e8f09ca1f2ad77c13c386 -90b0b4b00697444a9ed3bef461264189107802b868db970591f33fecfea0ca08 -147b20a1352b1bad7ebb2f8a38c0f93c4c8c05fd7495e20a01a6883a3d5e9854 -f1598861317c3df9852d790b3b45aa4b0b96f9341ffb5ffaf96ee7d98643afea -e9efa6a54ba36e28b278e839df596fed5e1484ae60f4c6a41f26661c601a9c9d -f9bae11050dd6e36d00489037637a7dd9eb7a05eda953bce54cfc3dd2e6bc792 -ef3d87077a1ded135e7bb89c1e685dbd7bc5fe0435087cd310f4cb989fd394f5 -dddbf46209df6f7365c4f54b76d468212a9d5ced9678a6062f35a2fa07db69a6 -f9d54d4570914ebcddf8fff765ccbd3f3edca4b3ae793b4a979db9496f5029cd -03f085f32bdb390bcb8c789eb8e54bc0388bdfff99692634b33f8ab1152a131a -758ba2a25736d9cfce05a0a8818235313934d5cac307bb6343fb10c592261757 -3b4df3465845a253c829d4bdfc62356aa83c72dfe77094a955b9052694cb7b86 -fcfc70c5c53eb4079d5f3ba4fbc67bb6998d85c1c9b0f2208757da234670164f -c40bad995c8d4eb88c7f5e3ea10eed4335e375ab9f0c6e1d4e01ab418643c20e -9d56987d6c94ef1543bbf9627d1b2bf79c016a8fd44e00d78f89a1d1c975d04e -1190bd452c38a65258734cc04407ad39c4437492be436bd5a269591eb60332b4 diff --git a/src/REVS.snapshot b/src/REVS.snapshot deleted file mode 100755 index 201cd0af8..000000000 --- a/src/REVS.snapshot +++ /dev/null @@ -1,5653 +0,0 @@ -# prevent running it again by mistake -sleep 1000000 - -fiat/revs sendtoaddress RA6np5j21b72s9grR8nXS3Efuq7mXzzPFU 0.00000001 -fiat/revs sendtoaddress RTLPVDFde1mt7ss6uyb1E6jBxxZxpPuBg1 0.00000002 -fiat/revs sendtoaddress RRyYw81E6b6r39akpoBrJwqYg923Hs2PoT 0.00000003 -fiat/revs sendtoaddress RWPzzissUuS8gsyLK7h7pB9x6prRBq5y6M 0.00000005 -fiat/revs sendtoaddress RRmJSTJ7H5aE76MjG2bcVAQkv97qKC5hRy 0.00000006 -fiat/revs sendtoaddress RSkm7tXg6Je3iWZtSspxK36r3X99YmyHmj 0.00000008 -fiat/revs sendtoaddress RPYEeLjGWJyxXnyrBjAwuU2fjffUp5tFfW 0.00000010 -fiat/revs sendtoaddress RXLXMBtkec5udtjsbtbxTrmEfVbfaGyjCC 0.00000011 -fiat/revs sendtoaddress RHLh2cAPu5hdveT3zEV2WNmdub7oj8MwBp 0.00000012 -fiat/revs sendtoaddress RHSFmc2pwuH73DsJ19Nyhghu6ewbxjgABq 0.00000014 -fiat/revs sendtoaddress RK3y5MVog8RDKuC2FwHy7rgshQD2trQyqs 0.00000015 -fiat/revs sendtoaddress RVyMpeMvbapvJ3cNvUwi5gEVjNHPBv9Fqj 0.00000022 -fiat/revs sendtoaddress RB8g5gK6xEfC77MpXQY1p8C5UWZ3k765bJ 0.00000025 -fiat/revs sendtoaddress RQX4S7poVzPYbjfDbqgREGLiu5hbzUHL9Y 0.00000027 -fiat/revs sendtoaddress RTSRT5SwXDVYt3hTfEsbqfNBKwgcnkb9wo 0.00000035 -fiat/revs sendtoaddress RJxNAqo79u8tYi4ZvGbW7P1rTc3ReUoPag 0.00000036 -fiat/revs sendtoaddress RUufJXM1LrPyXq16ZuS5ADbc3dSVXw747S 0.00000039 -fiat/revs sendtoaddress RPyfYSnzNYtkP9qxVoAJ6ywb53FtC67tbF 0.00000040 -fiat/revs sendtoaddress RMYVZm1JxnmHc8TY4PafYZWyEh7tBVr1Gw 0.00000041 -fiat/revs sendtoaddress RQLNyprHTZrpPNUpNeTD26Md34FnJEvqfL 0.00000042 -fiat/revs sendtoaddress RQSpUPoXdbSuZJNej3ovNuMvzjDvorpohR 0.00000043 -fiat/revs sendtoaddress RATbpA9E3RjojN9Mninm9X8MRBYmcrD1v5 0.00000054 -fiat/revs sendtoaddress RWmnf7i2MQh3L89B5UKzN31Y9HaLc48vcM 0.00000056 -fiat/revs sendtoaddress RFpn4wrw7ZSyWRyhWKbksmJb8Uras7k6WR 0.00000061 -fiat/revs sendtoaddress RUzz4G76SnhcHSBEUKsmfDM4T7uMhTDuM2 0.00000066 -fiat/revs sendtoaddress RU8J8ssfcYv5gYueFdKNLjs7pVKAuEB7ze 0.00000068 -fiat/revs sendtoaddress RDuP7gAca7AyVxDhTCU3JMR4cfxn6pgdcY 0.00000069 -fiat/revs sendtoaddress RT4WXxemxUG2QSkzb9W3xBdyJDbKsiBumW 0.00000073 -fiat/revs sendtoaddress RBF2TKxfodyxaS7HgJTkTUcyS7rPyAfpzM 0.00000076 -fiat/revs sendtoaddress RXQx2doqzmYL42UyFYkkeu6jDrMFmvSr6z 0.00000082 -fiat/revs sendtoaddress REzuP1RbN7MQhuy7SwCSHmH6NM1paRdUbd 0.00000084 -fiat/revs sendtoaddress REwwcUJLyhPvQDjSZZrv1qNZDYsCWxDmLm 0.00000085 -fiat/revs sendtoaddress R9gY3TE8TS7VmQ1VJTbeEBbKRArsSz3WPK 0.00000092 -fiat/revs sendtoaddress RFFBpcUvnbxbAV1yG1K7amKMzZaSpTJTgw 0.00000093 -fiat/revs sendtoaddress RKSHEyRA4Z2iAaAEmhohr17hQXowwRTEsH 0.00000094 -fiat/revs sendtoaddress RGLhfBj835fKToPCFJSG59TnYqg9HHsBM1 0.00000098 -fiat/revs sendtoaddress bF2zLEArzkNc2waSHxgWk244i8SEGQDevj 0.00000099 -fiat/revs sendtoaddress RVajuM9x43Qrxc4kvmaGBjxJK5TMf7iqbo 0.00000100 -fiat/revs sendtoaddress REuaaXo4Vjxs5mwYVQwvP4BX7mN4ZYdUZt 0.00000104 -fiat/revs sendtoaddress RPfsUVEep6gGxaKzzDGQ3xbC5RP1AjnpBM 0.00000106 -fiat/revs sendtoaddress RSeaZwmHVnJD1RmpXPaVXJNewMjNnRJ2Jc 0.00000114 -fiat/revs sendtoaddress RBxD5rb7DoNh68qmsvgxNWHk8Tcc8YGKmx 0.00000119 -fiat/revs sendtoaddress RE3sF7sDnTePutqFpkFtFDoekMezqsvVJz 0.00000121 -fiat/revs sendtoaddress RJdve4WhWojwWgpbkC7ZQY2Ci6PzHpitqY 0.00000122 -fiat/revs sendtoaddress RHLwzvZaeoSMzNohzmukDXbaE9GKR5jjhp 0.00000123 -fiat/revs sendtoaddress RUvv6uMtvN5z9pTiQG7bdbWYa94p56SB5T 0.00000124 -fiat/revs sendtoaddress RPhnXH5wrxeD6DVP5pVjmQ7DhxEsXTawGd 0.00000128 -fiat/revs sendtoaddress REy2yS73MGhm5pxCkL6Dnytd6BfJ93UCwy 0.00000129 -fiat/revs sendtoaddress RBzaU6L2t88dFNrRkHdJg4sJ76ZwBph4x8 0.00000138 -fiat/revs sendtoaddress R9jjXYTi7npGKr8ssrGjszem4sWCWT95iX 0.00000148 -fiat/revs sendtoaddress RDLYiGQZ4P1nGAefA2Wxjer95bTKe9JYV8 0.00000150 -fiat/revs sendtoaddress RPTaKfkoj5SS3LkTsV5ceN1qE1JaSsdJLa 0.00000154 -fiat/revs sendtoaddress RSXYjNKc1KjsW4ni5H1bHBGLyHus8afKdi 0.00000155 -fiat/revs sendtoaddress RVJnRMCEDEp7NqKcZedTSsd4BuvtcnFiBZ 0.00000157 -fiat/revs sendtoaddress RR9VdcPfvekNeJHhfAp3Eh5sFjWZnVf3xD 0.00000158 -fiat/revs sendtoaddress RAuQfA9WoURdzMtEcLnp9VvE6JubQhtLF2 0.00000161 -fiat/revs sendtoaddress R9Xv9wks2ZCQU3NfQGRP1WXUzarrTT1wKw 0.00000163 -fiat/revs sendtoaddress RWgabfvvKHho7gm6dTnnVXLxBCNT8636Fb 0.00000168 -fiat/revs sendtoaddress RDA1JcRcVbJQqAtdyV4zGyAeHgvw71kDkQ 0.00000171 -fiat/revs sendtoaddress RNNWkwcQdtTfTsFH9r5TRpHYyYjViWHZyE 0.00000174 -fiat/revs sendtoaddress RTiHSh5X9PFRq56eQ6iHRBkLE1SiSJwZcH 0.00000178 -fiat/revs sendtoaddress RLbRmuJcMmTv435MeWN7Zr7QZRpZBpwv4d 0.00000182 -fiat/revs sendtoaddress RBwUxAK1GYvUxuaNA5sh8st7azokJ2VEu8 0.00000187 -fiat/revs sendtoaddress RMCftappqjSXpChyVqK3kJyXHXmuqU9AwX 0.00000188 -fiat/revs sendtoaddress RPFPhHuBDG5uTtTpFdifDfso47EJGZvMGT 0.00000196 -fiat/revs sendtoaddress RX7Exg8x2gLEzRzqHFDZsN863RVEqdSLcT 0.00000198 -fiat/revs sendtoaddress RM3UUPNifZvQ4m3HvpGbL1XHFQoifZ4UT2 0.00000200 -fiat/revs sendtoaddress RJRqjhCcyApNxF6ri8S3kt6cRKT6hYXv9K 0.00000202 -fiat/revs sendtoaddress RVAHLaeQ5TyiERcs8bgH7SENGDv5N3sv7i 0.00000203 -fiat/revs sendtoaddress RNSMkV841gDXVH6frM5mt2d9QRQo4P8Bh7 0.00000204 -fiat/revs sendtoaddress RTG4mDV2hkVZFFPGbtSU43ZnnzXeUPnsds 0.00000208 -fiat/revs sendtoaddress RS9pKFAQaFS3XhbmZTxrsVoDtG4STcUWY6 0.00000209 -fiat/revs sendtoaddress RTbG7qCy8kDkQZCxNM3XJi7MR3tFSoqMwu 0.00000210 -fiat/revs sendtoaddress RMimYc7CGaQ3M8kNCTnjGc1Bzhy4gVMceL 0.00000213 -fiat/revs sendtoaddress RHcY2FAVBFRJXpgQM9dzDdMpa3HAgnkJCR 0.00000217 -fiat/revs sendtoaddress RSuf9fsJ1kHEtQbq2zycTguooK4DGEr2TA 0.00000225 -fiat/revs sendtoaddress RTFbMxrGhSGhNNFkxGWbhXLWwUiECxPAjM 0.00000226 -fiat/revs sendtoaddress RQLnrsMFWHpsVzSMdTxVxRyXhmAddAccvZ 0.00000228 -fiat/revs sendtoaddress RSTEc4h12H7pHLNPyF2CVs4NNtkpdS583c 0.00000230 -fiat/revs sendtoaddress RBqdC8NKdVgC7HAtQd621ymyfcDrZEEaTW 0.00000232 -fiat/revs sendtoaddress RXKnf72LtfG6cjW7GfKiPc1Nyiu2SFAJfM 0.00000235 -fiat/revs sendtoaddress RJNtno7w2RkdKqvHoLbRZMHgiCo4UCbEpu 0.00000237 -fiat/revs sendtoaddress RVTrxp2txUu9UFH9sMRTTDK7UfaBdPPCFm 0.00000243 -fiat/revs sendtoaddress RCMGm5e2ZBLUpG9siUWTMTo77Kxw3fLnaC 0.00000254 -fiat/revs sendtoaddress RWoARgavRx5LCMTVexFH6nV7yVYG6m2yP7 0.00000261 -fiat/revs sendtoaddress RS1syb4XcSJPWiRUUTMGUcY4jTxJbdwWXj 0.00000265 -fiat/revs sendtoaddress RDfnhSh1EKeQ1VFQ8PWbY28N4y834WUei1 0.00000267 -fiat/revs sendtoaddress RKhsPpXTeUqs37wbWpaqc46kYGfdaRL8YH 0.00000278 -fiat/revs sendtoaddress RLz7jZfY8UjYPX2dvLgEu3uvVRwGKGG2BH 0.00000292 -fiat/revs sendtoaddress RWhpnsgEkykAwjFgNWhc6gh3TyWmHqAdGW 0.00000296 -fiat/revs sendtoaddress RAwuGn4FCdKMCzu65J2MpChJPB6TctH7Y2 0.00000302 -fiat/revs sendtoaddress RLSmwFdsvCP2EAeJk54yShPj5QcETp1fEX 0.00000304 -fiat/revs sendtoaddress RNPXMk5tcMf8zQwLGUZQW7jBSHkrL5u6Gg 0.00000307 -fiat/revs sendtoaddress RCmYKrT9vA5UoyFyCrg178JhWCzc1PmtAm 0.00000315 -fiat/revs sendtoaddress RWx8VpnD92EutdWHGCoEvCfnQYxVgv7G5W 0.00000317 -fiat/revs sendtoaddress RFxTKkZeTTWH1tuJCbfxNdWy3z87Wukjgq 0.00000324 -fiat/revs sendtoaddress RPTWGMUr7TGSZyp8CfzWeWvRjKuTe76xAD 0.00000326 -fiat/revs sendtoaddress RSqrGNoxDqt7omc9nahfuLEzDmesGMGt2G 0.00000328 -fiat/revs sendtoaddress RPJPTYh7qfN3x2R3mLEBtZrE1aF7S3Zpk6 0.00000329 -fiat/revs sendtoaddress RLxj8NUvqz3HWtX6CaWruUxWUqckjr6WTc 0.00000332 -fiat/revs sendtoaddress RRkXy7ZoKcKF2Cw635N2MqmWTdEsWrX9yd 0.00000334 -fiat/revs sendtoaddress RHtMe7tKRC4tvsuZotdyYyrv1ANtV3P3bG 0.00000337 -fiat/revs sendtoaddress RTF23CzcJBbdh1zo4dG4TRkGBeQkqHZ7Ye 0.00000342 -fiat/revs sendtoaddress RBsn2qVopxFNvE6jeeR2sfXFu9vVw8GHmn 0.00000344 -fiat/revs sendtoaddress RL96BivqBTArFnCa2avGinQG4xQq2FEUFK 0.00000347 -fiat/revs sendtoaddress RGSjGTDvKk4aEraZC4P4Ru5ShaJ7bRdZo8 0.00000348 -fiat/revs sendtoaddress RDY9DgEHcCms12zPM2QGqCbgTwmaCyS8bt 0.00000349 -fiat/revs sendtoaddress RE3jzVhCV7CWq3q4DdN85biH1DugJRLEj9 0.00000356 -fiat/revs sendtoaddress RNdyqHEkhn3kC3oQvLyPExpLi8MgCh9fH7 0.00000358 -fiat/revs sendtoaddress RYRaVQ9493xZdwyzh9Z44BksjyWrqMi71X 0.00000360 -fiat/revs sendtoaddress RJ6NDKxQRjLEnse36Y5YLTgx1BHLuYpEcH 0.00000361 -fiat/revs sendtoaddress R9kQWXwJvcGa1FwrFEtXZQySQjTSF18ksj 0.00000366 -fiat/revs sendtoaddress RXJtf8S7uh4ek7v8r6JMSArwhN5o7QFakZ 0.00000367 -fiat/revs sendtoaddress RJmK8rX5bKDZyoJwEtHxmX2rQkbzA58qxy 0.00000369 -fiat/revs sendtoaddress R9yAoj9xutYYgNzbrioX5u69hzgss69fkd 0.00000372 -fiat/revs sendtoaddress RR2j4XfoMGitWU8QwdHpxB9RWpUKzWERWb 0.00000376 -fiat/revs sendtoaddress RKY5EjkjnSemtNTqwff56RJW9FXHD2yeD6 0.00000379 -fiat/revs sendtoaddress RVB4pxTHiVGw7bwHcYyj1WURyECmmV8zwN 0.00000389 -fiat/revs sendtoaddress RMbVwzVKcZseUENdqvUoN8nQG841Jt5V1T 0.00000391 -fiat/revs sendtoaddress RPub6y37dbocrrn1T137RYjcxuokgQSpUP 0.00000395 -fiat/revs sendtoaddress RNpZZiHNcwSCVjcGKpJdpxTsb95KfDQRmn 0.00000397 -fiat/revs sendtoaddress RV7nCBDAttwiT5a2F3zb8vMG7fieacadgH 0.00000402 -fiat/revs sendtoaddress RCepBRrVS2P9c981fXvtjpFm4S3nQg8mKH 0.00000404 -fiat/revs sendtoaddress REv4tK3BHG894yuaBXNHGDALb1My5UH77R 0.00000412 -fiat/revs sendtoaddress RRERc2csCknCS3biMYmGcgVtsCr5YkCTc4 0.00000414 -fiat/revs sendtoaddress RHKX9uNLujt3YeAVPgu5D5Rs9ad8jaWSCJ 0.00000417 -fiat/revs sendtoaddress RJT8WxcMSV1UhUW8Zf2Jx7EyJ8sd9eHthh 0.00000423 -fiat/revs sendtoaddress RWbawkgvHi371azccS93snqwMYiZpE7pRu 0.00000424 -fiat/revs sendtoaddress RYZbPRuBuAjofetaARvdByx6CKnm66AbsV 0.00000427 -fiat/revs sendtoaddress RPUnjrhsNWGhF5NucgeYX9SDZyZj7B5rcq 0.00000435 -fiat/revs sendtoaddress RVMpcb9KByC2VLM3M4q4EnSYJgQgWVrZFf 0.00000436 -fiat/revs sendtoaddress RH2gAUF6vBhG2YJuKszHKVKDbwPf8NEssj 0.00000447 -fiat/revs sendtoaddress RSM27hQaJK5dtRZHkn8e8in5Hw7MMyg2Zv 0.00000449 -fiat/revs sendtoaddress RJNffhpGW4DqtQLoAU6cr4U3LCbW624az9 0.00000452 -fiat/revs sendtoaddress RLS5p5XukZcMoGnLtrBQDL8SZpdGEqTJjm 0.00000455 -fiat/revs sendtoaddress RDgzf8upcy7K4xH3j38EQzjgSjnSQspFuX 0.00000456 -fiat/revs sendtoaddress RFbXie75DLYyJsumMqoN3tsRLWJqyc58zi 0.00000462 -fiat/revs sendtoaddress R9VaC6ZNFH8gvxfZ2PEYQivkxc8K8cdCLQ 0.00000466 -fiat/revs sendtoaddress RJYyMF96ijNdsubSXrpddK697PwDMgiKUT 0.00000468 -fiat/revs sendtoaddress RYYRRYwQdgDQdc4hSDLpVGzyWpVkZprwut 0.00000474 -fiat/revs sendtoaddress RUsvbnKvvBPG18h46KEZEjmUpMhEgL8GsT 0.00000475 -fiat/revs sendtoaddress RWaMQPubMMSLCicT4yBrjRDUdgMfRfgtpL 0.00000477 -fiat/revs sendtoaddress RLhutCyZXExyqrLUGHnK5ix8dCBRXJcUTj 0.00000486 -fiat/revs sendtoaddress RCbfA3NuJVyvBsekrdJeYkP2ErTWJ1pyrH 0.00000488 -fiat/revs sendtoaddress RFLauZjJyiLcdsiJt6BEQTnxuiZ7JjyGbS 0.00000489 -fiat/revs sendtoaddress RHTpeQQfdp8yBRj7QjmVauzRWUEtKDqQaj 0.00000490 -fiat/revs sendtoaddress RTtCaLvdSxNVZqdYPQ3QR9zrxJPc9bTews 0.00000491 -fiat/revs sendtoaddress RFSgqAd2asuypApRT7o6vQJ54Zh6LZnuh3 0.00000494 -fiat/revs sendtoaddress RSqAL4v3otKcLNYD7Rpk1k7vg1zhTpgqvm 0.00000495 -fiat/revs sendtoaddress RGBF3y663xakdcQ5NfTBFD57pHomPukmoA 0.00000496 -fiat/revs sendtoaddress RCn7pKK2dvbYAQ1DMA2KNb5192JJsaV6qq 0.00000500 -fiat/revs sendtoaddress RC9UjubHRZijdz1wkksvCBjgvs9rgoPPqA 0.00000514 -fiat/revs sendtoaddress RCHXyDV3R3ATr8aNmUqzTeK63M2mRWS8RA 0.00000516 -fiat/revs sendtoaddress RDtrT7emcJtcv7cmZcqa22VzwEFjqKuEMX 0.00000518 -fiat/revs sendtoaddress RMr4T9N2432GG98gKYMPQuXM2gxHU9Mqqx 0.00000519 -fiat/revs sendtoaddress RTaU6MFec6mtCVpV9eJmgMtsA9NzaB2hu3 0.00000531 -fiat/revs sendtoaddress RJNAVu7tnSEqjyuGVx9ANNZP3xaTJk3BgN 0.00000538 -fiat/revs sendtoaddress RRmUay99AFqNmbFupzvh8d4B8aopP917BA 0.00000539 -fiat/revs sendtoaddress R9LXBpRZ1YXaWM3DXaMjcDk7RTR9FxpiRU 0.00000547 -fiat/revs sendtoaddress RTjCw6BhKx23BGSmTb2ivx9axKAXWLbeaE 0.00000553 -fiat/revs sendtoaddress RXefJxPdVqmsdGHW2DWq9x4Nu4gWevJeuK 0.00000585 -fiat/revs sendtoaddress RSNHjAM4Zw63W8jkKBXN1fP2wcb29we8qF 0.00000669 -fiat/revs sendtoaddress RRRC93jzRNjnQbKQhfxExDA8174TiWZeUf 0.00000685 -fiat/revs sendtoaddress RCJACdC2N5vCsv2t9TvBr97DmCbiTXZG4y 0.00000703 -fiat/revs sendtoaddress RD3jbFnVv2M5aHRDywmNPjsvt1hxn7yaXd 0.00000709 -fiat/revs sendtoaddress RRAw6Qm2EwySd3ZsugWeDHcLHPkH2Wobrs 0.00000714 -fiat/revs sendtoaddress RSwuJoWN6sRUfCvFmdCTUf1iiAGA5Nft5C 0.00000727 -fiat/revs sendtoaddress RSLoeYHLZd3QeiPbCThckPx7BofwdYoXeN 0.00000736 -fiat/revs sendtoaddress RUp8RWacXWygb84wf1to7K5wLyzLVePkVk 0.00000738 -fiat/revs sendtoaddress RXcnAqt9s7EM6k2vDAYNZJVAc9DNLuL79k 0.00000752 -fiat/revs sendtoaddress RNJi1wjMdzymwAWnjKRZyU7DSQYAJyg1gk 0.00000778 -fiat/revs sendtoaddress RRqzBDSwsnyytLEfumRp8pMLoJwEL3C7Yd 0.00000794 -fiat/revs sendtoaddress RFCJSLRr5G4S1Zig11QybYLVB59CTATYh4 0.00000795 -fiat/revs sendtoaddress RAXRZSSjAaeumzvE31yEgQs1Jeevr1CH9z 0.00000798 -fiat/revs sendtoaddress RLay67bmAz3DzTiujVy1yFycjaqyA5HL4L 0.00000809 -fiat/revs sendtoaddress RMZSGjobngtzC4LMSXdmnLY72j8j35aDhE 0.00000815 -fiat/revs sendtoaddress RL9RhxJvhMnbo9RdNHS3HP2ndjnTR3p4i1 0.00000816 -fiat/revs sendtoaddress RPRH7zppJDdKogz3k6BXR2ECKqPsPDjUdD 0.00000846 -fiat/revs sendtoaddress RWQTzmkv2vAUPB6bj3CW2x2KSEFgCW9koA 0.00000847 -fiat/revs sendtoaddress RQTPGjDBk8J9o69oMxaj5iRdnJhck2guux 0.00000864 -fiat/revs sendtoaddress RCsxQt2hBXX8KFfcPoA3XufCeRu54YpqCw 0.00000865 -fiat/revs sendtoaddress RA7fJDzYpMntwW2cMKfvB6SZptM385ERrC 0.00000880 -fiat/revs sendtoaddress RKQua9gDfBQsdsYwDcmXPSgfagzrho73zJ 0.00000884 -fiat/revs sendtoaddress RJn8UQZBCHMUgtkucN2Gic6YrWXyfeETAp 0.00000911 -fiat/revs sendtoaddress RDpYWHPTQ5mtuPZpoE9BY9wzZRb6W1U3yD 0.00000915 -fiat/revs sendtoaddress RFNrVDgJzaMDGoRjXmB2QgPNejFG4PtwFK 0.00000920 -fiat/revs sendtoaddress RNoXLT7gRoUqgpN65nTqJwbQBuUhEbYGHn 0.00000931 -fiat/revs sendtoaddress RGmqsqFeXpdQeY5ezzHPFyRikkmL9ddH5B 0.00000947 -fiat/revs sendtoaddress RMqK2DGythLR24r559V8o9BUiNRiTn2km6 0.00000960 -fiat/revs sendtoaddress RWx9JVhsX4aTDZi37xTkF2GzqFcqwbduUB 0.00000986 -fiat/revs sendtoaddress RQLQTkZQCMXTHFMRJ7Yo73bcgngTN9wVzU 0.00001000 -fiat/revs sendtoaddress RNQa5mQappVSqpYSMc8YHNGRftsqhyzGzY 0.00001012 -fiat/revs sendtoaddress RSg8p2io4mtNUvYPAhQCVVsm43T7iTLcBY 0.00001014 -fiat/revs sendtoaddress RGJ6Qm1mYgmFiDYZe4uYCNYhfjemKhJxx5 0.00001040 -fiat/revs sendtoaddress RGRSyHVodwT9SWYcGm65U74CXr9XjBbLjR 0.00001044 -fiat/revs sendtoaddress RKzjs523ejD7tqsSLN8X4YH6DqAZEiWqXa 0.00001169 -fiat/revs sendtoaddress RUJULRTc4fSdhCmpQ5Qnroq5tTt4Mnohzp 0.00001195 -fiat/revs sendtoaddress RVzkTG7QrLirduT28kba47czC74GgBUgTB 0.00001208 -fiat/revs sendtoaddress REgBNV69Bu77QCx13mVx5CLJUhR9NjCj6H 0.00001255 -fiat/revs sendtoaddress RNsNbkAq8e5p6JgW8qdBCoeodZv2d5nqDJ 0.00001267 -fiat/revs sendtoaddress REAMtN7P4QDYTzHFjzFMrRdDKaDqVg4BoB 0.00001270 -fiat/revs sendtoaddress RJsWVvnhaKU8YTzbiti7dsCLRZWRZpZ1HA 0.00001275 -fiat/revs sendtoaddress RMJFtWdAP2eCu6WydrKwLHXNXr7f2qjXhM 0.00001289 -fiat/revs sendtoaddress R9a2drfZ8Wfa9aLk818Q2RMKwtMGsqK3qi 0.00001315 -fiat/revs sendtoaddress RCk1p8xiZ9o2Uz2BSAtm1npg1Y9uocQGMJ 0.00001322 -fiat/revs sendtoaddress RB1TE9p5iZ9zVVZn9GkLGJXpV3TMzVuHL7 0.00001394 -fiat/revs sendtoaddress RVVwm8nrP94rsWKttiPdvjNLa7VGd3Z5no 0.00001417 -fiat/revs sendtoaddress RAdG61foZeKKX1YgwTEmsQkiL4JkGd33hE 0.00001432 -fiat/revs sendtoaddress RENiY6Xeiyi7xMsk3HFvzxMh1MqcdLSgsW 0.00001455 -fiat/revs sendtoaddress RF2EEyEBmHHMYP4TaT2Yonjb5uG6UXbPGb 0.00001470 -fiat/revs sendtoaddress RNgn4PYhcwdBUBuy9Kvm7jbtj34UhwhwYd 0.00001506 -fiat/revs sendtoaddress R9x6DaD72CmWgCXS7Hx7HwaXNAQUgFw3x7 0.00001528 -fiat/revs sendtoaddress RLvgXGqLmzaRgssA3FXKTejcRZXxCzBsvG 0.00001577 -fiat/revs sendtoaddress RDu8jz6rHrVh29r9DCZjeovvE7vTxpFAfD 0.00001627 -fiat/revs sendtoaddress RLyFLmPxk6MYZoWESeNUr9oSf1HuQngoQa 0.00001636 -fiat/revs sendtoaddress RKF4rCVwQdEGVfkP71eBb5utmywEDE7tgt 0.00001721 -fiat/revs sendtoaddress RAHch4wiJmocRa9xS22nb5RAhLhRoSiXAL 0.00001748 -fiat/revs sendtoaddress RAauGYT42qA5i4x47FtvmS3FCuCwuEp8sj 0.00001768 -fiat/revs sendtoaddress RY2evHnruJ77SZ4XPYZc1AvbdXMxbS22Rc 0.00001795 -fiat/revs sendtoaddress RE7mR2B3yC91PyHZDShzPpMFFEecaPgQAg 0.00001798 -fiat/revs sendtoaddress RNKcmW4mpja8wExJJRhoXerBjGXvi1gKhS 0.00001811 -fiat/revs sendtoaddress RVuEbGFjCH8TMoLBkzX3knDEzhm9Eseeoi 0.00001849 -fiat/revs sendtoaddress RKRxEc9SFKtN2adxzTSf1WXc2pijDykBT4 0.00001856 -fiat/revs sendtoaddress RKEV9qL5HUX8Z5hzbvY8pZwGFr5QKPB2Hg 0.00001866 -fiat/revs sendtoaddress RN2D5ofRKLdF8yG65vn4qyHMNmmeAmTizk 0.00001883 -fiat/revs sendtoaddress RLHnZJnDoxcRLyV7BuKWipNZjLMtpcPcze 0.00001896 -fiat/revs sendtoaddress RUDWUG1svi7vJjBpQUW9eQU5ZKXybZ3N9o 0.00001900 -fiat/revs sendtoaddress RNLESAbKE5dDXMxdV8Z9HiaXBrohhDiYFM 0.00001917 -fiat/revs sendtoaddress RFyB97xvXsiui42ZY5VzN14TfZkkRnhXDQ 0.00001923 -fiat/revs sendtoaddress RQd48SZrBX6K5csxPYBpNWV6oGGPY1TybN 0.00001950 -fiat/revs sendtoaddress RSCbVbyMUWFdzpKSbbGoTPiUoDP446opYZ 0.00001965 -fiat/revs sendtoaddress RVUuV1vFbCqgKxyGMSMTj8GsnBKqV2rBoy 0.00001982 -fiat/revs sendtoaddress RDbYCxgNaWqSoF9kvNBW8JJbbghiuNzyX5 0.00002000 -fiat/revs sendtoaddress RCiqiShR1A1b6nX75ShjTGJXAC65LfSwmw 0.00002006 -fiat/revs sendtoaddress RFzM8bYcR6KRwe82JCYREyENhCpHm1TT1h 0.00002048 -fiat/revs sendtoaddress RBk6Z7NpvxhyozxvmeMpp8CFyVJAfB5UwG 0.00002087 -fiat/revs sendtoaddress RA7GaFGipRgMfAzrDV2ManTqxko8eBYfdT 0.00002202 -fiat/revs sendtoaddress RCm4f7FPpmVK9ij63SRUNNJXb4zN6FS2dT 0.00002225 -fiat/revs sendtoaddress RKNw8GjSnJFdHL7UfxLV65CbGLXkc57QMa 0.00002259 -fiat/revs sendtoaddress RBsi8XkTZ4DPstEntpcxReLs3AbugMRybJ 0.00002274 -fiat/revs sendtoaddress RKZraWzMT5EpYRUweWUjHvbGiuVV4kotGe 0.00002382 -fiat/revs sendtoaddress RG2Brh7qnEuGLUQwrDjhAZ7ERkxfzdrDWP 0.00002389 -fiat/revs sendtoaddress RMBbajkgz4pPFKKeph4gFsFUCNHqYwKzg6 0.00002401 -fiat/revs sendtoaddress RFSXXHhSta7HPnHSUd1gKaUCgR1tu3vsoT 0.00002412 -fiat/revs sendtoaddress RHZi2ou8uPkq8RnLVSAJERoRcf5EbMM8A9 0.00002439 -fiat/revs sendtoaddress RGb89Xv4NRsAasi9a8Go9Ak9SNkoFocrEX 0.00002448 -fiat/revs sendtoaddress RAQLnSLpEQvGxSQENjZhvQEgRawtn1Knfd 0.00002494 -fiat/revs sendtoaddress R9xXPukZtiytMoJ2c96Lfo4d2bHuWEpiTD 0.00002500 -fiat/revs sendtoaddress REb4UYJb1zgFpLDSdHDNwiVfc14E6LeF1V 0.00002862 -fiat/revs sendtoaddress RQJVk8faSX26tUDFtxDsTK2S3Eb8622iPx 0.00002878 -fiat/revs sendtoaddress RAQFyVPTev3dgo6HBmbdnip2y54zcjSKPs 0.00002882 -fiat/revs sendtoaddress RNwshUtVqSMo4KNzt5CmLWD7hYTocM6fqq 0.00002895 -fiat/revs sendtoaddress RFHamgN2yFwXqTTBe8eana5vUBqpBWabzJ 0.00002900 -fiat/revs sendtoaddress RL8oY411SPcAEwz8UYSqCLPLzqA1BdM379 0.00002937 -fiat/revs sendtoaddress RT3KckCS4CD3wLdu6buwCNG89cNhFmnyFt 0.00002943 -fiat/revs sendtoaddress RFBA1T8ZYzf7zvusNRDrsz7Zf1eiSwNAvP 0.00002970 -fiat/revs sendtoaddress RPr3fTxc3oks98aKn8rXgTBdv7cwAmao8R 0.00003135 -fiat/revs sendtoaddress RWm4FT7y1VdZdghQ1WdvdBJtwPGMtdHbB2 0.00003161 -fiat/revs sendtoaddress RMueA9d4Q9rvk4zPKnLPNGBE7atMNKRmQF 0.00003272 -fiat/revs sendtoaddress RAQED1CLWcDGMMasHWDS3LS7fYbf9k6HD5 0.00003304 -fiat/revs sendtoaddress RBfQF74fvJKrnQsr8S2fCYqhToLdGryEZu 0.00003317 -fiat/revs sendtoaddress RGSaceiRbhubQiTCTJhewS9tQt6JybcF5B 0.00003515 -fiat/revs sendtoaddress RXvekHM7S736eeTG7W1WQD3RaSir2iU8Sj 0.00003726 -fiat/revs sendtoaddress RXXZespQ66i6yNVJ6EZKwcvaduYkNJ7i1A 0.00003839 -fiat/revs sendtoaddress RFEUYbLDDwSMdnpUSVT5s8Vq4fdf3RFB7Z 0.00003866 -fiat/revs sendtoaddress RUipoo61X21mWDQRm1ZG6UVicVAxK532Nk 0.00003922 -fiat/revs sendtoaddress RSuZkqn9YPFqN6z9njjBQKQUB7AgWa9ujD 0.00003936 -fiat/revs sendtoaddress RHRcqMQiCoyGajCTjXrWPa6MSd5KifRtbd 0.00003966 -fiat/revs sendtoaddress RTroJ4jpPsLt8kXNLSsK9LDFDQicGQUGR7 0.00003977 -fiat/revs sendtoaddress RU3jS8EUp4587iaKJsLVeyf1h7BrZa1upj 0.00003992 -fiat/revs sendtoaddress RDxzBRShWxpdoS12upwviibwg3eZT9rorG 0.00004000 -fiat/revs sendtoaddress RWJrhUHS235xwXRKdvw8qcyFBxGqQuYh1K 0.00004020 -fiat/revs sendtoaddress RF244KfdJUgvcqq1TRumGK8dgUDS7Wh1SH 0.00004109 -fiat/revs sendtoaddress R9MqjbymxPXBXnS5YHuJ4UJQtDJXzrtXuC 0.00004152 -fiat/revs sendtoaddress RXzaCruKJarZmhtuqHEBxqyTMhMJGAk2hL 0.00004210 -fiat/revs sendtoaddress RLRRxpr36cMyC7bbogQwx6RGGxAnPcoUuL 0.00004444 -fiat/revs sendtoaddress RYWK7f9VvGCFvMt98tD4D7QFewbsjbecQg 0.00004558 -fiat/revs sendtoaddress RPPPCFuSRaVT3EA9C3wXtokmRccWU9HSag 0.00004572 -fiat/revs sendtoaddress RF9dx2nQezTAYHGEKVJpj9hrKTenbQKJkB 0.00004581 -fiat/revs sendtoaddress RX7n4TefbCjshd3A9U8F8Kxm9rP5gBkfMd 0.00004586 -fiat/revs sendtoaddress RUBjWwoYyC7frpQdyMBdbUE9C86xGDmNg5 0.00004589 -fiat/revs sendtoaddress RHiCh6LyRAGctcE84YdnhfBCcbYsUu1y8c 0.00004630 -fiat/revs sendtoaddress RH8JVAcFMAMnM6ZQYsYuAQLZe8JgVRbcbg 0.00004650 -fiat/revs sendtoaddress RRrzm8cQveGReepz1ZiXHKHmZXBeFh58bD 0.00004661 -fiat/revs sendtoaddress RWeeCifFxX7yG44E8raT8ZSE25DenWFUjx 0.00004702 -fiat/revs sendtoaddress RNxCorwBiR9GgGKR4Dndrb9HujXddeNS1x 0.00004745 -fiat/revs sendtoaddress RL4Y8L8LSvCnPyGjtmiVLzHuA59c74vEbY 0.00004769 -fiat/revs sendtoaddress RJFy1sALkG1S8LjShKU77KPb8sVZFEv66q 0.00004773 -fiat/revs sendtoaddress RTyxpHpgfRTPUDfjTTzFiFZbPeQfbcgU7C 0.00004796 -fiat/revs sendtoaddress RVzd7Hs5rwoVMcpZCS3kWuYQ4qd8fYFohx 0.00004905 -fiat/revs sendtoaddress RV7gkC43GHDRFFBSLA87B2WvaAe7LBkNz3 0.00004923 -fiat/revs sendtoaddress RSmKfew1hpi5gn3g2w7drLJPRqNJ6wVjg9 0.00004949 -fiat/revs sendtoaddress RC62d1WuiPJoHYCCCKgS6bRsWECsw8Tu1x 0.00004976 -fiat/revs sendtoaddress RSxhLHDdqmYnfLoZLfyFSGWMXp86BKyKsh 0.00005039 -fiat/revs sendtoaddress RKNVNZZWH2rT8kAV5LHgd4VdGPy3u7aLV1 0.00005139 -fiat/revs sendtoaddress RRH1TEd7uFTuAmwkcPKkwjWxuQUki1v4Fp 0.00005255 -fiat/revs sendtoaddress RMYvM1rNHN7mQJWZTtevLhJBtY4u3Xyagi 0.00005279 -fiat/revs sendtoaddress RL4fJTgrvCVPMpivbDLmPQPSqvt9eLeKVq 0.00005341 -fiat/revs sendtoaddress RCkZpYiMQoTFXnDhDoT5wvUFXYp1KKAsvp 0.00005347 -fiat/revs sendtoaddress RChLJ7Ujm547sH16PnRG655Pdr9EB581cb 0.00005382 -fiat/revs sendtoaddress RHJNkQYx1reTx7PdYwxmP3fceX1SVEaYZk 0.00005435 -fiat/revs sendtoaddress RTQfmCzCQX8naR55zUvvPnk8MNHLYVjjbN 0.00005453 -fiat/revs sendtoaddress RFtvv7j5qb8nkxqhLVnLZBv7TVa3ohj9uz 0.00005474 -fiat/revs sendtoaddress RSgNDtpL3AZdMRLL1qQZ6QDrxn1MgszRnb 0.00005490 -fiat/revs sendtoaddress RY3KRKwofQRpnvXW6TCwFd9JH1s3hwhfRW 0.00005543 -fiat/revs sendtoaddress RWgfGvB3CGTG4sQGgV7SDEApnA46A1CNEP 0.00005566 -fiat/revs sendtoaddress RU4jcPzB2BNWEna8EGtN7e9APD58pKDFSD 0.00005703 -fiat/revs sendtoaddress RGMaCgtGFCTLg1ujtBuACyvdTAwBNWrCEo 0.00005813 -fiat/revs sendtoaddress RXy3MnxCdUexxtP5EQkcv5uuFjzdFepQkh 0.00005815 -fiat/revs sendtoaddress RJnr2TJ9amRRLtnFDBtjd42oU2dmeauwtd 0.00005820 -fiat/revs sendtoaddress RYWBYwFkVE7HoD9ErQNXjB13iEznkbDJgk 0.00005827 -fiat/revs sendtoaddress RSnMQHwwabfV1hKFAbzPVAAMCpAwngsdQF 0.00005860 -fiat/revs sendtoaddress RR8rNjgPs6u2sHUWXTgDE8wruYYU8oNg89 0.00005884 -fiat/revs sendtoaddress RRnkFko89P9zLV8EfWYZzWZCy1riRLgir5 0.00005930 -fiat/revs sendtoaddress RB5jo3a8QQzubTrJoe8K9sVKTit9zwkBM1 0.00005955 -fiat/revs sendtoaddress R9XTAMpr2Sm4xxUQA1g1brxPZGaTvj9xqp 0.00006000 -fiat/revs sendtoaddress RQhXvYCN8QFUQWRiuXsngVNdJBf9A5dhR1 0.00006028 -fiat/revs sendtoaddress RWWDmPz88eMtG6Mx3ogDM8YWXysUW6Yxyi 0.00006069 -fiat/revs sendtoaddress RHLEcakuSGyq4aHvhtHzbkWRqp936Xpwtm 0.00006210 -fiat/revs sendtoaddress RAhrxJkfbSYcgU6nwQ5ETi86kDuquwCLRR 0.00006251 -fiat/revs sendtoaddress RVsJbwxu6Kuf39Q2tybRfQt2UQrJKkiY7V 0.00006266 -fiat/revs sendtoaddress RUMwXP2wSBp1idyP3BKYYyzit8M92oUwqy 0.00006271 -fiat/revs sendtoaddress RBm87npjn6LeYFKUrYRnqfwgcEXcu2zra6 0.00006528 -fiat/revs sendtoaddress RXq9ajw9VFixzxY7H7UDbNwz4qp88yQWSZ 0.00006645 -fiat/revs sendtoaddress RAEPjxxA1TTRxZQkUVuvZxAZ8eT8eNfSy6 0.00006650 -fiat/revs sendtoaddress RNBahLwXky6HKpE3SD3LTAA4FeJaEpAFR9 0.00006758 -fiat/revs sendtoaddress RUxSNXNXsva7Uh7xf7uERU6uQARpK3mfEz 0.00006837 -fiat/revs sendtoaddress RFvLxx4uyCUGQPQNj22ZwdwVcpXeGKotdk 0.00006945 -fiat/revs sendtoaddress RFiQMkRhh2TycVBdKm7u98qMx1fcsDQxoF 0.00007072 -fiat/revs sendtoaddress RJum5gzqti6KdZ3LawqBVHvGU6XiU22tx7 0.00007091 -fiat/revs sendtoaddress RCfdNuih9N3Vz4319T5As6tHxA1aAUkTJV 0.00007157 -fiat/revs sendtoaddress RVVg4VJTjh4geWT9Qh6v83FQ6ALjBi75Qw 0.00007233 -fiat/revs sendtoaddress RKxVArHqv4ipKZYB41TGng9eXkDBxfMwbj 0.00007284 -fiat/revs sendtoaddress RMYqCuReY5JpDW6E8WNNm7ATSaimeSS7SV 0.00007394 -fiat/revs sendtoaddress RQ7oEUSUYACHw5YjoLBjD1LKfAihAjpLrg 0.00007460 -fiat/revs sendtoaddress RVKk8cP7FBfMka1EW61i4pSKoMH8QKtTnA 0.00007482 -fiat/revs sendtoaddress RKrqDXLHV9afCwPKxcWzqPdB36w3zRfYkt 0.00007493 -fiat/revs sendtoaddress R9eT85WNshKv1ybLbwv7Yjc59ZWcHGGftS 0.00007558 -fiat/revs sendtoaddress R9jK8J3TFEZovqRRsf62MgcdMSpkCjaDPH 0.00007695 -fiat/revs sendtoaddress RUF72mTDn2oBJkHQguuqreBaSmYudsonCi 0.00007723 -fiat/revs sendtoaddress RHBYad4xVeDHBQLiGXYXZCpnD3crfa5dcG 0.00007753 -fiat/revs sendtoaddress RTV8t5UH6nzWXaR4JUjAqwyojm1VrxucQD 0.00007787 -fiat/revs sendtoaddress RT5Zjy7f8KBKx5ZCzTZaFL7vFHSfTsbBLh 0.00007825 -fiat/revs sendtoaddress RGDEDYpP8UsHt4RrufGtcvSUPrdtmdarsr 0.00007918 -fiat/revs sendtoaddress RKBksxs8KxRPmPttsZcwR57zQSRsMzDZUo 0.00008020 -fiat/revs sendtoaddress RXBMAA46MugXDf2nmbg1uvtp3Q2M8xq1sE 0.00008219 -fiat/revs sendtoaddress RNnkUuVyh2UBcED8rewmXFwLTN8pLduDVo 0.00008439 -fiat/revs sendtoaddress RTs6tV8yehKde5DF2Y7LauPrwpgrzKgThZ 0.00008566 -fiat/revs sendtoaddress R9KzjfUFzEpbJ1SEEDmKYPWov8EJSg58rC 0.00008782 -fiat/revs sendtoaddress RDSsfVK7WVkE9kSpY5uiyN4w3yGUF5oPGZ 0.00008808 -fiat/revs sendtoaddress RA6sc7iKG58ApJBzEaLHAiXSNX4WVPLFts 0.00008823 -fiat/revs sendtoaddress RP15gmfqVM9HBRWuTNRUoUuGeyZr4CakyU 0.00008935 -fiat/revs sendtoaddress RCQDcAtGkmYieGrBTcS2dHghvvM7T2FpRj 0.00008985 -fiat/revs sendtoaddress RDJ2ac7va5cvovEbGefbrUCc89HzyRq6tj 0.00009163 -fiat/revs sendtoaddress RMpCZombfy31QopCRBjSVrn8soXp6YHdAU 0.00009291 -fiat/revs sendtoaddress RVhXmTYuhysffVgBskStkE83mgT3bMxob5 0.00009299 -fiat/revs sendtoaddress RGuaVaqU8LDhXBmM5P44hxxb38B8L2JaG9 0.00009474 -fiat/revs sendtoaddress RFfTqthyzQS5NMJJZyEdAeBv65c8ukn6aw 0.00009488 -fiat/revs sendtoaddress RP4iywcpw5BnwnACknk3eRPbWpADohWd8u 0.00009507 -fiat/revs sendtoaddress RWLp4oyrQhotMi8gJwsTHpxNU4w5aJiah2 0.00009528 -fiat/revs sendtoaddress RG6BQtSNweM5hrMLFzrLABb9kXBKfMqAcn 0.00009561 -fiat/revs sendtoaddress RNCsE19sXLq72H8eroiYbM59VdATEk7ABR 0.00009575 -fiat/revs sendtoaddress RVkkRKRbk5JK5Z6JzRSHPvFJX5DEyf5uWx 0.00009685 -fiat/revs sendtoaddress RREnM9kocjC3eFh5NM9MA7TyxiepKvp6eW 0.00009751 -fiat/revs sendtoaddress REiy5UfZM7mo5KWXWBjb6rhQUaTTo8jr5z 0.00009764 -fiat/revs sendtoaddress RWZZq2w4wLKjFaaoAAmYUkTHsF4AZmdPqu 0.00009800 -fiat/revs sendtoaddress RV5vv83Y7NncedfXW81ziNJWaxAY66fTYJ 0.00009959 -fiat/revs sendtoaddress RBZPYJrgHKzAcU2GGLXkiyxt849URLtSNT 0.00010000 -fiat/revs sendtoaddress RFu65oz4xfNvF5u5phvaVPWTducTQBvWhN 0.00010049 -fiat/revs sendtoaddress RTFJ3mnPGQdQhWqiLeN9us8aTYGv8R9ZyE 0.00010173 -fiat/revs sendtoaddress RNBwXJmgt7GqENKi4CRpfAUhUSZLQJgtCX 0.00010197 -fiat/revs sendtoaddress RNCrrg75Y73Cgg68KmXm7sYRqps4TdkgLd 0.00010200 -fiat/revs sendtoaddress RM2B41m3QqC3wFHzW5qCD76tvYpmmhKd35 0.00010398 -fiat/revs sendtoaddress RGRVfETBAbM1LVdQ4KPE3AQfvzWSbptbCV 0.00010400 -fiat/revs sendtoaddress RMu8vypx3uu5twJGuqEe8k5DY8D9UooynJ 0.00010418 -fiat/revs sendtoaddress RSzz47XiG5jAF3U297Tx7qC9DEXFXDcSUX 0.00010420 -fiat/revs sendtoaddress RR59terANPSYm32BKdLLpPFMdHzgkiZLQi 0.00010564 -fiat/revs sendtoaddress RPr4Bjdmn6KUZm1QptArNYYkcT38SBpQP8 0.00010593 -fiat/revs sendtoaddress RDNnRnb259RCBXog6ZTGWNTLnBTqNXtcoG 0.00010624 -fiat/revs sendtoaddress RM4F39frKUuhpPKYgUSpkzvDaBochNCYGn 0.00010700 -fiat/revs sendtoaddress RQi6W4YPHzPPTCixrPXjMJwScCe6ibWqKV 0.00010797 -fiat/revs sendtoaddress RXNBDyRQGFFu8SHZUuvqpeXyiH56pu5gUq 0.00010897 -fiat/revs sendtoaddress RV1qXeLHr9wuxBDFnAK2e8CbxT6Mo6qjqm 0.00010922 -fiat/revs sendtoaddress RLokWwedwdB2L9WLw5sMfy2kVPcikGyKvZ 0.00011100 -fiat/revs sendtoaddress RGX5syv2xs22mhKRNPZbdutHbjGhQTxoja 0.00011161 -fiat/revs sendtoaddress RLiovYaTuagqK6NxrCuytABw3uTpfpKLEV 0.00011200 -fiat/revs sendtoaddress RA3oNn927hzMoCW4aUSQJaVd6VfkAbEAw2 0.00011278 -fiat/revs sendtoaddress RF6w3c8FH4nr6BDQPVZ3HsRiGpRkQ4yQUD 0.00011285 -fiat/revs sendtoaddress RExohxuhiwtkyrfiUdKQbc1znMxH2YHu6G 0.00011300 -fiat/revs sendtoaddress RVRkh81hnbFTTvdFSK8mmy3pfNwQZm3NqR 0.00011421 -fiat/revs sendtoaddress RJ5RXcmhX4AcvuN553zDR5y6qW2BpcUrtv 0.00011500 -fiat/revs sendtoaddress RHaLJLwq7gcoVkQZBq5VeeFfC4SRTUC8sE 0.00011627 -fiat/revs sendtoaddress RA6d9ghonjGVXbaJYy4caRVGMUV6TckgWX 0.00012050 -fiat/revs sendtoaddress RVCgpVJRb59xixFCmUj35uyu7iTdVq7DFE 0.00012086 -fiat/revs sendtoaddress RUwLLu5WhTc3Yci78r1j4Qe6WBUo1oFxZJ 0.00012270 -fiat/revs sendtoaddress RQtBfRx6ziRc3hcXD4ojxXXzAGrVRPkukx 0.00012300 -fiat/revs sendtoaddress RCcTANrkKH28mRGadpek8bSmkTkjFieiLx 0.00012400 -fiat/revs sendtoaddress RH9XLWzmHiYDx1Am3jV8uQQC1zc3XnKmCQ 0.00012468 -fiat/revs sendtoaddress RCvaKWEJnPJafL93HM2DBUtwp3q2dGeNz8 0.00012566 -fiat/revs sendtoaddress RDUzmUQ7NyDaBE6GEaPHMLSesp7mjT4fK4 0.00012654 -fiat/revs sendtoaddress RLeZQfQ1kxzvNPFnmMT5R7kHukGLCTvzL9 0.00012700 -fiat/revs sendtoaddress RP2thMCLFKNTJYjCf5hF1LKdxWbb8AnumJ 0.00012707 -fiat/revs sendtoaddress RWFG1qtfRNvdkd1GQQv99HR9bkiiZL1CW8 0.00012820 -fiat/revs sendtoaddress RRCxZQ4xDAtqrrsdX9whDGdDqpVmQeHX7Q 0.00013000 -fiat/revs sendtoaddress RXAeLAwCtDtQBicEswUubyCgqHk3TFa2dd 0.00013025 -fiat/revs sendtoaddress RSCMyRn9DofFcFCzaYS45wRQswtGBU3YUV 0.00013103 -fiat/revs sendtoaddress RKLqobybhy8KVw5iHR3nsnnZRMQU9qQLMS 0.00013182 -fiat/revs sendtoaddress RXmUQadq2mhJSY2mEbQeoijSTjKZMXdJZw 0.00013240 -fiat/revs sendtoaddress RFCTiLs5jmk7jRWbBj9PkcGSKoerFTcZFh 0.00013370 -fiat/revs sendtoaddress RJVzd9vChSGjUQ9Qen16NEJAwfpNSCsBeQ 0.00013395 -fiat/revs sendtoaddress RUNPGSY1XAM1kztGfLapySnoHufmGYm3r7 0.00013433 -fiat/revs sendtoaddress REYkDVHw5BoGPkMAzzyEzdjErmVKxC1EPw 0.00013749 -fiat/revs sendtoaddress RNJLsgmUSxtDAYsnEyRoT99qsz9QSp5T3Z 0.00014100 -fiat/revs sendtoaddress RXPsGoSfucXZtvbqAdQMjJVEcXDhzHKAF7 0.00014187 -fiat/revs sendtoaddress RXHZcRrz5UqZob1qEVr6NeJZ2YgyCXQmQG 0.00014300 -fiat/revs sendtoaddress RP84XLiKF4inVT73CeMWnqDASVqK5cdURs 0.00014364 -fiat/revs sendtoaddress RGGcGxUkopPQwgoaBF6sdgr9damcBSXJ12 0.00014543 -fiat/revs sendtoaddress RGeDBigvuPU4L5txmxTamXSvZV3e93P82M 0.00014600 -fiat/revs sendtoaddress RMsphJU3BfaEJmrj5yiLoBXdg2LWgNiQ1N 0.00014700 -fiat/revs sendtoaddress RPbgS48n9x43pZuLooDXaPFKoRzxYscmJ8 0.00014800 -fiat/revs sendtoaddress RKv1eu5CV1HtpxnmoyqHKEvQThGCGysD9p 0.00014812 -fiat/revs sendtoaddress RTdN6EcrbAdNUwzszGfasiVHdSRoS1ei3G 0.00014899 -fiat/revs sendtoaddress RVfWp1sWf7r7v6Mh5kWsyUExYrVUVCetE5 0.00015041 -fiat/revs sendtoaddress RYYkw4gLG7R3uZnb1N1cdPZJ892CgxTmEf 0.00015043 -fiat/revs sendtoaddress RMpif3pyhMpSy1KrCeb9tZMYM591gPEd8Q 0.00015116 -fiat/revs sendtoaddress RVWRgCFWxwz6HfGuJ3rbURRBztc3WxBPFW 0.00015192 -fiat/revs sendtoaddress RN24s9RUkUct31jtDqzZdDAg8z9nx1St8s 0.00015259 -fiat/revs sendtoaddress RKHUGrnZCpjgwXuV92iCvnRAhck6btZZD3 0.00015534 -fiat/revs sendtoaddress RKyaTECc2mnxFLvjvc9W5MamrTPPdi2R8Y 0.00015600 -fiat/revs sendtoaddress RBNmMoBXPNrc1exmQRvhYnUpsjzmdjgH2G 0.00015787 -fiat/revs sendtoaddress RVV3ZW5obk276mnZJomV6sK7XgDQsZhAP2 0.00015935 -fiat/revs sendtoaddress RDKMrkNVddNBxgJbS7o8xt1kvStFFNMe22 0.00016150 -fiat/revs sendtoaddress RUJNt1Ren9W1kwXygUTGM1aXSrckZtuti2 0.00016168 -fiat/revs sendtoaddress RJVwAUWfVywR6u5gvvs6yyqnc14LGG2ezZ 0.00016200 -fiat/revs sendtoaddress RHwBRZzbETNR3nyQjuVWgaLdaBNBu3gwbw 0.00016400 -fiat/revs sendtoaddress RWwvVkTfHRyQowpuKm11pp3SUtpgC4HYFb 0.00016412 -fiat/revs sendtoaddress RP2Hxo8p5E1rgosqWkiQabRFxkCUDfbTbC 0.00016421 -fiat/revs sendtoaddress RX51FmwiSUDADmi4hJnoYDDP6bLAqpJkMn 0.00016440 -fiat/revs sendtoaddress RJFwFMCtSbczH6Kbq3Nvtja131Vh7SCGph 0.00016515 -fiat/revs sendtoaddress RBzSY7hWxG7rAToN9bzCfi9W7ooqeYWvVC 0.00016600 -fiat/revs sendtoaddress R9Q4A21SUiQpNPzuAdMUVNRMNphrtmae6q 0.00016793 -fiat/revs sendtoaddress RQcBiGNEL1gR8Fs2pjXBuTMQHWdFHLQsnp 0.00016840 -fiat/revs sendtoaddress RFwBn7UNcUmaZ1aPcHhgw625gh8qHwMUy4 0.00016842 -fiat/revs sendtoaddress RGMsA6FvecfVLpejUGAnsRDC9vt7ndCiVV 0.00016862 -fiat/revs sendtoaddress RWvn6ecgtsYVLJNV55bMUg8C3mQzHGKHLM 0.00016874 -fiat/revs sendtoaddress RTyavseweCqpmQhyPBTJRNYKCcD4WPdrTM 0.00017201 -fiat/revs sendtoaddress RWqbt9TG9DZ4nqQRTzPTJbpnSqSJQqUrna 0.00017316 -fiat/revs sendtoaddress RGXW4h53qnDaLbwmN42j5KCLjMAG2Dcbuh 0.00017420 -fiat/revs sendtoaddress RJfxf49L8NXk6dag5UwnRXDpsXhqZZEcaZ 0.00017473 -fiat/revs sendtoaddress RCNriTESutj8Pd9J6BNgFNxt4k31S2irrz 0.00017474 -fiat/revs sendtoaddress RCZj1JY5GmgcL83QkhCV7PhcXVoG7cQPVv 0.00017500 -fiat/revs sendtoaddress RDrrRyAtXpVazC9i5s5mAL3HzVaRhyjVQW 0.00017898 -fiat/revs sendtoaddress RVsMJMEFzY8UgVb5YpELYawXxwkjy9pStB 0.00017930 -fiat/revs sendtoaddress RPmnhJYhHhQZ39cN4a5W3Xkyd2ZFXJDg77 0.00018390 -fiat/revs sendtoaddress RRGaN9gmZdz9ee1dvVZiuJkfja2Qr1s4mt 0.00018500 -fiat/revs sendtoaddress RKFagYgGukbWyxUM9tvCQR8XmmsUFXXHyA 0.00018700 -fiat/revs sendtoaddress RGTRaauLGy7MN8mPLk48iAEm9WzrXmc16S 0.00018872 -fiat/revs sendtoaddress REL7GBtuzpYdZgZcyXWjwUdYG3QQcZUkYr 0.00018993 -fiat/revs sendtoaddress RFqKp6eVqSV5zyP61YiexE3w52nEkVayeY 0.00019118 -fiat/revs sendtoaddress RSApPvAtDRpec651R2cCmvorEyQDKCL94r 0.00019254 -fiat/revs sendtoaddress RJZbh4kbAbFUvzz7bmwEUhTvFR6d7W9dR2 0.00019300 -fiat/revs sendtoaddress RRcGgGnkVLAK7YRqxkk4Zs4gmZ1JZYvmFV 0.00019304 -fiat/revs sendtoaddress RQW2KDsQ5wj1Bb2Bx7eZ8jLMzJcKYBuFoZ 0.00019318 -fiat/revs sendtoaddress RFwyjN4ycfVFEEq1vBTQuKkhg1UnBj3c73 0.00019502 -fiat/revs sendtoaddress R9JQZkM6BpaFJX3kmrc2XXeNT9P9yxzCLz 0.00019600 -fiat/revs sendtoaddress RDH8n2KmzD4SynF8QGoZtGrbVEg731xSk9 0.00019625 -fiat/revs sendtoaddress RYCHZ7Jhsohiq4VtAsjNSryFUUsF4rsFnZ 0.00019700 -fiat/revs sendtoaddress RHENj6QDXC4HDaqDiJTwcPA5TAGBA4nT6a 0.00019800 -fiat/revs sendtoaddress RPPtKZRE9X9roG9T37YEEdzWUBazb83g39 0.00019919 -fiat/revs sendtoaddress RMhRNRBr77g3vmrqZCP14aZg5onKyYsmE9 0.00019932 -fiat/revs sendtoaddress RV4jWUpzWtWUTnsztuGaAUb4qZPNUeFQnx 0.00020000 -fiat/revs sendtoaddress RES8ueqKHH1Ai1XV47LViBgbT4opXK9gDG 0.00020009 -fiat/revs sendtoaddress RGy3u1vNvERbYqoCGC3GskkWfjAYE6zaGV 0.00020262 -fiat/revs sendtoaddress RYVr35FGcFZZpC5i9jzzpoSoNJ8YMLyMsc 0.00020410 -fiat/revs sendtoaddress RFWfimmePwC2eDbKNVPaTGFg8ujasw8msJ 0.00020566 -fiat/revs sendtoaddress REWeLgrnbB6bhs9n6RQru33VDeuiLGgjMQ 0.00020654 -fiat/revs sendtoaddress RSrQ4PmYBqzNRGep9uKJnDEm9JuoL1KyeE 0.00020931 -fiat/revs sendtoaddress RLomQjxzU6p4mD8yQ2Btekcm2EjnyUcfQX 0.00021040 -fiat/revs sendtoaddress RCsWkWiVL6VjhasC9LqNZ6UaeWfTCB6yB9 0.00021418 -fiat/revs sendtoaddress RWTcRAhN7E3xWB8Ku1fjAtoADLr7PV2CUj 0.00021494 -fiat/revs sendtoaddress RAS6dK7ZWXhed7zoKAyr5Kt83dVNJqEtBE 0.00021518 -fiat/revs sendtoaddress RR4mphasQsGxLmVu3uurezcd2khCt8xedm 0.00022200 -fiat/revs sendtoaddress RG1k87G4Lc4vcCmYU4X5v6MbsjohuD8MDb 0.00022618 -fiat/revs sendtoaddress bGy9WrrZBdSaGY6LMNNgm3gdkRqLeCxm61 0.00022623 -fiat/revs sendtoaddress RGdHfuLNK4n98m3EmpWFQ8ytBsCy6j3eLn 0.00022843 -fiat/revs sendtoaddress RDep2dXyAeW1tTja8riEnpUBnfujMc5NiC 0.00023468 -fiat/revs sendtoaddress RVhU83QQaXkXAdKt1cQpy5dUXH1ZwYFbyg 0.00023650 -fiat/revs sendtoaddress RELN19aTNtohzdBrroLujUTFnrMKXTprtX 0.00023896 -fiat/revs sendtoaddress RR9nz5y3KHvVcWWCNhnp1Q4jVw4Fo1H4D7 0.00024000 -fiat/revs sendtoaddress RXQ9z4g646wMAsZHnmCy36c16hSqMQgZ6p 0.00024336 -fiat/revs sendtoaddress RQQ8KdZgiYg1zvukN3nWjDdeMskeDMMAng 0.00024703 -fiat/revs sendtoaddress RJkJH1aBxw9XPvQ5MCmovjGng6kxtf3wJm 0.00024783 -fiat/revs sendtoaddress RDQdh2WxpLhdpCDQkPWRTePZ51JgoLq1pp 0.00025263 -fiat/revs sendtoaddress RBkZvRiJU1Xnb9xF4M4KnvMbAoCfUJJcYh 0.00025506 -fiat/revs sendtoaddress R9P6iUPpj7xUPxCEcMRpri65XbyUAc5KLY 0.00025645 -fiat/revs sendtoaddress RLrxZkA8ZUuF2Pw3pRbmmQHH6Kv2fqWG1x 0.00025833 -fiat/revs sendtoaddress RCVBxtzy4eFaqAwjBTTuF813oc1zYHB5eg 0.00026232 -fiat/revs sendtoaddress RCWEzEkD7M9i6GP5bwdwMoGLMQdetJDYjP 0.00026300 -fiat/revs sendtoaddress RBgXc1AhHnRMgXLUEiZsaApW8yTubBZ4xe 0.00026500 -fiat/revs sendtoaddress R9y6LHVU1R7NsbQZoAPDysANmYzHGEBNjE 0.00026730 -fiat/revs sendtoaddress RGoSxM3SjksGokUgBm5gL6JRUBLutN7dRr 0.00027425 -fiat/revs sendtoaddress RXbMBK9DcErkyURPehGHPNbijzUcZwh5j8 0.00027456 -fiat/revs sendtoaddress RVeuAnXX9JnwmG1Sz47wtZHXmRqDe6XhY3 0.00027584 -fiat/revs sendtoaddress RHByz42Mp7kpsD8Zdyy1vtnrfGMJx2NQdc 0.00027983 -fiat/revs sendtoaddress RAGSfKMJR7ykJwLo4gNV5djRBzAxVR1N1P 0.00028197 -fiat/revs sendtoaddress RUJcGyu9NzQTKPpK5j6NMyoYNdfdkTZC9B 0.00028515 -fiat/revs sendtoaddress RHWNjDt9aDXYsfgBjoPqEmDmoih8D2VjyL 0.00028894 -fiat/revs sendtoaddress RUTGZ5tL6HFD4Fi84eVP485M79tsEB87Nu 0.00028911 -fiat/revs sendtoaddress bSCjHv7erUYZHDUhTcNMSoC32rs3VdFfjK 0.00028917 -fiat/revs sendtoaddress RSfE6W7tS6UQtymLftxdBEeRtsbojEmWjo 0.00029055 -fiat/revs sendtoaddress RBVcbV9KHRPKffmqr8zj5A7u35oedrbgDK 0.00029144 -fiat/revs sendtoaddress RUoYayU4T3K7eQP1MDtkNwTqDL29EKQZ5v 0.00029162 -fiat/revs sendtoaddress RXoqH3qww9btEUwU4a5zJqxCpXK6BwNMep 0.00029967 -fiat/revs sendtoaddress RMKB8PSEWzecH1yhvtGhJc8RU3xEs4Wya2 0.00030000 -fiat/revs sendtoaddress RP6LRdtkRaGvMRRgiPqvhbdvtSypjrMd8N 0.00030024 -fiat/revs sendtoaddress RAEk6aPLQkGGkKpvif3VJQuSGVqQcCA94K 0.00030140 -fiat/revs sendtoaddress RTKbRYQVuCGMxjiKv6XpBUwxSvcsAMFcRV 0.00030170 -fiat/revs sendtoaddress REMTXAs7SN3eBU9EVkaa6tkFx1c1TeBfpk 0.00030192 -fiat/revs sendtoaddress R9NmBFc4S6WkDfTu3Z3HEZ4ThJassp1eEV 0.00030228 -fiat/revs sendtoaddress RCbW3RiCRY2PGwzW4sk2fXr7NsNPgxfKiz 0.00030775 -fiat/revs sendtoaddress RXqrRnFRooXEcE8Maqgt5ju3mcM1E2RbvR 0.00030951 -fiat/revs sendtoaddress RUuEnh5gAqsFstmWkXT4U65JUJnjgjLavU 0.00031908 -fiat/revs sendtoaddress RBzzn4wSCx4a1G7QQuQiUA5CKJMYQvLvMY 0.00031909 -fiat/revs sendtoaddress REf8iU1vMyH3c4DLqb5rWYPd14qBA2qWoF 0.00032174 -fiat/revs sendtoaddress RTUew4Hn7jccDKXn7RfuztWsp8p8qJaRXU 0.00032325 -fiat/revs sendtoaddress RMpXKd7ofLwKPyivbAbjR6ewSh4ML4kCsb 0.00032382 -fiat/revs sendtoaddress RQKk2c8DC5SYyRKHJ4bHfQwD4UixfiFxsw 0.00032614 -fiat/revs sendtoaddress RVpY72VaxECmpM5UgvVdN95TLWB45mj1FK 0.00032817 -fiat/revs sendtoaddress RUxt81ufksoybiAsLRFy6tJBX7QKHXuxBK 0.00032822 -fiat/revs sendtoaddress RCbnnEkwBWBeVdutVWdPQQ6To3Y9H5ecSy 0.00033171 -fiat/revs sendtoaddress RAprH6u6PVZkCFWqaYs4bkaSizRMAvBism 0.00033335 -fiat/revs sendtoaddress R9b9vj5Pc1ve9bSKQT9DvBdz7uT24zRY7M 0.00034000 -fiat/revs sendtoaddress RT7xsUXURD2AXME7jwibPv41Q7kMs3ZiyW 0.00034055 -fiat/revs sendtoaddress RWe1DBaD5hjU2nUKHyLNKP5xLHZRis9RnB 0.00034261 -fiat/revs sendtoaddress RTFzsJDW6oe7GDA7PmohH6dRgByhxnet2a 0.00034725 -fiat/revs sendtoaddress RVaMPdn8NEn3iMr9KRzi3CBfVkVqG41GcF 0.00034844 -fiat/revs sendtoaddress RUmJ6JTXBDe3fzH1D7yzE4CNvmFMxCtj59 0.00034845 -fiat/revs sendtoaddress RPbUxtjZnA22p7WnU1gzuJ6GxgdrDWqJNo 0.00035249 -fiat/revs sendtoaddress RTNWeqKm9c9VfDSX8WCo52UGnLffwtXiNr 0.00035613 -fiat/revs sendtoaddress RN3LXqKQ94gTJLzRZouHMA4m32JrJiqq5m 0.00035620 -fiat/revs sendtoaddress RVk7PeWMNenPifXCWniTKmeKGLfTtWBSyM 0.00035702 -fiat/revs sendtoaddress RYACamis5fN5afsdGp8w1nymQdXb81mHQh 0.00035800 -fiat/revs sendtoaddress RJrGKiUGpwWdi2gTYctLDZjU9Cw5cFHbQj 0.00036676 -fiat/revs sendtoaddress RMi2bJiUij8XLmgy5PrZ3qZgyZpzEoLP9Y 0.00036745 -fiat/revs sendtoaddress RH2NF3q2VqNCEfCfkTypGytV6dRTxg6VXf 0.00036800 -fiat/revs sendtoaddress RRJsyam4zDRrSPqqQcYtERup6P4gnw3XeC 0.00037090 -fiat/revs sendtoaddress RGXE7JdtnkSKvfAMLPDL1zPcZCTcgvCNzY 0.00037147 -fiat/revs sendtoaddress RKpwJBn5sFkSHNonE3XiDRmRAaq3ou2ysU 0.00037168 -fiat/revs sendtoaddress RDnFnjZAieKT3a2TFA96ufpKhULpzfy8L9 0.00037382 -fiat/revs sendtoaddress RAsJVZuyccCecL4SqFheRwdfNfP6bfQXia 0.00037479 -fiat/revs sendtoaddress RRRykkkUcsbK5Domz5HGsGg29qygJyd4n4 0.00037900 -fiat/revs sendtoaddress RJhMCo7cnwQk8eFoYSCX77Z4B6G3k1p6b8 0.00038000 -fiat/revs sendtoaddress RQSc1gsmRzVDwpdALRpgeTYeRKspTJsqfi 0.00038878 -fiat/revs sendtoaddress RSBL7pmCmAU3XLFduXtjMVT487xKv95zej 0.00039000 -fiat/revs sendtoaddress RCDifkKiXv3GDJviT2uHB7UEEevmwLbQg3 0.00039180 -fiat/revs sendtoaddress RQxCSeHUcHqkhcux814bvLG4FyKMCY7J78 0.00039659 -fiat/revs sendtoaddress RKf9wUFuorRaRcjyAKYq4xgmviMpQ2tdFv 0.00039699 -fiat/revs sendtoaddress RNEi9CxYrWMWxCqmchUdPJde1ZjWTTWw6S 0.00039945 -fiat/revs sendtoaddress RECw12mh5yjaVJad13dKdLc13kqcQ99XQM 0.00040000 -fiat/revs sendtoaddress RFBujPidqD2uNW3ceFhqiVodrwxW73gWDr 0.00040120 -fiat/revs sendtoaddress RMuYUy6N73f7XdUnPTJpTzWqni1Rk1gNXr 0.00040166 -fiat/revs sendtoaddress RRKp9ugXgpEqdUVMGhbKVzMSMVCdUZewun 0.00040418 -fiat/revs sendtoaddress RBUMvKrd3by4sDw42GnNb6TkTUrfqwvYMP 0.00040534 -fiat/revs sendtoaddress RNVzD8zjMXBqL2vg9PkB6DDo98qkBHVQEQ 0.00040700 -fiat/revs sendtoaddress RNfHTs3a6VEAzw76JsHSNfdyR3N2kwaMXf 0.00040931 -fiat/revs sendtoaddress RFDwyUBee8xG2bcbi1LP624TkyEsj4v7se 0.00041433 -fiat/revs sendtoaddress RXvMLwzd6uGjWmaqoCVzBS9KgVTkAiBdJE 0.00041764 -fiat/revs sendtoaddress RGbVyHSKJRxhnvvEpATt8Xn3NH3oSFDW17 0.00041881 -fiat/revs sendtoaddress bEFCnzFMhd8wswdRBiLb6TVbr3y7aCD4EV 0.00042397 -fiat/revs sendtoaddress RHtRYM9uawkJrxZW9mCcLMwsiTstbD3pah 0.00042595 -fiat/revs sendtoaddress RSPzxkLp1qk23rxdUMN3JVdAU3PVNpFWoR 0.00043130 -fiat/revs sendtoaddress RRJsVZLGdrrv3h3jGxK67MUetJiS6Eygi6 0.00044032 -fiat/revs sendtoaddress RYS3P66cGhzcjte7aebSxaYaHcdvT4HCeT 0.00044095 -fiat/revs sendtoaddress RLyPZoYmeAHxdsLN72erLLdd3bNeJoicdL 0.00044284 -fiat/revs sendtoaddress RP9m6VFieRR5H2uWvFyFjfVUCQfKnCcRzZ 0.00044644 -fiat/revs sendtoaddress RGKGABQLeJ9iA8ZUK6zcduvQk6WZ4gNHvF 0.00045000 -fiat/revs sendtoaddress RMhxYmextHYkAUmDsDDfQU79yDj33rDBe2 0.00045038 -fiat/revs sendtoaddress RG7Qh5pqcu2TMSn1jzk5Q71P3NAVwQZuZh 0.00045244 -fiat/revs sendtoaddress RS5r47TrTXChDaYUWaaHjwiL1m2SRfHxcc 0.00047503 -fiat/revs sendtoaddress RLhvo7mgjq51rrDi2dTzcWWNecNmZrBPRk 0.00048100 -fiat/revs sendtoaddress R9joCtbKPoWKyhqr3LhEeJA3szoGn8qYC3 0.00048446 -fiat/revs sendtoaddress RCh8pEpLF4c4ZKJrP3C5rPE4RqGFoUrMMS 0.00048605 -fiat/revs sendtoaddress RD2mayg6m2WaNRUHYKeBF3ppmdnMHUrU5x 0.00049156 -fiat/revs sendtoaddress RWfcsRLR2QbJndAN1NTyAaYdKEXfrrMbVe 0.00049366 -fiat/revs sendtoaddress RVosvAjhJ9TJ83tGHX6WFGWR868XPG2osa 0.00049762 -fiat/revs sendtoaddress RMDvTbzrSy9swEj9UUqzu9yCFEKMVEAGrZ 0.00050000 -fiat/revs sendtoaddress RWr7NhsiuRe3koWQ2v9mzZRCFwDXJd6JKd 0.00050101 -fiat/revs sendtoaddress RDHjzDqd7mNz9kXeLmaUWuZyvuTRomhXyC 0.00050127 -fiat/revs sendtoaddress RTivqJFPbNXyTCMy8SSpgV9Qpp3Ao6k96f 0.00050200 -fiat/revs sendtoaddress RJABadkNEWBG9azyqtsQoXQSLRvfzebu8h 0.00050215 -fiat/revs sendtoaddress RMRJ1AczZeakHxnJMSDg2ghiFZfxFVPtVi 0.00050527 -fiat/revs sendtoaddress RCxBj4KiR8STBXfsRq1YrW35maTviyS6jf 0.00051223 -fiat/revs sendtoaddress RCbvWo9TMm9AwPy2FwJk6dVRhnKch5Hpfx 0.00051260 -fiat/revs sendtoaddress RRJP8M633zhrHCxUhTFf6hrtEomKzgDTjZ 0.00051603 -fiat/revs sendtoaddress RJaXy9FXjKuFTKPbaW4FYRfnmumuBUQR1a 0.00052014 -fiat/revs sendtoaddress RLFsKzbg6ShdponqZJVx96hxtCWVsaSxTf 0.00052077 -fiat/revs sendtoaddress RHaxtuqJU1JmS3kt1BSjY8AzYaiDBymoe9 0.00052092 -fiat/revs sendtoaddress RCx74DtxhgWndqf28jbiXPSuxn1M5Jvg3F 0.00052195 -fiat/revs sendtoaddress RHNtSBmZbpjNCCDn8jX6XyvPsidGoarvEG 0.00052228 -fiat/revs sendtoaddress RYG7hG3E2ZtPXibeFj67yN1JCU6ygwi95d 0.00052436 -fiat/revs sendtoaddress RW5WuA2XA5SMRPzpiyXASXNdE4GZiGjAKD 0.00052633 -fiat/revs sendtoaddress REXHZbw7YHGvtmqARuUV5WAqhMAqQJ5DtF 0.00053333 -fiat/revs sendtoaddress RMqq9MbwApbpDHhtxh4kpYP7QtRH1m9vFj 0.00053531 -fiat/revs sendtoaddress RTEhKwgcgmdYbQkvt6iHEsczqisVdiLFdp 0.00054000 -fiat/revs sendtoaddress RLjEJSYFz9iLGY669MMFoGt2y7QSMwctXd 0.00054047 -fiat/revs sendtoaddress RNTZWWRe9sYQVvPWq1HWUirbFEM11bPAKF 0.00054284 -fiat/revs sendtoaddress RX6vBdUgdVMVR4zxDjYepmKEXkZMU7QeUN 0.00054745 -fiat/revs sendtoaddress RUs5uuCyn2GXpi91hM9d1bbs4sMGFLTAzG 0.00054895 -fiat/revs sendtoaddress RXV65No5DfAm4PG9xVYp3LUspGndFF1q6E 0.00055000 -fiat/revs sendtoaddress RLiDERt11STT9v7TmER4UVQHLDWC9ms8bG 0.00055143 -fiat/revs sendtoaddress RYTXmcxgmMdD2AWizgNGcsKkiYdGnRGniC 0.00056300 -fiat/revs sendtoaddress RUPe7BDLa8wDKhYE8ncbPgzKjvJ3GvWod5 0.00056510 -fiat/revs sendtoaddress RE4UAgm4ecLQg8xNjpqNgoBDwPqUeU9Zzi 0.00056788 -fiat/revs sendtoaddress RYYqKsjiNJ2zTg2dfJgbm3iooGzu9GksXU 0.00057281 -fiat/revs sendtoaddress RE9G5cYjFmib6Jx5JZQQm8rgWPS2ubDzNz 0.00057759 -fiat/revs sendtoaddress RLL1EiC2sRWqEyamcjZbtiQZC8abAyDWRg 0.00058300 -fiat/revs sendtoaddress RP1Uyzyqf7yD85DzyzXRMPjgrhDvV61xKP 0.00058613 -fiat/revs sendtoaddress RNhQ2bzDwgdN9Ud6Tv6dPLQiEaEfhCczhB 0.00058648 -fiat/revs sendtoaddress RE6xDHcgrfqN2Pa25XepxuYmhrqz3uawZR 0.00058771 -fiat/revs sendtoaddress RNL8toUkSDA94sHHJPYhHSqA7NDkpfZXXn 0.00058819 -fiat/revs sendtoaddress RPEcWtSLeFNKWn4AUQhZiYxaVNnE48u2T5 0.00059701 -fiat/revs sendtoaddress RFg9XWeAtGojAYcEapXor2BintD7QXL9zS 0.00059792 -fiat/revs sendtoaddress RGx9Yt4E6H7hQSgPMNnCaCyyn5fcYmv5Kq 0.00059800 -fiat/revs sendtoaddress RYYANuqdpgV2P6St67MrtyAHLhwh2511ao 0.00059847 -fiat/revs sendtoaddress RF9J7qdxhoBnG5UwP1muwEwyHgBaTcjYHf 0.00059863 -fiat/revs sendtoaddress RFr324TVHDCruNAic3yJjdXpcq6Vr5CPQF 0.00060000 -fiat/revs sendtoaddress RPn81TxgJXUsg1ZfShTeW9qEFNqQCgWNkn 0.00060158 -fiat/revs sendtoaddress RYDZ27PvzTifmuDz2tEBEPCYeTe7N9wDKT 0.00060189 -fiat/revs sendtoaddress RVdSbSzv6vrWquenBbEL9LwRWfmPpNd4QP 0.00060231 -fiat/revs sendtoaddress RH8ahGELGnpHvZzKk2eiKixRDQ87DVjTyP 0.00060288 -fiat/revs sendtoaddress RK7h5Jq9NRLcHnrxoAxHz3uQkVy4iYpRfp 0.00060460 -fiat/revs sendtoaddress RVPfC2aKiS9i9kYxKb3Xt1s26F3Sm7jPxC 0.00060579 -fiat/revs sendtoaddress RVch5Hr79qtnJp8e1aUGnmZEPJyZKkevFa 0.00060709 -fiat/revs sendtoaddress RJDXdw7hY2PoZPCG6BeTcYhhcHFBbG3WU9 0.00060951 -fiat/revs sendtoaddress bVpYYMBADg2rVhVbEQBEjjVWA9QXBrT4Fm 0.00061663 -fiat/revs sendtoaddress RTWB89MpXbKHVFc1mxvvMHh86bW1mLg4Fy 0.00061804 -fiat/revs sendtoaddress RX7KrPMDmXbpvaATrME2FNxgNKoELMobbp 0.00061808 -fiat/revs sendtoaddress bM7wZSxKMfPZDBVpeUwrqCgoDHwCiAAfGe 0.00061858 -fiat/revs sendtoaddress RE2aEJVFrB98HKvkLqPurCVtBF2Ewm7tFB 0.00061950 -fiat/revs sendtoaddress RGQRR95r12G8ELDHF3NiCHdYbcAAvDRC5j 0.00063553 -fiat/revs sendtoaddress RJsdgVpLEgyNA4YpeE2mR4jrXydPjjkMfu 0.00063617 -fiat/revs sendtoaddress RUfxYBebjmhF3REoFoUL5BWRRfp9e63MWb 0.00064647 -fiat/revs sendtoaddress RCqLMnGHK9f1CFQRozzCQM9VfZozHpmpjL 0.00065137 -fiat/revs sendtoaddress RXaK7vPxiYAxkf2T12sqCyqRkVq8q5qm3p 0.00065666 -fiat/revs sendtoaddress RGDHJAq2Na37e6UN1PSQ8NViMPgJwppNVq 0.00065790 -fiat/revs sendtoaddress RNGjNgRdeXVd6A9GEefNWN3jBFEdmCESrx 0.00065976 -fiat/revs sendtoaddress RUcE3gjtKcbxPSMm84SP4powmJj4mcxtNs 0.00066425 -fiat/revs sendtoaddress RCxKoTih9DKGiKoT7wpfwwEpGb57L2eTYX 0.00067250 -fiat/revs sendtoaddress RRDCCocEEYWavYSjhc3Epk5CEqy1rENok3 0.00067441 -fiat/revs sendtoaddress RHnHjFVXsxky2uYQeBqKWZ7JQjBmh5cnju 0.00067500 -fiat/revs sendtoaddress RCgVTmHU9VXwKEPZytva99ZSgkQoAY51xG 0.00067622 -fiat/revs sendtoaddress RUZ6gqJnYU9pvByC92zc1Ls2wPQB3e8JYE 0.00067638 -fiat/revs sendtoaddress REkSgNVYr4e27Rvn68ZsH3zGRjTshCG7kG 0.00067683 -fiat/revs sendtoaddress RAE4GcdtEmMVMfvCoYw25nw7ynj5dEZ4sx 0.00068339 -fiat/revs sendtoaddress RRe5CaifEtfXVg1ve2qoTYxfqQ58TnCHRi 0.00068447 -fiat/revs sendtoaddress RBiP6vFRJvgKXxXaLn3jFkcqFaGqWCbVRg 0.00069050 -fiat/revs sendtoaddress RCEKCKYZoqGBzMDw9j6rp6YQ7sfqgwU2ix 0.00069153 -fiat/revs sendtoaddress RHC6p72Jbu9mgDcqq1KhmY8qtPZryR6Frg 0.00069586 -fiat/revs sendtoaddress RJWPpaCzAyQHHkjFUkC2HkDvcaPm152B2j 0.00070000 -fiat/revs sendtoaddress RQkCtL9mvhFk7ETDd2R8fMziwxhybxst24 0.00070084 -fiat/revs sendtoaddress RN8fN2dPPVQpMdXeRZDsnkf53MSru82U7U 0.00070165 -fiat/revs sendtoaddress RSicQrtycErAgf8qaAq3ByBYotwDbuvKPR 0.00070295 -fiat/revs sendtoaddress RDvR8qPDrSVgteZMxBgamwx9DaAkuHhzWR 0.00070753 -fiat/revs sendtoaddress RYB2rGDaYFADLL42PQg7NeYvVCFLtLG8CG 0.00070764 -fiat/revs sendtoaddress RKFoZSctnPW9LNiys2n2q63amsM6EZQ3dr 0.00070874 -fiat/revs sendtoaddress RDJoySywzhZUQdEprL4RHaPwvc89SojpQo 0.00071028 -fiat/revs sendtoaddress RPvB7t4Ss81kbCpSVCfctXKcddD7ABtzeB 0.00071399 -fiat/revs sendtoaddress RVKEKLeEwG8kM5rqGQKpfRLuvce1hyNjQZ 0.00071491 -fiat/revs sendtoaddress RNWKASYXdK3p4sVQPGHHrCE6j6P7F7Lhtm 0.00072253 -fiat/revs sendtoaddress RP8MJGK5oRCMurtTB8NgyNoY68oATYLZ1k 0.00072408 -fiat/revs sendtoaddress RWU6mVQv8FsEDKQoTBusT1CfnPxkStPpii 0.00072421 -fiat/revs sendtoaddress RQFnJB2aApdYDjVAKAbU72yih534HPBJHD 0.00072540 -fiat/revs sendtoaddress RBgShoibtXKfLgSFcsyixBTBiwRJUWrUBR 0.00072575 -fiat/revs sendtoaddress RY7SszF8RFpAA6jfcyaDsG3hbhZEM21dLU 0.00073024 -fiat/revs sendtoaddress RV5R8ucTbgRRFFRPpYX69zoeJJsVqboW29 0.00073123 -fiat/revs sendtoaddress RJUneq4osGJvep6YRwaAj5b6koBpwBLHsn 0.00073418 -fiat/revs sendtoaddress RWDiUKGWww2SAcHAfLyycWfDkMyA4p4nDh 0.00074330 -fiat/revs sendtoaddress RP2PWmFr6nd4ZrW6KuX4Ecjaqwe4QCQM6P 0.00074424 -fiat/revs sendtoaddress RQQJNSwKdgXeD5SuCSNfYBVefzq7FGHQyp 0.00074466 -fiat/revs sendtoaddress RTKha5JFx45yRZ4gx87MqqYTHvqh5oSbEB 0.00074499 -fiat/revs sendtoaddress bXAEygALC65ZaqPJG242GBVNqUVjkdCeQ3 0.00074933 -fiat/revs sendtoaddress RJdGqPiZGoBMLBqP33zZDmMGYaBaM2gNmT 0.00074977 -fiat/revs sendtoaddress RV8kRDPNZrKBr3dqNcFto3fccYTpFeNkvA 0.00075238 -fiat/revs sendtoaddress bQYpa4s9Jh9XJ3kf3w27LchrhuZjrS27cN 0.00075817 -fiat/revs sendtoaddress RGnTRvge8ZvQXTuytgonu7BzMNv3cTCPRy 0.00075893 -fiat/revs sendtoaddress RXaZkWZaWfXykfUXQViusSBDND7b2aiBoE 0.00076000 -fiat/revs sendtoaddress RV9V8P1wTAHBhTdMV28Xn4g3Lsco51AL8e 0.00076630 -fiat/revs sendtoaddress RDAr4HKgmj11Sb4j5pvF1AHRxXWNzYw6vi 0.00076725 -fiat/revs sendtoaddress RBvX3akN9pAapqHBtUr7FP9srsgov7Z8HK 0.00076733 -fiat/revs sendtoaddress bEdcruAqmSymNH7GKjPa3iGruKPtREuaML 0.00076963 -fiat/revs sendtoaddress RMKg4pYPCANhUJ9RiQJMxmU9R4MbMP3BXb 0.00077580 -fiat/revs sendtoaddress RVGvu7rnVSfWHr3DPawLSHmn9D6SsaqsMc 0.00078402 -fiat/revs sendtoaddress RFT5fMUcJPTJEnWsSXcKmAGHUpaijgazHi 0.00078945 -fiat/revs sendtoaddress RL3USx4G6gEbsawLxGUNFBNX2JxiKnKam8 0.00078982 -fiat/revs sendtoaddress REqtGhNcfVmi9UNQmeRj1v69asjAr8akLC 0.00080000 -fiat/revs sendtoaddress RG4JWqJUKcXLu54yui1e5GGcofowyGzSsJ 0.00080015 -fiat/revs sendtoaddress RA8LeJBS5zFWRGjbysdQXXcnEuM9t28wLq 0.00080459 -fiat/revs sendtoaddress REgcM5jonZwANwPrrdCNQYkvrxybMFPUJs 0.00080731 -fiat/revs sendtoaddress RB5a5ptCABZnX3MJmLEueBFDf3CszizcTH 0.00081367 -fiat/revs sendtoaddress RUfhxdaVXiq9rS3dVXWNc2X6pXLhrpiAA5 0.00081440 -fiat/revs sendtoaddress R9yruqdTF1Pgbist9rN1EHmAbuSwutVuAh 0.00081739 -fiat/revs sendtoaddress RCeDhfX8TnCDjfTkn1waaaxRXE6EgPWCQ1 0.00082450 -fiat/revs sendtoaddress RLzyQnxLdRuhzXCBjYJ74AjvpkQqYAHfqa 0.00082503 -fiat/revs sendtoaddress RRnWXXUd7wG7a5TTGmcZR4DCSNkxLgvtjC 0.00084349 -fiat/revs sendtoaddress RTuMVn5H1sNDsEn1DwtUM5cX77LFA1468C 0.00084471 -fiat/revs sendtoaddress RBKf8KRNxgsJgFqz197A2vXn7NKp4iQiQD 0.00084529 -fiat/revs sendtoaddress RF9pebXtFA3UgLvLMRbkZYp4iXjswSocta 0.00085426 -fiat/revs sendtoaddress RJkrH9MrVsh93KJJnaCfTzgYx1tyeXHJ4w 0.00085541 -fiat/revs sendtoaddress RJrLhnWWgAThcxiXUkAhD5q4MTDuGwvHTD 0.00085670 -fiat/revs sendtoaddress R9gwEbUcg8NzCMSeKYgKQkGf3T9FsFFifo 0.00085883 -fiat/revs sendtoaddress RGvdn1mogj6fPJw679NAZFwB7g5V4ZBCP8 0.00086187 -fiat/revs sendtoaddress RFMh735fiExcqLpFhFt1SnpUr4tiGJDLEi 0.00086200 -fiat/revs sendtoaddress RAMvCR2p6AS8fhwyyTLpyWXES2UR5Tcmoi 0.00087514 -fiat/revs sendtoaddress RP5xF9csnJQjPK7P3vDbzzCx5rHdsdjKtt 0.00087757 -fiat/revs sendtoaddress bMiMfY6CB1HrFT1nT6ZLKuiSz1JT77K8p3 0.00088271 -fiat/revs sendtoaddress RCK5KqznD2G4Hw6kXEwwJ5CM3s5eXEyxTx 0.00089116 -fiat/revs sendtoaddress RMK7JA8V3P42nB9wZDYnWb15hek9ojrTHd 0.00089120 -fiat/revs sendtoaddress RQkKv7Emjarb6UgsvwCU5XpmN8QoPZhGcM 0.00089315 -fiat/revs sendtoaddress RQTZoBvPJNXcvFgmCRbpWDyiwLG5d2kFKB 0.00089416 -fiat/revs sendtoaddress REvJcweRjX7CizTr2NoWYbvFwWFsTbVxNm 0.00089541 -fiat/revs sendtoaddress RWhuDWp5UwwPCXMpvM9ecWaN4FkKqWfra7 0.00090000 -fiat/revs sendtoaddress RAMrN8D6FLK1D9YN6NvuySj1rKR5fD5wR8 0.00090070 -fiat/revs sendtoaddress RHYE8hJygggwwfuhr19QhrkXv1dwieMYv9 0.00090100 -fiat/revs sendtoaddress RJ59LZ3wqPSa8JR58mduD7K71ngv4h5wGv 0.00090758 -fiat/revs sendtoaddress RJkd4uKAfNMatWzkhgq395wCBazeH2jZ3o 0.00090969 -fiat/revs sendtoaddress RKimhBpxoTifqSvujKmLW9LDiFdUeisfdp 0.00091040 -fiat/revs sendtoaddress RGi7RA2WYynwgdMj3tJfyf7fHtCQ1bWiSw 0.00091844 -fiat/revs sendtoaddress RWLYkYmfdyLfLmWn9A6u9hHYpQJpJjpr3y 0.00091911 -fiat/revs sendtoaddress RSQuD1vLvbQfTD1ZbwQ3uEUvpsLHH1fKPg 0.00092317 -fiat/revs sendtoaddress RWDTHAfHMZbfMRhXjNiombEKT98rUzeMiv 0.00092393 -fiat/revs sendtoaddress RWpp1fhUErcLkJB6kTESZgSnzxih5sSd3E 0.00092723 -fiat/revs sendtoaddress RTAd51pr5YFqWs8MRnYbkkkYAs5T74kwAe 0.00093156 -fiat/revs sendtoaddress RXZDx67Cbx6uxs1Q6UohXfs8e4krHmm9HJ 0.00094000 -fiat/revs sendtoaddress RYNUcznURDzm6whpB5t6e3GW7dTDrT3WAf 0.00094167 -fiat/revs sendtoaddress RHu6LoinchwLr1vqKqzYsTzfAs6e3Dzney 0.00094345 -fiat/revs sendtoaddress RABwuF2QmgAwGWAah5qfxUbtaJ73EkJAa6 0.00094550 -fiat/revs sendtoaddress RXVHhcn9LK3hxZZTr5PkXPbPn91vfAQzzR 0.00094948 -fiat/revs sendtoaddress RDQNYvUfsN85TULMLk7Q2x7DacC79hEyta 0.00095192 -fiat/revs sendtoaddress RRby79a4b1YvyzEDphp5ZALs352MTpXsTQ 0.00095406 -fiat/revs sendtoaddress RErggqzhPXF7TfeE9rfohzRXZMr4uz6g5o 0.00095452 -fiat/revs sendtoaddress RT4gdZXNQYcgCXZKa56rBKLNPnkaUgx47T 0.00095499 -fiat/revs sendtoaddress RQfgFhunKd8bhzoRwPP5G7dfbJ1xHouw9E 0.00095798 -fiat/revs sendtoaddress RHJZQwuV5151jvcMLo1XZqwjt2oB6fGZ1a 0.00095887 -fiat/revs sendtoaddress RY7Saaz42fsphLJK5KstcXJBDtBFkas8zC 0.00096235 -fiat/revs sendtoaddress RPyPmToCDgmuZUuUxfYkZ976QcZ4hdVtVs 0.00096707 -fiat/revs sendtoaddress RCRTpjHq9n78feLyz2GHTedCaWNX7cb3yY 0.00096718 -fiat/revs sendtoaddress R9ZmSiyXLXtzhjnD2UEcTds8HEGKCsnQSx 0.00097394 -fiat/revs sendtoaddress RWbcn8TFZ6dBEakADScBnXYdhQWrnWpxh3 0.00097410 -fiat/revs sendtoaddress RUpNKfGUuadEXGGng5HEATstbBiVLasBNi 0.00097682 -fiat/revs sendtoaddress RFa9TdVgG52CWE6GfrYHyHDYwVRjGNZnpR 0.00098068 -fiat/revs sendtoaddress RDvw7pNuvdVhxro1KH8eaeJTmFuZDge1k3 0.00099179 -fiat/revs sendtoaddress RGoCH9AM9njTLhB841TyoV7uqnuUsXVSEz 0.00099866 -fiat/revs sendtoaddress RYMJ7TGtpPsud4EqUWwVo1WcjkoqawFspR 0.00100000 -fiat/revs sendtoaddress RXjjesrXesx212E3b7rZreW8EXXMfh85Pk 0.00100499 -fiat/revs sendtoaddress RN6qxPwf9o5s4MPuNwgFVPjZCz22hNqTAa 0.00100826 -fiat/revs sendtoaddress RJ4SEsERSBk7UiLwAQ9QMrKus5gEDsSfDW 0.00101050 -fiat/revs sendtoaddress RB7stqBVAq7LwbFyJzAbYN9g3usQQA3nHH 0.00101628 -fiat/revs sendtoaddress RG2wTVsq6wriSRJiGBaVkW5Lm74Ggr9rnD 0.00101881 -fiat/revs sendtoaddress RVoSeifwHqaUCv6ZqvP6SrXUBog1eGico3 0.00102000 -fiat/revs sendtoaddress RBcUqXYA3tYqwCrWFKUfbT5qBceTE4Yt3f 0.00102117 -fiat/revs sendtoaddress RDPDpzbEfsTBrD9GizgY2j7TJTonVmd1Wu 0.00102161 -fiat/revs sendtoaddress RBtNyxzT7y5FrVBaPEmvovKmFf9YuqpmHb 0.00102193 -fiat/revs sendtoaddress RTDFx5D6w1c9mJaDwzyFjt3H4X42Tbn6qN 0.00102322 -fiat/revs sendtoaddress RSe3v4kdwbAkHocxLednw3RqrA4ALhqMV7 0.00102493 -fiat/revs sendtoaddress bUV5MoYe6d6iKAFMiLk1zt1uBwWcDQQYQv 0.00102628 -fiat/revs sendtoaddress RNUyBuiiCAaJqcFNikLkGnaYtmZNu3L4Nz 0.00103228 -fiat/revs sendtoaddress RKeg7sfZkLtmkuQoh5wYFdwmDf22PGwC1W 0.00105543 -fiat/revs sendtoaddress RYSqArowEwE9psjRWiwWHPd8YHGKzhRZZ6 0.00105720 -fiat/revs sendtoaddress RFeaFocPpVyqrp6gMvWFFZcEkPJ53VwFx6 0.00105999 -fiat/revs sendtoaddress R9rZHhQmqHHE8eXBcY8H2Q9ksGVvLYQpBo 0.00106356 -fiat/revs sendtoaddress RMqNpE4xiR2KM5pmBvDoKMBtG61AKk9N51 0.00107342 -fiat/revs sendtoaddress RV54BJehmoUq7oF3o2omfj2Qy3Zrjqfo7L 0.00108000 -fiat/revs sendtoaddress RSP233fQLPmw3LoJS3gU1ktfu5y3Zokmvo 0.00108278 -fiat/revs sendtoaddress RVnrPsX2eFrvZNPYRm7xpPJpBtW4X8yK1Q 0.00108851 -fiat/revs sendtoaddress RPVRCZkcWBNZ2zDVfZfyYsw6NsUCySyrjv 0.00108966 -fiat/revs sendtoaddress RCs3DPCS7eitMkzwpR89MG1JdmdCkrB3EG 0.00109750 -fiat/revs sendtoaddress bVvm2PEEcz2ZA3nyWjo3UcRPhNLpgWW3En 0.00109937 -fiat/revs sendtoaddress RHDVkq6vDg5tLZPsVx7hGDGd8d44HV7BGn 0.00110000 -fiat/revs sendtoaddress RMyUf1tQdkitnBku8JPSi55WPxj9VPHLCL 0.00111410 -fiat/revs sendtoaddress RYRvcFSsQx2taRx7Wtnp48xeUWjhapzFZJ 0.00112000 -fiat/revs sendtoaddress RNZ8NYMj2G8Ft9YvGqLuseWyTVGRYkaQwP 0.00112015 -fiat/revs sendtoaddress RBtHCK8pgTGHQemvv88G8dtKPAvVidwxY7 0.00112077 -fiat/revs sendtoaddress RBJc17RnWR38RR1nTE1Kin74Esys3kHMUe 0.00112157 -fiat/revs sendtoaddress RY9VBtD9a8x2cPfFVn6MVYPUuiaCDQ1gza 0.00112184 -fiat/revs sendtoaddress REZAMSG5kbcnJUJfDjwE5mG66bD2duP7Yw 0.00112379 -fiat/revs sendtoaddress RLv2A6YQYUfcxva4SpDkaX9zQ6ceqXumt4 0.00112457 -fiat/revs sendtoaddress RLHCNBdenBC99kWuQwuF3pKRUmATvzLhYo 0.00112500 -fiat/revs sendtoaddress RMv1m3DSRUroKgMRmwh95Pn3hL8L7t7UkT 0.00112954 -fiat/revs sendtoaddress RVqEqAcanMoM14DCHJpss9xDS6sRmJemhx 0.00113316 -fiat/revs sendtoaddress RFDPvEYvtvcFF4tCuM2A5EQdLF7dQoKULp 0.00113722 -fiat/revs sendtoaddress RDTShj6oAMvXn5UsvtGV2gQA13whDsBRtK 0.00113789 -fiat/revs sendtoaddress RTYYhB8FsyaTVPiRUksrDkz2u4ZrkL4EM6 0.00114196 -fiat/revs sendtoaddress RSkdGEfLPAvmWxBoNjVha2U2MjSBgXJpqk 0.00114220 -fiat/revs sendtoaddress R9eW4hVmhGYCExBSJ15vX61fEoENgDvHhj 0.00114474 -fiat/revs sendtoaddress RH9Bfv5eqq6bxdSC6aUW1MgzWeE5yDvyAX 0.00115100 -fiat/revs sendtoaddress RKxXKAiACPiYnQGdpgww6hgkgKRcXCsaUF 0.00115291 -fiat/revs sendtoaddress RCBJERdhw26qVkpyv5Gpo6bkYmHuSBD7hH 0.00115459 -fiat/revs sendtoaddress RFLfsRGBKcshg2Agsaiy22HYtxUZsxqH29 0.00116000 -fiat/revs sendtoaddress RHmiZgYDY2UXXc65hHp9o1urBUtgcHjDT9 0.00117000 -fiat/revs sendtoaddress RR9UL9qbzp2QmorbYMy77tdCGTn7Htw524 0.00117253 -fiat/revs sendtoaddress RJTfjsppmP7fHyxy611qSnAWh1XH1fo3TY 0.00117419 -fiat/revs sendtoaddress RV2CJA9Nx9qKEZj513r8qPGg1E8x9AJM5Q 0.00117906 -fiat/revs sendtoaddress RWVi2CA1L7oSDLozSNeKM9oRD14PQdtvAA 0.00118050 -fiat/revs sendtoaddress bRhtXeh1QdhP8ffbDD4eUBcuEmvXMdWLMN 0.00119077 -fiat/revs sendtoaddress RVRvm4eMSv63wU5ydE7ozJtDEdKrey4Fdn 0.00120000 -fiat/revs sendtoaddress RAHqWp6WMAU4YjxjV7gpMj9gmutSZXmFe1 0.00120129 -fiat/revs sendtoaddress RUBqTKa6qPYtUERRUouMLM4vcQi1ZXRo8h 0.00120211 -fiat/revs sendtoaddress RBy9V1tBN5ZMXkD3MKkCvpdh9E1WgpqVF2 0.00120607 -fiat/revs sendtoaddress RXDReuAEZneRBqMqtC3XaDsAwwoMQMB3j2 0.00121214 -fiat/revs sendtoaddress RPwgb35yyqYCb7jnPr6soy5eG3yKmyrE1x 0.00121500 -fiat/revs sendtoaddress RJZjwQy4ZYeP2bVAKp1p6JPZeQYMgiBK2u 0.00121903 -fiat/revs sendtoaddress RHCHMSCK3wTCWkp1mRxu8HD6gLkb8ebmTV 0.00122536 -fiat/revs sendtoaddress RTc4SbEqqzPrfwF4CoiYNQgS2aBF2QCbVr 0.00123825 -fiat/revs sendtoaddress RWDcKDg7ybVXGx5DsjBR731BaaPULtTJoJ 0.00124426 -fiat/revs sendtoaddress RWFv11rU7XgFxtdHrB8PVLY6Giem6icSwk 0.00125000 -fiat/revs sendtoaddress RB7sSP5grUz9uBS7xEAdxcjEr7mx425qUK 0.00125992 -fiat/revs sendtoaddress bP4PKdxQyNz6BuSLUartBBfgWkNTPUqyTK 0.00126050 -fiat/revs sendtoaddress RK9PCfvRri9cQKzVL8PB4jiw6YujhVhb1N 0.00126185 -fiat/revs sendtoaddress RWoZFsgSXDz5oqEuu6SJAJzC2ddyjogdbb 0.00126264 -fiat/revs sendtoaddress RBUTmA69NXGBvkjbDTj4aDhj5ZjdwNoUdH 0.00127220 -fiat/revs sendtoaddress RFiBBFihu6VXNgugZYzUEpcwEELkkgo7TP 0.00127450 -fiat/revs sendtoaddress RUd6cz6fkb5fLNZQ3u6BBKXwL9PopbTW2h 0.00128110 -fiat/revs sendtoaddress RQJKriF3sdCzoDzn9jHFkkHGtThBdRA2Wh 0.00128159 -fiat/revs sendtoaddress RGQqUgpE9yCYnSh7rSr8UyrJCdXiyQPYHv 0.00129697 -fiat/revs sendtoaddress RKy9nB5frvgtCKvfkosVGtRH9xJVEuCEfR 0.00129729 -fiat/revs sendtoaddress RXvX1hNmDfsGHeqRwv2fBxW4DUmPtPEZ6q 0.00129979 -fiat/revs sendtoaddress RCoNG66Yi97QS5RoGzmEi6wzbyqxFuqVXW 0.00130000 -fiat/revs sendtoaddress RMTy2CPmBDDPhrM7o4HSaTBJjMVHfqzRnV 0.00130078 -fiat/revs sendtoaddress RWn1V4Z7XjwRBSkkNNwWCT8YQsvsodjs3V 0.00130788 -fiat/revs sendtoaddress RSnPJHvyykq2D7U9fZdn5Nb4XqvXMicdjb 0.00132832 -fiat/revs sendtoaddress RJfqkQ9mTevmALSvL4KJP7Rhi33YCwdkZi 0.00133333 -fiat/revs sendtoaddress RTp74VhxTjBFrYWQdo9zq1H5FrRehq6XgJ 0.00134093 -fiat/revs sendtoaddress REDGpkFkcNDSZkqNaU6orv9xhLV7JrwZaR 0.00134598 -fiat/revs sendtoaddress RThY6h5nmpJ4mZGGHodso6eZGhGPesFohT 0.00134621 -fiat/revs sendtoaddress RFza651NX8k61ZSChgLR1fsKJVkL6R9fnE 0.00135000 -fiat/revs sendtoaddress RE6aLu3qTf7gJnTMG2KB4WWYQ64TPDtNYm 0.00135695 -fiat/revs sendtoaddress RS36TAf4GAyZgrzqjG2bQq25EigBGBKx1Y 0.00135906 -fiat/revs sendtoaddress RQhYeke65hDq9PEBAhJg6GGSW2rX74oQ8X 0.00136000 -fiat/revs sendtoaddress RLNznYPvDoeVkvdoomoUbf1vQoKzdLXwj6 0.00137215 -fiat/revs sendtoaddress RBJ6aCCVX6x4ouTcS3NmYEohvYB67iomWk 0.00137398 -fiat/revs sendtoaddress RGurnYnS8q6a9t9TLEogjMNMAWexQ8GBBe 0.00137410 -fiat/revs sendtoaddress RHEg7rEq6qBaR8piqmzmY9aer54AKJxgqD 0.00138857 -fiat/revs sendtoaddress REaTKxEtv8h3aXyPRLnBrFUCBETg4wahvi 0.00138860 -fiat/revs sendtoaddress RW52z7Lnmw6uAYCvFJUxDZsBUmvmNCXHtU 0.00139082 -fiat/revs sendtoaddress RKqwuNjkLMH8wUKLWsGxRVqPg5SZgpNjgY 0.00139100 -fiat/revs sendtoaddress RPyg5WVyPMaAGmPHTwDBazH7WGjZ1fCX9S 0.00139250 -fiat/revs sendtoaddress RGD6D2fkP2ujAHWUidL6Ldy2vR43BXGgoB 0.00139263 -fiat/revs sendtoaddress RNCvV9bsZHvRrTxbbdxcKfLUJ9PXcoRWCr 0.00139999 -fiat/revs sendtoaddress RYFmyVtYRXVCsBDadqHL9m6tH7XfjE3gNJ 0.00140000 -fiat/revs sendtoaddress RS6YgXwoXE7tjG61LAoaoGN8muKLvyZE4d 0.00140056 -fiat/revs sendtoaddress RGH7VYRLZfUvC84TxdE6AWpZmBH6tsLhEp 0.00140300 -fiat/revs sendtoaddress RQzUtcXnFFbZpNriJgyfk8irYQ33VnHbhb 0.00140357 -fiat/revs sendtoaddress RLG8nBiYYAESM84x7QQMq4AfyygcfmjYfA 0.00140781 -fiat/revs sendtoaddress RC5wCpt4UPNAKhV1zNNXC9BzH3p7Y7V1An 0.00141077 -fiat/revs sendtoaddress R9M7UCxaeWd3zQ2z4aehY9zkAwCpXkJ6q5 0.00141800 -fiat/revs sendtoaddress REe12MZFdWuuG5R2T5AhdzcvXSY1yBPK1e 0.00141801 -fiat/revs sendtoaddress RUFG6SKsNeHdYjpKWj9DNP67YRaJuRLSdo 0.00142035 -fiat/revs sendtoaddress RDdYMxYEpkhuXoqAqqu4hkQNm1KYgfXBy9 0.00142811 -fiat/revs sendtoaddress RFaY8baeGYeMm3rdxSF2Sitb98Ly8C8kUo 0.00143333 -fiat/revs sendtoaddress RWWQre7BrSCAL3ApjBN3sjR4Cbc3DqYKtu 0.00144000 -fiat/revs sendtoaddress RNv2PMk6a818pjKCTbkivcxA5XbUeqB3Xy 0.00144146 -fiat/revs sendtoaddress RRnqbhAn1QmyLZ4wq3p7NjPae3P91yW5Ej 0.00144507 -fiat/revs sendtoaddress RHoSzjL9CVoJixgD8s8UpP3Gcng1GxmAux 0.00144661 -fiat/revs sendtoaddress RXSbVFuguub2y98xYAiDUAbp14GWA65R1X 0.00144815 -fiat/revs sendtoaddress RRFTDCTj55M5HsqrAfECug9dFRdVbLvGJf 0.00144970 -fiat/revs sendtoaddress RQWhJJE3tbeiaPCButucaQ5j6JXZ8z9auK 0.00145036 -fiat/revs sendtoaddress RH7XSviZpEcnTTLMs2i8TdL7ULdDWznHUh 0.00145164 -fiat/revs sendtoaddress RPc8AUYzynLaFpmTMevuVY4J1TqT5h7UHW 0.00145431 -fiat/revs sendtoaddress RJ9jYGEL51hVbHXFngejcrdNNXSAaNeyRm 0.00146215 -fiat/revs sendtoaddress RQkmomyRnrhmdfDZfZiZm4poJC5gwwboSV 0.00148451 -fiat/revs sendtoaddress RQsXxeSEk3wMn6m6VB1jCFyiR71UnMawB5 0.00148547 -fiat/revs sendtoaddress RHi8DDS9FqDdtnt9nC6xceKJVFT5D3Cc8Q 0.00148561 -fiat/revs sendtoaddress RTNX7wpYoNdvUoSMRdPNWQzL3AMDST36rZ 0.00148577 -fiat/revs sendtoaddress RRVoAUgBRJsiL5CZmS1nRm9NqUQgWuJ6uj 0.00148608 -fiat/revs sendtoaddress RLKNFzuGy2dWGxQ8iPupq1jo7UsNr8bdA2 0.00149988 -fiat/revs sendtoaddress RA37kiuoH7ijrY3Cs3odni86pTCJAeGa5C 0.00150000 -fiat/revs sendtoaddress RJWmGzaLg5a79FQfA3fXE2mPqAzS2gokX2 0.00150698 -fiat/revs sendtoaddress RP3TH3wS3X4mNFHmW5juiGei116Q21VyU9 0.00151549 -fiat/revs sendtoaddress RNALvsX3e3yNBy7JGCepvjh72LuxmnBGdA 0.00152000 -fiat/revs sendtoaddress RG2j3GUPNDrCJNLkPJUqg7aZhHrac1tScV 0.00152441 -fiat/revs sendtoaddress RRy3EUvjPJNqdswvTBhoYF6pZWKukXZB8r 0.00152494 -fiat/revs sendtoaddress RXCn6KJesqRR3uqabxhFJt6YU9ThM1ViUX 0.00152837 -fiat/revs sendtoaddress RAZ5BeXSdwtpMcwGE6Bn8zb7a9Niem9TUB 0.00153189 -fiat/revs sendtoaddress RFaWPeWNBbAsfccbX7xZb9ULNzuoEYhjGW 0.00153300 -fiat/revs sendtoaddress RDDksM8G17qGSztTDVvr24PCZ2EZMWLmEW 0.00153393 -fiat/revs sendtoaddress RXYmQH26fYDfUT3ygBtRtwqhY6zNX6oEGN 0.00153673 -fiat/revs sendtoaddress RMDsMSo8KPKPJG4dbvHnD8phviLxNRxrPU 0.00153991 -fiat/revs sendtoaddress RN39N98tcKKcZa3hQMcnB6ytSenFa5aQey 0.00154389 -fiat/revs sendtoaddress RNmgrHHSs1qG2U3CJd5a89rX9GKLGaGpfN 0.00154576 -fiat/revs sendtoaddress RApLUFSpBEQ2inmZy1yheEuzBBoNbj4HrU 0.00154579 -fiat/revs sendtoaddress RRMDHYr22f6smxKCySRawaPZRRz6DeBhjK 0.00155044 -fiat/revs sendtoaddress RSgKiE5od1cGV8htRpgrUyBMsmctjyPjB6 0.00155159 -fiat/revs sendtoaddress RPXjZp7sSJG92M9fWcuAyxVS6fNNo1H3ki 0.00155355 -fiat/revs sendtoaddress RNbjwxgpXrW6hr8dx22LruZAXpoEdeiFdc 0.00156576 -fiat/revs sendtoaddress RFDqgJ2yXB4L3TNebcLVdCGm3vU5FdgUc8 0.00156602 -fiat/revs sendtoaddress RGPNzV1MFCYhi9a1oLJFUfnQxcjmSNwygP 0.00156757 -fiat/revs sendtoaddress RGNddQ8oqqSMSLMYRBeHPAQvyNLzH3sNME 0.00157287 -fiat/revs sendtoaddress REmwDkMpq1CYrmyqMYB7oPsTcug7zLWzQj 0.00158088 -fiat/revs sendtoaddress RNRYMiXY4HgdPuHWbPiRqFSZSH5PBSGkFZ 0.00159044 -fiat/revs sendtoaddress RGm8zNcoA2ZGr52KEA2jbTUZeQm1V2Et7d 0.00160000 -fiat/revs sendtoaddress RXqsSBHA3trbtRygCAe6GnUV4zVkDUnWgf 0.00160889 -fiat/revs sendtoaddress RV8dbiG29i5M58WAgLPdvN2B3yMhUun1J1 0.00161329 -fiat/revs sendtoaddress RKvxxfU8yBvfrUz6ucip8AvUBA712dNrEn 0.00161373 -fiat/revs sendtoaddress RM5HTwVGUDGgTeZG45tRBPLK2Ago3Ag1Rv 0.00163333 -fiat/revs sendtoaddress RQ7jWY5kE19hpCEsZ3dGkh6gPT3nC5HBtU 0.00163780 -fiat/revs sendtoaddress RWnXw1DVmoGRNLYsFTSaJdUNmv49LC7XQd 0.00163974 -fiat/revs sendtoaddress RMKrBDwzMGsnan3EeEtxQsM1evXsUsv1b2 0.00164654 -fiat/revs sendtoaddress RRnWPs3gKZsP4gVoKi3QRSRsZC3DuFGKRL 0.00165409 -fiat/revs sendtoaddress RBTNh41REkxh6VysAn3K2vLJAKU7JBYX3v 0.00165564 -fiat/revs sendtoaddress RNqn76tnLVjfPZUVkVQvnYkS6PHeSfzTbo 0.00166000 -fiat/revs sendtoaddress REwn1pUyDsWFr2Hnfm5Dted9q8EjL2XGNc 0.00166359 -fiat/revs sendtoaddress RV37MfeBD1QTeoLHteab3j4mFVrsSaGMJx 0.00167000 -fiat/revs sendtoaddress RDCexddsQR1p9TBUHh2gsuTUqgrGyShEMP 0.00167100 -fiat/revs sendtoaddress RKDdR8Tu9MN3pvuDw7kQqtYxAWk5iSF9cD 0.00167115 -fiat/revs sendtoaddress RJ3FKYWoeCYvz1jmcnpS534nPeApKfbqYK 0.00167445 -fiat/revs sendtoaddress RQeph7ZnBNh2puoVxPb879yGuvoGkyupcg 0.00167600 -fiat/revs sendtoaddress RWskZWQ2HV5S8kXaoTyVi2X1TJo7xL7usL 0.00168697 -fiat/revs sendtoaddress RKVkfF3VQvHP6M6hFPUREH2szFsjCcqQDc 0.00168960 -fiat/revs sendtoaddress RAkmrQM6tqF9caHbFyq5PaqdaaR1UeMceL 0.00169608 -fiat/revs sendtoaddress RFgfhL7GhpDHbPgJpPXuRY7CmKHEuejFDj 0.00169698 -fiat/revs sendtoaddress RNe4w8ecJBKXdorsbEP23VfJuZFSuU5D2g 0.00169786 -fiat/revs sendtoaddress RH3LUtGCjvYah4yLbEj8LvHeTfGPFpTAEf 0.00170000 -fiat/revs sendtoaddress RCgdtQ53mXryEgwwYqrjvdHV86PJJ9b9BM 0.00171654 -fiat/revs sendtoaddress RFSkQDLjcusMZj66zMfmVTAfxH2qNHQMyt 0.00171884 -fiat/revs sendtoaddress RCkMDaPzgfJtQBuN6jSGRPB8iwqA5Ky1Q4 0.00172670 -fiat/revs sendtoaddress RShDitn777KWUDdkTcLHNWRuwGYuyNZbnx 0.00172766 -fiat/revs sendtoaddress RWMWtYZzMJA1SyUhA4XkZcvcdrcBnJ3bzN 0.00172927 -fiat/revs sendtoaddress RP3WL1cy3VS6J2tYyke81MFzwBUja1eKA1 0.00172936 -fiat/revs sendtoaddress RKJcnBJsj4yGehCjinQsrL8VDaaHZ2Sg8f 0.00173333 -fiat/revs sendtoaddress RSzXUBKxQyVXeZcggzYipyAaP8HBSr7xcL 0.00173355 -fiat/revs sendtoaddress RTMYHupJHZcNdXNFEN8D2GMfzj54wuQDrr 0.00173993 -fiat/revs sendtoaddress RJnjSMUN1R5V5v8HjkdAs19UScgdSCoKsk 0.00174135 -fiat/revs sendtoaddress bJ5spiPdoSqTpAYAvJwNEEMHGb5LdePCGv 0.00174497 -fiat/revs sendtoaddress RASakeki9bt2H1VJ31fwVLY7dh1xXCiY9h 0.00174905 -fiat/revs sendtoaddress RX3XQsK6ECv4ju2bVMHpStYrPv5mXVdChp 0.00175812 -fiat/revs sendtoaddress RJ4XxnUrRhdMUC4AHQ6FCuN6nQMRrom8mw 0.00176083 -fiat/revs sendtoaddress RGQET7YQnpd6CCT2m5VBrEWQuzEo9gfGWA 0.00176279 -fiat/revs sendtoaddress RRx6NXa62xJQvnagsoDLWXfyYMC5aypG42 0.00176353 -fiat/revs sendtoaddress REjBNXxCA69F8ZwZvuRScRcGaiNUG6KGy9 0.00177339 -fiat/revs sendtoaddress RQwpS4fRptjEvMawGRUbAu74vMLhzryFAX 0.00177458 -fiat/revs sendtoaddress RX5ESnNxB6gde34pu8rAyD5B4WMbMTM8dT 0.00177505 -fiat/revs sendtoaddress RPJY9xxYtp5Nojio6bhsKcW6qRHaLFjQXi 0.00177933 -fiat/revs sendtoaddress RV9DVNCSdtq5PRDSFmu1cJT7vXtNU9eUJE 0.00177997 -fiat/revs sendtoaddress RYTk5XMNjeds4FXw5z693LGreCuTLke6FD 0.00178240 -fiat/revs sendtoaddress RAT43A36pm2yvgcz14xUnW775dRPGVLawh 0.00178273 -fiat/revs sendtoaddress RS7UwqXVxjBqWVzzVJ7sHgUiVcib3ZmwK9 0.00179087 -fiat/revs sendtoaddress REUb187i9zTAE5Tny1N3Hg1Z7hFfP1sWEU 0.00179136 -fiat/revs sendtoaddress RXFp6rtqqo5WVctcZKNGs52mFYaoaxCJGj 0.00179541 -fiat/revs sendtoaddress RLx9NQ54z9R65rBusU83R4bFT6qmNNHkkm 0.00180000 -fiat/revs sendtoaddress RVQFx6vdjLhx8wRFiwtdrUmHdz76aGpDog 0.00180530 -fiat/revs sendtoaddress RCSg8zE5afYkrfVDTL2gxsgVQ6xzUFyhUC 0.00180566 -fiat/revs sendtoaddress RRfWYAfp6Rwna7X7L3gcF9kM3xKpM9uGTk 0.00181056 -fiat/revs sendtoaddress RTG7rUtVu85A9t5qSK9p9pkzUvVH68SHW6 0.00181160 -fiat/revs sendtoaddress RBXfuevGTVKpxiMYmC6Rr3AhCVzWCTxrA5 0.00181206 -fiat/revs sendtoaddress RSbp4dsvMVu6K2cyQbRjgtxFJWV2L6nb3v 0.00181502 -fiat/revs sendtoaddress R9qfhG7LNMHHfVqLkuyxGk6K1UmVeBH7os 0.00181766 -fiat/revs sendtoaddress RFpWX1RYTsdSGmefDLDWwhLAzP9ZwbmsCd 0.00181924 -fiat/revs sendtoaddress RH6KoiuWtRjandXha4EziHP5PYrRLEmdXY 0.00182000 -fiat/revs sendtoaddress RFbU2c1w9BcCw3WSHMiPXikG6VPW3t17Eg 0.00182485 -fiat/revs sendtoaddress RMqtG9aQ1mLoY93bdwEXXo6zinzYbzH7L1 0.00182577 -fiat/revs sendtoaddress REjUG1UBHtiLUKFtoThw6tvsKtS1DEUVb7 0.00182762 -fiat/revs sendtoaddress RShqK83q4QBNbPJuR3ysa3Kts6MZJg61kg 0.00182899 -fiat/revs sendtoaddress RGvwfCTvfM7GBy4QeQbqALa5NphrMSXE19 0.00182929 -fiat/revs sendtoaddress RRzF8NaS5X4PPTCuTnyJmzAaQALeN2ESKy 0.00183611 -fiat/revs sendtoaddress RKUHmY7KFPY8DPARxtsQ2JpVx7XtxMrSkX 0.00184000 -fiat/revs sendtoaddress RFwinMVEPWFQRFxwDf4ZeYr2w8ttV3jynV 0.00184045 -fiat/revs sendtoaddress RStakmXa3CsCVs18n2tZtdic9R8guLNdep 0.00184106 -fiat/revs sendtoaddress RUWNgi46VAFtMEvS7S7RTbh9DCUR5PAmC6 0.00184439 -fiat/revs sendtoaddress RTTpRrS8RoSDXUExRuU67Cw6LQ8n4pJYXV 0.00184500 -fiat/revs sendtoaddress RC2yPp2r1JNgjk9c2KwxJ1A1arifhQ1gkY 0.00185426 -fiat/revs sendtoaddress RLuGgzU5GCiwCM2CkAFuWSsprUhg9b1Eiq 0.00186231 -fiat/revs sendtoaddress RRQpyXT4CokzFR7dnNFt471TNrvo7hvoqL 0.00186311 -fiat/revs sendtoaddress RWYa5g7u2cDemm9Yb6ZdwVWLXDy9is2jSy 0.00187455 -fiat/revs sendtoaddress RQdtzfkyPJCpki6SWv5nALAAJY7ucQCh2u 0.00188008 -fiat/revs sendtoaddress RULtdK7Y6voGiBG8w1iiiZd47istMDRFEF 0.00188348 -fiat/revs sendtoaddress RCgq8eFejNHoXSadwuecYffguqyFBBmrku 0.00188768 -fiat/revs sendtoaddress RKFekgD6MAMYpPT3SimfKrpbYmWLJn9mAT 0.00189000 -fiat/revs sendtoaddress RMkJJV42BbE1QKfjxB3257DKf2JN7oGPC6 0.00189442 -fiat/revs sendtoaddress RMhuTyUELSw9wMKsbqiW3s7FnLiav5uBe3 0.00189719 -fiat/revs sendtoaddress RGx9anjQba8UE8LJ1fSxQVV6AjkNr6WFnV 0.00189863 -fiat/revs sendtoaddress RVZYP4ZQzAVCyhSqtT72eUj9bVm1TxPzPM 0.00190000 -fiat/revs sendtoaddress RAiK849uoN4QHZgkNH4jHxAv8P1ZEaYodR 0.00190134 -fiat/revs sendtoaddress RJRAfaYJHw1ihvhAhXYvxRWXwSSadSGNb6 0.00190385 -fiat/revs sendtoaddress RNZ4nGZBF5tvgwSQgNNqhqYoFpb6bUbCTw 0.00190815 -fiat/revs sendtoaddress RMmD2aL1fpZb8rkLmR1twJM3pAZxRb2f1p 0.00191899 -fiat/revs sendtoaddress RUGY2tyJYVFrj1p7e2hVFuzZZiSQPwBgA1 0.00192110 -fiat/revs sendtoaddress RAV7QoiNQoQRdi2ZMG2GA5bawDjwd8CLX5 0.00193500 -fiat/revs sendtoaddress RJdS9utHk5kVNtNnrKwuf4s5pspd5MZPJf 0.00193501 -fiat/revs sendtoaddress RYYbhgAQwfQvAgbCrSgg7WvxQsfNgA8JGj 0.00194330 -fiat/revs sendtoaddress RUzqovHqDaMDRozDQkvB3ub1f3ZAfiEJCv 0.00195038 -fiat/revs sendtoaddress RNBuo6Dwhdf7bGN1paXuB4MVqezgGvJqZc 0.00195512 -fiat/revs sendtoaddress RCkX7xEnJM8NVFkEbXUQzpaEUrAVjcZiXx 0.00196000 -fiat/revs sendtoaddress RDDyDjBsxfpGE5Z5bK1SX5fCuW5VdrG3f9 0.00196552 -fiat/revs sendtoaddress RAm9ceogNJv5Ce95ZYp4WqSm6eiqRcPZdi 0.00197074 -fiat/revs sendtoaddress RAxUWnciUuHbHcdmvTu7YbUvebWW8x7aBK 0.00198000 -fiat/revs sendtoaddress REKnkrbpQYFT92oWinHRyEAQyyDXVH1kHr 0.00198589 -fiat/revs sendtoaddress RWx9Aa9FmSbeM5oH3APSdXYUd6gqnRFiWw 0.00199947 -fiat/revs sendtoaddress RCrUqKoodLH45fPdAU1yf5HRHjMJ2cpiij 0.00200000 -fiat/revs sendtoaddress RB8QJBwGeV94xHSghzMAzAHU4bghiFygyW 0.00200097 -fiat/revs sendtoaddress RUhhdL8cmTjReV4AgSptJHfAwTARQ9uuHv 0.00201096 -fiat/revs sendtoaddress RTbq9Y3ELg3yXjiRGzGu5oeaF89ngFXQjk 0.00202124 -fiat/revs sendtoaddress bVC4WDsetBA62s9FJ3qcgZtwatu4SABNgo 0.00202350 -fiat/revs sendtoaddress RKGPi64sn4raAAturuwFTnZtS2G3huXxwz 0.00202500 -fiat/revs sendtoaddress RSfYMSpamdfbucwdRaLGSxc96wuQ1n3jhD 0.00203461 -fiat/revs sendtoaddress RWNYSGJs4raeSXD9x8XQrRucu3Xq7C227x 0.00204000 -fiat/revs sendtoaddress R9QQv9F9b4rm1zER9yUdfwmRStiF78FvDv 0.00204814 -fiat/revs sendtoaddress RY7dox4TpmvRHDYqKtae9M2TW4SWHyncyV 0.00205105 -fiat/revs sendtoaddress RFqp2Zpx4gG8v8pc3P7vGVHiboDHrDoVDp 0.00206565 -fiat/revs sendtoaddress RJTKsexemHUL56qicok2QRrefbGCn1TPN8 0.00206874 -fiat/revs sendtoaddress RQtvERR5krE57raqBtR1xDwrRtmADWUQfu 0.00206917 -fiat/revs sendtoaddress RXvRVY6YF4AHXiVE3vv5WDBKB4Tsf7C1YK 0.00207000 -fiat/revs sendtoaddress RKgjr5nK7AkFkXHvFGUVcN5P8Aurihy7Tf 0.00208653 -fiat/revs sendtoaddress RMkSWmcGn3LzWkx3BySBnqdZ3qqbjpa9af 0.00210000 -fiat/revs sendtoaddress RLVjYeyEZfJh2Ee5zMugPF5TwtPGNLhyhK 0.00211335 -fiat/revs sendtoaddress RXAfhUXp1tqaZZqVr8UxoQQkYSPXD92SsW 0.00211741 -fiat/revs sendtoaddress RVqryav1QCJgZnAGejqkggennp6dKDeHqw 0.00212967 -fiat/revs sendtoaddress RQMpzX58t3ERid92MYbY1dddGaFmsjvGvr 0.00213643 -fiat/revs sendtoaddress RC8URnszMKkWFNzXQSKrZtNnf9pephHUwV 0.00213965 -fiat/revs sendtoaddress RL72hip4i1Gx2bVvWaYxc6M2HskqgLZBLH 0.00214489 -fiat/revs sendtoaddress RX7pjR2f8smjvjxkLyiKy1RjA7ekVqNGMY 0.00216760 -fiat/revs sendtoaddress RCwpbz3g4Ck7GnPPNUksXPTZ1NP7GaRToh 0.00217068 -fiat/revs sendtoaddress RPM8Zo4QW5NMecCc6pAFSwktyXX3ukE4C7 0.00217223 -fiat/revs sendtoaddress RCPUh6Fse45PELuQUDA5HGFhVBNFu82oWt 0.00217331 -fiat/revs sendtoaddress RHD7XADLT4YHs8Ctx8HdxTo6XRyEnYRGZJ 0.00218171 -fiat/revs sendtoaddress RCoKFFNrT2FTDyu1EfoHmhViJrRXGvBCMj 0.00218453 -fiat/revs sendtoaddress RKerSY4eucCyncBd7BdWSZEAH7VSu1HdPf 0.00218517 -fiat/revs sendtoaddress RMRJteo9sr51uVrpQEaqgczeueoqqibzbK 0.00218967 -fiat/revs sendtoaddress RGSeaJwkpyGHTe5pyXEyJcKp3gnmJqB9Zo 0.00218970 -fiat/revs sendtoaddress RKqRZXRpYE3cbfk18K8V6Ln6AU51kVXRXY 0.00219017 -fiat/revs sendtoaddress RSMwojiXo66Z6ktfaJMsYpqHyTJViBfHZv 0.00219171 -fiat/revs sendtoaddress RRJVbQkUrBvmm8hKJq5mh7NTbuv8wHWz72 0.00219922 -fiat/revs sendtoaddress RQbjTibwdi4E8ZR2hTo1L6MMsbkvJ56KWe 0.00220000 -fiat/revs sendtoaddress RWEg4HBjwcp73F5mUMnk78WP67h2cdimfi 0.00220532 -fiat/revs sendtoaddress RLxaZTUtVXND7tPKjNyNF9Abs42Jq4Dudr 0.00221244 -fiat/revs sendtoaddress RFuk8k4uk6Tmw2YtoPScoZgbvDuJxDH3Jc 0.00222241 -fiat/revs sendtoaddress RNsT5eUypd6hqVXRjy28RdJnMkoYWAdq42 0.00223431 -fiat/revs sendtoaddress bRg1qs6zncvPRUSNmDke5jGpsNonZVhh3G 0.00223573 -fiat/revs sendtoaddress RQfnBQuszuEquT7Vxuh5gWedoBZd1FoSjS 0.00223741 -fiat/revs sendtoaddress RA6yit6Hb6pciSd8FUVA4eTT9yEP3rrk7T 0.00225000 -fiat/revs sendtoaddress RLy4gVVxcy6wXEgtAyyR8Q4JWfTJp7EuPP 0.00225079 -fiat/revs sendtoaddress RKiiEMQ7mZHnVa6MJQNwp6LYeRK619qFUb 0.00225564 -fiat/revs sendtoaddress RV54t7YcKDpnpNRgyhK4H2yAfeQkAt9zKq 0.00226000 -fiat/revs sendtoaddress RQqFkBHLA2Q1pJZodRYMzyLc1nxS6DftwT 0.00226666 -fiat/revs sendtoaddress RBLBwYftLBgusK3vAgjFdqbMMHbteoZsc3 0.00226894 -fiat/revs sendtoaddress RManxVAG4KoJmKmAfyjfBmq112Fq9XMfsu 0.00227445 -fiat/revs sendtoaddress RKtNZyssCAMevnTgC5A1wGcE3WkLcqta6Z 0.00227700 -fiat/revs sendtoaddress RXsJPpt8kRYxxzzpTAkpiWfvrDdDohP5SX 0.00227727 -fiat/revs sendtoaddress RPhQs3H1kghT1ct6q9TECbha8NHQkJBMNx 0.00228856 -fiat/revs sendtoaddress RQEoZfgtEEoTt3uF6dFvZCRHbfrrzp4GhM 0.00228948 -fiat/revs sendtoaddress RCU71uBeuTkreciooCUjCuJQQ5vU3p1TT2 0.00229142 -fiat/revs sendtoaddress RB8JA6Q2RzMeJ8ybQpAhWStC13yV2WXTeo 0.00229164 -fiat/revs sendtoaddress RF8yWqxMgmP3opDURLV8V7CN3X5YWPrezT 0.00229176 -fiat/revs sendtoaddress RDpF6k7whMhyoH5Mk3FazWGrVLpoo5D6vU 0.00229306 -fiat/revs sendtoaddress REb2upmLdpLbyjxmfSUGMUDjNs8Ajy7Pr6 0.00229319 -fiat/revs sendtoaddress RYNCqaarRS1j98fzzN3Bjxfir5ugR8qyrU 0.00229813 -fiat/revs sendtoaddress RLUQmN6Doni6kojns7vGWn8P96UeLPVnak 0.00229964 -fiat/revs sendtoaddress RKRiSqUTCMikriCzjww8PJ8NwEtW2gnNVZ 0.00230000 -fiat/revs sendtoaddress RLD9RztMbA5c9CNefGzzfeGVuNzdw1MEFC 0.00230499 -fiat/revs sendtoaddress RFEJ6pj96T4hUReRAuH3sctPASczv9gd5z 0.00230697 -fiat/revs sendtoaddress RRqJHrMGyum7vCCkJWuxCQ8QJtX3U2XuDc 0.00231868 -fiat/revs sendtoaddress RDweVb84aPfmycqzc6nH3LGtZq8nYC9ofL 0.00232000 -fiat/revs sendtoaddress RADKNZ4VegLqCpzfRJrMN9WX8Nozn3wHzM 0.00232083 -fiat/revs sendtoaddress RHWMLChrFegKbi7jL7egzzt83n5cKhX4pR 0.00232238 -fiat/revs sendtoaddress R9NGQG351faUVAN52DXyyvxc8TYF7tyShJ 0.00232484 -fiat/revs sendtoaddress RRCktF4kViRKF1avqjiozSXVeYtwcesfpb 0.00232803 -fiat/revs sendtoaddress RGzJiVwYpJzdNTgXApC5A5GWNCNF82pEMh 0.00232927 -fiat/revs sendtoaddress RXcryu5hzDn21F81tK9sz9oz7vkCFpNhhc 0.00234000 -fiat/revs sendtoaddress RJyK6vkXs5WwiFXcW3yJwF5PV68vEmhHYs 0.00234273 -fiat/revs sendtoaddress RWKYEZV1speUcKFPaXswckGAfE4YnfwF1y 0.00236033 -fiat/revs sendtoaddress RSrs4rnCwM8uudGGGGyE8mq5i66o6AKomM 0.00236104 -fiat/revs sendtoaddress RLmzCjkSLXdWNgF2cZJ458w2SACFVGwtG2 0.00236188 -fiat/revs sendtoaddress RVf12bJccGNJMuBJTk9c7dPXEs95HaoKyA 0.00236578 -fiat/revs sendtoaddress RLTQZgmuzoQPTpJjPwxQ7h8KVoxbK7iMuQ 0.00237099 -fiat/revs sendtoaddress RRLvRXrTyF7GSxjKM417V2AnnvNASrQktA 0.00237500 -fiat/revs sendtoaddress RCUK6raZWheYe5Qyxp3EdFHUmRuziqbu4U 0.00237663 -fiat/revs sendtoaddress RSWfdwk7FVdWVTA2GC6bDdJVM5zdEoSbaZ 0.00238126 -fiat/revs sendtoaddress RJPdTgWcynP98j2cpwUUTnwfeWQJMze9a3 0.00238500 -fiat/revs sendtoaddress RCNunRZo4A5hMeXBZvyahbvtwZtBsfeCkY 0.00239509 -fiat/revs sendtoaddress RKB8KG1WtgFQhW6JsrFqQUJiLE5sLfVMtW 0.00240000 -fiat/revs sendtoaddress RQf2Ppqf9H9hWsNKyFw8JNbNcnvji3QiXY 0.00240007 -fiat/revs sendtoaddress RYUdXw4Cf3UjPtD5yoZ7rafQEGMbvW91sy 0.00240162 -fiat/revs sendtoaddress RDWfz17bFrzfakebU1pmZ6HEPmST2Dm6mh 0.00240950 -fiat/revs sendtoaddress RUjv1FB736TdSLX7fx5bCDjAEoPx2Zrg9C 0.00240964 -fiat/revs sendtoaddress RK5oBLryFmPGbY1uZawvrPdffUAYbpwktd 0.00241214 -fiat/revs sendtoaddress RKmUsB2Co2DJQcijvitns3KV6ZxiJAKpDx 0.00241999 -fiat/revs sendtoaddress RJZzbb12rUwBQGAFyHX1QzErs8chJVLDSW 0.00243774 -fiat/revs sendtoaddress RQ3GxUYwrT4fPE3DmsUjYmg83nLEBThjhe 0.00243907 -fiat/revs sendtoaddress RTkhSkczroDP628UoM9DMqKwEyi1UUjcZe 0.00243914 -fiat/revs sendtoaddress RLD6nfQxEQgQGesxPhetM61hrsZwtqMaYh 0.00244000 -fiat/revs sendtoaddress R9Wxst3iqtw3t5HMmnWFVkYwkQoyh1W7TR 0.00244362 -fiat/revs sendtoaddress RRh7djUq9f3Ry2AAXUE74M9TQmXgpUc3EZ 0.00244544 -fiat/revs sendtoaddress RVYsacwXZLJLCpS1z5qDN41WuTnmNGpj9B 0.00244911 -fiat/revs sendtoaddress RUj8eGRRVt6WsSGYo2CzBYcnEWKTCQU7iE 0.00245293 -fiat/revs sendtoaddress RHnFcLNqW4npFaePSFuZCxffpy7inAoDhC 0.00245375 -fiat/revs sendtoaddress RLijmmWphW6amF9LuZxQxW8fw9YaZRdZxT 0.00245834 -fiat/revs sendtoaddress RNQZvqFxJtf38oLDuXJqLA25oef5rXG269 0.00246389 -fiat/revs sendtoaddress RSrEodXFdTv2obMZkUaRiLqMyXVc6KJw2b 0.00246852 -fiat/revs sendtoaddress RPfvDDUjay6EDhnHsNsQ7PGodLo5tnq2nu 0.00247300 -fiat/revs sendtoaddress RW7d9pNJopJrYREvkt1D7rNgktxRT9NPhc 0.00247500 -fiat/revs sendtoaddress RVkUKd4qzfNUfMvX6oWVxGkTxm1e2FiBEk 0.00247673 -fiat/revs sendtoaddress RHVhxGa2kwmCZVfx8sHhYAMUCi53amv6VH 0.00248962 -fiat/revs sendtoaddress bKVAUiwEweNtBRSGjG9RSri3ARbeeb2uge 0.00249709 -fiat/revs sendtoaddress RHDEqszVquC1v3Mh3W3346ErJXYX44CtN9 0.00249758 -fiat/revs sendtoaddress RDVTxW7PR1M2vqKYZRvk6f8cGSb8ikjvkN 0.00250000 -fiat/revs sendtoaddress RQVCCAukNHw8TZ12AhWvWoCRjnvMi3wbUy 0.00251325 -fiat/revs sendtoaddress RR8QX3VXRGzgpjjRtjcbjJt7nHXcGNL58v 0.00251481 -fiat/revs sendtoaddress RM8kHqr6vfkXvNDA29promMe8ZqMXYGLRT 0.00251794 -fiat/revs sendtoaddress RJxesc43RSWFekeeCrAuZmgofNX7w3KU5n 0.00251860 -fiat/revs sendtoaddress RYcJTiry3by1WzEn31ytPq44CV1QxS1ZbU 0.00252636 -fiat/revs sendtoaddress REhg6PWAGhNCDyf5b6iDQxNHeAJVesfu5f 0.00252848 -fiat/revs sendtoaddress RLQPLcmvz3E7b83Kh1HMGg6qJUyBHCz5tV 0.00253309 -fiat/revs sendtoaddress RJ3rUEMhEcSegV5RGVdQT2RgxjE5w8fkjQ 0.00253384 -fiat/revs sendtoaddress RBDCGXPgEFuxBnr2HvkpAdLPAbqknF23tT 0.00254152 -fiat/revs sendtoaddress RMjb6nX9PyLmJs2wFb1ahcbvTpPSjjm6pa 0.00254592 -fiat/revs sendtoaddress RHW4E4ySe2CguuNDhs562zgk4usVAeHjSZ 0.00254693 -fiat/revs sendtoaddress RR2HTV9hk7EuNASnq1Ew47DRHK2qzZVUKJ 0.00254715 -fiat/revs sendtoaddress RTodUjKG8EeAvYEMDruC4sP7JGRVJsMVy8 0.00255500 -fiat/revs sendtoaddress RA9M1PN1UmJQWsGw9PJrjPTZZABX62V8iS 0.00255704 -fiat/revs sendtoaddress RQUfAnNchraV79FEFqViF62H1xQcVD7bRL 0.00256000 -fiat/revs sendtoaddress RCH4ptYxW6yCV8mEbk5wdLRWzBMGYqsoNN 0.00256500 -fiat/revs sendtoaddress RNsMgfmVWNNh2cLQoEyVyszYJC9EXCX9Rt 0.00256995 -fiat/revs sendtoaddress RXHfHkL9UqfZF5WutrUwtmxwPRgBApaUew 0.00257355 -fiat/revs sendtoaddress RG3g3keHreRZpQMwMNfn5DkhR3hJ6NxsEh 0.00257714 -fiat/revs sendtoaddress RTZWhKuf5NsFexExGModXo9H21BNXAE4ny 0.00258446 -fiat/revs sendtoaddress RU5aWh9E47LZrH44KV6ngd5WWecucM92yS 0.00258484 -fiat/revs sendtoaddress RQt61MBKuMdBFCiowAqrztzqmwprn2e1Ba 0.00258972 -fiat/revs sendtoaddress RMW4Fg6Ln42CUBwxdTrcYRUXsBnyu3viam 0.00260000 -fiat/revs sendtoaddress RTjpxjzq2dbzfwUKo6jSti724WLizs1d2P 0.00260517 -fiat/revs sendtoaddress RLQkvTkNvc5Q2A9A5jH5KiuFs2MA8mddtS 0.00260601 -fiat/revs sendtoaddress RXHKWgWyKWjJFUt76KXdCQUPJd2ZUNSvXJ 0.00260756 -fiat/revs sendtoaddress RGcevhq4L6UuYHsxKmAtZ5wyLip4KSUT67 0.00261000 -fiat/revs sendtoaddress RFB29tb7XYj4KXpEd14RwhqvcUj4nqymQ6 0.00261040 -fiat/revs sendtoaddress RCmf3dywrRtkh4VCEjMN76oCQ8oZ8HS7oZ 0.00261743 -fiat/revs sendtoaddress RDD9JqrBhu3L2KvPfxVYK23WCpbQaXKG9j 0.00262116 -fiat/revs sendtoaddress RN4V7qp2PL4ZqirHVpi4gVuVmAGq27qcS5 0.00262658 -fiat/revs sendtoaddress RHcSm2JSwLDW2uXurvdRmUDom6kY4SsBSY 0.00264000 -fiat/revs sendtoaddress RSsihcBqpnVhfRKLshBgqUYktbRVYFduCA 0.00264152 -fiat/revs sendtoaddress RTxqJGt142bBPHDHP7E2hJ6U55rhQpSeq9 0.00264809 -fiat/revs sendtoaddress RQEwhs2fp2CEmeh4NNoJPnqukHRTUX4tZ9 0.00265248 -fiat/revs sendtoaddress RLvLChTLchoK5RbF5pTFFD2UtRFbavYvZt 0.00265377 -fiat/revs sendtoaddress RSAAFMcE7petktndwnUaYnruExywX5YAZv 0.00265500 -fiat/revs sendtoaddress RYL2QA8uDcXeyt3B8trsmN13Y6cDadH9yQ 0.00267291 -fiat/revs sendtoaddress RD2xhvXyqys5U84G3aBcjKoucjLnRpSr2a 0.00267867 -fiat/revs sendtoaddress RALSGi7hiYS97ma397xJpA18PfRwc1Pv2V 0.00267869 -fiat/revs sendtoaddress RN4CNfvabV3TNrnELBwtitb9EHjoSEJ9qp 0.00268000 -fiat/revs sendtoaddress RHKgvMnYcvJuG3BpYidfDuMGRQTbG5dQKu 0.00268294 -fiat/revs sendtoaddress RLNjx82pYhJ1H1SaTPboSTRJ4EemguJC1s 0.00269242 -fiat/revs sendtoaddress RGaMPMLL9GofpEs6u97vKmKPcw6pL31hKC 0.00269327 -fiat/revs sendtoaddress RJ3AvmEHeJoUejHAgt8knncKrZoUphWPo9 0.00269650 -fiat/revs sendtoaddress RVrj3f1TEGbYbTij2WmtsQGkiDCb5DboLe 0.00269772 -fiat/revs sendtoaddress RG6a4Ppjz7Zh7swLZSwDnycw8cPcomuGnD 0.00269865 -fiat/revs sendtoaddress RGJypgJ4xStf4HCA4fjk6H6aBZ9Lna9Udh 0.00270000 -fiat/revs sendtoaddress RDg5NyRDUdJfBG3Y6nNMjvVPWemArtwfsz 0.00270842 -fiat/revs sendtoaddress RFm2FQe6B52MRzUZ28oLZCSWjiKeBshr6f 0.00271852 -fiat/revs sendtoaddress RCqouNoqgVGEkveV1ZtY6efp6wm39Vn7s6 0.00272000 -fiat/revs sendtoaddress RBegiXSemGuzvc52zbBtEhTU5L9Dk2TJFh 0.00272697 -fiat/revs sendtoaddress RMGJczat5zynm5eWkrHGHFkQZgL9p3L2KD 0.00272729 -fiat/revs sendtoaddress RCiWJJYxMCBc12QAzQQoZjsweRJVQzfhgN 0.00274000 -fiat/revs sendtoaddress RWuHrzqNrw7TiCJtQ65fuFnnH3ababCczH 0.00274212 -fiat/revs sendtoaddress RBx3Zk1dT2Sp9giMrJ7QRTVExeUXHBkDg2 0.00275053 -fiat/revs sendtoaddress RVTHiqcRLSDexYfTPjDFYbsVuWvMm8h1zA 0.00278000 -fiat/revs sendtoaddress RTTH3A2eydEhGCD5hHVsr7LxGBzkZ59nNS 0.00278164 -fiat/revs sendtoaddress RWx4nWBN2pczASrDkv1godyX7YPCqU2UoV 0.00278540 -fiat/revs sendtoaddress RAsBZ2bumxh4Q92Sp3mtfkHJDrzqwDYD5h 0.00278880 -fiat/revs sendtoaddress RJWX53bWkYLdLQjZghfMot4j17sscczxN5 0.00279387 -fiat/revs sendtoaddress RDL2bYU3vZqDhCSz6CGExR3JuKhdnQG4RY 0.00280000 -fiat/revs sendtoaddress RWpP5odtz1SfECM3h8kmi67zQBPRYezbmZ 0.00280112 -fiat/revs sendtoaddress RJqv6MSyDg9snNcQBGBSZ1AN5xkWkf1hXb 0.00280482 -fiat/revs sendtoaddress RNygcEUuzamyZMYwzcrbsD9eG3Upe876aH 0.00280771 -fiat/revs sendtoaddress RKogDUQ2Pf5XNcUx8iuBBmdst92RxWvKxw 0.00281285 -fiat/revs sendtoaddress RKNm2p4pNe3QJfwJf2auhrGJGp3u9z1nff 0.00282000 -fiat/revs sendtoaddress bQT6AkTbeKTKRpUEu66mCC57jfZSJCQfTo 0.00282872 -fiat/revs sendtoaddress RP35Vw22WSoqfMVG5Zk4sUz1gQiv5Luvrn 0.00283506 -fiat/revs sendtoaddress RWhrRQ6e5QBb9TLsjGoJ3M3ZHEYGBdoxbU 0.00283554 -fiat/revs sendtoaddress RTikf18UdK6WfY8dNhjwHKUvFAzAK68ULW 0.00283589 -fiat/revs sendtoaddress RK5fF3gCswSMfKrJ38y1mGVApu9qAZa8We 0.00283743 -fiat/revs sendtoaddress RTeBWUV8NBFGkgSqeR983kAXGDkNPrKmBk 0.00283891 -fiat/revs sendtoaddress RASAveaALmjVoioiiLzDvo6s2BmKFBZexb 0.00283897 -fiat/revs sendtoaddress R9anQuLfNbMFr75yqDaRaKP5HUXrjPkjVM 0.00284052 -fiat/revs sendtoaddress RPepYn4f8mRW5M9cMkZSgffjuD6eVeEbp4 0.00284469 -fiat/revs sendtoaddress RTfnvGuX9R5dc8JHVJ2WeeZnsbaQ2Fmktr 0.00285055 -fiat/revs sendtoaddress RUeAL3WAJQR54n48jRsRhC8w7cf8CVgxjY 0.00285239 -fiat/revs sendtoaddress RJ6Rpq2ur45xFzoLAe7kPTzXynxY6AyYgb 0.00285511 -fiat/revs sendtoaddress RFLjtj8hj21c2E3keck8UqEnkxSp4dpqo1 0.00286447 -fiat/revs sendtoaddress RMt141AJ7dLKbcnehMZYnfMpVadQajxMo7 0.00287040 -fiat/revs sendtoaddress RPwmiVRHxDFMaFY6Jmb3ta7MqfJRK6Nfo3 0.00287728 -fiat/revs sendtoaddress RFg84ojsR43tWd8CqT1A9dxXh2hPNJmwNq 0.00287810 -fiat/revs sendtoaddress RNpnF2ugepX9jrNd8fiUuKdD2RRqAJKNQU 0.00288000 -fiat/revs sendtoaddress RG2wSMcA9WRtZm8X8zLQRU4uyT5Vt7SGzb 0.00288817 -fiat/revs sendtoaddress RLx2qoMreNRrhqRytHaJkxd2P35b7ARu71 0.00289322 -fiat/revs sendtoaddress bUXz35P2YKqawWC6YnEP8mBy7FUfzNswD8 0.00289397 -fiat/revs sendtoaddress RQcjVSe3N8xEB7FPy33W9Eik9PRfh9FXiY 0.00289477 -fiat/revs sendtoaddress RRGQjtnB56VjwXKQsXitq63tuAXdAKf99f 0.00290000 -fiat/revs sendtoaddress RHqY4Kyi31fdxojHU81Qzgs1YEH16yG4Yi 0.00290230 -fiat/revs sendtoaddress RDt7Xnb8C1ngJoUcxC3ZHaFHEFLuqSmHra 0.00291641 -fiat/revs sendtoaddress RFHiqWAwGN1dsESgJe7namsEbXJ1RqLrtj 0.00292656 -fiat/revs sendtoaddress RAWDGvZ8kwrSQEAZzJzYzVTkrVEv3o8WK5 0.00293586 -fiat/revs sendtoaddress RC7QPrxPPwcC9CnSvEUhD5nFbsouK9vyQF 0.00295684 -fiat/revs sendtoaddress R9HfzxGSPiH4GwAsQuKvpSyXqDWKWZ8H2V 0.00296000 -fiat/revs sendtoaddress RJaoxw2bMJSDhhq2nC93hLXC2vhw56wJNq 0.00296058 -fiat/revs sendtoaddress RLj5iMZ9WFvHQz96jzQghCN2RVv9cndKd1 0.00297349 -fiat/revs sendtoaddress RAgiAKKkSFYqWUMbqDo4sXk6LyNVtuFzDq 0.00299240 -fiat/revs sendtoaddress RWPnfpC8TTZXHGab3NXoxBH3fiM2HB7cRq 0.00299302 -fiat/revs sendtoaddress REbYhVuDNd2Vx6QGJu3SsU92x9LutCjqCg 0.00299666 -fiat/revs sendtoaddress RU9s1QXdShWTWsTsE9DzR4SQ2SWfXFMCTm 0.00299974 -fiat/revs sendtoaddress RF5GRzPVz1q8KyeQEf2eMAxA6pS3wTFNwr 0.00300000 -fiat/revs sendtoaddress RHR12n3D8mFz4KSwEKYats2umh7H6g6ih2 0.00300030 -fiat/revs sendtoaddress RNE2Zp4TrSf8G2qoge7SwJ6BCW3K3tUTuK 0.00300185 -fiat/revs sendtoaddress RUknfYhxg65S7zV2ZQ9g2q3d1FTqqovBQn 0.00300324 -fiat/revs sendtoaddress RBDAo4MNxfAziHu7Ti5ENuREz8KkTgffCF 0.00300696 -fiat/revs sendtoaddress RT87kuAqRJZPnPEny2485iQiFW2z7hN56G 0.00300705 -fiat/revs sendtoaddress RWzzGFM57scbiA5okY4WGnMa2sSRxzwnfK 0.00301417 -fiat/revs sendtoaddress RLnwysQ9jnUBPGU4Dei9dgZKoUKLQq9Ciq 0.00301572 -fiat/revs sendtoaddress RSUWLrZhxAkgPXbPPW6JvESeEMXxEK4Xxa 0.00302066 -fiat/revs sendtoaddress RV7PKuJ6xv9ei2GKxx59QTx9jz11Cfuz75 0.00302221 -fiat/revs sendtoaddress RNm8CqSXkatRZsuUv3V99G7H62yqHi82Xb 0.00302400 -fiat/revs sendtoaddress RDACou4SqjUVxXkxne56Vdp6RTkyNKbHBp 0.00303191 -fiat/revs sendtoaddress RFYrAC7Se4b2foviKcw7dfq9vLz5DMrwic 0.00304000 -fiat/revs sendtoaddress RJDyve3D81gGa685m8ZgwCjbQdTMp7nJnb 0.00304491 -fiat/revs sendtoaddress RKCJ967Y6amxMsXdsU16oCuRKH2Tr5d4is 0.00305646 -fiat/revs sendtoaddress RPESahexcVEhudCmtNW68ABj4P2FR5pUke 0.00306527 -fiat/revs sendtoaddress RK4LV9jgkaUXgcWzTCjJNQZpYrcmTbK3Tf 0.00306786 -fiat/revs sendtoaddress RJboJnf45RX3LRChkCXMuGdEa6EvMBr3xC 0.00307708 -fiat/revs sendtoaddress RKrcyLAsvYUkXd8fAB36akMDLNoZzAinEw 0.00308042 -fiat/revs sendtoaddress RBGwoWaZziY1LvmZ7QWTzDzkFyBuFTS3xD 0.00308287 -fiat/revs sendtoaddress REDy9ovbtk3zHvNd5AeamztwvaG2BKbec1 0.00308441 -fiat/revs sendtoaddress RXvD3Kj5CBoNdHmkuJ7SAK2SjCB8HiL4KJ 0.00310000 -fiat/revs sendtoaddress RTNxWTj9zV8vV6JQVcwQHmksE1emAWKmed 0.00310066 -fiat/revs sendtoaddress RP4g8TzPeHCPbDfnCyw41WUizqAQjF9QYz 0.00310224 -fiat/revs sendtoaddress RE3Ht2vBAEjWVFLDaDKKj38YTfZQUCkQjd 0.00310379 -fiat/revs sendtoaddress RD6HvD6heVkHUKdSrfLLmuUnEy1V1wHbWd 0.00310659 -fiat/revs sendtoaddress RXfPDZmWUZfQiRco4DLNbjQXi82npAHctg 0.00311920 -fiat/revs sendtoaddress RRAX78vs7qPz6K9ftaHuR8f1Ayjc2fxw2D 0.00312000 -fiat/revs sendtoaddress RB2viQamir8exDniy4kSgsFxcavPakn8vv 0.00312260 -fiat/revs sendtoaddress RYVT2p8o2eikCijYxUjbSD9bpaJtCG9qaB 0.00312388 -fiat/revs sendtoaddress RD8MDDSQPK5wbUyrYgAPTnByhyDXQgtMfA 0.00312415 -fiat/revs sendtoaddress RBxQ5oqzwb4SG7e83TNCDjk2ubsxXu1Vw3 0.00313078 -fiat/revs sendtoaddress RFjhZwdawxMFNyN3kgp3Bkn8TSpbh9xrik 0.00313204 -fiat/revs sendtoaddress RRLrQgMkx1yprcMHXV13x8GwEzCXVT9rZN 0.00313217 -fiat/revs sendtoaddress RS3czW9vak4Co2dTs7TjCyStDK8fZ1R4mu 0.00313473 -fiat/revs sendtoaddress RD7MhtsXKSDoGEZ3PqP4rEG69moMjKY5K3 0.00313688 -fiat/revs sendtoaddress RWNYwb3KBotvtvaj5s3qqPQsHs7upgDjHt 0.00313930 -fiat/revs sendtoaddress bJyKFQ7QZku1v1rF3jAKMWQQzSL3bBALD3 0.00315000 -fiat/revs sendtoaddress R9pznwu4BSwfywtoiyxiCXnFxcma8d7hrg 0.00315671 -fiat/revs sendtoaddress RGm3YoaURQHvaSZWVdDqegXBnysgyjZ5JM 0.00316587 -fiat/revs sendtoaddress RQoYsX56kA3mzEvD1DuXedNmHsA9ToJEQu 0.00318623 -fiat/revs sendtoaddress RHQurM2V1umP6NxT5fbMZaEDHocfDB1Mgx 0.00318797 -fiat/revs sendtoaddress RWhUTpLZuJqvMPPXG4fnaVkjGuo4EJb8sQ 0.00318950 -fiat/revs sendtoaddress RW5b7uhVAvBCyQoDSA6FThATcG52ki6dZh 0.00319105 -fiat/revs sendtoaddress RA4f34yigL2F5LRshwimLUa2pGKEjd3Q1Q 0.00320000 -fiat/revs sendtoaddress RCftG6jPbamTVida1uvj27kWhEdWQucKUe 0.00320138 -fiat/revs sendtoaddress RHtK82AohB9HvykGZW6KV8dRnVw8qurs94 0.00320382 -fiat/revs sendtoaddress RJA44JoPbXrpCbKG8fK8YUJ3dq95VU35zC 0.00320537 -fiat/revs sendtoaddress RMsXXmHR6hhqF75nh3VpNzsRV4GWa95QTK 0.00321390 -fiat/revs sendtoaddress RPkzXoSpsbowRhT3oNTDhf7beqFvDQuD1R 0.00321915 -fiat/revs sendtoaddress RCcDrgvJNVuajkQjRm64BeC1Yrmsc7sWBD 0.00322166 -fiat/revs sendtoaddress RMpGXTgY6oPtKQGgoNDGLCRnKu9FXVbZkp 0.00322303 -fiat/revs sendtoaddress RPsfWRiGKXU8coSZcDGEyBQWkWd6gPPcjX 0.00322475 -fiat/revs sendtoaddress RYJERGzbWYyTXHA8AWdwUnZ6rVgfgSgRe4 0.00322969 -fiat/revs sendtoaddress RVeANnBkWWgreuPZq3kUTXwfqXkDCmZvaf 0.00324000 -fiat/revs sendtoaddress RJo2jrYPCcXo4mS8UcPYidG1yuEyXJUKj4 0.00324048 -fiat/revs sendtoaddress RKCyupD36E8NtPvYfdHcCHfuniYZpbAsg5 0.00324177 -fiat/revs sendtoaddress RCLSe214qvF6H4qiguixLFG6FWPAACg1pf 0.00324511 -fiat/revs sendtoaddress RYTWcUZ7fXmLFbX6ihaEEb2p16734MUUAQ 0.00325313 -fiat/revs sendtoaddress RW85nV6Lf6Eq9Zdq4Ek5h4yrprByuhb42G 0.00325344 -fiat/revs sendtoaddress REMQfmHbLtYZZbgUtf7JRAy4N9rrVxLujJ 0.00325563 -fiat/revs sendtoaddress RPcU1gzFtbQJGfsuqiTM1tMhMy2wQFyy6n 0.00326026 -fiat/revs sendtoaddress RGjV5EF8puKa9QAxQbk9CxzMoHPcmYi7bJ 0.00326063 -fiat/revs sendtoaddress RVB5DpX1y3P4DtZn3YK71MQKYpKNykZ6Ft 0.00327430 -fiat/revs sendtoaddress RMpvppcdkaNnyTbZoQftLXCER2aWCXa9DZ 0.00327697 -fiat/revs sendtoaddress RAq9VoX6ZouCURwE6rpTHzyTa2ivPhQVQZ 0.00328945 -fiat/revs sendtoaddress RSKDdYmdrW45hyLy6BFi1rPD7DDgCcZXSN 0.00329189 -fiat/revs sendtoaddress R9qHsV2KNDWj1nombesBWD24xzVcJNT7Jv 0.00329344 -fiat/revs sendtoaddress RCJuFtudv6LMScxTTSLKqCxz3soR9wWuVZ 0.00330000 -fiat/revs sendtoaddress RWLSmoYB62JgjzasDCWvvZV6fWeL4qEeqF 0.00330606 -fiat/revs sendtoaddress RMZzsKJ6qvS42nqRkedxmzb7QoVFysrWw2 0.00330738 -fiat/revs sendtoaddress RD4SRsqtSXz1iqQRaEnMQ7sTLi26koApB8 0.00330918 -fiat/revs sendtoaddress RExcQ4518BfgbZqPstcz6nMnaa86Tj1kqw 0.00330981 -fiat/revs sendtoaddress RCc1AJyKd93ZioKgpeChwjWwzDf4Sk98TH 0.00331048 -fiat/revs sendtoaddress RLujoAieAXuM3b3vfurvjFbGJsRMxhzBif 0.00331201 -fiat/revs sendtoaddress RDXjjcCdicDHfvrJF6EP9Z95FvvRFCck9t 0.00331225 -fiat/revs sendtoaddress RXADqVWjxDV3AZnC1C9eFAUBpMYs6HyQUJ 0.00331380 -fiat/revs sendtoaddress RA7Vas28kdB1VxH9UZ1zwhNsXAVoAc5cfq 0.00332855 -fiat/revs sendtoaddress RVPkUqh3Sbav6xJADkQ7SZnbKxFu9E5BCo 0.00333163 -fiat/revs sendtoaddress RTzLLc1UjH6i7S9PNL2QK1P5LHEUZxtULx 0.00333318 -fiat/revs sendtoaddress RDtrExPNncHj156YhzCKmf6b5dimbEH1UP 0.00334120 -fiat/revs sendtoaddress RYbiL5s2UXRLQhTwwZVdavFxJR6S8ZhfyA 0.00334370 -fiat/revs sendtoaddress bLKKV2oyh4CZ2FbcWpXUDHBwwcEn47eie9 0.00335968 -fiat/revs sendtoaddress RQEzhDpAskWVusZQauue997ZygndWMq159 0.00336156 -fiat/revs sendtoaddress bc4FLqhsFNxzvFJqedcUoXVHqVTbDguUD6 0.00336832 -fiat/revs sendtoaddress RVu2unVH4h8BtAEaUTarWAFgrS7hTtJ4dt 0.00336869 -fiat/revs sendtoaddress RMJ9br5tbSofWZ8dXBt6DhqAZsKwgJGorb 0.00337490 -fiat/revs sendtoaddress RKmyNJpeDuCbHPnQXyCCGYy2RR5iRBWnhm 0.00337808 -fiat/revs sendtoaddress RMR4z5X7dBzd1Zr6EGQgnbjWkopU7eqvVQ 0.00338000 -fiat/revs sendtoaddress RGAqGYBJQgSgEeexUmFTAZ9LpxqKUyr9Eb 0.00338391 -fiat/revs sendtoaddress RLqSfeLRarj1TTRrbhJmVFXwBDF9urhKXJ 0.00339323 -fiat/revs sendtoaddress RY82m4YGjw4ZdHSYkRc3vKH5K6paHbzBTd 0.00339545 -fiat/revs sendtoaddress R9HyBeunLeEpoTsTUScvPRfpUgpTPsD6hJ 0.00339853 -fiat/revs sendtoaddress RXzKnvsGTFXx9dvGf4ySj53X1vxVEDLQ9E 0.00340000 -fiat/revs sendtoaddress RKrG3XVoJxuXExt1qQ5eeE7bAapdgSyom1 0.00340008 -fiat/revs sendtoaddress RB6zdhTomFZ9yPXQFyewdg6oEUXkRZ2DpR 0.00340201 -fiat/revs sendtoaddress RAMWKFm2bZ4Rdp3TeESMdxi94uoSELMRo6 0.00340833 -fiat/revs sendtoaddress RBGAwzqP9xFVbnreDjeiBjnivJPezGqW5D 0.00340882 -fiat/revs sendtoaddress RA5ctwvqxaUBo9oPi4BBSrL9nikbARDmBi 0.00341285 -fiat/revs sendtoaddress RQwU9CmiTBt8c8VbqXWZdYBC7CjndAfpQ1 0.00341581 -fiat/revs sendtoaddress R9qXNHL5ayvZp6bbXCJKWkQ8fgrPW79BRT 0.00341801 -fiat/revs sendtoaddress RAxzrvxbN9AdN2fKH7PWe9iH9bHt66E9Ci 0.00341967 -fiat/revs sendtoaddress R9yD91SiZoubVKt4rx3PrnQRTomZeDX1ok 0.00342044 -fiat/revs sendtoaddress RK3TCw2VCY6eCWxBC5wxmf6rsxfh7iG611 0.00343308 -fiat/revs sendtoaddress RXZgVaAybmutXXp3zLEt3JpzpnM6M8hdvw 0.00343616 -fiat/revs sendtoaddress RWNb1vPi32TSHBxpWZg6XKbPzM9G6eMFYq 0.00343764 -fiat/revs sendtoaddress RBf2zxQKEUAGXqH71Ke6LiMpre2WXWjGrQ 0.00344122 -fiat/revs sendtoaddress RJSfjYRXMhPxLwaK4qZ7uJVQ82KvquF7n8 0.00344324 -fiat/revs sendtoaddress RPEgYewRXhtJddfNpW6ssTkd6WvNWhkBmE 0.00344451 -fiat/revs sendtoaddress RKbx8ic6Uaz3kxoydBgvU2CgZ4muH2LPvU 0.00344519 -fiat/revs sendtoaddress RVzkgRr94enWVUvdetpgwBbgSJqoQ9HEyf 0.00344950 -fiat/revs sendtoaddress RUTcFSoiyPTwiVaZFuWbot51fYVMLPmoSh 0.00345854 -fiat/revs sendtoaddress RUeSB53fRLH9RRzDV1yEiPKYzHDyLvxBM4 0.00346296 -fiat/revs sendtoaddress RA774LGRKhvzo91F84o2xovYE5LVDBHN2F 0.00346465 -fiat/revs sendtoaddress RSjMZ4PAnKZJ8sSgxLSK91d93MWHjMd2Mn 0.00346987 -fiat/revs sendtoaddress RDUeuszDduCVghPWwsastpRhz5fpknBaLf 0.00347566 -fiat/revs sendtoaddress RDUvA438idQZtEoJ3vqUGfE4B2bN1ZTdUv 0.00348151 -fiat/revs sendtoaddress RURts4V8FFuZxacbs5UdX4v5YcXQWX2qfo 0.00348501 -fiat/revs sendtoaddress bFBdzYLEv664WiuZkjt3sPsDx2cFFqCmCL 0.00348751 -fiat/revs sendtoaddress RWvHc8TYjviYB9ZNKf9vNX6tznUoKfdQcp 0.00348991 -fiat/revs sendtoaddress RNWcRfp2YoEX2DJ6JXvGTRZ8UoKPUXMs4Y 0.00349039 -fiat/revs sendtoaddress RVpxCZqnntnKb7dVThF8K9hHW5pJJYBsb2 0.00350000 -fiat/revs sendtoaddress bGRufvxn7jLw7fzh9f5yEn2cYMucixVMqA 0.00350065 -fiat/revs sendtoaddress bVK3br5oFHJqNRW5RDceULcnZZEqEGuRyT 0.00350751 -fiat/revs sendtoaddress RH3MMorufh9xJwM2581qxZNmWGUVU5nP71 0.00351640 -fiat/revs sendtoaddress RS7BgBXLGvDWL8yyJZwGHPqW18xFMZkGvp 0.00352128 -fiat/revs sendtoaddress RBfuHzJFbk1N12LHYZEKTwRAVKV3KvaYdM 0.00352752 -fiat/revs sendtoaddress RRxtu38NR9m59zqSVVPupis2veMdKe7nBg 0.00352799 -fiat/revs sendtoaddress REAyb29UqJRTKfYXUWkDV5b9cTnecaUZcd 0.00353546 -fiat/revs sendtoaddress RVydo9geUsahwfuqWNeeEiSseAA92Vonjt 0.00353676 -fiat/revs sendtoaddress RLwbaDRDZmt3bZnhrP1LaD6rGMgw8rMaCC 0.00354445 -fiat/revs sendtoaddress RAoZ6bc4PJZrecVznte98fNhRtPTjGvUAf 0.00355125 -fiat/revs sendtoaddress RLJu1Efu5EmPtAofLhqFso5hyknZ59FuBR 0.00355191 -fiat/revs sendtoaddress RQjVsPZZH4rUrvXiVA9Z83iex3J3gLNZJG 0.00355997 -fiat/revs sendtoaddress RUuDWakFxCoG32ujJEcUkiCzLq2ADNqAfk 0.00356000 -fiat/revs sendtoaddress RMKSRvdd4oTjNCmVmF9MVFH1h4j479m3UK 0.00356305 -fiat/revs sendtoaddress RBBHyR5HXfvGNtkE48Q7AX2dnme2VY1euE 0.00356521 -fiat/revs sendtoaddress RWKt887jVXwwE5UFG3WqhBymCrQpWZce6F 0.00356546 -fiat/revs sendtoaddress RJ3o8drDPKHnhJMpnvKWfmiZMWRubUhKLt 0.00357045 -fiat/revs sendtoaddress RCANTBf9TphKJiQduNbJbNVVHo6bQ5NSbM 0.00357308 -fiat/revs sendtoaddress RS47FzoMT9jN3Ts6ChkuxnNSapErY3yiMX 0.00358616 -fiat/revs sendtoaddress RRddWGyEWR4pYA1TgKwfYoHm9yBjxXH4E3 0.00358697 -fiat/revs sendtoaddress RXF5HS8qgQH84nYz5n8VXSUhY8jShLMKUX 0.00359313 -fiat/revs sendtoaddress RTTvk6VqWnnfGbj8spPyKS8xtW2qiUmAh5 0.00359332 -fiat/revs sendtoaddress RQuoJkQajba88HTB2afRNxTTSyyGjzvm4G 0.00359477 -fiat/revs sendtoaddress RMmvVYQLJC7cCxNhfR9UJQusQbkK6HgqC7 0.00359949 -fiat/revs sendtoaddress RX1VBkCxr3ZJpgFoutRm36CgR5Wru7ZTpx 0.00360000 -fiat/revs sendtoaddress bPgwBaAYZXzhZJoLmvBwy9D9iCoEdcExF9 0.00360340 -fiat/revs sendtoaddress RU7rwu2Goet5wEjSTHmJKJPBkVm8CRPahy 0.00360728 -fiat/revs sendtoaddress bLrxBMiXF2idtzrX7ysGvEXqoefkc2XQxb 0.00362029 -fiat/revs sendtoaddress RPf5ypFknqZri5JGpwTb55UVJmUn1BjpPk 0.00362038 -fiat/revs sendtoaddress RSJbcMmugChDoYKhDyXaZq2iEc5sf39ZvF 0.00362410 -fiat/revs sendtoaddress RQWJBLHNgQr1MrNzC3HJECbrf7nTBbsb4T 0.00362483 -fiat/revs sendtoaddress RH2yeL4xQsmJCvqReecFVRFhN9BTskDcU8 0.00363477 -fiat/revs sendtoaddress RFVnDe2fvGiDYBQA1RGsT6BsL71uTMR9s7 0.00364101 -fiat/revs sendtoaddress RAGRzvSHE8rCcSnWjLtPirUWnDJkyTc8Jo 0.00366034 -fiat/revs sendtoaddress RQ5fTTK1BZr9SnHDweMHXRcooL7bkNzVzK 0.00366697 -fiat/revs sendtoaddress RPTNoGrRDVNUmVzGcJURQneYmmXMmjgMsz 0.00367253 -fiat/revs sendtoaddress RDDstzwuGU2rbzhRWrw7fCZ7KEkyyH1fWA 0.00367500 -fiat/revs sendtoaddress RP3hMTA3uEBoeQ76xUVFuupC9ZMQaepqNU 0.00367938 -fiat/revs sendtoaddress RHYxTcAKdDkCRv5pcVAPpNuftg9Hk6jmDd 0.00368246 -fiat/revs sendtoaddress RLFSJK6QJsbfCpiysbdxsDbMKaqTwDvTfu 0.00368401 -fiat/revs sendtoaddress RGqbLpDtFtqnUPzb8pjxp6SSBSsqr5AtpV 0.00368895 -fiat/revs sendtoaddress RK3EW27yFPSAWdD8sS52U6SjNSuZHXnzuj 0.00369404 -fiat/revs sendtoaddress RAp8NccXqZExxvZ3xnNRt7wLgYodBowXEB 0.00369531 -fiat/revs sendtoaddress RSUbaoR3kifgKuFC8N9VJy4mnuRx1bGt1j 0.00371475 -fiat/revs sendtoaddress RTyApaBZbzF1Vgge1gHSPpwtktYyohBSHx 0.00372227 -fiat/revs sendtoaddress RGTHYxmotZwoSwJqaGBj3phJWMKshf8t25 0.00372284 -fiat/revs sendtoaddress RE2Ju5UaYUDLnNGwK1GQaGgyVe3oPNdJeq 0.00372492 -fiat/revs sendtoaddress RMXLQ4Khrid32dgYDwjPFxPUc9H4uMFnFy 0.00373117 -fiat/revs sendtoaddress RSoYeq7RkSUvd9jcQ1sihWexW4xHmrETA2 0.00373278 -fiat/revs sendtoaddress RRn1TocmSwvfPimiVqp3vQK3CiXbBdc3bJ 0.00373333 -fiat/revs sendtoaddress RQCZWXNKyFpssTZor3JGLssNrmGiAj9SFZ 0.00373671 -fiat/revs sendtoaddress RM1wsNcFM9kqdaJZpJnXfVEwhSJKpVhqqw 0.00373964 -fiat/revs sendtoaddress RNLheefZ7P4c1S4GrMguYNHrrWzBoMAApG 0.00374000 -fiat/revs sendtoaddress RNWagkBt7WV4mn37DW44DFg8E4QLByoEHs 0.00374579 -fiat/revs sendtoaddress RDc3N5CZSkfd8Dj6FYSuEQ6shXJh6SSDnH 0.00374752 -fiat/revs sendtoaddress RK8cegcRzf6oKtYJjMhkPu86meSTumFRFA 0.00374783 -fiat/revs sendtoaddress RMdjtiEnJEeVWpkkBCpPrZeciNkr4aq4T5 0.00375130 -fiat/revs sendtoaddress RJxJ5ifSmpEZVijaJ6zSQ8ocVhBVTLGWyu 0.00375270 -fiat/revs sendtoaddress RKR5VKvFXxPM2PvuhqXCwsWvEM5k8qXWEZ 0.00375779 -fiat/revs sendtoaddress RXBRtv2y2BRhXFM3TVGQ51CuizHZZEJzfh 0.00376000 -fiat/revs sendtoaddress RJ2PzdHVcPPVcoZYEyVWMdTB1koQcC6JyA 0.00376094 -fiat/revs sendtoaddress RNx4cYoXtquxRhsEeFgzNgdZt7C2fypFp4 0.00376499 -fiat/revs sendtoaddress RKtr3y7DoZtzTrAW639NR3kPLk6ajGzYJv 0.00376745 -fiat/revs sendtoaddress RLFkT2nUngVmaGMTEcSJyobsTqqjdGCQyw 0.00376899 -fiat/revs sendtoaddress RLZxdGZdnQhgqHTbEEmZtLzEqXmbF8ciyu 0.00377053 -fiat/revs sendtoaddress RSn8HBYqTgohtmFcawbgWSHCzNRnFifXhF 0.00377478 -fiat/revs sendtoaddress RQt8DKibJHy9MBYZMpKRPPHBzxHVpWCixG 0.00377536 -fiat/revs sendtoaddress RX2EF3PFvyGWtcgAbWcnkuPYgcfZdEtriQ 0.00378130 -fiat/revs sendtoaddress RQgYaq1VQqct6hnEhswwjgyZ1gkAWFNZ8k 0.00378760 -fiat/revs sendtoaddress RQR1d9quaC2sT3CG89q1WD3bYpUFu6xdXd 0.00378781 -fiat/revs sendtoaddress RTxRRLLkcxpK1xZQVuoBT8gabPscBNR6kw 0.00378935 -fiat/revs sendtoaddress RPZmhYsMmfuMzcKyAWrX4G7QGgLkXyWUrZ 0.00379089 -fiat/revs sendtoaddress RHMmNXYd6Cc3qCmyMQMM689nEVFqQsiz9k 0.00379244 -fiat/revs sendtoaddress RJwn5w5zkTVto6fB96ZRQ8LSpgwpWuNznY 0.00380000 -fiat/revs sendtoaddress RNYDWkDNcaWLaKQqir61pnqAxkxxZXSkin 0.00380695 -fiat/revs sendtoaddress RBwWfzwuSBixPhRPMvbSuV6Ru4bxPkmXUE 0.00381003 -fiat/revs sendtoaddress RUhjsfkmmCw5d5MnS1DSMPuKzZASfnoyfJ 0.00381158 -fiat/revs sendtoaddress RRddGdoRwiLG81MYawT1M3ukZPhUyXPWfS 0.00381686 -fiat/revs sendtoaddress RQBGKiLg9eakwVmLb1oGKtXVCA4XvgCw13 0.00382101 -fiat/revs sendtoaddress RTcYYcSHdZM6JC8k366UqCCsPTEN4pkbnw 0.00382478 -fiat/revs sendtoaddress RDqoY3oc5dmgrZHYQYZe1njeyGUiUm4QVL 0.00382941 -fiat/revs sendtoaddress RJmvGe4hXpZX4uHpDJm8GhLjuzjyc4heoU 0.00382989 -fiat/revs sendtoaddress RKza8jg41KZ1pLQJqX7ALyFXuNmQpGQ26b 0.00384379 -fiat/revs sendtoaddress RB4gY3XqUEUq2mW6cxsNueo5XY8GJ3xtU8 0.00384514 -fiat/revs sendtoaddress RJY2mkavWX144Q6QEhKtxCP48Rzs4eHoDv 0.00384669 -fiat/revs sendtoaddress RDSQhVmspq5cjstFS2w3jLLiNYDdRBoDLW 0.00384823 -fiat/revs sendtoaddress RU5T5KUNQDsfgmXBZ2JkMn9qMy5ZFVKanq 0.00385625 -fiat/revs sendtoaddress R9vcHVzw8Lx1YqM34AiUhYWsjiCg1poSRT 0.00385765 -fiat/revs sendtoaddress RFYHZuU2VbBisXH3UnLA4xSyt1sSEC7YFB 0.00385779 -fiat/revs sendtoaddress RH66H9bkMVcSSdM9tvv654Mn7cwZPMmaHc 0.00386415 -fiat/revs sendtoaddress RBcfB9G88stgaVtcZ8ocej1MbDnt2uxtCm 0.00386914 -fiat/revs sendtoaddress RSu5wYPabEwQ4AZtBEXMgfZp37cmiepEej 0.00387157 -fiat/revs sendtoaddress RGBGDVMoipwP4uAXtQ7PGzj5A3Tzju4PFT 0.00387930 -fiat/revs sendtoaddress RGcSspZThnZtFj8JmNLQHr1p4cLqmk8W1j 0.00388000 -fiat/revs sendtoaddress RUqzycz5BfcmWa7FGXy35i5y35vbC8nkD1 0.00388380 -fiat/revs sendtoaddress RCtVCaLeFZzbr4CHZu43n7EhhEmih5UBhr 0.00388535 -fiat/revs sendtoaddress RV5Zc8yw4CyC1czgpktaFgutKu5TPEJHh2 0.00388840 -fiat/revs sendtoaddress RMns6f2i1p74GsLrwXTbTMLY2z811USTJd 0.00388995 -fiat/revs sendtoaddress RDd7uYZTwASBoAdBRVaMnpU6rCeYSEcZ5W 0.00389467 -fiat/revs sendtoaddress RLqbR337eHECZvJXAYTH44ZiToaoQC84CV 0.00390000 -fiat/revs sendtoaddress RJ3Nd1E3s2ggwdUwnSxWEntXFNWgeb3aNT 0.00390676 -fiat/revs sendtoaddress RXwxxXPzMYNjbtfa7zzdnCCGCZo8NxJEkp 0.00390876 -fiat/revs sendtoaddress RHFzQTCr73Px26ewYxBvYUKJdHsKfygisz 0.00392000 -fiat/revs sendtoaddress RCEUagqaRQ491zXgoRYt89vYcAbrD6Kbii 0.00392063 -fiat/revs sendtoaddress RCqX1SssJCEPWxVwkPWZWnUh1E1F23Baf3 0.00392391 -fiat/revs sendtoaddress RHKAykHzwz4MsssQVrVn5ht6c13jyMqNxf 0.00392636 -fiat/revs sendtoaddress RE8CW4wYditnYighxngeAZqjF3oAE7cwtk 0.00392790 -fiat/revs sendtoaddress RLRsCuM5uUV71Q7pyAVxe8FFXTdj7jps1k 0.00393105 -fiat/revs sendtoaddress RDx4GaFxFyswvXvT9uShP6ymBsKZh3RxJn 0.00393421 -fiat/revs sendtoaddress RJr1LQnG4aXPupmzKL6FGGaNoubFj2zfaA 0.00393619 -fiat/revs sendtoaddress RFyvjygrJaE9SM72h2BkqqVwgLTQZ2MtXs 0.00394573 -fiat/revs sendtoaddress RHAWZ6F3D5e7JZNHnwGu1twSyiK4zoUbCL 0.00394728 -fiat/revs sendtoaddress RPCSuQ58bLd1efswMcLvUYLu1mrWqtscZw 0.00394986 -fiat/revs sendtoaddress RPCKf8N5ij1Nt94LfnkCcbfMgmK8cPymp9 0.00395020 -fiat/revs sendtoaddress R9gSifaaFE2RiPySnZayryby1ouaLaqfhE 0.00395068 -fiat/revs sendtoaddress RSmzCunwnRkDQRUUnsmsK3MsQywL9bvJSC 0.00395375 -fiat/revs sendtoaddress RUPYL2XXxTS3PdwwXQ4QLT1mCyEYBThqA2 0.00396456 -fiat/revs sendtoaddress RXBo7Ki2xfXo9psHGpQeQJMmtJTNSiXJiZ 0.00396609 -fiat/revs sendtoaddress R9QvkiPeeagatEmn6HkLe67LYkaV9UeqmJ 0.00396723 -fiat/revs sendtoaddress RNCQZNP3CfU8PBhuVtEcWG5BCdGVb3mmeq 0.00396733 -fiat/revs sendtoaddress RJLGkvBzMwe4bj4nBqHoT7DSBH4qEoCQC9 0.00396763 -fiat/revs sendtoaddress REFSkGjNXQzpeZsSbtGeBGQVm5S2Fn8tkD 0.00396935 -fiat/revs sendtoaddress RVFtauAxvM9xvxXczg642wSrtDDauBFeoZ 0.00397566 -fiat/revs sendtoaddress RKPUCRNwcAmaXHAiEHUBffjKSP8P2FEnGQ 0.00397690 -fiat/revs sendtoaddress RLu6Nbnp9R9W2r995irHsnRbCRsLiNwhad 0.00397721 -fiat/revs sendtoaddress RF9yKKF2aCtm6r1854ZreGfu5X9sogwfJo 0.00398054 -fiat/revs sendtoaddress RSvKP11zKzj37UsrAkXHxJJGPBm5Vgthg5 0.00398124 -fiat/revs sendtoaddress RADccd7ipB3J67Zvn8TxRjMrWwhGLYwB8D 0.00398223 -fiat/revs sendtoaddress RVGXSzh77sYeWpA4v5xokn3FMW5wLZ81Rs 0.00398279 -fiat/revs sendtoaddress REiDyNAHZ42SJxXAMBZP4S5m7X7e5XDpVK 0.00398307 -fiat/revs sendtoaddress RBNhmacFxGvvWckLmF7eMMcAjSNaE6b2jX 0.00398337 -fiat/revs sendtoaddress RX2WwRQRvbHniQEfLHbp6MAXBFKWYWtStH 0.00398773 -fiat/revs sendtoaddress RKxXDHWn22qKaT8aRHiMx6Q3nkrEfCMPaT 0.00398952 -fiat/revs sendtoaddress RCkbnZrWp5quVEiMVwpfEK2f9AND1uQAja 0.00399683 -fiat/revs sendtoaddress R9d7bXP7foaGzPT5Jdi6iKwknJ7WPbtA74 0.00399838 -fiat/revs sendtoaddress RPEz7SQ5qn3F5A1uXkab19kzwDf3ryvhvP 0.00400000 -fiat/revs sendtoaddress RPxxqgPEvUELzhuisSUNfF8oJjSGgCUAqE 0.00400838 -fiat/revs sendtoaddress RNgfZKCBi3sejtrJsiwbq2mKaqPF1dBWdq 0.00400935 -fiat/revs sendtoaddress RGXrqbxkgMKzuCZ4zyCWNsdrSm1yK3ytfh 0.00401443 -fiat/revs sendtoaddress RAijRZe3zjHCSy2WRasdpu6nEg1nL4G4mk 0.00401563 -fiat/revs sendtoaddress RLQKLbFd499YVG4y21XbTE7bDBNeEoarmr 0.00401597 -fiat/revs sendtoaddress RJXT2ysjYMStqZ6zjttwTnhJkaSntyEYDS 0.00401602 -fiat/revs sendtoaddress RRMoWgfbVRhgRwJTRVg6qecM6rQ7o93Cyk 0.00403234 -fiat/revs sendtoaddress RPNhuDtX683L3RXjp2GMP9r1U9eNedVrs4 0.00403299 -fiat/revs sendtoaddress RVXht8BZVuWa9Dp6z5DDHhf2Qg1sgwvZRg 0.00403400 -fiat/revs sendtoaddress RQANWwd5vFk7PYJDVQhV6xaQ5ELkUyaw6D 0.00403453 -fiat/revs sendtoaddress RJ4XSpkstLhXqspYqakgs4mq9VKtwHxr3u 0.00403633 -fiat/revs sendtoaddress RWC2evEd4Q8ksWpPrSTnD5YpnmXiq54Fti 0.00403863 -fiat/revs sendtoaddress RJf9KZcmZBVyPbGKHjATWPrhM8vu6ywbfb 0.00404884 -fiat/revs sendtoaddress RXyWb524WQtHYf3tJnCHgvGB5dsdTvpoDT 0.00404990 -fiat/revs sendtoaddress RLWzAwEeMD9XPoEHGRjBdZzG7AGfNx9TcQ 0.00405147 -fiat/revs sendtoaddress RDfE5k6QR4xxfLN1AKiHRqsvWde1EUngi4 0.00405243 -fiat/revs sendtoaddress RNi7BkQuMEgeEqHDUs7YvA9k252HLuX5My 0.00405416 -fiat/revs sendtoaddress RV3BeEw5W6NQAURMCKsjWfTkW6fQfVnF1g 0.00405424 -fiat/revs sendtoaddress RSKxxHYbP7aE1SYfVAZbVr3cmZ4SRRooeC 0.00405570 -fiat/revs sendtoaddress RX6i38s12N1zgWEjyc233t2bBaxeSymbim 0.00406000 -fiat/revs sendtoaddress RHJbSuZ7bLRTyV7VZC17aTivjnHYjXpjrw 0.00406373 -fiat/revs sendtoaddress R9HVNpipWDH4qUB4noBDqTMkgMJtYE4s8f 0.00406528 -fiat/revs sendtoaddress RHUYqjgUF2iLAMMxf22fCUfY3c2vPooHsz 0.00406823 -fiat/revs sendtoaddress RWmKiKyeao8CdM8xaNUKVRM61Q4i3QEtn8 0.00406931 -fiat/revs sendtoaddress RAjhhhYNAq7MkBemgGrC5PMPY9fRGFHqLK 0.00407086 -fiat/revs sendtoaddress RW6icLLdivzDmvNZs5bRaKizzZgtYR4K5C 0.00408396 -fiat/revs sendtoaddress RBbBbynhxNZYp2qdEX7nhrsEoBPtSHzhFe 0.00408409 -fiat/revs sendtoaddress RJodhMK5N37DGTqrUf97mVtay2SoUnC3cg 0.00408564 -fiat/revs sendtoaddress RTL8QaiEQMEhiYgE8b5suDXGq98T22Snhn 0.00408704 -fiat/revs sendtoaddress RSmvWa88P9949PZNTe8D619t7NrgtE3QfU 0.00409122 -fiat/revs sendtoaddress RXTyFcYHoZuUpLcrhGECFaMu4RFi3rcG1R 0.00409923 -fiat/revs sendtoaddress RXbXz2MskTrBZp9Meii5ChAoK5ecAGH1r2 0.00410169 -fiat/revs sendtoaddress RQxijD1byHjLRueZkaEQaoWsEjptjb43J8 0.00410323 -fiat/revs sendtoaddress RBWJhPQkZmjEJ6R6nYgj8yZ5JEEvMUm9jJ 0.00411492 -fiat/revs sendtoaddress RNbpbFpH2kuUq1FLMnxVih6dic6PkCwzSG 0.00411600 -fiat/revs sendtoaddress RUFVwxKTGGixYkSmKRk4X77izGCRzTmESU 0.00411779 -fiat/revs sendtoaddress REjnL7RzxYkgn9iTVc8Yig8mYUqgrxXEAB 0.00412000 -fiat/revs sendtoaddress RCQN4mvbqfeYVNGS6BH4fsU8jTmkafPiAq 0.00412106 -fiat/revs sendtoaddress RMZGMMtBziMFNg1kJY6kB58k5pW5tVHo4D 0.00412194 -fiat/revs sendtoaddress RUZinZDDZMV8NkmmvTtoFHbxgDK8fMH6az 0.00412900 -fiat/revs sendtoaddress RTwrCdXNCG8kYn28Ge57C1SQPnKTH4bULM 0.00413000 -fiat/revs sendtoaddress RPo1JUJZaFUFzu8grFpUA4RN3AFisV1eem 0.00413294 -fiat/revs sendtoaddress RYP36LAZeptBqxELTNZbHbB8MadtCWbDMu 0.00413538 -fiat/revs sendtoaddress RGEWTUWxFyqATcpmmWR7df6opa6eYhH881 0.00413693 -fiat/revs sendtoaddress REdzVY2DroBfQgpGUy9WmSjcrjkVRd31Mu 0.00413700 -fiat/revs sendtoaddress RFSy3pkQ2ZtcBQMHavyBxJptdHRFpXKTvL 0.00413784 -fiat/revs sendtoaddress RD8cGZQViKuLFw1qYMaL8okqPKT48Lwdiw 0.00414142 -fiat/revs sendtoaddress RXAUAVQSh1tNgTsNebMwURzynSZUoqwess 0.00415330 -fiat/revs sendtoaddress R9wZpGJWh2LR1eahJRiAD6te7KoxduwJS3 0.00415729 -fiat/revs sendtoaddress RDsRp8hbd9Je5XNoPEd5fZ4dqeXW9Ujyj1 0.00417204 -fiat/revs sendtoaddress RDEydheLsFmJ4HJYHj6keSDYevMzJmErP8 0.00417358 -fiat/revs sendtoaddress RRe6oJ2zBNZRDHooeFtMXdb58ggs58hx3j 0.00417491 -fiat/revs sendtoaddress RMsVCRFW4Jsg1ghcvbaeLZ1tGyAshWrXQ5 0.00417512 -fiat/revs sendtoaddress RGRMKRA7ibiue2mvMhw7HJtFrnyMDKRans 0.00417667 -fiat/revs sendtoaddress RCqsKXK88bHzJaHhMq44Gk7hcRZGcYDGnm 0.00418060 -fiat/revs sendtoaddress R9HJ4ZF5cqMAJEo6K45Dkr273pCZgDAEb8 0.00418423 -fiat/revs sendtoaddress RPsa7mSnXHEJvcwT2P1NWKEffLbwbGYrkK 0.00418469 -fiat/revs sendtoaddress RDsejGJvCvYoytNF7tcCkmCe5cMM5zKu92 0.00418719 -fiat/revs sendtoaddress REufWkdQiZVMamFQLGdFwX6BGUoqcK7Nqy 0.00419182 -fiat/revs sendtoaddress RXtKekvEMCTUryVboWZKJScSgB44jLMaDf 0.00419676 -fiat/revs sendtoaddress RC7ZDKNz22AikJpQwdf7Veu3Pfu5damgWH 0.00420505 -fiat/revs sendtoaddress RSqZsenA3NbZwij6VWWp9BA9hgUitXuP8B 0.00420730 -fiat/revs sendtoaddress RNgUni7MJMse5HtncHL1LieGQvAzx4LLW3 0.00420755 -fiat/revs sendtoaddress RC27tDss3bY519c2UYHVmBBeAgpm4DA3wk 0.00421218 -fiat/revs sendtoaddress RMNaT5ziTiA7QzBHnwtVQ4UMp8PphZ9VnD 0.00421292 -fiat/revs sendtoaddress RVL8sdXbaUNSL1GqjxbULy5UM5wXyyZmEK 0.00422020 -fiat/revs sendtoaddress RJ2J3SJx619g72M6YijnAbxmcPw329d8hy 0.00422264 -fiat/revs sendtoaddress RLWYmC8Tt2RoQzJGgwy4Q7uetJjnyQNvKP 0.00422419 -fiat/revs sendtoaddress RXgV52uqeopxj5ob8VcB3q6sP2L1fJvwxQ 0.00422499 -fiat/revs sendtoaddress RUkwdj2ALaFnxxgPknZbEZDhN6JFspotVb 0.00423500 -fiat/revs sendtoaddress RH29K6D63WuWd47pqkHb7wckvJ9cwSuag2 0.00423894 -fiat/revs sendtoaddress RGRpgPwkg6W7zEUKvWdWuwGnCczShY3eoc 0.00424093 -fiat/revs sendtoaddress RF8MS7uYDqPAmD8HdcoCXcHVEYwVFJi3y4 0.00424137 -fiat/revs sendtoaddress RMKxuBjsAE8ae9HpmagfU2gHYZZrXfrXcN 0.00424381 -fiat/revs sendtoaddress RDnFQtNGS9qqenHto1inXm2bF1xiSD7QLz 0.00424536 -fiat/revs sendtoaddress RWdQaKcsEf7h9ULUoPFrQmMy6mXoT8tDqL 0.00424600 -fiat/revs sendtoaddress R9ZCWWhRpd4UgX7JfpX5Cy6h7VdX81jw98 0.00424754 -fiat/revs sendtoaddress RAZstPXuwhgtk5qmUPWPFNnGoXwMUWUHjC 0.00425302 -fiat/revs sendtoaddress RKcstj6sbbA6mGAp9ZLuq2L8bTmWbNW2Tn 0.00425930 -fiat/revs sendtoaddress RLM1DaCS9kJ9e7EcyHHXiuw9DsgdEFxU12 0.00426084 -fiat/revs sendtoaddress RNUWzEVEGLVaJcMWbebXnrjrGDMJSYupQC 0.00426393 -fiat/revs sendtoaddress RQovRDk7PM593h5Lpojfc9rkZTPSmoyqvT 0.00426639 -fiat/revs sendtoaddress REhzcwnU287XgZRxEnR5Amp4rnKePXHnNe 0.00427275 -fiat/revs sendtoaddress RBMFiC9kEXXYXzoEDAcsV3vSsjNu8TjfnK 0.00427932 -fiat/revs sendtoaddress RCDTNWRiJohghuXmHenzf9XFae7jA7jJ3x 0.00428000 -fiat/revs sendtoaddress RGmQXKJqBKLWW3Gw7LDRfyVCcHHDxaAY2j 0.00428087 -fiat/revs sendtoaddress RBAkwTnHNeett2VkPm9pvm57teHgvX9SEf 0.00428404 -fiat/revs sendtoaddress RDjvGkM1TmyUBjzuDopC19SLJknYZq4sQD 0.00428559 -fiat/revs sendtoaddress RGH2kZobPpNFwqmuJR6xkDVt9ZB2J79foj 0.00428867 -fiat/revs sendtoaddress R9qWzdN4227QLuzHt1uhj2Ek7BGDbwCrLC 0.00429312 -fiat/revs sendtoaddress RToGxpRU1VamGftxzdsorPtc91zTp43ZdQ 0.00429562 -fiat/revs sendtoaddress RDYnJpD2mVCFFmZDGXamZXZPBe4CM4gaLF 0.00429870 -fiat/revs sendtoaddress RKmM2oFfajXbxjdnGRcdNFYCQNSumJEw1m 0.00430025 -fiat/revs sendtoaddress RJYUhxLyGYjKXmvworGHUzAB9b5TNeqK4E 0.00430827 -fiat/revs sendtoaddress RWbQ2quimkmgTJKDeY1megXtQ9wjhkJcSY 0.00431071 -fiat/revs sendtoaddress RY9DiAbkDrVwqW5ybU8h2HhXWWRpV5U2Zi 0.00431212 -fiat/revs sendtoaddress RMrEatZhMXGVHqbpCYyFVptuDC2nBiFEW7 0.00431608 -fiat/revs sendtoaddress RRo8jkqgNWKPcwYpLLYym1cgNUFhoKCeFb 0.00432000 -fiat/revs sendtoaddress RYacbsSzXmajBGTGenbkxLoG9k9yq4Bz1L 0.00432716 -fiat/revs sendtoaddress RMH1RhvZjGJUQsvmxcYydghY5ZSrAsGjAp 0.00432863 -fiat/revs sendtoaddress RVxLomSQnKwNjcgBMjJHwoeYbrkoFfcuyB 0.00432874 -fiat/revs sendtoaddress RSSxfKvfM6bQNTmRraKSmnuX9ftCarsz4n 0.00433000 -fiat/revs sendtoaddress RGhp5i1aUuWNZATmEgoNF7rZkCKjwa3nPj 0.00433261 -fiat/revs sendtoaddress RKxmRT2bmCX3vcZf7pobCnfkxAAbJvBCeS 0.00434891 -fiat/revs sendtoaddress RHSrby7vY8GNm8rpq8Ch1agmtso2WCL6eE 0.00434910 -fiat/revs sendtoaddress RAJB3sUiAB1xJoYs9TaCZvDi9mJJ9qJuaP 0.00435758 -fiat/revs sendtoaddress RT7hhKzqrv2CebmzaeLyKziG3uWjkQ6Py6 0.00436193 -fiat/revs sendtoaddress RUwgTYM48J85Nn3iU2ZB4PABAbtgJCpxsr 0.00436252 -fiat/revs sendtoaddress RCEFQ9tDcPzeLxhuFn7TkHj3YVMkpa6iXR 0.00436674 -fiat/revs sendtoaddress RC7PHvw4UTanbgJ2yiWR4CUzsTDdMv5vCZ 0.00438024 -fiat/revs sendtoaddress RHwsH4gMLQAcqHsr5jQakADifdC78Y7geX 0.00438288 -fiat/revs sendtoaddress RBETyHAWDgTtMzHiy9XT2dyD8K9g9iKc8Z 0.00438529 -fiat/revs sendtoaddress R9TQd3pngHpd4QGvRi7QmcCohuXfmcsozC 0.00439493 -fiat/revs sendtoaddress RMasR4MrSchjh3MjagFojiH72uuehsLbwR 0.00439496 -fiat/revs sendtoaddress RYEZ1VdiFxLthKKLZzU5iDHNfgX4EiCVNc 0.00440345 -fiat/revs sendtoaddress R9X72kDrnoUbQCAVbpf8Tcuh9hJYR1pD7Y 0.00440499 -fiat/revs sendtoaddress RAkhiNVYxvYNuohtcMqeLhuCFRGvhMVvZm 0.00440654 -fiat/revs sendtoaddress RVg5D7nLbBdZB5RWd9qXLwEkWLFoZz9Jvn 0.00441148 -fiat/revs sendtoaddress RUdvffBBT9rvhN9SF5ZLDjKvkZi36etcPA 0.00441190 -fiat/revs sendtoaddress RPKmoEXnjoPpFMFjAHVburYeZApuaY5Ct2 0.00441657 -fiat/revs sendtoaddress RTcE4yEyRYbsRbTVgsjDHd9VwsBpnNv7ET 0.00442927 -fiat/revs sendtoaddress RShVoQsDeoTQ1QgGm9z9ZfgejKKS3q3LRA 0.00443061 -fiat/revs sendtoaddress REcdFywnGhvSw5J8yzEacoNT76XbfE6unR 0.00444000 -fiat/revs sendtoaddress RWfQKLnB9bxa9Bbwot42G1Dp7ecnBUNfY6 0.00444351 -fiat/revs sendtoaddress RW4A1Y3x1635uR4LuWubnkwt3fSoNwzKcW 0.00445190 -fiat/revs sendtoaddress RFAjXfcSJbD6hn7egF7CpHYRgvfJgw4NS1 0.00445535 -fiat/revs sendtoaddress RFLFcuLH3eE33h3VwGWMYhvpSJ3s9yjBnN 0.00445683 -fiat/revs sendtoaddress RFygZSv1MqAUhMPT1BFcVW9RvBVkcLzEGp 0.00446000 -fiat/revs sendtoaddress RKvvczrKZf1LmoxxGRgw5BHsRaSGmhrjX3 0.00446387 -fiat/revs sendtoaddress RUNDvZZsXDs2PBmEdEWZHuRjXYfDBPnnfD 0.00446832 -fiat/revs sendtoaddress RUydwWTmkT5fy6sTTc3RWvFhTkPWYercsu 0.00447523 -fiat/revs sendtoaddress RMogYXJaWYHT7YYrVu5xGhXn5en5htetdv 0.00448000 -fiat/revs sendtoaddress RGvX5bBwHub4dRShG8msDNjvi4jFySyRA2 0.00448347 -fiat/revs sendtoaddress RJgkpy65J1udj22TKf5SgvRA6GjT7PUgVL 0.00449153 -fiat/revs sendtoaddress RHmAjcTUat1zqDtbFdeds6fhuC7VvjRWQp 0.00449461 -fiat/revs sendtoaddress RREqEdFYLp5YiNb6WNedjyerEkXhj5Nv5S 0.00450383 -fiat/revs sendtoaddress bMsoi9E8dwf9fpQswLTVH4TJfEYjk6VV8h 0.00450786 -fiat/revs sendtoaddress RQ9Y9PSRLhHxosAjBPMg1quH8AkcqCfCVL 0.00451189 -fiat/revs sendtoaddress RVFmhV8RM72zrmagYQKYjUXWhBDcGGrChi 0.00451208 -fiat/revs sendtoaddress RK4U2hmHTav4HeqAi2LJpANvssQRRKshDs 0.00451497 -fiat/revs sendtoaddress RRndcVPhULXwkATZeMqun2DLBacN1Yw6gx 0.00452481 -fiat/revs sendtoaddress RX96txFWgnMwJWfEGLoHhrQA1BUR88WfNf 0.00452594 -fiat/revs sendtoaddress RGTnH4GvPgAvtEt1v8NrL53jX7qcv477PW 0.00453411 -fiat/revs sendtoaddress RFmWjLtRbPN2Gc5b11MPXjyRaGCTq894dJ 0.00453845 -fiat/revs sendtoaddress R9rT5fwGQwima2bezrK3Ps67cZ5DGm56xr 0.00454059 -fiat/revs sendtoaddress RWdFXvZ5m7SEnUv6oHSarQCEAKnBMf8Cji 0.00454501 -fiat/revs sendtoaddress RQwceFzgNRsUfnrMB2rJKUA5riStS9jDE2 0.00454521 -fiat/revs sendtoaddress RAWfYRjTSwxNrnwmMhQ8vKCQ8E9q56cxRW 0.00454759 -fiat/revs sendtoaddress RK5jr6CgJajXqzRQjARyo9NRiP2t7YwbDB 0.00455003 -fiat/revs sendtoaddress RYJvsk8vM1b492QHNTieTXfKY1xfTQB4z1 0.00455041 -fiat/revs sendtoaddress RQQBaPt5GmeBVEwimdiJFW9CWyyYYFF12Q 0.00455194 -fiat/revs sendtoaddress RFoWXPxV21Vrf2rZj2N4kDZecQMAnQBERZ 0.00455669 -fiat/revs sendtoaddress RX5E3bQbQVZ8x8yWPN62vAn9dMTMTy1JqY 0.00456140 -fiat/revs sendtoaddress RTz2yWcvs6pGcAWfHydeKQd9hLmemJdz9q 0.00456576 -fiat/revs sendtoaddress RUXptbPnBn2YRRdyC49gcaJDHubiA3YRSB 0.00457230 -fiat/revs sendtoaddress RCCpnrdKsSf2sT9jCwiv5rHPPfKrv5Se3J 0.00457896 -fiat/revs sendtoaddress RY5UbbhHznD7Q7oCUv1231jH6q5dneAZ2F 0.00458031 -fiat/revs sendtoaddress RX22MaJJikZHLU5wLpCcbhkwuhbPsdLjku 0.00458187 -fiat/revs sendtoaddress RJYZrP2PUg4ntsTEXwj3FAmS2e9yvjJZUY 0.00458900 -fiat/revs sendtoaddress RSSgUZFR6o2WphL5FsMcYkwW6nJvTdCbua 0.00459394 -fiat/revs sendtoaddress RGJcgAurvRGtU2HsFdZtpctXz7ca3gLF1E 0.00459464 -fiat/revs sendtoaddress RQLJ4TEq3Lpc2Cdsa2RVKC8tCUWzHrHERV 0.00459619 -fiat/revs sendtoaddress RKYD5nqo9QVEW9qZBixJZCPFjWg93GfpU7 0.00459650 -fiat/revs sendtoaddress RSDRFHuBjnYjiaZSZmKghNdhRvyn6DPtZN 0.00459813 -fiat/revs sendtoaddress R9dCUd361akDRH43xEYQUANJXXGmFbyWFC 0.00460000 -fiat/revs sendtoaddress RWnKnrxKT5iFPorQ9rTwkDi98G2ViwEDAu 0.00460178 -fiat/revs sendtoaddress RGKXVvMevEMvNi6ZLAAmeRAAw4WmMASoQy 0.00461094 -fiat/revs sendtoaddress RMXS3thPxDw3xgoHV6151hLqtqsxdMjWuC 0.00461199 -fiat/revs sendtoaddress RLpertN87EHT89h63YKXxui1TvrnUJU9af 0.00461248 -fiat/revs sendtoaddress RQLHF38zBbRwBZfEe97rafZP6ccNT4FztX 0.00461402 -fiat/revs sendtoaddress RMAu4SQFfMyCYC2SU5r2yTc8QjdSpEufs9 0.00461571 -fiat/revs sendtoaddress RDwH9vSZWmhXpFDipK7wHFmFji4eHn7aV8 0.00462051 -fiat/revs sendtoaddress RPmunhpDRhU112ZRuehcDCkoBorMkDJrdt 0.00462244 -fiat/revs sendtoaddress RCAU86vZ3WY1Rb7EswZhGHYEcUDKWC4uZ1 0.00463130 -fiat/revs sendtoaddress RBCdMvoTU8sFdjwrUhBauhqzjGcBAqfn8k 0.00463593 -fiat/revs sendtoaddress RHv8ffodSzj2KeZMxobwBWkNm7FVwCBZ5z 0.00464166 -fiat/revs sendtoaddress RXNMmgH1e4kiBAYn5VbrKzAb1MmtFXwjX6 0.00464645 -fiat/revs sendtoaddress RSxaHDg5tnxSatJed7hEZfPPWVRQECqeJY 0.00464698 -fiat/revs sendtoaddress RVvkX3g1EctA8JBFde7vRh5F1ncVCCqcYH 0.00464943 -fiat/revs sendtoaddress RXgyjejNhnieT2mPe6mfc6Ri4W8jWHNfPU 0.00465044 -fiat/revs sendtoaddress RDUjW3cSMHn6gTrqRJSLMTngq5bv5jxULa 0.00465266 -fiat/revs sendtoaddress RXuZtaSzQM2LFKBbt7s322yuJqxCu9uEo1 0.00465352 -fiat/revs sendtoaddress RQk5CmWpV4PpJ5r4R3ZuA7ajen4YFVHPuf 0.00465383 -fiat/revs sendtoaddress RG9DkA7R616ZwpcPo8YYNDojtm3wLUsB6s 0.00465507 -fiat/revs sendtoaddress R9NAUaRbTx8rjeGAdh5fuKvZZ3jMdqzP9V 0.00465778 -fiat/revs sendtoaddress RXpoatD9ppTTNApz3irfRg3ooardjYNjYr 0.00466521 -fiat/revs sendtoaddress RSKhx9YrArTGfReEcCqthNwCebvFs14hhf 0.00466827 -fiat/revs sendtoaddress RSdtTSEpaJdLDrAnhnB12Stj3eSAqdYuXr 0.00466982 -fiat/revs sendtoaddress RYLzY5ndAmAcKctQMT23jqCXRk3RsP2Dt1 0.00467476 -fiat/revs sendtoaddress R9oBwETfKqo9RGjPJAZn28MQF1Tycg5832 0.00467509 -fiat/revs sendtoaddress RSv6unQQuvEG7vtt7oTkNTB6opuaMRbo6m 0.00467574 -fiat/revs sendtoaddress RPmFpMNsSrZt66YuzLz5RakFjsw9KU5Xu6 0.00467981 -fiat/revs sendtoaddress RSCVCb7Dia6STAtCzx78sZyztaHcq1oy7n 0.00468001 -fiat/revs sendtoaddress RYGkvtWALDceJmhhdZcn8qwBbJr6hz9ejr 0.00468271 -fiat/revs sendtoaddress RSF2SejLrsUvvezQThQH6vSytCn7wR5GMu 0.00469820 -fiat/revs sendtoaddress RVNACvSZoyaP5dqeBCTi9DJtruxP5w3p3v 0.00470283 -fiat/revs sendtoaddress RJPtKJnYkWup6yvufUiEJ5TGed1uq5qifE 0.00470307 -fiat/revs sendtoaddress RJA2qpC6R2sv1D2p6gWg16vAvq6eWTaRhG 0.00470378 -fiat/revs sendtoaddress RN3oWYmBpaTTFLz9VE18a4zNETsZMULBUo 0.00470462 -fiat/revs sendtoaddress RRDYxvrHhJxBSWbdoMibH8sRtSZyb8WjDe 0.00470533 -fiat/revs sendtoaddress RDfTqDgfogqpbFia4Zks7bGWgn9ifUNabt 0.00470649 -fiat/revs sendtoaddress RMWL4Kga8hxuEUc99dXGLHWdrqJNYYoDkn 0.00471286 -fiat/revs sendtoaddress RRBWrhyiQwVxS4LhvpxvkARCMMH6EWRp7A 0.00471893 -fiat/revs sendtoaddress RJ4hc2rdF58StxQvyqxstsHY9pdgyRGwn2 0.00471937 -fiat/revs sendtoaddress REmKtHPNzQxbtNfGtsCn29kXRxLo9nWWgw 0.00472091 -fiat/revs sendtoaddress R9MdUSMpbdbkNgLDwTmhQQDuFbuoH3w6Fu 0.00472106 -fiat/revs sendtoaddress RVBNzbJCeMJNped3zvT2bnmQZhAoKB7Xiz 0.00472373 -fiat/revs sendtoaddress RWJApo4pDN8oUWrNtPwvwWMP8JPEccEzUX 0.00472400 -fiat/revs sendtoaddress RKDsdPTyL55Eregm1wMLSeV2Sdb7xa6eBU 0.00473851 -fiat/revs sendtoaddress RSXDphHP7H8deDAweN5qR97ueA7kBH14JE 0.00474406 -fiat/revs sendtoaddress RW1RwxMoz2iP3fvnkciC3HyRvfvWfc3JAs 0.00474742 -fiat/revs sendtoaddress RDgGtDSEZuuihrnV9XATQRJ8LDVfw5EZ4X 0.00475488 -fiat/revs sendtoaddress RCaQR2mhDU7XacDawRPkmArPVNP8zy7CAz 0.00475553 -fiat/revs sendtoaddress RJVyoVdY4ZoNpPCGoYwTDEj6JCN7bjaFwm 0.00475887 -fiat/revs sendtoaddress RHL4U3kedPoCqVVZL8zCajhxb5B788pYA7 0.00475951 -fiat/revs sendtoaddress RRdnfNmLqe25qYYE2kV6Fqy4o7zCEEcDP4 0.00476350 -fiat/revs sendtoaddress RWAA3uPKrBcCgSweCBQVHpKwtskMaA5v1Q 0.00476997 -fiat/revs sendtoaddress RAuEow9YMVqi9V6x7WQg6qETc7xcqjFhLM 0.00477138 -fiat/revs sendtoaddress RJhfrTBnbUyff5ExdccAxVdbAvHTovQGrQ 0.00477152 -fiat/revs sendtoaddress RMp4u6GjTS1iTU7aEJBgWtWCk9URFWDiSo 0.00477300 -fiat/revs sendtoaddress RMjK6VjdYQ7p94qGhK1dsfmJyzqbjnxeLv 0.00477634 -fiat/revs sendtoaddress RNs3Hteha9U9eHvsrjW5wXxvcRdpBue86L 0.00477670 -fiat/revs sendtoaddress RAEfPXfP1UV2eJaEzZkGo1u5xBiJa4jkUm 0.00477825 -fiat/revs sendtoaddress RWZKGtPieRwnApT5QPKeByHyEyQzYY7EgT 0.00477847 -fiat/revs sendtoaddress RWv4k2LvS764tR9FcQSoK1MQp4WJX2JkQE 0.00478097 -fiat/revs sendtoaddress RPuWuQ41iArhN8GNqZaMQjAQVEwNGbtMMT 0.00478133 -fiat/revs sendtoaddress RKRuE87HEV8E5pNKTCv5fzo7hh24p2P2tb 0.00478781 -fiat/revs sendtoaddress RTnLNP9QiiVr328n52brLERaCPvb2t4ibf 0.00479571 -fiat/revs sendtoaddress RKpnxZduejRoiyfWpyLxbhYUnksJAbf3VN 0.00479661 -fiat/revs sendtoaddress RDPJXQx81opjhFVnmqiDKLc9TNRDnGt2Ff 0.00480000 -fiat/revs sendtoaddress RNyGjhbAPz89bj8xSAt7TSDP3cFEjAhRbD 0.00480367 -fiat/revs sendtoaddress RR37i87ANLa1cyG2GUxMmRoDk6VNz5biWK 0.00480663 -fiat/revs sendtoaddress RMMNZBw4qazpb57FPqL2HdprgG8tm2RMLg 0.00481221 -fiat/revs sendtoaddress RUhUtaQZ1GM5ayEaSVmv5VjYsZQYEHiEz1 0.00481399 -fiat/revs sendtoaddress RG4D4UZRMJetBFsCCH2n4gA7gmuC1TdL7Y 0.00482577 -fiat/revs sendtoaddress RBHWyhUJGybw3gELYnHnxmY9vUM6oq34as 0.00484032 -fiat/revs sendtoaddress RY8xkfP74A8D55L4TANYrNkUvsngHBGtNY 0.00484076 -fiat/revs sendtoaddress RV7ZDSEy5Pfb7Gb2PbpxUrP7vxtvyAZ9Xm 0.00484187 -fiat/revs sendtoaddress RDkr39dwULFD4yrTBvZFM3QjG2Xn3s712K 0.00484360 -fiat/revs sendtoaddress RL3NcfFjRcpUjNxJgrMkwXD4msZ8LYZYZJ 0.00485547 -fiat/revs sendtoaddress RKbVQAtC1KrKQ8WaJ5wuuW5vmMeQfZv34M 0.00485578 -fiat/revs sendtoaddress RXFouW8RAFW4qLCrpYV7871iUtDA6Xsgk1 0.00485946 -fiat/revs sendtoaddress RW4yHSPmF54rjoc6ybkAriVsArDTWEsfos 0.00486396 -fiat/revs sendtoaddress RWXz8D3fpYsYJuxDRadmGPzfGemtHQ17Sj 0.00486551 -fiat/revs sendtoaddress REdYQismk5AAV7J7ZbwHj1JT2XjF1VQT7R 0.00486771 -fiat/revs sendtoaddress RKmMTZ8FfnHFAkCrcWvKzJ6WVHUbwB3Fir 0.00487583 -fiat/revs sendtoaddress RHFQpcGUzjfpZkeUFoZHeqXyngHn8xSRoc 0.00487802 -fiat/revs sendtoaddress RQL1AYbGhCQcRVkLiPN24796KDpZJRSay5 0.00487982 -fiat/revs sendtoaddress RJDJJ22wn9mvyPpJs6i5TBZoHikZfyd27C 0.00488804 -fiat/revs sendtoaddress RAMsENHisHeiMrww5JJ3n9ti4MbD46VQsH 0.00489092 -fiat/revs sendtoaddress RGJDcdch265PkVgCFop6RsWmrqsZEL3MqM 0.00489093 -fiat/revs sendtoaddress RKwryzd16NBAQeRKMBp7boYy15Dn26WyB9 0.00489497 -fiat/revs sendtoaddress RNHhsPw9H47TEEXqhcnGTF8g9XfXCBkEL5 0.00489553 -fiat/revs sendtoaddress RMoGHbScgUPFUe7GmTwhNPyTkvB7tQYAcC 0.00489765 -fiat/revs sendtoaddress RW1VrcEdke16oyC7qb4AhV9btiABBz5avS 0.00489920 -fiat/revs sendtoaddress RLKcb2fS7k6jUtnJbY8Ega5SrmhDPNK765 0.00490000 -fiat/revs sendtoaddress RBpgoc8p56XLW699vHvLAkxEvTXZWUUbL8 0.00490075 -fiat/revs sendtoaddress RAHEQiViFnLgpjuZ52JswYmXni2j9gKKPG 0.00490359 -fiat/revs sendtoaddress RXC4TFYx9Ryyty8fy2Wab8aiWuzen5pdpr 0.00490722 -fiat/revs sendtoaddress RYAzLUGC9VBLdpZQjCUWXb4GE9f8KxMPZ9 0.00490926 -fiat/revs sendtoaddress RMkEXYJUcZufQ1XztN6goHLD4RFw5LhjJy 0.00491210 -fiat/revs sendtoaddress RJabmmnFYCL2bfUV7G7Wnu9uyKco8aqayG 0.00492758 -fiat/revs sendtoaddress RG7pBm6qYi9mW3RUnZcTT8Yr3ztdXjdxY5 0.00493316 -fiat/revs sendtoaddress RJmgJtGXxZe5Rs9RyBRwka2vhyMGExHQFn 0.00493471 -fiat/revs sendtoaddress RHahynuEia4YEKBKvd8QrZtK8MkuQwz2rF 0.00494273 -fiat/revs sendtoaddress RSoGXJSH1vWzcm5BaYnejDf8U9pcKH9D8d 0.00494672 -fiat/revs sendtoaddress RCwaRGQ7JggkYGabHPLtCM3bUutWJBS8Tm 0.00495565 -fiat/revs sendtoaddress RKEsXgXVaHAJkbFPHPEW8qgu3gMenLgLK4 0.00495572 -fiat/revs sendtoaddress RW7moH2kMVTtSZ2VRPwGJGpbM9ib38evDG 0.00496235 -fiat/revs sendtoaddress RBUAe4bYLiHVZAsP9tKvetpEohgmf4azJk 0.00496390 -fiat/revs sendtoaddress RLpb1MpQHdU7xPA8dSdnPQVkWcmdAomiH9 0.00496610 -fiat/revs sendtoaddress RG7e5ZkfD6bRni1mDro3J1znLfgFbhfXPs 0.00496611 -fiat/revs sendtoaddress RQS9HyKitJL2R6dmvPhs8RHJa9yFgMfzeW 0.00496789 -fiat/revs sendtoaddress RG2nTR2k4iX1b4CE9pCud85m15458xvzHK 0.00497098 -fiat/revs sendtoaddress RAhKirPq9RnUxmzRPWAeomZj5m1f9J4tXm 0.00497900 -fiat/revs sendtoaddress RXBMHuo2nMUUvjTzhAaRESJmKtiC7T3MUu 0.00498304 -fiat/revs sendtoaddress RCE3DeFwgy55g5guq19i5L8WQ5zaQH6fZW 0.00498338 -fiat/revs sendtoaddress RGcmxW47g24fiWKqWuGkeg7sm2nVo9QNVZ 0.00498491 -fiat/revs sendtoaddress RCCz9XHDt9p7bJuDGGfrWh4v7NUrEvQ56R 0.00498646 -fiat/revs sendtoaddress RQKZwiNGAtbaYyPX7MyNpRCRzr72h6Rh7B 0.00498700 -fiat/revs sendtoaddress RCHNofZQ4bGuEMhzWaCZwuWKobUjf2j8Fp 0.00499149 -fiat/revs sendtoaddress RHra77mQsxeixSd4nvxuTw2K5EvEQv3Xfh 0.00499673 -fiat/revs sendtoaddress RQszvZQyim975ZdDKvjHSvif4bjcvTFXEd 0.00500000 -fiat/revs sendtoaddress RD93aH3a5RHqU6nGjEfqia2qPbh5hVcSkM 0.00500340 -fiat/revs sendtoaddress RRXAyY54zDRsHW6eMzLkbSuz6EzRLKAUJJ 0.00501069 -fiat/revs sendtoaddress RPRGX3yRMShJypfdY19SUpCUkBipzB3ohq 0.00501120 -fiat/revs sendtoaddress RWziMbwToUpEbMBqJ3LtVDEiYaeKM1bwLk 0.00501565 -fiat/revs sendtoaddress RJSZk37z4Eqzs2nAE13TW1Z3MNrmkKCWjv 0.00502077 -fiat/revs sendtoaddress RJq8rD9k8M6Nm6VFZKfuS4J4FGMXHACsZT 0.00502278 -fiat/revs sendtoaddress RKcL6TonjeM7mSws2cQbP5NQL59YrNBXiu 0.00503080 -fiat/revs sendtoaddress RMnsLrFGbMJkbX42gpTkMby4EmqsHTgVeb 0.00503479 -fiat/revs sendtoaddress RTHBnLmsY7X2mvTDdGos8Eknqwf2kEMccw 0.00505116 -fiat/revs sendtoaddress RUpupDRWoTK7oSHkPdi17Zx9ixPrFBv2QX 0.00505515 -fiat/revs sendtoaddress RTsEWiZFw9FMRbyRhADWUD5Gp2meG3xMaC 0.00505824 -fiat/revs sendtoaddress RNJ6QNgkuu3fWYb89H4FRSCRPwKG2Kwe9K 0.00506799 -fiat/revs sendtoaddress RHcy6mzGaY5KYL4sn29dfQKW1atZUcH3Xt 0.00506809 -fiat/revs sendtoaddress RGW1y8DJy73JVGU1x2UZV3rLpQA4FkiWL2 0.00507030 -fiat/revs sendtoaddress RCvyGJSY2B4MtyS3nnDZVAWJbsG3g8wHSR 0.00507453 -fiat/revs sendtoaddress RHaJ9wer4RXefypKyBDosET3v5hjit4Evh 0.00507894 -fiat/revs sendtoaddress RDULTE9oAKdjd6LdBbYWnNPqCAjWW7ZZjq 0.00507928 -fiat/revs sendtoaddress R9ZZE5t1eqHsthXnnpeynF5GbdRzr68EtF 0.00508486 -fiat/revs sendtoaddress RK8dsMRYKgn5HX4i7fABVp4vyCpBPfRppa 0.00508730 -fiat/revs sendtoaddress RBb3QHpkeD6Voh4nF5hoG9vo3mAbKEkxeg 0.00508885 -fiat/revs sendtoaddress RDajbcURaEYoBU7YdjWHCPQxE1iqMoTRhb 0.00510278 -fiat/revs sendtoaddress RFs4BLMxs9dgBZcbmzAZqAUXwZBKGoC3g3 0.00510400 -fiat/revs sendtoaddress RAQo39ZrSWd2mfRCQEC78kMmxB8iAuBy1K 0.00510586 -fiat/revs sendtoaddress RACNJ6LB5i1g4fpSLStcPXbgrdMV8ppoSw 0.00510849 -fiat/revs sendtoaddress RRjTEAiX4kqRcn19pC4Qw7tBcgDvRzXQBC 0.00511004 -fiat/revs sendtoaddress RSp5CKy7JDaA5Y6xkww2NRpWieWuGys1f7 0.00511309 -fiat/revs sendtoaddress RWvrbDaVxFDgSZx5o6gWVJQ78y7dNytNDP 0.00511829 -fiat/revs sendtoaddress RVkbbFrJ37GSkPUXwUWdeXqktMRevEjRyP 0.00512435 -fiat/revs sendtoaddress RHhCp8yGM3T5EvaXC3Tefn9Mn18Pfy2TXo 0.00512440 -fiat/revs sendtoaddress RR1d7camPuRttBTuH8DZfSQMAv1yBEd5qU 0.00512753 -fiat/revs sendtoaddress RUYDbpXuMTnyppSAT9mz33ppdZQtPBP9fQ 0.00512908 -fiat/revs sendtoaddress RTr4BXv7JDvZuxmHEfJHRmEjLr1PMuEJZh 0.00513216 -fiat/revs sendtoaddress RTokq4CCjxRjmczmgtokSzjt3mzM96NnAj 0.00513661 -fiat/revs sendtoaddress RHBvawcyNzoCuY7pHPMhfN4KcYijg2aP9U 0.00513910 -fiat/revs sendtoaddress RGAwj6hkszAVPnTb6DVpXMkBWcq6CodZnf 0.00514000 -fiat/revs sendtoaddress RMF9svwjhmBnTL1nEW7cQ5aChR3pDRRxz5 0.00514219 -fiat/revs sendtoaddress RB9Q4eXxUNTWzatTX8am7ZmYe54ZWXBAc4 0.00514374 -fiat/revs sendtoaddress RCobS7kVDYzYZyoiUKam2tCutd9Fb3gLxC 0.00514701 -fiat/revs sendtoaddress RBJnUdaMjcpTb84WotYyXZx9p4vbwQMp4G 0.00515420 -fiat/revs sendtoaddress RXCPD8NNeBxP16W3wHVyPYJFGckwvBRoBw 0.00517212 -fiat/revs sendtoaddress RE7uDjAmfLagq2i3Yd5fAzsBDTGsBz9J8J 0.00517611 -fiat/revs sendtoaddress RHi2w1ZQV31ZrViToLHT1y7L42j6DWJq31 0.00518641 -fiat/revs sendtoaddress RPRawtQVkCHywE9yHJD4gS6in4aP8R8cSv 0.00519086 -fiat/revs sendtoaddress RX72BNXUU744DZRu6AHetsHyFEK233tsqe 0.00519240 -fiat/revs sendtoaddress R9N4STJyCXR1FEZyGnmpk31RrFdhYMmMLM 0.00519549 -fiat/revs sendtoaddress RS61zTC8vz24LRVUPtLPc6JBsgmnU36KHF 0.00519777 -fiat/revs sendtoaddress RDUAyWJLVrGoPzx7xXwXD4uwJAKd3egW4t 0.00520085 -fiat/revs sendtoaddress RWNzWikzawbNUEHDu3SZTvjTqk3oJwDDuf 0.00520555 -fiat/revs sendtoaddress RN1XWaZzhYtTWvbVBzLcibtYPUroyRNCZB 0.00520601 -fiat/revs sendtoaddress RULx9Gez9CLk1qykmSuG9TnFBywAcNE3eJ 0.00521243 -fiat/revs sendtoaddress RVZPAKx9f3wnu8LGdFn6S9jAtSqzS4hDj3 0.00522333 -fiat/revs sendtoaddress RPdR7qhDFxWd8221q1jy63LxJ9EzrzHipg 0.00522500 -fiat/revs sendtoaddress RCbn4Z73M7zY5cR8rGY9byu9Ltyu6nKyEg 0.00523294 -fiat/revs sendtoaddress RVQ8fEgmgYHut4b7ZqByCrhD9aqHAKQG5W 0.00523405 -fiat/revs sendtoaddress RMNNsPpdxS9EXMg3gMCpZmsD8r7zD3D2gB 0.00523596 -fiat/revs sendtoaddress RUPYunTAZ95jmrnBBhLwAqp6wh1dW9xpAB 0.00523823 -fiat/revs sendtoaddress RGNzJabn31n637n5ho5RBJez6oms7qhQy7 0.00524662 -fiat/revs sendtoaddress RM6YZykrrMFCezauwZGJ5dcoYtXy7XuwCy 0.00525002 -fiat/revs sendtoaddress RHiv6ELg71ExLufEsGwoa4SqPg3m6Jn7kF 0.00525200 -fiat/revs sendtoaddress REw37PyfZsnhWUhkTAWx9pPT4haCAkKK79 0.00525400 -fiat/revs sendtoaddress RCFKiHT8QX1a9APMUwyweThEEnVXo9Ags7 0.00525438 -fiat/revs sendtoaddress RFgSMNYok9y9kVcpz9bZDxdiFsUHfE6GUW 0.00525665 -fiat/revs sendtoaddress RGdvn8hpe6C7ctpruSV38kLCMkh96tkVzK 0.00526263 -fiat/revs sendtoaddress RHBhjUWT8Egbd9S8gKLa2VFpH8PZs4rxUH 0.00526395 -fiat/revs sendtoaddress RNyp5PfhpFq3iya5ZdpLVpVD2giVQ8616t 0.00526418 -fiat/revs sendtoaddress RWjJHjVp26QQfbhjdRgihanP1LkyTYiXnH 0.00527164 -fiat/revs sendtoaddress RSvuN9j3pwZYf11Pq635rfBTNyKmFUc3QR 0.00527411 -fiat/revs sendtoaddress RDeV4Qiqh2aao2wYXyK425SVw8Z4t59kyK 0.00528085 -fiat/revs sendtoaddress RJf8qA3b95GMuQaS7RrfCmkwchiLqcxLHD 0.00528973 -fiat/revs sendtoaddress RTSwekeFTTunRRzNJucYxf8jhMmmuPVkbD 0.00529218 -fiat/revs sendtoaddress RC7hsJmvH5KhLnrNQnpPyXza2CktxAEhMN 0.00529349 -fiat/revs sendtoaddress RXGm8xrpemJD4F8dnZB1QgZEWo1PwoYmcm 0.00529484 -fiat/revs sendtoaddress RAf3uG4ir82h19dJtvAeV7n6ykbkhDkKt7 0.00530286 -fiat/revs sendtoaddress RH694adu2WN8H9yRUeHcPpLPcqcGNbsGDN 0.00530436 -fiat/revs sendtoaddress REpWeg3McwdU8V2wJBaf1yuwan8rq8aVdT 0.00530441 -fiat/revs sendtoaddress RQyVFrUxBxzegSttLg7sHUPK3ghkw2bhRJ 0.00530888 -fiat/revs sendtoaddress RVgisQnjhvXs5Xh9aM2tWwaLX2p1vpTgdP 0.00531338 -fiat/revs sendtoaddress RCyTpzcarwwCtC4QpeKXTmbai1mpksAUt4 0.00531385 -fiat/revs sendtoaddress RMKa7FtauxzY1S2ctFdesYQwW76ZBLx5LG 0.00531718 -fiat/revs sendtoaddress RYXmUZ8HevJhEKAJRWQo4fpt1Xrd1F49q6 0.00531872 -fiat/revs sendtoaddress RK5t5k86vLn9mM9i2vp4YfLmoCDVsKwqzd 0.00531907 -fiat/revs sendtoaddress RWtGHaN215h9WHna65Sghpg8b9pJMeAGYM 0.00532181 -fiat/revs sendtoaddress RRvJ7mq47ag8nr3z4SLEpaDE6So2j2NpzL 0.00532212 -fiat/revs sendtoaddress RAxehmDVPL9xDKTYE71pexZ625MNASM2jY 0.00532900 -fiat/revs sendtoaddress RBa7SBKDCZnYwKoTQ133FoeCGwrcHMrmrd 0.00533655 -fiat/revs sendtoaddress RSueebkCEDRjCgQUNZnXAvToThSM96QyDV 0.00533810 -fiat/revs sendtoaddress RWTTgzcHUUysWWDdFv7MtLgxkyadh3oSkM 0.00535304 -fiat/revs sendtoaddress RDRXb2XLd5pqSjyztvRQcC9miVb1oAfwpb 0.00535691 -fiat/revs sendtoaddress RWQdiKTudFqUnX7LKG3Lb5H61RxKntEzgK 0.00535734 -fiat/revs sendtoaddress RFHoaGLGA4auj4PWY7Qrt1ybi8JrJHP162 0.00535846 -fiat/revs sendtoaddress RN11EX32s1um9qPvqAQiAusJA4D4QTxTuw 0.00535950 -fiat/revs sendtoaddress RVpm5qZJZ86MKjXKq2jkFAVtdK4rNvecf8 0.00536174 -fiat/revs sendtoaddress R9VnVnNf5g5pzebWhqKVM14ky4N7cfMoYB 0.00536218 -fiat/revs sendtoaddress RBzSyWMNSCA66zPSQjnjJwJfxUf18AsdjS 0.00537361 -fiat/revs sendtoaddress RNnHQpK6QtfAxqyBufPaTzmp5sSTD3BS4N 0.00537760 -fiat/revs sendtoaddress RApPJM6M8nSvbcrrYv48qVLcG1TmaFA5oY 0.00538100 -fiat/revs sendtoaddress RHDXduCiGfv818DEFYeT8R7VQ7akdSdng4 0.00539543 -fiat/revs sendtoaddress RGCe1jBHfNMXsZvDxvuiEn27BSYr5smqej 0.00539592 -fiat/revs sendtoaddress RVLzPp7NR8TCmpgWmZDA5BK43R4YK8NUcd 0.00539673 -fiat/revs sendtoaddress RPUyucFjHKCpoHcEwgCfyYDZxU5PD5TfYs 0.00540000 -fiat/revs sendtoaddress RTXXRgujmKPznwtFSPWQGoW2WscwgKWHpH 0.00540525 -fiat/revs sendtoaddress RMVm3xBYNDYG8sVrQiRasBgjVmzzYMRfgf 0.00540679 -fiat/revs sendtoaddress RC8bFZtpFCYfVc6UqkTNk3bQ7QrLsa969v 0.00541579 -fiat/revs sendtoaddress RLiYhmwSbVHj93Ha9xWerdattyYASwYTEt 0.00542228 -fiat/revs sendtoaddress RAg92KKyZnNPzjtdghVMft5frUCgQAkqZ1 0.00542381 -fiat/revs sendtoaddress RMqQGGy2gMXaoeSbTXF7r5QtTAPo5c9Pce 0.00542432 -fiat/revs sendtoaddress RQnfZdD4CaVEYwc1PFxeZKUKJE323Cn35D 0.00542561 -fiat/revs sendtoaddress RLFCCKwvhqwevRNWg2jK1HDJMx4QTXAbRj 0.00542715 -fiat/revs sendtoaddress RW4UMFKHeXSQrUKAbEKE8FPgFLuy75neoz 0.00542948 -fiat/revs sendtoaddress RSxDBjXYhNqnPP5x4Z1TVHALJ9m7SJENpk 0.00543024 -fiat/revs sendtoaddress RMxxSTxiMuFjREqRPHDg1MYRmrvP2YzefT 0.00543539 -fiat/revs sendtoaddress RBK3K2CQXHq3TwY31YYP6pheVtvKmCwqBB 0.00544000 -fiat/revs sendtoaddress RDtfBJqFNfrrU4PPvWjpYxkRz1oQDusBsU 0.00544230 -fiat/revs sendtoaddress RFkk7WFFRUe3G9ipFyqgxPxtCurWMSDvMZ 0.00544498 -fiat/revs sendtoaddress REZUvozgDCgG5XCpfSB92dLX3BRTkAtz1L 0.00544653 -fiat/revs sendtoaddress RACCxEgmQ2HEnD2igCCny5aArtRQSEopjm 0.00546168 -fiat/revs sendtoaddress RCbCEFCd2KfiubJfFWW8XzyX3k5eRdDpcE 0.00546400 -fiat/revs sendtoaddress RPkzJTLmG21SapsR8bck15oonnTfxUeqeV 0.00546413 -fiat/revs sendtoaddress REJ6Ea6sds7NENnVxQL67DQ74gToPELTFf 0.00546567 -fiat/revs sendtoaddress bbaffqvZobXnktsDx8TBAqrDU16xiqMJo7 0.00546724 -fiat/revs sendtoaddress RWSCRotTj2kbJvt2VUHrLE1YgNzHCQXeNo 0.00547590 -fiat/revs sendtoaddress RWoJeHpUNsPdfieE4g6dm4qVyFHXUSASgx 0.00547632 -fiat/revs sendtoaddress RM2ZKDYJ9AsHus1yhBsfAF1xh7iUvvqJc5 0.00547885 -fiat/revs sendtoaddress RQN8Z5vbBgpUcUhgpq7oe35EEPctbPTqKb 0.00547895 -fiat/revs sendtoaddress RHoRPU4FkBehSjhMxbrosY1pBPugbRLudj 0.00548204 -fiat/revs sendtoaddress RFBoHZfiECkZDbeUi2tG6ZThd9KNudYCfZ 0.00548269 -fiat/revs sendtoaddress RQsuzuUMTPLgNU15fzk2QdCbwDQGAsoMqS 0.00548603 -fiat/revs sendtoaddress RJGHy83EjKznQ4o7sPwUsL6wqmwv5uVJbR 0.00549251 -fiat/revs sendtoaddress REoZrsMV9U9vEgtaGBremJbcVV9WuFvccR 0.00549392 -fiat/revs sendtoaddress RRiCdUzijAE1bqt3udYovVTKdxrwF7QiuV 0.00549405 -fiat/revs sendtoaddress RHzBzvCaqd3DNEMDkbz38Bu2FDv6qy8TfB 0.00549732 -fiat/revs sendtoaddress RC6U7HZ8vJWVEVmgKS36mx57XPpkU26Npk 0.00549887 -fiat/revs sendtoaddress RAHVKYQweJjQs4Pvi9CJ63rLJR2vEXKPvF 0.00550000 -fiat/revs sendtoaddress RVDDcn2cUBaprCAFhh8FMJ1YoHYnMNtGdV 0.00550118 -fiat/revs sendtoaddress RXTY8EmDwyUyAxBw7hT4DzDWFCFA2kh9iq 0.00550386 -fiat/revs sendtoaddress RGy4WeA6FUi3JZ3iedPR34w2xSHo7xud27 0.00551188 -fiat/revs sendtoaddress RMCDJuXg4DitW7rd3FueWfYKisqLigfR7Y 0.00551343 -fiat/revs sendtoaddress RGN6K6waQKXyZoz6ygkdTC7fXWDZwUAuch 0.00551626 -fiat/revs sendtoaddress RUT3LLF9uMq9uM5vit62EVbJnPw7UHC9Lw 0.00551768 -fiat/revs sendtoaddress RCSFW9XBSv1XTkJPszz3Hjbu1z9MXgTXvE 0.00552000 -fiat/revs sendtoaddress RNyHRwo36KPzJHXXV4zma2v6ZtYWiBzYJi 0.00552620 -fiat/revs sendtoaddress RYMgUqnNmDx33jop3346MGM5uYVNiX5P8t 0.00552775 -fiat/revs sendtoaddress RSfACTKVLGicV2UMjN8CW8riwkoVtBaC1K 0.00553224 -fiat/revs sendtoaddress RTjLhDRyU6XUGnzE6jDBoUsMNFBj5FYobH 0.00553379 -fiat/revs sendtoaddress RYPpiYFtP4TZjAT3itSLZdk2fKKQ4UJdEV 0.00554656 -fiat/revs sendtoaddress RXXe6GhctoCqMhEPDTQxMTxjVDCjZdpLpW 0.00554811 -fiat/revs sendtoaddress RLziDDqN1gLsmykXnMCrwKh3LwtdtMACac 0.00554842 -fiat/revs sendtoaddress RA88pWed96KSJgm5gcgYsb8g2VUfZt2sae 0.00554894 -fiat/revs sendtoaddress RQokSgWu2ALC321QuAshMVZj8ZY8BaMpgg 0.00555139 -fiat/revs sendtoaddress RBPctRXcxsrs85Lyf4vqJkU1aq4Khw5MMq 0.00556286 -fiat/revs sendtoaddress RXRJDjEbTAayaU1MmJ9GTrQeRVCEoNmtbE 0.00556326 -fiat/revs sendtoaddress REBZbg2qgMNg1wnq8vEUsmx7MQrnjRkV35 0.00556594 -fiat/revs sendtoaddress RJt2MrPxwu36ZC8FNxUsBk2HCCqEwYhPTV 0.00556749 -fiat/revs sendtoaddress RL5HtFd4vwhbFCvxoraDLjCAGQ8fgnm7Ey 0.00556816 -fiat/revs sendtoaddress RYAhaeB5r7qdKSd1n2sgnxjM3JtSU1Q1Ht 0.00557801 -fiat/revs sendtoaddress RDUyJqFYmPx8ampPXoi5JKShJTfJr3mMsU 0.00558200 -fiat/revs sendtoaddress RCrSxNTbCPELJgzRa5FrUHWoqTxX3Yeq69 0.00558255 -fiat/revs sendtoaddress RADhQSqyrmb6g242KUnMNb9zxUDmzGhpVJ 0.00558264 -fiat/revs sendtoaddress REXY4MYifbJAuwqdkS2jABCUfJaoFuhnsb 0.00558663 -fiat/revs sendtoaddress RVqJ5hi17YjUfv1ZcmsqpbzCfpy2kaREMN 0.00559837 -fiat/revs sendtoaddress RKgju2EHMUw96CDiWEM4dNwkAoV1xPwano 0.00560236 -fiat/revs sendtoaddress RJcKxYa7Pt1VSACX7TwHBQasnVAZApVgNG 0.00560300 -fiat/revs sendtoaddress RSndd8vymjMPaBtasXkiGihVRv3oYB7L7R 0.00560699 -fiat/revs sendtoaddress RUtupvGgPXcatGTgtGwhLXJpo1Frbeuv7C 0.00561501 -fiat/revs sendtoaddress RBHpyZowvPr9V9BXD62kDGmmUfraroFYC3 0.00561751 -fiat/revs sendtoaddress RRCDc3W6ZSQzJNYiTt8quAApNA5P5YXGG6 0.00562019 -fiat/revs sendtoaddress RX5imWhK7EsfbMZU6bUSjK3b1sqEhbhLtn 0.00562174 -fiat/revs sendtoaddress RCngZzyNjKzSimDUAWgeTzX1dvgGNe7av9 0.00562482 -fiat/revs sendtoaddress RPhy1FYjhWUpPMJ9KVo5Mqf3ENBWjtzVmX 0.00562976 -fiat/revs sendtoaddress RJSCQkx8rAvtGJ5udgYNaog5m79ewssBB9 0.00563130 -fiat/revs sendtoaddress REVYiZt92vbwaXuvdJEqUhJE9NgPHJNCJB 0.00563284 -fiat/revs sendtoaddress RU4RxyhQHZcnQTvk26qcceEP78nS24qU9K 0.00563295 -fiat/revs sendtoaddress RF4GdzKJQTo4j1tNjozWyL7QQVTaBJtAai 0.00563439 -fiat/revs sendtoaddress RDf7A7L2rG9CBvCUQQ8wyu9TXVTxPAkd5x 0.00563534 -fiat/revs sendtoaddress RUn5Gj621GJSJpiJa9DKbqxtDMnxFWRcNv 0.00564400 -fiat/revs sendtoaddress RJhFS5jJTmRWopUpqzh2ccE6nfgWqt9RMJ 0.00564978 -fiat/revs sendtoaddress REUkycwUciwbAeSCq96sbCKfRMCwRsUvpi 0.00565012 -fiat/revs sendtoaddress RUAwyRDXtsv7B3GVU7Gbyis187fEF9Q1Vb 0.00565320 -fiat/revs sendtoaddress RGrrZZkEEiupBfCKU4YZWezT7TdcFaiWn2 0.00566527 -fiat/revs sendtoaddress RKRzK1Yn78NiHGCRCMUf1EKz5RQoeockXN 0.00566926 -fiat/revs sendtoaddress RHzCdDtVepZiUfdExgYAKFZv7E7HA4oPSb 0.00566990 -fiat/revs sendtoaddress RBHTwfj8wW8tPJncNZoQpcw38vFiGEJBmV 0.00567014 -fiat/revs sendtoaddress RS5MdXH5LmnjLRRYNH5FWvsEW81XWiXUmk 0.00567051 -fiat/revs sendtoaddress RXoqyFNdk9fQuBbGirpWqPxzZuVUhM7oH3 0.00567108 -fiat/revs sendtoaddress RCeSuUcPLGcyMX5gYLrtXZKmXTKhYFvVPL 0.00567169 -fiat/revs sendtoaddress RUMreZrGhcd5zYNjdAz1jDT5FTorLwnHr7 0.00567234 -fiat/revs sendtoaddress RXHgvXSXHiRcw8s6BdbrujcuDDYpK6oAkT 0.00567265 -fiat/revs sendtoaddress RUrrpG3n7jdCn3fMKCHa4bbj7BoQ2YeAFn 0.00567389 -fiat/revs sendtoaddress RL87PNyQdyjp2mHJ33xz2EhmUcmwkaB4P3 0.00567593 -fiat/revs sendtoaddress RQfi4xtCHszA5jZqvcAfAmbWBz24hJrF53 0.00567660 -fiat/revs sendtoaddress RKHmefbFrEasog3gBpL9Ezut6wQtg7HeTf 0.00568000 -fiat/revs sendtoaddress RGwJoxxk1buGxFpJMZ7LrwM42RLttXA2vD 0.00568380 -fiat/revs sendtoaddress RGMuge1u1y2efD255hJqLjGZRgsjBhD5Cw 0.00568586 -fiat/revs sendtoaddress RYGngvxBbxuGzCMkSCMWUFQ4YLxhaKbUvF 0.00568644 -fiat/revs sendtoaddress RVtA6b3uFMXnM6uu9TvEGCp9QAZPTp1cyt 0.00568864 -fiat/revs sendtoaddress RAaU1p7LS2oYhkcZhgAZbxVe2dpDksxsrC 0.00569008 -fiat/revs sendtoaddress RCvmCwW6SGK9kTaWuAHmULy3d3BiSWz6he 0.00569043 -fiat/revs sendtoaddress RSBWYwxkj5UcHeYezxGnQV3wDS4qJutsap 0.00569107 -fiat/revs sendtoaddress RHopxtJrppmEzGEt1eW29NxJUHTohWcjjx 0.00569274 -fiat/revs sendtoaddress RCdG7wLBGBeQjsTMJ9AE7dx78TtzUqckMi 0.00569351 -fiat/revs sendtoaddress RKmGMx8nGViW8X4v2kEPzm246LZpuJFa6x 0.00569506 -fiat/revs sendtoaddress RShWa6t5V5zM1RwWRK6io1xQYyxDUF8Wxn 0.00570153 -fiat/revs sendtoaddress RERVcLF1ncNv9o1DLYeVuN8kMRNaocrmAc 0.00570294 -fiat/revs sendtoaddress RBhou3pXrCqL6CZPJczz4qqDkDc3B8cb3F 0.00570900 -fiat/revs sendtoaddress RWUw9sWfSYfnBVYuZxM3ZwsfoBg92ipkii 0.00571021 -fiat/revs sendtoaddress RBtmAxvSuR7QQVHnuuVSfvS9xwZ3w1BMaC 0.00571782 -fiat/revs sendtoaddress REcBnbSba1X24upRSSKXHUkupB8yj1Phsu 0.00572189 -fiat/revs sendtoaddress RHgsnkAmZuEuaztYRvd6yuJNHBeJXzLhWt 0.00572594 -fiat/revs sendtoaddress RMZ7Wet5MhihAsJh8vfBW9yfkH8dn2u6Zw 0.00573432 -fiat/revs sendtoaddress RTAVVQRwvm2BMyNWyfLjiSTbstuH31K2nj 0.00573819 -fiat/revs sendtoaddress RN2wkFc9Ya7RMz1JpLPzZYbhoTZ8CT7yqW 0.00574127 -fiat/revs sendtoaddress RDQddTwdrAgY1LE7sxDj1FP6Ny1S9fzJSZ 0.00574532 -fiat/revs sendtoaddress RUT21DYRbHii1QkL4GetgMHD8d2aCe2DX4 0.00574653 -fiat/revs sendtoaddress RRzZJ3y1nEx1VPZn3DmPchTwGbcoWsJvfR 0.00575287 -fiat/revs sendtoaddress RH7zQHUx2sZrf9mxM3dDcxaKMDDURHF4BT 0.00575454 -fiat/revs sendtoaddress RGhh7HnivEXL358iSjBVqghF6QHtDp9Dbs 0.00575733 -fiat/revs sendtoaddress RFoNCjyEahfVDKueP14QX4JKtTCzugv7Hd 0.00576196 -fiat/revs sendtoaddress RQXzuj5pfDtZktvsxM8nYW79zJDuCUUbra 0.00576500 -fiat/revs sendtoaddress RTdWAVUTm7FSPhLu8vsWUXSfNKTAwcDxtb 0.00577145 -fiat/revs sendtoaddress RTTENuQWEs8Ck9xBNhg8dNdQDNMHFMMhCL 0.00577187 -fiat/revs sendtoaddress RKmaGpSmTewDAXoWDdSwF9B99ECXE8CtJB 0.00577370 -fiat/revs sendtoaddress RKgFQu2Jj7fYt5q6sa4iQD4Pp88hzsgqoG 0.00577833 -fiat/revs sendtoaddress RBLhG6BNucW71xf8fYHFy3P5jqhgWvfiuB 0.00578600 -fiat/revs sendtoaddress RH9Uba9kXxeCwRrPsgAuj6MEzv7zsD3Pm1 0.00579101 -fiat/revs sendtoaddress REAQiyXDUhR21fNnx6uig423kPSgL6k2SZ 0.00580000 -fiat/revs sendtoaddress RN3Sr93qCZXU99ABUAWZdLvUcr3RUwToyM 0.00580739 -fiat/revs sendtoaddress RS5chW9qNZTkUuEEy2e5778Q9r9dtRsXao 0.00580808 -fiat/revs sendtoaddress RENegCvD4UMnGGd9PSf2konTMXiF2aAaSU 0.00580984 -fiat/revs sendtoaddress RMh7zNGrr79AfVkbo5pG4YAL4Mp2v8iKjx 0.00581138 -fiat/revs sendtoaddress RUJeTkc9dxKZciAM5zsea8b4g2HuqQzkQg 0.00581645 -fiat/revs sendtoaddress RSFT7cWvdv6ZMwEYAzAYJZP6NEe6pfhRd5 0.00582000 -fiat/revs sendtoaddress RGWUhxfCjjdp4emPuMZgssZdAixJrbscYG 0.00582653 -fiat/revs sendtoaddress RDr7T1BCN31PTL664PWeP9BwTbASdtF84G 0.00583563 -fiat/revs sendtoaddress RS9WCPzBTzfLU4PDaSS4SFPfUQoNb3Nptn 0.00584026 -fiat/revs sendtoaddress RXYnpgUBid7nJ8BXvbmormkZiZggmnMqYg 0.00584613 -fiat/revs sendtoaddress RFEdC2ibjTYgCeb2SThkSoWvmm4DrSTXZu 0.00584689 -fiat/revs sendtoaddress RFQUGdqpqAbqspigb6KG5gMVvjLgPsAgrn 0.00585469 -fiat/revs sendtoaddress RDMWBzyYgWDyv25djHvDhr4kDPNUeULYgP 0.00585604 -fiat/revs sendtoaddress RTubTpvqYgAXYjki6XawjFMDh2Bmqu6NYz 0.00585914 -fiat/revs sendtoaddress RUcPLvqgwUetUEQj9jpAXsJyrGqSuv4x8E 0.00586472 -fiat/revs sendtoaddress RHh6gffEPTSXKQs1fEP6J1mcPcRqaiCts7 0.00586541 -fiat/revs sendtoaddress RN8K2whGzrPHUNkCwiAavHdB1fR4yTkwMo 0.00586627 -fiat/revs sendtoaddress RDW2aon7rrsAY2dish95bKYSH9Q73voJcL 0.00587194 -fiat/revs sendtoaddress R9k2QAczeowuiqrqiTdZ6RwMQF9TaCrSF1 0.00587429 -fiat/revs sendtoaddress RWLnLH2nBiRbgA8MHmovfbL3n11Xu9jRkx 0.00587828 -fiat/revs sendtoaddress RQkbZ423z6SeFttXUTFcC6urEZ72Gyqrp5 0.00587951 -fiat/revs sendtoaddress RPQ6hwP72NWBoyfhKutHVgkXdHxFv6TJR4 0.00589451 -fiat/revs sendtoaddress RDUthxE2DP62HCTbkQ4V4uzpsjudFHZkQ8 0.00589465 -fiat/revs sendtoaddress RUytQohDwGyf7Sg1XVbiE5oiWNy4Pdbwrh 0.00589710 -fiat/revs sendtoaddress REDELjMmxd4D9t7XH445NPritmivuuR3F8 0.00589864 -fiat/revs sendtoaddress RKSwbPEfKe1hkxdEA7bhSqkVvsFT2B1NGM 0.00591200 -fiat/revs sendtoaddress RCWwNRqWRwq5SKATCzuWbJmayEmo5H513e 0.00591379 -fiat/revs sendtoaddress RKEUA3hMjcPuWo8nuJr12ndtmKjkviR6bz 0.00591400 -fiat/revs sendtoaddress RFBiCQCdJ9wUpL9QjFDJjNNv4KXUVZ1bRp 0.00591494 -fiat/revs sendtoaddress R9HVek69iLhLBqCsc4eY31DVX8792yNDDr 0.00591647 -fiat/revs sendtoaddress RS6T9QqCoAWMFREMagyRUGhEEbGyH9pzda 0.00591802 -fiat/revs sendtoaddress RW7MxqVKZQgjMy8bXy8jGtCXDRwMVh5yuY 0.00592000 -fiat/revs sendtoaddress RX7wJr26p8J37EYuLe3UkXkDYiKekTfaEk 0.00592493 -fiat/revs sendtoaddress RVnzxA2UhDq9MCqEFcrJpRdAd6jC5Ktauc 0.00593496 -fiat/revs sendtoaddress RWuHTP2GxQ6ru7N6CM95Nyp5FL4mRYwbWU 0.00593805 -fiat/revs sendtoaddress REgmJSujr2JS137Qb5SBrLCxK9UEd7mtgG 0.00594000 -fiat/revs sendtoaddress RUzSBXwqyaMLqb4RY7pRQgYHtkWwwy7BuS 0.00594276 -fiat/revs sendtoaddress RCUNekMDiux79LzKuSF617kog1X38cWfa6 0.00595353 -fiat/revs sendtoaddress RUmANCYTfoYTEpwSipJKtEDtnDnj6CBApj 0.00595869 -fiat/revs sendtoaddress RLTRxdHcjewmqAQj36skATran1M2v12ft2 0.00596312 -fiat/revs sendtoaddress RSNXCCP4LtU5gr36Agvx8zNu719HJPTRmT 0.00597101 -fiat/revs sendtoaddress RRxzUTHbgr9oX7LbZnkjimnwbdKznaZ7Tv 0.00597559 -fiat/revs sendtoaddress RWTd3ntMZ1E8Lx3WPYmpRhQnFMVWxY8ACK 0.00598671 -fiat/revs sendtoaddress RNdSaLsi62eJcVTiKZT21gjzWfuijnSVVu 0.00598980 -fiat/revs sendtoaddress RQYZeEweDy3zrzvJSJp7NSnKfLyBv3eF2c 0.00599036 -fiat/revs sendtoaddress RKpXuRz5fZ73xXQUDFy1S3dDLgBN49hpkp 0.00600000 -fiat/revs sendtoaddress R9eHbVUveaaeyRjp7rH5y5gofwwpyfeDN1 0.00600341 -fiat/revs sendtoaddress RREaBJb4otpyyFox6wNC69WSSi7xQRfn6Y 0.00601546 -fiat/revs sendtoaddress RJVh2LpxjQSQwvJnJCq1zEHTM86fTBYpj8 0.00602000 -fiat/revs sendtoaddress RCTmtFr6rvXSt5UyXmYs8SbBwGs1s7ovrm 0.00602639 -fiat/revs sendtoaddress RVaP72a9usi4kuP4ECpWofwjUWjfxqu2B8 0.00602791 -fiat/revs sendtoaddress RFraV1ZrsDKnTp1NV1s5PKxSD2FtNf1y9p 0.00603002 -fiat/revs sendtoaddress RLurkJ7JhQzd3XQY1Fm8zFAvpbEUE9aN23 0.00603037 -fiat/revs sendtoaddress RH5gJxgXEQWsCmk1SQi4FHmAyxSGJmW5Dy 0.00603434 -fiat/revs sendtoaddress RGoK61REbeuAUs48BMphwb6eDnup6U9WbR 0.00604000 -fiat/revs sendtoaddress RKjVCTjw2tAQv5VcQjtztRteypf64SXvdR 0.00604126 -fiat/revs sendtoaddress RFKaZ3wCwRLfc8tREo1tvXevhKFGfec46k 0.00604434 -fiat/revs sendtoaddress RGF3VjD4vUoFEqpuBQccJMBmare35EfynH 0.00604589 -fiat/revs sendtoaddress RMTbeBcrx2FKibFUZfgJfFihEgR9ouTWNx 0.00605400 -fiat/revs sendtoaddress RMdztKP1TUo4xJqiSNKupxaXtztUU7SzNZ 0.00605437 -fiat/revs sendtoaddress RHKAoeiqaMZd6Xsdat4bXyyNm9KGAxFt4F 0.00605909 -fiat/revs sendtoaddress RPJ7WpdDiJ5HWQycUoZ6iyvBFKV34aE8ft 0.00606372 -fiat/revs sendtoaddress RBSpALna55u3NarVFV3Nbb26sL1gUSLqLo 0.00606400 -fiat/revs sendtoaddress RD29Em6t9zBQmATLxr8dJBJPtfdQZtyjy7 0.00606501 -fiat/revs sendtoaddress RW9NyFFTxG1ikRKy4bokXW62mzpELEot4D 0.00607387 -fiat/revs sendtoaddress RKyueWPFeSy2asUaMXAq1GqgYKqfTYnw45 0.00607485 -fiat/revs sendtoaddress RMAChTg2nsEcdRnqAQhufLTFYcrT1XaLkd 0.00607791 -fiat/revs sendtoaddress RLG9aKSmeCPz97uQDQwo8rMFw3V4xBE6Dh 0.00608000 -fiat/revs sendtoaddress RJS3KKDr4qx3CGdhDBRqm2Hn52ww8H57Y6 0.00608038 -fiat/revs sendtoaddress RArFUYsWVB8mzKGxkRnjG299jHJWhTuJEt 0.00608100 -fiat/revs sendtoaddress RK1v3eMdHHUnxjY3s5nwzeSKMKeBWNZZq6 0.00608327 -fiat/revs sendtoaddress RHLw3hgajj6W97DxQ1wvAijYXP4ysBa7NT 0.00608408 -fiat/revs sendtoaddress RVNMJQHKVRi84AnwfjstrWwrUpg6Pu71jo 0.00609460 -fiat/revs sendtoaddress RG1xjAK4cfgVR8wmTQVkGvPcCPZJsVMinv 0.00610000 -fiat/revs sendtoaddress RFKbCF9P2YC3jSuR3W1X7cuVDnhA4AqwW7 0.00610612 -fiat/revs sendtoaddress RSRq5jZZdBLm2K9Rakbps2XN99DDrwaa8V 0.00610767 -fiat/revs sendtoaddress RKR45xhjWW63EYpW4A2ebJUGb3TMUd3YtG 0.00611797 -fiat/revs sendtoaddress RFrgao9JNPkNARCnvLh4kSsHBzivwLwBed 0.00612055 -fiat/revs sendtoaddress RBps5cjNm2jQAjwN1g4RSAEfuFyFG6wrAy 0.00612311 -fiat/revs sendtoaddress RQ7uMgMUStCw8EzCjS6aQfNSroHFb9eEXs 0.00612389 -fiat/revs sendtoaddress RANVZ3MKmjM58y8zjAL7tZ4T144xZEfW77 0.00612898 -fiat/revs sendtoaddress RBWEbnQTjV14DvW93iVm7pm7mT8WEXT22S 0.00612933 -fiat/revs sendtoaddress RK6eiUSELDHCoauaDoBVrhLxePDgfDxfc4 0.00613396 -fiat/revs sendtoaddress RKbCK7L2X5UHNp42CL6qLkaqCsjmi5nxFn 0.00613572 -fiat/revs sendtoaddress RGVYTvM3j8tiDSHdA3FYdWDgcfRb6NQzN7 0.00613833 -fiat/revs sendtoaddress REsgN22ARUdG6YDKZ9myR88aJiuyP89sb9 0.00614318 -fiat/revs sendtoaddress R9yd18YhsHQKKPvtjiad9EQtPhwVxa3UWy 0.00614790 -fiat/revs sendtoaddress RKycTGLvrgbf1EoeLBBAAmG9QieRKA1iuT 0.00614969 -fiat/revs sendtoaddress RFR13w6KSepyffuDMywTxktrGPyuKXfskP 0.00615277 -fiat/revs sendtoaddress RCpjHYGRFSh1aCFTALiZTe5PEGj1CExHSP 0.00615432 -fiat/revs sendtoaddress RYEuZPZydLuGAdRD56XzAQuXmn9Sy4D1Ng 0.00615997 -fiat/revs sendtoaddress RUwRn3XdXSumRpv59xYHLQ6UbxTQqEoREj 0.00616253 -fiat/revs sendtoaddress RPcD9qy3BBKeMxsXaGsQB99zGmeaVHstET 0.00616484 -fiat/revs sendtoaddress RATZoBcMgRoL1vidm8bnvzKYAwkRaVTEYr 0.00616535 -fiat/revs sendtoaddress R9THt9dBAKweCi5tH7eMxfVvtU5w654Yq7 0.00616561 -fiat/revs sendtoaddress RJvjSVHABW8FdtA1x2QxxnH51cfWvDcsXs 0.00616583 -fiat/revs sendtoaddress RW1EDW15H3DELV6x9dAQ76ZFas163qG1wR 0.00616752 -fiat/revs sendtoaddress RVo72ueDubQLPiPtY9nYHGGDHmcjRsQtLK 0.00616792 -fiat/revs sendtoaddress RTtAZapqfm7fiUP6CWiSycgDoWtbeutanW 0.00616907 -fiat/revs sendtoaddress RGDEHH67ictZ6YYTjnahqgmJhwkpkwxa8Q 0.00618821 -fiat/revs sendtoaddress RNKxupVAxo75x73qTde6HQM4TnH7w56UUP 0.00620001 -fiat/revs sendtoaddress RV1s8sBEUBQuyQz3hFqrEDzrmYc8Jron1E 0.00620039 -fiat/revs sendtoaddress RUhXyy25oVrTCYR9uqQzEuNXytrj7J2S86 0.00620168 -fiat/revs sendtoaddress RLb2FtdkuSueuwpEFMBpvSRte8G6ENMr3G 0.00620458 -fiat/revs sendtoaddress RV4LwSb2woPQDLCnkzZ1wv5HS6Sd5AxagX 0.00620680 -fiat/revs sendtoaddress REVBC5Ug2gJDQjmkBneBbuUvnGfF1rzsQX 0.00620857 -fiat/revs sendtoaddress RPifMVu6q6rrdR2vWTaDphc1Vx5iYd9HXi 0.00621317 -fiat/revs sendtoaddress RASTNkPHMKcTzXQSmmB2CctNMvMTHsMGLT 0.00621659 -fiat/revs sendtoaddress RRHLrxx38r8m5HqXpwUwvkTCZhaWs5N2AQ 0.00621967 -fiat/revs sendtoaddress RE4rFPpDn8daJ5f79DduhYKV37WwuvUPpE 0.00622347 -fiat/revs sendtoaddress RWYBK7PxHqk1t9d6yvuVX8oiGpG5xMMZwj 0.00622388 -fiat/revs sendtoaddress RCAJr3FGfTD3bjUKMginAezJ9TGmAAZyVG 0.00622640 -fiat/revs sendtoaddress RADT6mhQ7Qr5qixxMkQyAKYUbRxjw3KojD 0.00623442 -fiat/revs sendtoaddress RXc3s582ExKKWzpE4DTXimn1zi8XRjyFiC 0.00623597 -fiat/revs sendtoaddress RDgfnvEVi8gee9eCDoPor97YJ8hWPV6QrJ 0.00623891 -fiat/revs sendtoaddress RA46tKefmRb2V5C96X5Cx28Jcuka3MTHSx 0.00623905 -fiat/revs sendtoaddress RGmKbdTQRe2YvpXMHZ2tQXQc4nNEzyoPwX 0.00624022 -fiat/revs sendtoaddress RK91ZMWDEugaDYpMcevEfx7xqLex8mbfWw 0.00624118 -fiat/revs sendtoaddress RML4fdFzZiRVth5LnmYe45BQAgy2xya4EN 0.00625028 -fiat/revs sendtoaddress RGpyHoP6t4CYffEydw6nG149g4uU4M57Pk 0.00625478 -fiat/revs sendtoaddress RFHkSw2QmyeF54zveN88LALn4R5KF4H6H4 0.00625787 -fiat/revs sendtoaddress RCVNYDmQvkopysryzoBFjMCK5B4Qs4WCwj 0.00626655 -fiat/revs sendtoaddress RMcycooaPXTkogEGH5E1sBHppssejWy5U7 0.00627064 -fiat/revs sendtoaddress RSokdbdPs5JUvgEb6mxvVL3aRq7YJjY1sj 0.00627096 -fiat/revs sendtoaddress RGx9MWBuvUFU9umq1MDrWtwcJST59YM16Q 0.00627333 -fiat/revs sendtoaddress RLagh9sfYv6oDtgWJbCmqdyrKv2VRsbNNB 0.00627404 -fiat/revs sendtoaddress RH4Ad9fYXiPU3EXyHRoLN6MUSYJHA6LsP2 0.00627599 -fiat/revs sendtoaddress RK9xdzARYYLUCVQmGNuhMmjFDLaoUtw5qY 0.00628092 -fiat/revs sendtoaddress RAZvG4BnvdtspNT5WSZuhATiVwHuiitQ1d 0.00628579 -fiat/revs sendtoaddress RT9g8oqbaXv8gKGqmTid4wVthWi1mwd3u5 0.00628694 -fiat/revs sendtoaddress RHPriUPYeq7SeQ2f1gXoMH3C1qo9NSjV2m 0.00628847 -fiat/revs sendtoaddress RWSAaEUuPKyJhosUFi3eVXYD9Ed7TYxVPb 0.00629002 -fiat/revs sendtoaddress RXeDu9zgNHkC25Ci1gW1GZoWLhyENXjJfW 0.00629686 -fiat/revs sendtoaddress RAb9RzWVhv4HF8PS9potAN5cTJWmqaYEyG 0.00630362 -fiat/revs sendtoaddress RLfWXKA6mGBSi5EKqKyqopPayJV2kddRE9 0.00630431 -fiat/revs sendtoaddress RPEHs4gu686xxRqoxZMojYr9s7ovgmcfjy 0.00630517 -fiat/revs sendtoaddress RYMiyLnCcAdPrUhyhWHu5CWxafYeiVtV2x 0.00630762 -fiat/revs sendtoaddress RL8jtKHYzWRKYUFFWxRGBogupnXBmbFDsZ 0.00630855 -fiat/revs sendtoaddress RDCZB8QPeRf7AcMUdWYtznxNLgwCsELXiD 0.00630916 -fiat/revs sendtoaddress RAmirk2JfBh87RkuuudgSAm3XrXrPBbFQm 0.00631410 -fiat/revs sendtoaddress RP4SPXXPk2Ect2nQzN9MhPPiz6mQr3kzL7 0.00632553 -fiat/revs sendtoaddress RP4PkSek4tymDKEzApZ2z4c2VcooxR5DdZ 0.00632952 -fiat/revs sendtoaddress RTtyTYcKm5brKHJFxHMsMNx8RxvPWeLgdx 0.00633754 -fiat/revs sendtoaddress RBhEKuvWMjzTEDWjvznFbvS8YsUhbzYEAq 0.00634063 -fiat/revs sendtoaddress RHRzKDsGw3EKV1rEUD3NFFHE66GFGK37w3 0.00634467 -fiat/revs sendtoaddress RVtFAbk1Ktj3o7M9XWhbtUBNgZomHMYQF5 0.00634735 -fiat/revs sendtoaddress RTWhRFtUThPQSfRmvaxcX2THVCtqmXTsed 0.00635537 -fiat/revs sendtoaddress RW6FLKwVoSB3SnzZbZSTSQ7K27bH2kLmq8 0.00635692 -fiat/revs sendtoaddress RSDJDtWvR3QqVmkRV3Nr8DtfS5iESXsHpu 0.00635717 -fiat/revs sendtoaddress RWAbMnQU72nUsFRr1ab5h4jR5BWR9mKE3Y 0.00635837 -fiat/revs sendtoaddress RRLRWNsu2a3TqyfhcAxJiNYAEzsQ2YGX3X 0.00635871 -fiat/revs sendtoaddress RB9vtBamt9D3jpwydGcT4po2bmFJx1LF4c 0.00636130 -fiat/revs sendtoaddress RRFUMy65uiLVGTchLiN4sLSjotsVHTuDet 0.00636140 -fiat/revs sendtoaddress RJQ67it77fBymXPyRKPgg1vLpgXf5qvAuZ 0.00636180 -fiat/revs sendtoaddress RTTHb6oSFD5aENrE4jrRZSawTepi66srXi 0.00637123 -fiat/revs sendtoaddress RECph9CpB6nGQAE2YmARkRYUCWtkCaXMxC 0.00637258 -fiat/revs sendtoaddress RSbPeQeABAqoxArp2CiyDR2nLrojdEVa8k 0.00637386 -fiat/revs sendtoaddress RFsNeQ1Bq3dNLqArk2ihorT6zhBLssmxQS 0.00637573 -fiat/revs sendtoaddress RUCKoGyss8uQvW1oS7kn7jTAArZRm3GrM4 0.00637728 -fiat/revs sendtoaddress REJQMfN1yj8wbQkMZNTi7mEexFYS9Xk1w6 0.00638286 -fiat/revs sendtoaddress RF2uZjrcEBAYhNCNbV6chSzQMhbkD6J88Y 0.00639422 -fiat/revs sendtoaddress RMxAHyBP6DswUoy5KP3AQSbi7nhX2eXzrr 0.00639642 -fiat/revs sendtoaddress RJcqRuYBX6rzURQaqRHhrD3PMuqk8BUJyq 0.00639800 -fiat/revs sendtoaddress RYVpaeWu4eBVrpiJ1tkeNcdhUg9VWdc2kw 0.00640000 -fiat/revs sendtoaddress RG3PTGNe3jRzk1EvGzAZLUWtoKUEChKKTo 0.00640540 -fiat/revs sendtoaddress RTMD1kt8mtQb6SWi2tog5AR3cD45EbGoP2 0.00640637 -fiat/revs sendtoaddress RGuktPmJnFqWrfXqKB6DP4P4Cb5astvzcv 0.00640942 -fiat/revs sendtoaddress RM6GKtsy7qzr9sdLgLfPBNnv88uoYMvMyc 0.00641205 -fiat/revs sendtoaddress RHKMsTaYyoBuGJiYEZecbJZJmXC7xUtJDY 0.00641262 -fiat/revs sendtoaddress RUeBz4x1tcrhQUQd9mGbU4qCfZis1p8SNb 0.00641360 -fiat/revs sendtoaddress RWpfkXKFz2CwmeptmgCX9i7JVzouzyCn8e 0.00641759 -fiat/revs sendtoaddress RS7MytBw5caUVGWVDo8to68EEVVKgVeLuy 0.00642000 -fiat/revs sendtoaddress RHUo72QtYFG2vcQhCLrAv5KQNGZcLgvwVE 0.00642116 -fiat/revs sendtoaddress RUNBTwpNR8rnDT6amMKZBwUTvctRN8tPvp 0.00642407 -fiat/revs sendtoaddress RAZE376Uh3Mpdamzp9tBbHSMK9HJdMbisK 0.00642548 -fiat/revs sendtoaddress RF8vxCuq8HwJXdwFdfiKcBAAXoY4ETcov9 0.00642561 -fiat/revs sendtoaddress R9NpjmJQxpMSUHFZb8tpxcAurjz6fKmzy4 0.00643274 -fiat/revs sendtoaddress RKcTfnuJ1uGoKCgRen9T8errNN6ScG6oHb 0.00643461 -fiat/revs sendtoaddress R9Z61J7pMhR6K7eYD94FEx8o1BPhYDzNhJ 0.00644597 -fiat/revs sendtoaddress RMp4Q1sQLdakmZpwFc5mqxRWHCeY6LSdFY 0.00645310 -fiat/revs sendtoaddress R9K3nvj3iQcSYTWJTmvBpJwS7dX8AUW2fK 0.00645547 -fiat/revs sendtoaddress RGm91Js4VBW5ioGX9ebT7AJpKoLAReCcMT 0.00646004 -fiat/revs sendtoaddress RC4As2c2DgDY7UEuHx92wwpmY5E5qQANyJ 0.00646380 -fiat/revs sendtoaddress RLgYLzt4kMF3S4nAqgtkpMBN9QpAfw1BT3 0.00647093 -fiat/revs sendtoaddress RGmBRE8nv3Sk8UW5PqSyb9pu1scqPTNMQD 0.00647812 -fiat/revs sendtoaddress RL8mjPyuwcKmgcwEEDVcLpMuiGDZY4KuMq 0.00647967 -fiat/revs sendtoaddress RXN5PTgDVttu5kx6Nwasa64Y6mxPnp8KuC 0.00648050 -fiat/revs sendtoaddress RWSGyy5Pd3f2fxFVXGJiMDkBZpBWLk96U5 0.00648449 -fiat/revs sendtoaddress RB4iYmSGu6xQ6ESKksND6aVSXTMpwrHAwQ 0.00648995 -fiat/revs sendtoaddress RHVRaCGYFrfpqrbtuJuTGRePW3jCS1ZLyF 0.00649327 -fiat/revs sendtoaddress RNNu93yzN5tttmjZwRkwhTfSzxjLsFc9ub 0.00650086 -fiat/revs sendtoaddress RSh15VrZ6DN6rJ2kSY2piJgD5ecEBgDLbu 0.00650208 -fiat/revs sendtoaddress RJgcKCBNhzLdD9aydW2jLdhJmacaJGwycM 0.00650485 -fiat/revs sendtoaddress RCkvsVqMEyCDQZ3w2U4CqYyBiHcpQL8poa 0.00651310 -fiat/revs sendtoaddress RV9x8WPs6JqEXbSVKMsRBrUcAmDWBvh1TM 0.00651518 -fiat/revs sendtoaddress RGL4yq1iy1b5N1FwTdKDnK9sBFJYwnAyPX 0.00651614 -fiat/revs sendtoaddress RSc7UZ2Q2H2GeMRCQKx57x1Q5sMLnvfPZN 0.00652268 -fiat/revs sendtoaddress RTiW2LsdB6sgzcukcqWJR4JyXCCSPv9AKN 0.00652771 -fiat/revs sendtoaddress RWFAAciz2UBjbTiuhP6KBmyHUpwU4uojWm 0.00652976 -fiat/revs sendtoaddress RXxtSbTHkiyD5DqQ5VUBiFbadfwshKeivt 0.00652993 -fiat/revs sendtoaddress RAfW9W5puoUYHgTa9aWcehMHnd9n9ygSZr 0.00653392 -fiat/revs sendtoaddress RHT3ZQcWwPDJcgMaLiQu2Nqp7ZXDB32yEk 0.00653456 -fiat/revs sendtoaddress RDCqCmSjRnxT8cnZEshZpkhr699rTh6M5j 0.00653650 -fiat/revs sendtoaddress RKY8ojaUh9JWepJ7HRQAudpB3MaTdtmnQU 0.00653700 -fiat/revs sendtoaddress RWXhD1sXKQWk8ovfrt1Fda6J3ZyLYKiXy5 0.00653855 -fiat/revs sendtoaddress RMzcg9dwnYP6pNbNKS5mWcpDZCue5vWy11 0.00654502 -fiat/revs sendtoaddress RAHy4ALEmwfJyJeyPYiDXpeuWq7bPU4aKp 0.00654657 -fiat/revs sendtoaddress RQXR5UGXzgBvpNw8GXtyoj64hQAxoGcEbp 0.00654788 -fiat/revs sendtoaddress RP2CSxSApEGov13daoCtjUUathBd2Y31SK 0.00654907 -fiat/revs sendtoaddress RRJp5H1sHQPLoL61YGPeH8cTiXm1S6UJa1 0.00654998 -fiat/revs sendtoaddress RC5noxhCnS9MPNh7zVeqBUUrjZVDKFLohh 0.00655246 -fiat/revs sendtoaddress RDQw5C2TMNRG88pnGSbzvpgvcRoH73tVFG 0.00655370 -fiat/revs sendtoaddress RNd7UWHekMKKAod1Q24bb2Q2ebSHGpyM5U 0.00655397 -fiat/revs sendtoaddress RJefbJ54Z9UwXHfchfyDJ4qoACywquCKFV 0.00656279 -fiat/revs sendtoaddress RR9QAZuRNKHgHrQCuWNVb7jJT8sQc1swyC 0.00656693 -fiat/revs sendtoaddress RDieBZEnevSoY2s1R4VGSrmZxXxCyQU2Bu 0.00656943 -fiat/revs sendtoaddress RSk1x9bY7Vb2WXjQwrbLBWAeGTjdvVrMBj 0.00657251 -fiat/revs sendtoaddress RUwfQqmJxpavJLHZtBGY2E6cKTjPkkhjeP 0.00657406 -fiat/revs sendtoaddress RWxBr6KmSWUssYDuku3PYQwpP33CRdhNxV 0.00657723 -fiat/revs sendtoaddress RRtjhz8NqW8fV5CHnnFTs4kLPFa75j79xh 0.00658168 -fiat/revs sendtoaddress RPFQkLzCSPR2Jr2faidZen2kpnSSjJbWNS 0.00658170 -fiat/revs sendtoaddress RJ4PRstDQx1F1g3yHLb7FTsgFamNRSZFkn 0.00658200 -fiat/revs sendtoaddress RTtSjCUVu4r4VJkhRmLHcHrArPX4Sqejju 0.00658322 -fiat/revs sendtoaddress RHPv3RdqFYrmiqM2n8Snz8h5h9gsDfBRAR 0.00658476 -fiat/revs sendtoaddress RWZTZZN2BqoNuVvoaoKdBqDmG67ujL5gbe 0.00658556 -fiat/revs sendtoaddress RY3z6awDDrwDApATAi34nhtyePUV1nBJMc 0.00658631 -fiat/revs sendtoaddress RG5bMuU7Rkip5KNiLvrbbAZ5Ntonc1Vzuf 0.00659035 -fiat/revs sendtoaddress RMa3fu9Tp5AfFSqRFtNvQuYpQJuYQbNaHm 0.00659636 -fiat/revs sendtoaddress R9hmM3cRmPf7XhqS7A1g3bGvKGoswJF4Fz 0.00660146 -fiat/revs sendtoaddress RWhn5r44MYZZJte6QgKwqBuGxKXVTcN9zr 0.00660325 -fiat/revs sendtoaddress RXeMEvp2JyVCCHneHvYv4ZeAFum64BqRXw 0.00660545 -fiat/revs sendtoaddress R9tfZQ5ievWuGoG4rVgZNDXwtTmiantGie 0.00661719 -fiat/revs sendtoaddress RH3VSd1STmkpjeFzh7Fz6HHS5VbXxEc1YN 0.00662118 -fiat/revs sendtoaddress RD9TknT8wMsUPxtRi8jNnqtx3ByV8DQrbC 0.00662164 -fiat/revs sendtoaddress RD5BuSTiLFQBdrPw3o4XY2GuxS9MmqEGou 0.00662581 -fiat/revs sendtoaddress RN3KAWhLfgX9YkUb34mk2kaDobobASrBrB 0.00663633 -fiat/revs sendtoaddress RSUDsREWbdonjbBKpAW7TK2ntNai1hfvgc 0.00663679 -fiat/revs sendtoaddress RXpuSVm6DFAyznbQHH5yrgrmFsFMyn9DX1 0.00663901 -fiat/revs sendtoaddress RFmYKqkFAh2ce5DC1dGwhWeSR9z19GJoHH 0.00664056 -fiat/revs sendtoaddress RLxzd1PnQkUnr4XDR8cg4mj1Uqv5EikaEW 0.00664364 -fiat/revs sendtoaddress RSX4dPnYKpfMxw7oBJGxFU5Hn9hBvLiVJJ 0.00664747 -fiat/revs sendtoaddress RMfRVpFf7dcwsyxg4nfFYBPVqbqn4o2Z3j 0.00665332 -fiat/revs sendtoaddress RFLLYHzT51YcagocsjhfLu4XJhmmnDQQyZ 0.00665345 -fiat/revs sendtoaddress RVGwq1TkWF48ciGRu69cMaW5XLmwpzA2Bx 0.00665486 -fiat/revs sendtoaddress RQzvpTRmWK2HDLcYYbk2tRHWTtLnb69VPa 0.00665500 -fiat/revs sendtoaddress RLxYVEC2BxpeTrcTabZTWF8f1SqPfEYcdt 0.00665750 -fiat/revs sendtoaddress RFTYqU5JTx1JPx5aeEC3JWjJZ28FdaL2Qn 0.00666100 -fiat/revs sendtoaddress RSRHysVcDULMkx1QFXoLCKUt8HdnqCx4WZ 0.00666213 -fiat/revs sendtoaddress RJXMZW3jV3ZFS2JNr6kB1XRBfUTRFPzDJD 0.00666493 -fiat/revs sendtoaddress RAxGekZX53YbYyGuBypnJQrGPEcm7SxAaL 0.00667015 -fiat/revs sendtoaddress RXeghW1JvtHnMGVxHNScwhJtGbyFz8AtJf 0.00668443 -fiat/revs sendtoaddress RSRY9Lnng5pKkP6oULwMUDGusw9BAgwU3H 0.00669817 -fiat/revs sendtoaddress RNpGuvessZzYy3hfGrTAU8G4K221c3AQ9W 0.00670000 -fiat/revs sendtoaddress RELcHib9zw7Z2RdXbodntfsmcQE1GEnWVB 0.00670100 -fiat/revs sendtoaddress RWxNP3t6pFy9xbfDiNhYp6JVcqXorvNQoJ 0.00670392 -fiat/revs sendtoaddress RVPxefC76ktac7WR81ikFCY2u6cmsU8D1b 0.00670925 -fiat/revs sendtoaddress RJhzL6pTEhe7FHVmT1aP1gj6999RsJL6GT 0.00671192 -fiat/revs sendtoaddress R9vVteS8LSdSxgg9VGkiRPYq7jeUAYPVQ6 0.00671233 -fiat/revs sendtoaddress RWhi9eNLTeb6nNs8L4bdykG1cnYXhA1VYD 0.00672175 -fiat/revs sendtoaddress RYbWaDdDtg68Q9vBd8MWRUA9E5gjFP9FW1 0.00672227 -fiat/revs sendtoaddress RFRtN6ZaVimRDk6JbfTEr6qfb5K6xTJbpS 0.00672817 -fiat/revs sendtoaddress RFmC6AFEwcQdiiZzneWE2x3Tk5sUNSyb1J 0.00673753 -fiat/revs sendtoaddress RRaaQsyTpWgMsNexbHRqR1qfRxvhPpiKnb 0.00674939 -fiat/revs sendtoaddress RXEmfqxLEDYjjSc8u6QFijkCNiVTL2ACAW 0.00675218 -fiat/revs sendtoaddress RHV3xEjqzRnWoT1mkgYrsWTtF2y2mk9FGe 0.00675651 -fiat/revs sendtoaddress RHy2eAfgKQMEDNcynfH6FmZWi2VjQL6Um4 0.00676414 -fiat/revs sendtoaddress RRgouDAzQQ4kwc9JC9QiFnWGuREcZG3TGQ 0.00676688 -fiat/revs sendtoaddress RVczkcejFHddZoX9SviAutcEhWLHRwhXKu 0.00676842 -fiat/revs sendtoaddress RTqpMhGXBtF9qzQk8TkLr2nXKyvaWUMGvQ 0.00677100 -fiat/revs sendtoaddress RUYA54boxyB6s2k4qNRbpHotXSyJ97Ldwp 0.00677629 -fiat/revs sendtoaddress RMEeBN8TxRzQac1Zp3YS4JGrqynHzsQyts 0.00677845 -fiat/revs sendtoaddress RA8DsSZJgy3TjfyM9jxgBJNuKWQWYrBn3X 0.00678625 -fiat/revs sendtoaddress RMdEy8dEfNGsVFwP3e4sDPdTK8PyyqGCTh 0.00678755 -fiat/revs sendtoaddress RJvz8rEDsy3hTtZr1SWKMeJe9hzfKgVwTh 0.00679069 -fiat/revs sendtoaddress RF8ryxNXnXGPe2b7iHvB6kB8877TNDdkyS 0.00679218 -fiat/revs sendtoaddress RPtjtALQzGM423ZuisfGKnxk5CRSZHNXee 0.00679274 -fiat/revs sendtoaddress RNgTuV8NJWLN5BHLWFTBt1hTbT6LoNb9ps 0.00680661 -fiat/revs sendtoaddress RQ9rbKW9mQDTN6uXreK3QHmcAe42adPQVE 0.00681107 -fiat/revs sendtoaddress RSMmauBy72MAi7DfBnMjvFg9YxaeXQBLub 0.00682607 -fiat/revs sendtoaddress RGZjgg2bnXpq5UHuD8MSmicj67fpnbceHv 0.00682621 -fiat/revs sendtoaddress RKeUdK9xGB7b3ivRqgyxREQZ7kzH9czMbM 0.00682825 -fiat/revs sendtoaddress RP11digcbzb6ktbpwir8qcSfbh9xQrfwR7 0.00682866 -fiat/revs sendtoaddress RFJVCTpxERj55MGUAWJsrn71zxiJTcAADT 0.00683020 -fiat/revs sendtoaddress RPLwPfC1KePQbZ5hb6wojgpUxANmSQpxZ3 0.00683329 -fiat/revs sendtoaddress RJLgv54AeP2qFraxrhVCajkrnJUp3zym6Q 0.00683602 -fiat/revs sendtoaddress RBj3Zsi1wZox3j9bSUrYzKCjFERRwnxU98 0.00684535 -fiat/revs sendtoaddress RSris7iXVMarJE9yYy4RG3BPuCapAPZd8d 0.00685495 -fiat/revs sendtoaddress RHfXF1qhYyHg2AZc9Q9KE2VqZqpAmdbQUe 0.00685576 -fiat/revs sendtoaddress RQgnsepPe7reykGfo7Vpm7vtj7vgFwRTeh 0.00685649 -fiat/revs sendtoaddress RQBZwARPpXMuacAQ7oxzUP9i9BNrcXsDMS 0.00686571 -fiat/revs sendtoaddress R9uhEkn195PG2DZ7LbtoxpqZw62oHNUyB2 0.00687351 -fiat/revs sendtoaddress RGTfnnr1x7rwabQTnXxYK668GZZEjKddcS 0.00687367 -fiat/revs sendtoaddress RHncZue4c4TeRBtfUZ95JjLNzkScyKvDZj 0.00687531 -fiat/revs sendtoaddress R9etGU54HYJUx3m8VFWkx9Uh8ayYhpX6Yi 0.00687685 -fiat/revs sendtoaddress RN9QgGRLCeMc6EWfEyXYZb3R9zVML2kkRQ 0.00688814 -fiat/revs sendtoaddress RAQzxDZumAuqnGGVFLggbP7XbdCeoyX4St 0.00688937 -fiat/revs sendtoaddress R9eZ1Set3JhXQZ1jzuhCAiehV5ZDh2qdcw 0.00689127 -fiat/revs sendtoaddress R9SRt8JffW498VAtZ5rWu7P7jj8V6yACsr 0.00689463 -fiat/revs sendtoaddress RD2uJ3xQjdVjCoo7Q2aAJVPnGaoXxpWQPK 0.00689468 -fiat/revs sendtoaddress RSkzxcxmtRrTsw1KfdBgozCxQpsLHx7W2J 0.00690029 -fiat/revs sendtoaddress RVtACnwNdoF14hc9kksb1Jj8FGvMp2XReK 0.00690257 -fiat/revs sendtoaddress RSbE1a25FkwNt5SK8qrNREQM8xxDoGeaum 0.00690412 -fiat/revs sendtoaddress RVM9mVcF3z5nqSA7PWA31buKYpPdQQbr7t 0.00691708 -fiat/revs sendtoaddress REPLPLpqH8BM8tHPA5sTszwzvGLSTYJGEh 0.00692448 -fiat/revs sendtoaddress RKk1zQr7gJxwvuBBDCRVWp6xYvuRNF52Mw 0.00694362 -fiat/revs sendtoaddress RNR4pU7PVRLXPcf7EYiiDKjEvWVNGLDWKJ 0.00694375 -fiat/revs sendtoaddress R9ksBXkHkJqkS2UDauPuFzrMrtnGYWhjqo 0.00694392 -fiat/revs sendtoaddress RQiSxbb1qxTHazYaMuYpqgZWTjhVAaRa9t 0.00695378 -fiat/revs sendtoaddress RUYwZwD7XfCCxVVgi5Xz4gzdt1w72Fw2cV 0.00695410 -fiat/revs sendtoaddress RGfgAuB8UtNHGvB3whz7sh3ioYhCA1tDq8 0.00696000 -fiat/revs sendtoaddress RErSf58VPWohZDaHR11TxdXERJJhPymNYa 0.00697282 -fiat/revs sendtoaddress RVzaMjir6dzYF1YEAtNsNBSXJqBC5XACo9 0.00697590 -fiat/revs sendtoaddress RKfvrf59NENoPRBjXWwAxuGG7C44m4AEzu 0.00697745 -fiat/revs sendtoaddress RKnuuD6meUqzNFTK4rkX3rGgdwibPrkiku 0.00698192 -fiat/revs sendtoaddress RRVp2o1hQ1jzNTq5RWzPHs7nbaGKADikeK 0.00698194 -fiat/revs sendtoaddress RHfrR919ZWshpnkj5YCMv24wfLQTKhcHMm 0.00699318 -fiat/revs sendtoaddress RPdUy73PyzhDVdDEySMXuqbvqZEdrwex3i 0.00699626 -fiat/revs sendtoaddress RPe2H2YsqKyCjLoBLW5xFgxdLkzAuBuG2B 0.00699657 -fiat/revs sendtoaddress R9VAxuL2BsQYzQ7PYANBcLMcjga9RXSmuF 0.00699781 -fiat/revs sendtoaddress RBQHTDrV8UWy2YQgYJau9THXUxQMCd9xQo 0.00700000 -fiat/revs sendtoaddress RCKZ7uenAeGAgiWvnoaJuyVW9sB4eb2pLV 0.00701101 -fiat/revs sendtoaddress RSJe4M8LAz3wst57SBWhcjTsPnToEReEAC 0.00701256 -fiat/revs sendtoaddress RFNamZQvfZFiq9diaozJjnEik7zZVDGj66 0.00701564 -fiat/revs sendtoaddress RRSPfaZizQuLGZEKPEGGvHixMUE2ShnLbd 0.00702000 -fiat/revs sendtoaddress RN7jNHJLAiLjVrqwW7q81GhqjyNW5VvoWZ 0.00703170 -fiat/revs sendtoaddress RB2jAc5R3YdrdZbUaPzFKi99TYLN9wrmXA 0.00703886 -fiat/revs sendtoaddress RMszdDyMxLCHHsVHHx6KodAyMqd3LqvALq 0.00705115 -fiat/revs sendtoaddress RVjj78Tu6F85S4GbLEfKmXXsd7MGk6yScb 0.00705206 -fiat/revs sendtoaddress RMoRWCro6CrPFh48T8h8mnKtvx7EEa9ctU 0.00705545 -fiat/revs sendtoaddress RS3SRR8grwxGZ4krZTN1hAaT49UNwTAkoB 0.00706000 -fiat/revs sendtoaddress RB7cbzcXgLp9byJPocHiWHLMhAKTdpTVDx 0.00706008 -fiat/revs sendtoaddress RTBzqJRFEGf6TrU7AaYFEfQSpH37Tq2ZDy 0.00706190 -fiat/revs sendtoaddress RDeagpAbeSoxpHgHCnsLJhfdpPgQEGjSer 0.00706347 -fiat/revs sendtoaddress RUoMPiYHrv8CBrQnhoXcDbetSdwVwZPAxa 0.00706501 -fiat/revs sendtoaddress RFrXHMPeP4SgSxenZZNoWWpxyTTQxLscBK 0.00706810 -fiat/revs sendtoaddress RAK9BNiFCwrXX8EHn3ndoUorjnwi1Hi4uo 0.00707474 -fiat/revs sendtoaddress RVkXqRT6UiAFAqzwCj8wYA131NJ3CyYRDu 0.00707680 -fiat/revs sendtoaddress RMSczwan6JS9Q9rYyqURLkeYp9LkUPccMe 0.00707791 -fiat/revs sendtoaddress REUMq1YCYZwUD5wyLonMR9Bwu6NXuJiFou 0.00708000 -fiat/revs sendtoaddress RUiL4XQTemxXSwEFK5SzsieSRMytHodyFz 0.00708125 -fiat/revs sendtoaddress RL8rnprc4XFS9RPtzPV6eYzDbdwwAifSbz 0.00708129 -fiat/revs sendtoaddress R9Z6sSB9Kx8Attjx3WKdq8ZSM88WTVQgTo 0.00708254 -fiat/revs sendtoaddress RTwh5RDrCMDvMu98s6s9KXr9t4EzdxLhX9 0.00708383 -fiat/revs sendtoaddress R9nsK48VgajtU6eXCRFRFfG3GAREUwTZq3 0.00708433 -fiat/revs sendtoaddress RLjNbSzr3fjKDw16BCNTk5mfov7RkPefLK 0.00708504 -fiat/revs sendtoaddress RC323nRL1gsT2WL6LdmsDdvj9LYe89bscj 0.00708588 -fiat/revs sendtoaddress RPrDEnijpWYPqVRUNemNCFAYBwbtuyQZR7 0.00709376 -fiat/revs sendtoaddress RH3oTm9j5i1nsB3sN4xbBuTVefmWkTTeRN 0.00709661 -fiat/revs sendtoaddress RPq35rvdbjFY7LWK8bemBp9pbMMpp2F2fE 0.00709827 -fiat/revs sendtoaddress RDA91xkHxZJyxEYFCWg3Arvd8K2Fokz52i 0.00709982 -fiat/revs sendtoaddress REgLA3UjMnEQohwYzFRienXba27YJsjDic 0.00710540 -fiat/revs sendtoaddress RK733AsqAiujW8r4XDscfJBpa85JAui9ny 0.00711412 -fiat/revs sendtoaddress RUAFZJrpeaLvFLXdaS2QbtJGJAi6LA1Vmp 0.00711497 -fiat/revs sendtoaddress RPRmAw79EUFd5j2PM5PZ7T5CiFSjUpX67T 0.00711896 -fiat/revs sendtoaddress RCYgJCky49StddVdG7SD4xQVAYW9B14EfD 0.00712139 -fiat/revs sendtoaddress RUyRfADBStQnSYUP3qBQEjs6X3HkHrWQts 0.00712235 -fiat/revs sendtoaddress RGqQVix3JEjg3sfxWXrGUfNnqSei6DEMGr 0.00712927 -fiat/revs sendtoaddress RQ7vPDwnerC2YQtfrGMXA5avDiofV4DjAh 0.00713614 -fiat/revs sendtoaddress RPLFKqE16XA2sr7fjQtRkBe2LGvRi2s75j 0.00714013 -fiat/revs sendtoaddress RGHp5G6yucitWJGt6kGr23N8xXU9MWSiUa 0.00714271 -fiat/revs sendtoaddress RGyxDCpqR9N2PCD7GjM2K6XmA3gF1vKr8J 0.00714815 -fiat/revs sendtoaddress RKVyNJMmm9qpUhr6jLRATrF8MPnzwDMqA8 0.00715123 -fiat/revs sendtoaddress RUpSop3cXWTzcvJAaYx8J6H4TmogQXUqG4 0.00715278 -fiat/revs sendtoaddress RPBEDQ7CSpyDnFRfcQafjTEoRpYYUTdbBr 0.00715360 -fiat/revs sendtoaddress RACMVQYsusiAbWmNGhizhdzgxVCTrpFY85 0.00715715 -fiat/revs sendtoaddress RHxnLKZG2mHgZxJtvGR6guMJ7f3J8gQTM4 0.00716517 -fiat/revs sendtoaddress RGkg4FpidPGh4xqa759P67cwdXDNQ9rLZF 0.00716851 -fiat/revs sendtoaddress RL5Sa6nd4nVeuHtHqGLdyatiJ5Kh1ZyfLA 0.00717159 -fiat/revs sendtoaddress RHzN2J5kB3idb2PynvusAp3Ndx2LCFeNfd 0.00717178 -fiat/revs sendtoaddress RRqoWR75sD8QBcRmqzKbnh1Hxxwu5856Dc 0.00717314 -fiat/revs sendtoaddress RSpdAXCP8zoBjLgg5ynPVeUj4aFbWGBm51 0.00718102 -fiat/revs sendtoaddress RCwhPVdnVELA9SWEJ2RG5mGaLFQjCWRgTr 0.00718634 -fiat/revs sendtoaddress RMQqgs8SfDS9ZMx5CqDA3xYmeUtemoPa2Y 0.00718789 -fiat/revs sendtoaddress RGHjPnbkLD5s648VEVBxS75X9Qwn2N4quV 0.00719097 -fiat/revs sendtoaddress RXFjBCT7EJU1o5Jy9esSBcCVtaE74ZUzzL 0.00720000 -fiat/revs sendtoaddress RMDo6d7ho7AaxXeXp24z6SwEQp4kJ2X4jY 0.00720001 -fiat/revs sendtoaddress RLmZNoSjcMJnyyo6qshYTd1WnTryxTyER5 0.00720066 -fiat/revs sendtoaddress RJK4QmsvR9ZKDXGPTKePreYrv9pfPxGtid 0.00720220 -fiat/revs sendtoaddress RH2qZLkAmEqYUab82Lsc6PnjENbHUbvrqX 0.00720703 -fiat/revs sendtoaddress RL92GyPKJqyZSHiBPMJJPSMHjxrwWaMrYZ 0.00721046 -fiat/revs sendtoaddress RJ1ChQoPRiGUQQjqUxxRipFx9v3uEhKL8M 0.00721055 -fiat/revs sendtoaddress RSLzdQeuQqq7zfCKyjfTYXsmc44vT4Kq8g 0.00721735 -fiat/revs sendtoaddress RDMQpE7EEm2K4x2sWeyqGNw9Wzfhoa3ADi 0.00722739 -fiat/revs sendtoaddress RHjuUW4BhGmwyHVwdHuNjeYfEQGUkTXyEY 0.00722986 -fiat/revs sendtoaddress RCrza2MVrfjJR58aFgoHv3V8jE5LYc7RYP 0.00723281 -fiat/revs sendtoaddress RTZ89T6Zdw4azox9gso5gjjarsUZtCKK1t 0.00723400 -fiat/revs sendtoaddress RYKgGLaqg93712CvgXxujBjHeV2DicEKdm 0.00723587 -fiat/revs sendtoaddress RKE4txxzi3yYrYkphH5qhZZ5oE8TTjM9hW 0.00723617 -fiat/revs sendtoaddress RKKL9gEGpVowwL8BEa3T9uNeJDVtbsXJfZ 0.00723771 -fiat/revs sendtoaddress RXKJwRnod61BSrYBWwkqPXtJNPWwZFTKDF 0.00724086 -fiat/revs sendtoaddress RD7TSLLFFk3FgU4HroPDgP9xcA73GK1jEL 0.00724522 -fiat/revs sendtoaddress RUMFthu5gJbyweeEHTyMZitxkZ4yy8rR7n 0.00724746 -fiat/revs sendtoaddress RCQkuDn6ij87qa7WTeRBT24JA2YS9sov5R 0.00725709 -fiat/revs sendtoaddress RVAZatWFcFgu6QE6YfnEyiuYZQkVRaVAHE 0.00726108 -fiat/revs sendtoaddress RYRbtn6jdxDGyuD3URYvb4d4u3xTboEX5n 0.00726756 -fiat/revs sendtoaddress RB7TbQPZGaCi5cRMtiDgTMPLDmTZntGgrw 0.00726910 -fiat/revs sendtoaddress RTYF4qZRqpPNZf6DbAZ2uBAiNRnYiDeSLe 0.00727623 -fiat/revs sendtoaddress RY8J25sc7eqvXFDCpUecZUZTHAnfHaMGhh 0.00728117 -fiat/revs sendtoaddress RF8EZSNghaAKAA8ZcXQsZVbCdSQratv73K 0.00728946 -fiat/revs sendtoaddress RRjBvq3uENdWu8YXb7QF7DMycbpZ8WSKp2 0.00729001 -fiat/revs sendtoaddress RSgV6Dnuz32UJev1psHyPDhztb9HMBEgpM 0.00729255 -fiat/revs sendtoaddress RFaiTu7tKJqKW8yBSd8A3Xq8UCieXLAF9T 0.00729659 -fiat/revs sendtoaddress RLEh61znnfqVcTfC3yHBohowrgersT2wqH 0.00730508 -fiat/revs sendtoaddress RF48kJ6PD1yeGts6G3hYHBTcRc6JhDrYt7 0.00730576 -fiat/revs sendtoaddress RUFtEpCDhoPLCweuZxWo8v1Zu7driCV8uy 0.00730729 -fiat/revs sendtoaddress RJLKxHJG8VKZpDUUwvt6ZujkasXCPh2arG 0.00730884 -fiat/revs sendtoaddress RMG85qp7sWNtiKmK2c186RS4sAsqKo3pGU 0.00731500 -fiat/revs sendtoaddress REqAt1GwRG7gDmREELCP57bSqrCrzdHnFc 0.00732226 -fiat/revs sendtoaddress RQw1G1JL37xPrYLXmWGewfjH6wifbmBLQg 0.00732315 -fiat/revs sendtoaddress RGumivWbrgvia5AyFpAzZEAEjKMvw1fPGQ 0.00732399 -fiat/revs sendtoaddress RJF4tYjZUoR1aJH34HdEA5xHcj324cM73M 0.00732578 -fiat/revs sendtoaddress RLWDfKJXvhqYtxQdmR9UVXa9NiA39zDoa5 0.00732644 -fiat/revs sendtoaddress RWSaCg71YvwbctYu3rGMPpZosKR2sZfS2f 0.00732798 -fiat/revs sendtoaddress RSqYvKSQHxDwCDq8SC5EzqzE1w73hPjAou 0.00733182 -fiat/revs sendtoaddress REHq2y9AXM6FWArvb5fwDdNSPFGJ7J888t 0.00733501 -fiat/revs sendtoaddress RE1KyLks7Jmr99uFkSnk1qzrzghbWd5T1u 0.00734073 -fiat/revs sendtoaddress RM71qHJ51bvygaeuJn3mXcCxgd7DQGBu9P 0.00734212 -fiat/revs sendtoaddress RRhEPfzF7HJ7MBiDAhiZYB7ZAEUcNuSED5 0.00734435 -fiat/revs sendtoaddress RA4AyDo2VdmnRJH66wTQCtuuvWKjqPDdUA 0.00734520 -fiat/revs sendtoaddress RRq9SyERGBdBXYnk2tuATUcBBYosq5ZNuh 0.00734834 -fiat/revs sendtoaddress RGPNAeZpmT4nH4rbgFra8jWKrzkbSkMEd6 0.00735800 -fiat/revs sendtoaddress RMmDpReCZvf1GRmEZePjJpDKBjQ9tzgk4C 0.00736349 -fiat/revs sendtoaddress RSAkR5fDCW8AQVnt18PLJL1ju2kTjvHNVN 0.00736479 -fiat/revs sendtoaddress RVBTuuGKjZ6Ltv3ceGgmCdoUGxCBHuuqjT 0.00736617 -fiat/revs sendtoaddress RKPZw6zezP1BMb2SnobTZSpMR6jjAG7dZj 0.00736720 -fiat/revs sendtoaddress RLRRaN1AjCurMiG1NuGRNhwoTKSH6qwUEv 0.00736758 -fiat/revs sendtoaddress RSSK8ZQkcjA3fGHMTBKM7tYcqXUNHJWgK7 0.00737599 -fiat/revs sendtoaddress REcpqEWaLtpU4pFn3FN6Pfid6oinnWtUdJ 0.00737740 -fiat/revs sendtoaddress RACVdFf51jxcydQwoYPhRMWy95WhN9CrxY 0.00737753 -fiat/revs sendtoaddress RBUr3JZDiHDA95hegLZ1EkxKTtidKK5A7Z 0.00738138 -fiat/revs sendtoaddress RSy32wt65ueFNKXSybgUThkh58aMYTb73c 0.00738466 -fiat/revs sendtoaddress RF1RK9ryLhHj3Au386FNjB9zSiUExeUS7S 0.00738708 -fiat/revs sendtoaddress RL5S8gQRwsNpNX6bn4GuD7C5jPWRfLnUuw 0.00739255 -fiat/revs sendtoaddress RSAgpFdSsfUxrySko4VXmHeTDNvRiTZxfk 0.00739268 -fiat/revs sendtoaddress RHHrrJ3RNsahgsTjQ4e5T2tsP2eEeM4vKe 0.00739658 -fiat/revs sendtoaddress RXjzSoEhKEJ4oQH8v2caou27nXWGzZDrqf 0.00739694 -fiat/revs sendtoaddress RRdVJ35N3hEDt6XMqabKYddvkN9bfxJCJP 0.00740000 -fiat/revs sendtoaddress RJ5QYyGUYxQpaC5jdasmxWMGxqGkPurg3Z 0.00741041 -fiat/revs sendtoaddress RBwJwKJKu2Kq3aJLibJkoHBzEYYyVTxhHS 0.00741304 -fiat/revs sendtoaddress RAcVkGs52co7vF4WVHA4RR2NMeWsUmXWyv 0.00741351 -fiat/revs sendtoaddress RXnM5vwDzEusabczbTeFLwqzBKhxF8aXZk 0.00741700 -fiat/revs sendtoaddress RV7rBgxcRg5WZgBSjypY1zeuwqGUyBq3LA 0.00741728 -fiat/revs sendtoaddress RTuF54jSPCPGRrB2ZirY3AYAc8AGjPE6Qy 0.00743087 -fiat/revs sendtoaddress RNFndU36YpFRmsd3oXCrfsahRgbMQ3JF3m 0.00743242 -fiat/revs sendtoaddress RMyFyY7Xi7hcYhwEvRk6FUC7Coye3c7FYY 0.00743500 -fiat/revs sendtoaddress RPnpD4RC9eCbA52TPESDGDAYq5nq5w7XFm 0.00743537 -fiat/revs sendtoaddress RMnivwRGvPzEWN4rGoCJs7caToamg3UuzW 0.00743641 -fiat/revs sendtoaddress RTS3NT4GV4SzSHPyaQ9WQ7Y7XB7wKAQYei 0.00744674 -fiat/revs sendtoaddress RKAP6BFtAk5Hopkkg6qtaUT5Eb4mNAqvGs 0.00744738 -fiat/revs sendtoaddress RUnesCqBUbmBLHf6PTWjpw3NkvMXgZ8A9H 0.00745388 -fiat/revs sendtoaddress RYZ12x3zSQeVopWxJ92VQVAMDt5r2E2w7W 0.00746000 -fiat/revs sendtoaddress RXkjv7PiFpG77ZygTXiG5vyeuERLH32ntn 0.00747192 -fiat/revs sendtoaddress RKQ6KpbwyYRsASADM25YZS1M8qAmRFo3S8 0.00747862 -fiat/revs sendtoaddress RBRuWGVktVjZ3pSj7oS8H9jpcbAgeVs79W 0.00748200 -fiat/revs sendtoaddress RFQxfRcAVMrohe7gjWyCyFpDHb5FpSPcfm 0.00749096 -fiat/revs sendtoaddress RHVp4biTjhP54YAgCEYk6WSytSC4KiLZqp 0.00749694 -fiat/revs sendtoaddress RXhmLhtAqTX5J8684X4fE7rcmTQg5QVRFw 0.00749849 -fiat/revs sendtoaddress RUHxoLvDkocewABhUGYfYTABCPyPAM5whc 0.00750099 -fiat/revs sendtoaddress RAp9Az5VxDVRJBy9hk4KQ6GTHBYKiEkWqK 0.00750562 -fiat/revs sendtoaddress RGg26YsJhT1sXJtG3SymWKMbc6BFpnrMu2 0.00750879 -fiat/revs sendtoaddress RE7VZ9kkEw8HnMXNXMTRGMbzckakaBfuBE 0.00751364 -fiat/revs sendtoaddress RYSAxdnTcnnQHjxqy3AMsgEdpXf6UQdxrS 0.00751471 -fiat/revs sendtoaddress RGybUuNF3xegWaRBbtrCcnyYKmXxvdmDn3 0.00752915 -fiat/revs sendtoaddress RPDoBSB6KDiTf4QBrBrjEDii6zJsfN7so5 0.00752939 -fiat/revs sendtoaddress RRHvh9H5KmsK4t7Rc6emPm6puWuHnMrrXh 0.00754875 -fiat/revs sendtoaddress RX2KrdXUTCoio5gB8ZbA4tVCzsMwnqB6cX 0.00755250 -fiat/revs sendtoaddress RNRVFYskmP1LExvd4EYyv1VgDB2H57Hb9b 0.00755274 -fiat/revs sendtoaddress RMK5UXNeoaMAXQ3y9vGrkr4mSzB4uthT4C 0.00755338 -fiat/revs sendtoaddress RScJ8vqduH9G5VJCZXbpjzxjJ1hJvYwCYc 0.00755582 -fiat/revs sendtoaddress RBLBEPrB2NgtoTsfwZcFy5qbWJ3ppRoKt5 0.00755737 -fiat/revs sendtoaddress RLEHvSBGx2HCQzjEYAPUb5FaLJaApFcAT8 0.00756000 -fiat/revs sendtoaddress RXkejYprJnozJVVZUZWfNbamdRAJjBQCeL 0.00757123 -fiat/revs sendtoaddress RWpVkKcHemAUFEvaZjZYHmysSMpdCfDjza 0.00757903 -fiat/revs sendtoaddress RHshoYRHpuSHJBX9hykTVjgc2CTRSNyEoq 0.00759605 -fiat/revs sendtoaddress RAQGRCfKPcozEo79VRoF84mXqgfyQYcaK1 0.00759939 -fiat/revs sendtoaddress RSuALm5XNfwvefey18obGmdc7jfsRrFi4Q 0.00761454 -fiat/revs sendtoaddress RYX7iL93sMSTrRfWQm52UFjs5nDCuQKhW2 0.00761685 -fiat/revs sendtoaddress REpWDuHdZspizZ2sRLeL3isHrBQ6E8m5L3 0.00761722 -fiat/revs sendtoaddress RTnwwg33VWfqcuRtmue14apfdwFYMpNsXa 0.00762193 -fiat/revs sendtoaddress RQnBTUYF638G4wEVk6dcg4WfcmrarPW1vt 0.00762207 -fiat/revs sendtoaddress RBPbwmCEetYufRMvw5EraoXdub8JhymL4p 0.00762231 -fiat/revs sendtoaddress RWhoy1XRU4EA7AyEniMerQtN2k6XfUSnjr 0.00763104 -fiat/revs sendtoaddress RVL9VUkHrP5iDb9GCVY9WXB6Sr2REHviwV 0.00764648 -fiat/revs sendtoaddress RLmpH9LAqC4LJhDg7AYRjHkLrc3oH9bLJL 0.00765584 -fiat/revs sendtoaddress RPNtLvN4ekHKJkv9t4fLCt7BYp3hpAh7fx 0.00766629 -fiat/revs sendtoaddress RWu23anyd9HnTccshYtTt2LygPhfAHjq4t 0.00766965 -fiat/revs sendtoaddress RMzZ84br8zbGAnbk4bXvcB5Vv2kppqCSxP 0.00766969 -fiat/revs sendtoaddress RFQ3SKvh6ExHuh9X4Z93u8fnAHkFfQxbFk 0.00767320 -fiat/revs sendtoaddress RX7Eg6EexNRbuqBo12fN6L3jV49FuejUjc 0.00767329 -fiat/revs sendtoaddress RXEBUCX5NuVPYLT8zK6fyZjGhfTbue517k 0.00767632 -fiat/revs sendtoaddress RKzrXQSRQgvaqwyqWV6v3tj5gjn3SKtqJr 0.00767644 -fiat/revs sendtoaddress RAAuDvZXCeXyy7o44Y9xh6q65FG8MfNJPD 0.00769794 -fiat/revs sendtoaddress RDFwiqrA635awy7HaKyydpvDmEa6pJazNw 0.00769844 -fiat/revs sendtoaddress RPt5fsNhk3itiXNJcJkVTJmctWttyQNYcJ 0.00769998 -fiat/revs sendtoaddress RRjxxN8RXLVpWxZm8DYgeUW9LCCS81PKi9 0.00770257 -fiat/revs sendtoaddress RTwtHnyZxRY7Sbkh5oDEVCyVz7dZe484mX 0.00770448 -fiat/revs sendtoaddress RRa5juWAMozEzpRZSye6wFygNZhKPJWxdA 0.00771880 -fiat/revs sendtoaddress RBiyS2jMrR6UF5Ydh7qAHG1faP2k9kVd4r 0.00771911 -fiat/revs sendtoaddress RBNys3NccX4EiEC9JsENkLY2x2fZkcpWdQ 0.00772034 -fiat/revs sendtoaddress RGfHem5n5edv5skKQqWAM5zmqzbqFhwisQ 0.00772522 -fiat/revs sendtoaddress RXLphAS65coiozXosSq2R2sA6T2jaWCPuy 0.00773549 -fiat/revs sendtoaddress RRnakZoHg8NrpnFFVQdjoU2bJE6jGsDej8 0.00773817 -fiat/revs sendtoaddress R9aEd9BeZMgeeHThLGMy9xLQhPFZgjG1g5 0.00773889 -fiat/revs sendtoaddress RRxHxJsSvmYJ6Upr1bRCtk2BCRnSeQ6Qxk 0.00774000 -fiat/revs sendtoaddress RA6poMxAQbouogWC3C83USQTWEBnzSnG5d 0.00774390 -fiat/revs sendtoaddress RBugYxUGaR2R8v14uZnsPF4U1oNv4fzoZA 0.00775332 -fiat/revs sendtoaddress RKjUSMUiqgFGFmxXUW29hRRZ62QfZEYhAD 0.00776864 -fiat/revs sendtoaddress RFDZ59vV96V8XE5qWiUCghfYFj7dhCJgzN 0.00778724 -fiat/revs sendtoaddress RMtsweyXSLtnXGhbF2ifH8h2hD4n4MXnYb 0.00779727 -fiat/revs sendtoaddress RWRREfT8AMYcgUCadWJhM4XXyX2otrySzi 0.00779874 -fiat/revs sendtoaddress RMSSMB5pEkNqdULwxFm2RzeY24bK97T43K 0.00780000 -fiat/revs sendtoaddress RW5LunyjChe8k739ztQn4ccHPdaje8ZG3V 0.00780507 -fiat/revs sendtoaddress RHjmNkep6qCF4eDFNoPj15RM63Kh3ttXzk 0.00780637 -fiat/revs sendtoaddress RFJVgZ9pbd8XNRkcG6Hxqpc2NG86rESbTK 0.00780841 -fiat/revs sendtoaddress RHEPv9p7rjja5hdmufMcoLox4uvrnJvpp8 0.00782356 -fiat/revs sendtoaddress RQB1pkzWmaHudwNfGvNbuRASv1wHseyf4E 0.00782543 -fiat/revs sendtoaddress RLJ26yF2jykcRuNFJmZ2zJAPne4xDKaPih 0.00782586 -fiat/revs sendtoaddress RTLSkvHQ4VurJyB34e4x9PJdRpZitaWgKZ 0.00782724 -fiat/revs sendtoaddress RKx9875fnPffAaKWDGmwmMkza6RsRVgLtV 0.00784000 -fiat/revs sendtoaddress RPxJcQ9MFMdEthhz3VRaR4nHc2mQPjtxjS 0.00784048 -fiat/revs sendtoaddress RDBg1js8BMboErsLg2k2FzjKHU6oVCxmjb 0.00784296 -fiat/revs sendtoaddress RCPP61vy2141nZP8PFfufZeZbCJV6VG4pL 0.00784489 -fiat/revs sendtoaddress RM3jSLgenhK4aQXAsjTM61vQhEwfbEcjtz 0.00784520 -fiat/revs sendtoaddress RRdgqQ81mvF1q2V8zya6YFQA15dDz7wanB 0.00785168 -fiat/revs sendtoaddress RQiFMPtXCVmHgzNc39KpT1r6PJvwSF3ivX 0.00785521 -fiat/revs sendtoaddress RCUzixDs9a1GkeafX2ELAEyntrTuNscWq7 0.00786175 -fiat/revs sendtoaddress RX5pvo8qx4iv3scsLhyzqxQ3j2A47sCh59 0.00786379 -fiat/revs sendtoaddress RGKPsJgtgHQX8bEa3QXG9qsq17967CigkD 0.00786843 -fiat/revs sendtoaddress RHJvHtG1QcwhthMeMe8Wv9RFw5Ahx5tQpP 0.00787531 -fiat/revs sendtoaddress RAMMxe77s9But8PCdwwmxC7vLAVgYvroRQ 0.00788561 -fiat/revs sendtoaddress RJhdLUJQRsL3VeGf4o7L15pRxB76ji5DuW 0.00789567 -fiat/revs sendtoaddress RCf834qg41ztvFP6U1TGeAqbfEkWhwLwpa 0.00789894 -fiat/revs sendtoaddress RBBeKkFAqVpb3wrF4XKPnUR22qkwVqmi4H 0.00790664 -fiat/revs sendtoaddress RLWuzP4kUVMtTDFtg4KxwCLZALLCufBb55 0.00791082 -fiat/revs sendtoaddress RLRQ9yTfgGZVKJB5xZq9dtYzXArDToHJ48 0.00791350 -fiat/revs sendtoaddress REJ1kMBNmqHr5zWGsSoR7nrhW7MnudWQcY 0.00792474 -fiat/revs sendtoaddress RGkyLMtSbDXnX8eKXHMJzzfgG1SV2DSq9c 0.00792782 -fiat/revs sendtoaddress RVjcHVW9PPgbZJh9Cfbz8HU6QFWUbR5BV7 0.00792937 -fiat/revs sendtoaddress RJAMWRgD9fvvjcqL79Pm848uR9PmSfkgNK 0.00793445 -fiat/revs sendtoaddress RE4AdgTWT3wEE61g7GAnenZZVrPUyEthYt 0.00793989 -fiat/revs sendtoaddress RGAV9tp8xxuerszXHx5yGoCBNKQwX5Hdbi 0.00794330 -fiat/revs sendtoaddress RRiGssMRcHbs3T7xiBRWa34UScFnQvs8Hr 0.00794646 -fiat/revs sendtoaddress RSCpT1223hKbVVahLDgiqcMb93nGy1Qf1Z 0.00796325 -fiat/revs sendtoaddress RDdVKbgExmfrKJd4RvDNjzR3qZemAD7rrG 0.00796364 -fiat/revs sendtoaddress RYAydvzB9JNY93B9uj2hjjMBhjXbqegrHn 0.00796488 -fiat/revs sendtoaddress RF7EJkKRbjjrTRwhWU7ZUgtMZYk6rPvfUN 0.00796584 -fiat/revs sendtoaddress RRB5ytqjGbDavwRFj6LgQ7tG9Hf83itbrF 0.00798362 -fiat/revs sendtoaddress RFd6JDRT7JMeWdqfBZNBAN5cwUpryzJNZX 0.00798496 -fiat/revs sendtoaddress RJ9NGCwsy2nJDEaEFUiszLZNDMTzZ7xsEN 0.00798991 -fiat/revs sendtoaddress RPxXVoCcodDvBHZTcxyUBbDwUoSuyPzRz2 0.00799164 -fiat/revs sendtoaddress RJ3j7pNnkA3W3H7efd9YEE3i9f4eFcKj5d 0.00799627 -fiat/revs sendtoaddress RDnNdHtLQEPq5Zqn4yS41RJGRCWEceNC9K 0.00799866 -fiat/revs sendtoaddress RWuZmSSxWMaR2wsV6rUHPTbzgJRynWLPCh 0.00799877 -fiat/revs sendtoaddress RN6ZWKv5HSULPRgMYPKrefvCQhjCpjZ3Cr 0.00799885 -fiat/revs sendtoaddress RERiyBC8ykm6b8bcFcF6CGnJsUs91N9kyz 0.00800000 -fiat/revs sendtoaddress RWUAPy8K3BGiTdP1yWhwpVtM6nxeM7A4mi 0.00801200 -fiat/revs sendtoaddress RXdwpGLG38SFN5fv1X3apm1RRZhT1tVEgd 0.00801246 -fiat/revs sendtoaddress RLWp55VG7AGQBE6oBmqxG2R91KLsiwMbhm 0.00801318 -fiat/revs sendtoaddress REG1oie7QG9tfHPHpDy2Yu4ohT3pnbVYjH 0.00801401 -fiat/revs sendtoaddress RXJosXAddcJydnzwwfTG1rNERd1JRbZm2L 0.00801508 -fiat/revs sendtoaddress REP4hDBZnm6ZJWVe2PA7PLTWqioaTtBu1h 0.00801539 -fiat/revs sendtoaddress RKqhLYRbEtfRZGLXcrXjvBw2MmF8RpBFyq 0.00801622 -fiat/revs sendtoaddress RM7799VPdVhv38BQ2yHoNPYP2ofAwyM2jB 0.00801912 -fiat/revs sendtoaddress RBSuyHCkhkt5hHuQhtu86Ny9NJmstj3aB8 0.00801999 -fiat/revs sendtoaddress RA4ZbUEoHSReWZUFMwXj9NjDtquKHRGtbH 0.00802983 -fiat/revs sendtoaddress RG3b93nkDkccx4EAbw8pfs19fjhDTkTBTJ 0.00803178 -fiat/revs sendtoaddress RSUejU4usEc7j3P9gEwWT8dRfgvyMmrk4Q 0.00803446 -fiat/revs sendtoaddress RAQnZTQ9xezLVeay92UieufP4QpHkofdyX 0.00804568 -fiat/revs sendtoaddress RC5nH6KUnzEs4QTjz3qDdKgBKMwt61R1rZ 0.00804653 -fiat/revs sendtoaddress RMMaRZqUDePvrWsgxpn9cJdyimH4gceWqn 0.00804832 -fiat/revs sendtoaddress RFhRJMUoRmGQPpoApu1t79tnAR8R2juDCU 0.00805052 -fiat/revs sendtoaddress RCk8VK7WtDTuJTEXUgj6fqXk3RLfKg1Mjv 0.00805295 -fiat/revs sendtoaddress R9w9bwpUkp64iHGZSrqTgiFnGMLqSNQXpQ 0.00805500 -fiat/revs sendtoaddress RL2p8NaTBhKJtcK5yU2nBr23i2SeLxhi7s 0.00806395 -fiat/revs sendtoaddress RQ7YcTkenerjH5AZ4ZCRMmH5unsi92VXCU 0.00806689 -fiat/revs sendtoaddress RWpiKi8oqQ5kZSdH9TUPZAEj2geaRnNRri 0.00807088 -fiat/revs sendtoaddress RL6LM8RXG7XP5Y5HzQw26bfEfgvVfmKfDM 0.00807427 -fiat/revs sendtoaddress REDtJ5A1JuA7999Udbv71VHCV4KR68Bhet 0.00808626 -fiat/revs sendtoaddress RReVQ3e29Vg7w7zoYvFNdSWgKc1qHrcRRi 0.00810000 -fiat/revs sendtoaddress RJnhyVs7z151MT4XX1f2Z57gmr81wsfKqT 0.00810007 -fiat/revs sendtoaddress RJEM3oQFcSGiDjs1zk6Z7jBNrbyRY1nuyv 0.00810315 -fiat/revs sendtoaddress REyD6qkykhvjtG52Mq2YTBYZG4Td9pixJN 0.00810456 -fiat/revs sendtoaddress RWgcQppz4GPvYUNV98zhTavz58Gke8mT9u 0.00810469 -fiat/revs sendtoaddress RVdUEayRBDerL3HsQdjKpryn6Pf8sHPixx 0.00811667 -fiat/revs sendtoaddress RVaLyQnUuc8msv7Vi3mQPcyFC8rG9DPdvB 0.00811732 -fiat/revs sendtoaddress RKBK6XZGPY18iexWmUKBGvrUjRhmq41rV9 0.00812882 -fiat/revs sendtoaddress RHszXPBL9iPbfMpFCwxDvR78uQvtcLJfAz 0.00813294 -fiat/revs sendtoaddress REPkBhxnNtuoAtqwAkVxe8UeeopUvD5CBQ 0.00813635 -fiat/revs sendtoaddress RDx2pxurc1mZJnXEH6ipFkWy31FEufzTBj 0.00814061 -fiat/revs sendtoaddress REb5k1iNPjucXhphrQUTZb6ikBCkRP4A19 0.00814348 -fiat/revs sendtoaddress RUjiM5KkqpfBh6yFrmeK6S4dbhqBFjvvCn 0.00815077 -fiat/revs sendtoaddress RP3dxHTF5whtwq5o5KNTfXgSbAT4yDzbVq 0.00815413 -fiat/revs sendtoaddress RPNowwJDgniKLEPWBVpbC9AtThJ4GyFBiM 0.00815895 -fiat/revs sendtoaddress RUGu35x9uyskZZLu6QMYrNVu8sV1dhz5Hw 0.00816346 -fiat/revs sendtoaddress RU5cqUuART8v7sHRd9NCLFnXBacmBirBtR 0.00816776 -fiat/revs sendtoaddress RCkbkkB4rCiR61u4HZ9LxK3pobUKPtVsVT 0.00816926 -fiat/revs sendtoaddress RPMBdMo9xQKR1A4c7Sccug56YVDfiWyEpu 0.00817375 -fiat/revs sendtoaddress RHgPnExS8MpXzivcQbWuDeAvqzYScp1AiR 0.00818804 -fiat/revs sendtoaddress RPNWnHrdxEmCFUJFG2tg18c2qZL84Yea7b 0.00819060 -fiat/revs sendtoaddress RT8Gn5vTk1VdFpfswyBwgqpU1UsLw6G9e7 0.00819156 -fiat/revs sendtoaddress RYNMuVVdw5wE4N3QLgGDymMn7uQi4PW2Z5 0.00819229 -fiat/revs sendtoaddress RYYXn2UU1d9FB45frFVo3PNAWuHpZuw6NZ 0.00820270 -fiat/revs sendtoaddress RPcYQiZsuBgBZYmqs5Hwf8U1XJ8AJjv8D1 0.00820608 -fiat/revs sendtoaddress RMhmgsmvAo1n8JfidmgqavjJo3mgB7Yrpi 0.00821569 -fiat/revs sendtoaddress RKmXbQQz5QrdR1LE5nCqJkNoeyuK1CyYeJ 0.00821948 -fiat/revs sendtoaddress RUnvaDE2movLCrPoyB55GoT8wriJreiwnT 0.00822102 -fiat/revs sendtoaddress RHEvSzrh8xjuJmhV36ScuQKPMQTKyq2rsh 0.00822815 -fiat/revs sendtoaddress RGyEFMQT69uzsS5qgXap4w4P9VvWpeoW3v 0.00823617 -fiat/revs sendtoaddress RNybfK28wt93pZfqdfviJ42wF5SQAM5Jod 0.00824000 -fiat/revs sendtoaddress RETLtyhmuQV1xTgLevwrEW3ZUoUJ6eS7xD 0.00824666 -fiat/revs sendtoaddress RG2hkKHekLtPBxkcrYnx5vcUFVTFzzJ61x 0.00825653 -fiat/revs sendtoaddress RPJDVz5645EQfib8X1xys3qywfRyJgDPXD 0.00826077 -fiat/revs sendtoaddress RPFr8HE9qgFgRvmkYLRzHaxyjTCYH3B2EW 0.00826874 -fiat/revs sendtoaddress RDTubAgSriyaj27ARLXG8a7rgBBKKfoPHs 0.00827591 -fiat/revs sendtoaddress RRyXn3CmDwtpVf3yfgp2oxcYyQ7Yws55Yv 0.00827616 -fiat/revs sendtoaddress RRhAYbexf4NXhXgqp8SLSN2RqwBti2wi6a 0.00827990 -fiat/revs sendtoaddress RRxiHj9zZzoQ1Vq3VsQMa2X1wX7WFmsCYk 0.00828346 -fiat/revs sendtoaddress RCUfwN4fFq58M9sTB7wCTgHxu8C7K7btxS 0.00829994 -fiat/revs sendtoaddress RFJh5qPRiNkZaqMHHShmx7iCUrsrHZGSZa 0.00829999 -fiat/revs sendtoaddress RHtX21qgeCHfAN4o7twCagwVfgQFqpw1R6 0.00830875 -fiat/revs sendtoaddress RGKmhfjJUhAqRGRL3HCrtfN3r1Nv1jDE1e 0.00831125 -fiat/revs sendtoaddress RUPUXaVzzdzx2jA1Un2UNWwHwNCRKZXkbH 0.00831541 -fiat/revs sendtoaddress RRSyeDTipN5jhGQuePR9sQkb5mEE5BGbQV 0.00832000 -fiat/revs sendtoaddress RACcnxQHFM5TkgDzrM8WLhYjjvUZZkumGP 0.00833784 -fiat/revs sendtoaddress RBbeTFSCCqwRhou3FWEnDJVTjgF1yvsH6h 0.00835131 -fiat/revs sendtoaddress RRhgFBDS8yoGZ72CcBW9WGqSmqunBSLyRT 0.00835820 -fiat/revs sendtoaddress RTb1y16Cax8JkGYsk4J2Mp6MBXMFZgZgmD 0.00838833 -fiat/revs sendtoaddress RCQ1hvK6A3U2mdzbqFFP4R8qxnLyVMYAYu 0.00839428 -fiat/revs sendtoaddress RJKduaoQCh4DNVKcLahMXC8iV9cNUGei1x 0.00840000 -fiat/revs sendtoaddress RGFG4BPGv4jAoTnPuDnDMsdqaD6UeVtJiL 0.00841500 -fiat/revs sendtoaddress RUWugti4pkDvYL5GhyrXCu6qUYVN9BSQnq 0.00842251 -fiat/revs sendtoaddress RTgoz3b37D2SMJW1KbcyDcfCPx4BM264Jx 0.00842520 -fiat/revs sendtoaddress RHsfFjSK45CQ9Eja7BTWhevaMqPmzWxq7d 0.00844000 -fiat/revs sendtoaddress RBf9WGZmu8qgQ48cvm9KpeZYDFNnqxX3SK 0.00844045 -fiat/revs sendtoaddress RGJcke6z2RA6Ydkvo5oiriqBFj5iPm3obG 0.00844288 -fiat/revs sendtoaddress RX7BGQbghx2S5zMBnCQWfLZFaQiVvXS8zc 0.00844569 -fiat/revs sendtoaddress RJTRoTgB2znJ4Lof686Q3k3w9AyqNXtSjo 0.00845560 -fiat/revs sendtoaddress RXtVpd4be8oCV6tsqiQewGCJBwNmZCozSN 0.00845803 -fiat/revs sendtoaddress RLh3YdnQrWxT3xCYS48MvN3tkQU6ehaGWX 0.00846071 -fiat/revs sendtoaddress RPQ6LvLZ6Ydmp25ULhz1aWejHERPXmEzGT 0.00846460 -fiat/revs sendtoaddress RALNBMirMEUAynYVwMWkQKSjeMWNgQ8Whm 0.00846517 -fiat/revs sendtoaddress RSorDjLHkFn6fqWjVNSc5razs3yUV1G5Qu 0.00846556 -fiat/revs sendtoaddress RQF4heVMrxpaTKjQtt7Nr1dcXgTdgkqDY4 0.00846952 -fiat/revs sendtoaddress RCK6pW38X23GDbbmQWo29vRtf3MEq5FuSJ 0.00848471 -fiat/revs sendtoaddress RMvLHTCAEqv2rdfCxim9BFkiNoUyC2rrwv 0.00849216 -fiat/revs sendtoaddress RQ3jWBn9xpqBwiZw4UiMaKvugurFVyBVqA 0.00849552 -fiat/revs sendtoaddress RR1EZUfwcoSXJ6sYdgpTwRoNCZqCePmoN3 0.00849917 -fiat/revs sendtoaddress RHJABdBwhzLd52ifVNB6Ect8JNya9jLEh5 0.00850412 -fiat/revs sendtoaddress RSGphNLA6RszvL872wkxhbqDy1Tzsvd4Ba 0.00850720 -fiat/revs sendtoaddress RVzq8et5fwswLjiRfaDTUkfFsUPMpdAqEh 0.00850978 -fiat/revs sendtoaddress RTw1dz4WLi3JAY2VnWsCQpaF3YUfpaBuC7 0.00851304 -fiat/revs sendtoaddress RXcxykWC8Vr2dupiXY9dnFtqWbtXqq9cXs 0.00852761 -fiat/revs sendtoaddress RR9P81bUYHKT4x5XoiUqQ2jiuqVG9Vujxx 0.00853060 -fiat/revs sendtoaddress RVupNeo6oNeDw1fVkibp1uDzd3fcSLU3Xe 0.00853095 -fiat/revs sendtoaddress REYJciNVNojwMFqiUGMgn2GASbWC89Vb3h 0.00853575 -fiat/revs sendtoaddress RHKgp1VuJdhmsT1b4w51xHnz2DaMqTwPPE 0.00853634 -fiat/revs sendtoaddress RYLT9bQAsNFHje9R9aCa4t27NcqL4CMp4d 0.00853772 -fiat/revs sendtoaddress RQGe2jq65T19y231Fdsx3Fe8LPa9GyoGBu 0.00854610 -fiat/revs sendtoaddress RN9WpZH7eBFSXNqMBvcsiUUxzxgMBKC8W1 0.00854797 -fiat/revs sendtoaddress RMAKmbyiLt9svbrBVcMrR4b6BaLm51mciy 0.00855001 -fiat/revs sendtoaddress RS49mUTdS2HNWZ6bxeWiWXjrpAVwmWMubd 0.00856260 -fiat/revs sendtoaddress RE4S8UCTyGUzGEnHNqjT7nzhK1UVh7SV68 0.00856312 -fiat/revs sendtoaddress RSC9QbKMjTxFiLRD3zkLL94uUC4XV9dBqi 0.00856356 -fiat/revs sendtoaddress RGiJ4UGGDnBEngCDk9HwyKfNvJp1Gyg3jt 0.00856382 -fiat/revs sendtoaddress RBJjobsJkPK9veHrHSvk7dKR93u6NwFLMj 0.00856646 -fiat/revs sendtoaddress RUvU5AnvSMKXrufCBGT9szjmxiLdotZ8F1 0.00857085 -fiat/revs sendtoaddress RPL2vJG4tqFuUvzJb3HqeuPGM947Wg6bU5 0.00857269 -fiat/revs sendtoaddress RGjYwQm5zAM5jrBPctP6CDhbsFfoJ6TXUL 0.00859500 -fiat/revs sendtoaddress RSN66CqvKWiL5er1PAGqjRzLYQEJX2pW3C 0.00859785 -fiat/revs sendtoaddress RAapgqgzEsKWqCzgmPYPKBT34n4ncWN6nB 0.00860340 -fiat/revs sendtoaddress RExWReKP6Wmx8mAWTXHf47vUd9f2v5TCUk 0.00861820 -fiat/revs sendtoaddress RQpxoJu38RXWhggXiRTS49zHzVQX1uwCwa 0.00862148 -fiat/revs sendtoaddress RSLvK4Q9SPLvfgbNtgpzhZdAEwPAEJMmWE 0.00862999 -fiat/revs sendtoaddress RAXjmxoYBu5Uo84Jc2H6cRoKofUU7GVrKU 0.00863072 -fiat/revs sendtoaddress RD476gsjNhvBCQCRHUzzKvRrfbDhXX4X3w 0.00863603 -fiat/revs sendtoaddress REnprh8p2FTVPzbssBGPmKQB2gBsWsZ2QZ 0.00864001 -fiat/revs sendtoaddress RTiJHot5kXAC1jm82r3Hx4MJanV6biRsZ6 0.00864275 -fiat/revs sendtoaddress RXsbbsoxahfe7scPPKXCpPSAWo5DGUCHeq 0.00864280 -fiat/revs sendtoaddress RQQCcdkR3PVgzvqd7ifKA7E1soZxT3BjNP 0.00864816 -fiat/revs sendtoaddress RSuzFdiL7RJbyv5F2twL5Nw3isRuFinXpo 0.00864986 -fiat/revs sendtoaddress RGwjGdGxxRE6eZ2eohYCbCU4pSAkXYU8zs 0.00865036 -fiat/revs sendtoaddress RDkaLhP8QiBwn5tDCbVDbKJ4EyxzPe1wop 0.00865190 -fiat/revs sendtoaddress RJEGUZYhks1EngHsdBixnxpUDEzgiQ1d6r 0.00865699 -fiat/revs sendtoaddress RVePYwr8V59ETuszSRSxs8GoCroXQALjnW 0.00866705 -fiat/revs sendtoaddress RG9pA41dvp3MkbC6Vy7csa4k8TmPv4WWMt 0.00866715 -fiat/revs sendtoaddress RC5gYYK4apox6josbUhoGpKLLYYQiBRVcK 0.00868500 -fiat/revs sendtoaddress REfMwda2HYM8ZKfd4gW2ns54QgWNLuW4X1 0.00868741 -fiat/revs sendtoaddress RRBXhAZQMzuqnZzRNjTS7UQUJ3Px43wETr 0.00869262 -fiat/revs sendtoaddress RTYyF2ZNu77MibbG888GYQQ6jxZrH2gTbF 0.00870972 -fiat/revs sendtoaddress R9UfuLobaRihTMT2qLFMtQH38xahnRsLC4 0.00871726 -fiat/revs sendtoaddress RT4aj7uv2WMzHE8wmPd451souBPXyuZ2RT 0.00871880 -fiat/revs sendtoaddress REwwuvG8AiyNeiRcCwTkhyPehdJ5xiHez8 0.00872374 -fiat/revs sendtoaddress RTvTRAKgbbe5UwP8LHBd6aRfgbP2p8sQsN 0.00872853 -fiat/revs sendtoaddress RNdnjh3zaY7FERALocApvG5cnzQHxwyjDi 0.00873762 -fiat/revs sendtoaddress RRypk1mqVyHrxfboHU4jbGH6yywx8X4JgC 0.00873916 -fiat/revs sendtoaddress RCxEMHhQNe2CVrMkVbmvvMPgQakHTQGfGH 0.00875015 -fiat/revs sendtoaddress RT6UJUdAzKw9zu7PmrCEuW56aby5oTqPwS 0.00875431 -fiat/revs sendtoaddress RBaoAnscs9Heven8QJdgM3TNBEbWPspG7Q 0.00875699 -fiat/revs sendtoaddress RGDBLuvx2w9zdfNwpjqxuCd8CmteGvQ6Vk 0.00877397 -fiat/revs sendtoaddress RMRNXbULeNDbneXVrbLbuJ5QqPGHFrZob1 0.00877548 -fiat/revs sendtoaddress RYAu6uWmG9gyjB6KyipJiaqMHavkr44Lyo 0.00877951 -fiat/revs sendtoaddress RU8WpBk3vDwN4nWAke1nhUFgBBpyfF7b9M 0.00878941 -fiat/revs sendtoaddress RA51Q6ufYB9TBCdLKE6mjQYjqC9ftAboS1 0.00879647 -fiat/revs sendtoaddress RAmHxBfYmjJFRxXTeoS46rPkDJqeRzhe8B 0.00880242 -fiat/revs sendtoaddress RDUevUbD8vxZmEE6XU2QPWoTBRETBsjyaW 0.00880713 -fiat/revs sendtoaddress RJNkuUMTgRWhtPJfsANUuXQD1PoTTDFcxc 0.00881439 -fiat/revs sendtoaddress RTbXtqqkX26U9HBjDEe7GjPzNgSGcx1x6E 0.00882569 -fiat/revs sendtoaddress R9eXrfi5bVUH2LeoudpinoEww751jPdidZ 0.00882723 -fiat/revs sendtoaddress RAystoTn1BcUZ3wU4VW2VPxwfEHoTZvnz8 0.00883762 -fiat/revs sendtoaddress RUyhGYmSYiMKPGDrXQxY8LpECPCbCyQr7W 0.00885888 -fiat/revs sendtoaddress R9yLfwaeN2PPydjTqAV3MuHz5HxGDme8hJ 0.00886601 -fiat/revs sendtoaddress RXoDdcRGwMVZDSvMyYdHfsGud2dViQo7r7 0.00887145 -fiat/revs sendtoaddress RVBEvUqAVQjBaTCG2Wia6EiXQDzrmVJ5qz 0.00887290 -fiat/revs sendtoaddress RN6CvLzAzDPskE9TuYMPrWnzSbsTbJwQC2 0.00887522 -fiat/revs sendtoaddress RKdMbCejmRxhCjZ6EYz3tgueLZ2vsoFCcb 0.00888000 -fiat/revs sendtoaddress RG3Cq1pn49JgfWRemrtFkH2fHx9insjWS2 0.00888130 -fiat/revs sendtoaddress RNt4hHEXWTzLnc28EX3a5x5QwWehWrEimy 0.00889181 -fiat/revs sendtoaddress REQbKnyzhTkvu2TWyHbUQVLCoBfGxygy14 0.00889644 -fiat/revs sendtoaddress RTVfGW7tRwPHWrKrUdNTzq1dZwyeNrHtcB 0.00890000 -fiat/revs sendtoaddress R9Wfv6PfMVj8ThofEhdLWQTYtXMhXXK62P 0.00890380 -fiat/revs sendtoaddress RNmMxK4Pia17Jj3TEFCnkuYF768g6KSpQc 0.00891313 -fiat/revs sendtoaddress RMYKb2i7VvX6toTjqVNUjUzkcuw5UcigVg 0.00891415 -fiat/revs sendtoaddress RSpiF9iYe6okm5VzwkPFNje8T2LxB3FoYn 0.00891436 -fiat/revs sendtoaddress RQ2fUTLAnFSMgreT5YvAwyKwz2K4Soe3Ae 0.00892072 -fiat/revs sendtoaddress RDkW5wnEC2nia4qrqopQ63RW6V1igHjFHi 0.00892086 -fiat/revs sendtoaddress RNHZ6GMawNLhikYUbChtbKjxn2XTVN1heu 0.00893156 -fiat/revs sendtoaddress RSEnDMfHK3CVkKR4a97rCbytU7GHbqkSiY 0.00894356 -fiat/revs sendtoaddress RTA3BowKXjUEogRr5Yy1rbC76oEtHWuvpc 0.00894664 -fiat/revs sendtoaddress RJjSDWPuzZGRAaNnfWYxWimrMRK3uzvT5Z 0.00894819 -fiat/revs sendtoaddress RAM3gEGu4ETnXCYgD4BgdJRkvEYoPM5fHQ 0.00895871 -fiat/revs sendtoaddress RMCFeXKScecAUr3mTqqfV8PgG1uiQwYyx8 0.00896100 -fiat/revs sendtoaddress RQAbXeWZxGqAwRyYrMxRrmE6jBfPuWFFpq 0.00897982 -fiat/revs sendtoaddress RDMkbaRygAsWihRid5bRttFc4qcUNRaurm 0.00898071 -fiat/revs sendtoaddress RTH5DMNMAMankR2G4rPYnWLSm6ptnApcZp 0.00899690 -fiat/revs sendtoaddress RUEbDZwfQzKcrZ6gaj5MNuPgiXVZHgZbQG 0.00900000 -fiat/revs sendtoaddress RAfMScMoNGevudBvmpjys88BbUoyCjqUCw 0.00900244 -fiat/revs sendtoaddress RJFPovT2PMy1AggGDeq8Cwu9JG6T51Lk12 0.00903871 -fiat/revs sendtoaddress RHq1UBj2ix8w3jDCVhZ8HMiNGWPdZZ5Xhh 0.00905840 -fiat/revs sendtoaddress RPf4AfyUhmbvJXh82yZJ1Jw6nC4EtT5GgE 0.00908170 -fiat/revs sendtoaddress RC8RSV2ttVR6tP1j4rCNfruwE2yZXPtWJx 0.00909499 -fiat/revs sendtoaddress RDwCyFA2rshfE6n7jKJMMcTXrgzbfK1CMg 0.00912000 -fiat/revs sendtoaddress RTAQNLm1Y9kt3nzPhfZmGrMX53kC2zV8As 0.00912338 -fiat/revs sendtoaddress RTRhfh9z8wtapt9Zuh8gogwgRUmNM26abZ 0.00912403 -fiat/revs sendtoaddress RWBQXYxfxhzazoM8TdFvFwQYitHeQuF4nq 0.00913843 -fiat/revs sendtoaddress RKy2DFo97kJQUTwD7iHsesQB4H64T9jn9K 0.00913946 -fiat/revs sendtoaddress RXf2PzwDYLVUjffvwtt4RrrVBJjYwjGjjQ 0.00914252 -fiat/revs sendtoaddress RTtXEaze1iUzyY2Mkox1akTQkLxuZ3uy96 0.00914868 -fiat/revs sendtoaddress RJyMS3kLj5Ud9govZaAb7a25FraAYtREQQ 0.00916881 -fiat/revs sendtoaddress RFV66pqYkrwGheh9AxpxdCqHQV4kxbHmo9 0.00918000 -fiat/revs sendtoaddress RTmA3WgHmAgLa673JzRzGScpCWRBGVEvKS 0.00919144 -fiat/revs sendtoaddress R9ZeUbqy7WWZoJWawuqvFEzwZZhJWZku27 0.00920447 -fiat/revs sendtoaddress RC8xNppuUVD9pWXtxKVEw73wwVteLufT73 0.00923183 -fiat/revs sendtoaddress RBaCvMfTG2PqasAjerxCua8HTgwA3amvir 0.00924569 -fiat/revs sendtoaddress RRKtCyoH7Y4dLDPaNHXLtfzm8ceTZoojiQ 0.00924697 -fiat/revs sendtoaddress RVFQr2xGmdhQE6DnqNpKF8HZaCTBzkJH6E 0.00926600 -fiat/revs sendtoaddress RLsS5CWKBvXrsMC7vBwNbLfCJdsdx61oQU 0.00927628 -fiat/revs sendtoaddress RHNyQWotmSfyETZJHvHVCmhqAEwtRRKtyK 0.00927789 -fiat/revs sendtoaddress RMmJqZALcGAbG61dy1auVBwhYQveAQZh1R 0.00927981 -fiat/revs sendtoaddress RDE3Z9SiXF8Tgr5sfCSTvi7WNcefMgg9d6 0.00928975 -fiat/revs sendtoaddress RFD43mprPFEGqY12rU6wwLEaHqMqEa9ukn 0.00930453 -fiat/revs sendtoaddress R9XcGMhiKEnqwjvHmaF4ApDUvJwVaCCfDJ 0.00932527 -fiat/revs sendtoaddress R9v4HPtRPQBYiPuD6Hxp4FfizVbWZpBXJQ 0.00935789 -fiat/revs sendtoaddress RBr2R4w8LmHS1Z4m16Z6U6ChHaAtDCy4Kd 0.00937444 -fiat/revs sendtoaddress RDpfErYbGdgrZsMtitCMvh6XN2cNu5xrtm 0.00938000 -fiat/revs sendtoaddress RBuSELrWwSfFE81AkE2EjmXT5frLFeddGD 0.00938959 -fiat/revs sendtoaddress RYDatcBKx46mjiFRtBEoaKubz8u7L2RYbd 0.00940000 -fiat/revs sendtoaddress RQG2mHk8MzUwXYMNaXc2UCF9YbSmTVs6Zx 0.00940608 -fiat/revs sendtoaddress RRvmaKynuo7Jm6tMfgSS3SRaGobWroTDWo 0.00940995 -fiat/revs sendtoaddress RDvX2MgtFrDE4DZZXZSTkxmx4J8QNxGeCX 0.00941334 -fiat/revs sendtoaddress RFrP8JMrSyTHg9q8uMCSxJjRz9GJpdeDYf 0.00941500 -fiat/revs sendtoaddress RUUGiHiT3PJK7dXHMfEHuefyeLLm16oJPA 0.00944134 -fiat/revs sendtoaddress RRCNUuXJuqtetjUS3R5iDXZ9xWCK3g4AUt 0.00946170 -fiat/revs sendtoaddress RNJ3nVhuD64TB5biKYFszTKKjNdaVqJVC1 0.00946421 -fiat/revs sendtoaddress RP92LbJVwdMFLVgMcatGXMQsf7UbZTeXF7 0.00947393 -fiat/revs sendtoaddress RCCc4Xnxtow2Gi82qFfMPruLYiEErn3sjP 0.00947953 -fiat/revs sendtoaddress RTbHPSJR53K4NAvousUGscUrx27n5pd6oq 0.00949538 -fiat/revs sendtoaddress RQTWPVJawsgf8gcJxTVdzDwuCpgiEP97ak 0.00949801 -fiat/revs sendtoaddress RFrqpUfU76sHsiqPpfmRJ5EaLkCTJfDurX 0.00950006 -fiat/revs sendtoaddress RL3fHoPKV6YP6sRm3CTHwUDFF5gqp6atYe 0.00951053 -fiat/revs sendtoaddress RNFGKndBzBhpT7DFKWJro1nykegV4ksjC2 0.00953430 -fiat/revs sendtoaddress RSyQQ4dBceS4NZFpEdRA18nJJsmZzKxd7W 0.00954010 -fiat/revs sendtoaddress RNbvv7ZMykGw31SSb9CJSTRUezSaQ35BFu 0.00954977 -fiat/revs sendtoaddress RFUpAR3YfrKfLhR2tPN76yrXboVjDK9n4J 0.00959591 -fiat/revs sendtoaddress RX7XaVW9cx1VhqecNYE6L6kJgZw11JiVj3 0.00960000 -fiat/revs sendtoaddress RQhoM6uRpeJYugvL14xMxrtxguibLaf9AS 0.00961770 -fiat/revs sendtoaddress RCVL5LPX3fv8JTic2F1dR7XD6TDxpYdLjE 0.00961897 -fiat/revs sendtoaddress RJodvSAyP71vBuDp95DpY72i43XkSF5sGM 0.00962611 -fiat/revs sendtoaddress RLFCmZ4eqP6cpdT4tYmTEgjihJ3zCxS682 0.00963749 -fiat/revs sendtoaddress RNGKmkq9bJ3vLQqZrLoYQLZcaXipWuUSMh 0.00964030 -fiat/revs sendtoaddress RBE7nz9czHumTubiBce86ifiQgjqiuLxU4 0.00966918 -fiat/revs sendtoaddress RSEkxixkVg1PVE1t5cjoF8TeujHNGbVbPK 0.00967072 -fiat/revs sendtoaddress REbmt57hnMfCT5YkhdrXYUkGawqb4dhDer 0.00967300 -fiat/revs sendtoaddress RLKfUZrUGfh1tL5VPX2pMBJZ36SqQs37jY 0.00968587 -fiat/revs sendtoaddress RJaZHN2KvUXdx5bTPnWKibh3FabjFEXRYH 0.00968864 -fiat/revs sendtoaddress RHhwbngbUSbFYsrAkwUPdYNSBHoM8UgvMV 0.00969634 -fiat/revs sendtoaddress RHWcgCYXT3XrVeifAxLb2v6iRW7YJ1SWXc 0.00970000 -fiat/revs sendtoaddress RDPnncV98nDdwKATdkS8oayswgrut75YGE 0.00970015 -fiat/revs sendtoaddress RWpRW4BcHNh4iKHE8cnJiR1vgjRe5jM3gF 0.00970138 -fiat/revs sendtoaddress RGrJzN7p6cTxcEbHz9JABV5FQiPkzjyAUX 0.00970623 -fiat/revs sendtoaddress REnb9ktz4pL5Jgk5uxBx71tjp8wpCKW4TW 0.00970891 -fiat/revs sendtoaddress RHwBy8EEhMG25VTPkXtSiR8XHajyimgF2V 0.00972500 -fiat/revs sendtoaddress RRob4geg5NXuwvgLp3vJUEhA6tKKc4ripK 0.00974874 -fiat/revs sendtoaddress RRvP1ayNzyXY6fn7gMzXq5kPgX6RaoqNtV 0.00975339 -fiat/revs sendtoaddress R9Tbp2pMC5fxPU8XnXNNcWEQMy1gJ67LjM 0.00976095 -fiat/revs sendtoaddress RJWKD7FeBAPiEk14XNDAqaEUYEXXu1YN4y 0.00977489 -fiat/revs sendtoaddress RKb2N8k7iRbuYtjJP9J11875McVbnKnpK4 0.00978704 -fiat/revs sendtoaddress RRNKvwed8misvqJJgz3FihEnHwHgqV4tmr 0.00980000 -fiat/revs sendtoaddress RDEHRF6oAG6c494kJKjB9kLyuRn2h8tjuT 0.00981341 -fiat/revs sendtoaddress RXVnzNVACfGnQPnsGp6dx7iFAgrqS8fWfX 0.00983689 -fiat/revs sendtoaddress RCDQQWaYqVr3oohdEvYkv6pqiNCi26xgin 0.00984936 -fiat/revs sendtoaddress RJnZpwxRwvDSa4NdLFNdUWdg3rYFMK7cnq 0.00986300 -fiat/revs sendtoaddress RQJFFCH1m4FGgEhz9of8obhjNXRCE8wpWi 0.00987870 -fiat/revs sendtoaddress RPgKFQE5YvCxNTT6Mr9xDAD591sJsZzVe3 0.00989858 -fiat/revs sendtoaddress RJKwx3Cfz9CRUm8mjuPCYPjbQVjbVsxvdJ 0.00990000 -fiat/revs sendtoaddress RRhU87U2AygX87EeBf2oCoda4R2ALDNDnd 0.00990559 -fiat/revs sendtoaddress RXbosN3F3BLxdBVQXtsj7d4yhzQoDoDx44 0.00990745 -fiat/revs sendtoaddress RT7TGBoc6GZ1UJz6ZXBSB9sNLbe6CXA6d3 0.00991093 -fiat/revs sendtoaddress RTddMhJQsWwiG97CUcHKLq5CuBHjiTrLPR 0.00991459 -fiat/revs sendtoaddress RFojvnNaMxinnFuUEvxh8sBBSU7sAdkHx6 0.00994548 -fiat/revs sendtoaddress RDW8F92PNhZCbXgJXVkWgoT8QnckrnPY51 0.00994648 -fiat/revs sendtoaddress RXdTPCeirJy7fhY4Q5auBnCaCFYjYFjHqr 0.00994860 -fiat/revs sendtoaddress RXEh4q2WnSqXasEcoQUAysksutFbzpFw9a 0.00996789 -fiat/revs sendtoaddress RK4KmA1v4T8Srkq9KTT1ebP2uAX7aDcpcy 0.00996951 -fiat/revs sendtoaddress RVv2xJwVjE352ejwyFSRDS3Ln7aGpbVoQz 0.00998170 -fiat/revs sendtoaddress RWcnGJXw3bhMZEZWSLC5GpG7yokXkori5K 0.00999773 -fiat/revs sendtoaddress RFwbpsbXPBfPmeHbN4xKtF7cpfX85mQf7u 0.01000000 -fiat/revs sendtoaddress RLyhywpv1J3Co1uPC897cyqTs6iWHDenkj 0.01000001 -fiat/revs sendtoaddress RJ8ijGPSvZZy5mdxZkpDYSe7uYczy61Hoh 0.01000002 -fiat/revs sendtoaddress RJSLTnwnCmrRo38QQsQJMYE8CQW8rNDv8m 0.01000003 -fiat/revs sendtoaddress RP5tmGBGZ5tH2bnYLjuY4FY3ztYKMoeHJ5 0.01000004 -fiat/revs sendtoaddress RJGkQvBovikxg4DcXDpfMHcZDn1QUj1Xon 0.01000005 -fiat/revs sendtoaddress RNzsvYGYnZc84ghLRXLbNB8pXMWRJTAZXY 0.01000006 -fiat/revs sendtoaddress RBB7aKyFQDreNz1mTUbmQjcFmuYjZF3JzW 0.01000007 -fiat/revs sendtoaddress RDCQJK6Gm76tzeGhSLqtPi6hUfoQhbzY5K 0.01000009 -fiat/revs sendtoaddress RLe8tgfifvYwbRzNEdtJpaiuRx9y3ee5X7 0.01000013 -fiat/revs sendtoaddress RJ2CQ69UpQod69yWPEiCC3fHwvXq9d7gCh 0.01000020 -fiat/revs sendtoaddress RMojNJfbxVB28KGHy9c7VbNr8abHwVnWra 0.01000023 -fiat/revs sendtoaddress RTX7fYY6ZYEtZD31k4WFWLSYjwxadxNGwJ 0.01000026 -fiat/revs sendtoaddress R9ZS4t7pUjXYbiuU3xvoZHKECi5ELZtsYx 0.01000028 -fiat/revs sendtoaddress RVF8a94KQGC6evGn2Dkyt2AQKoP1HwCVbu 0.01000033 -fiat/revs sendtoaddress RCzyb3XkPkeJupH2JtLaXkyAYXxwmCqEBh 0.01000034 -fiat/revs sendtoaddress RSQ682fKLvqo5NXbJHPMTdVE6X3MSGbE7r 0.01000038 -fiat/revs sendtoaddress RW2ohUcdFnqF4uigBtkqjSea6zMSCDMqjD 0.01000040 -fiat/revs sendtoaddress RBV2fAr7rZwmWiFtSox8E1iPMCc5Heu5sz 0.01000042 -fiat/revs sendtoaddress RMaPPnzZPBjyh77QSg2mFrBhG7wEiApqct 0.01000047 -fiat/revs sendtoaddress RSbnGPa1GsXsLsPFUV3tiA3a87Q2JrZD92 0.01000051 -fiat/revs sendtoaddress RPEtwqT5kceXdPQUyZvXpz7iXURhCeeu3h 0.01000053 -fiat/revs sendtoaddress RErh5CeLNShZFJW5XH5pN4Cokwj4KSJSDU 0.01000054 -fiat/revs sendtoaddress RGaj64wEH1DJA9Bc8UAt9kfTd2RXoQUYkL 0.01000059 -fiat/revs sendtoaddress RGRZAcUkcheNYRdsi61ZDAJ4sogibS1fv5 0.01000061 -fiat/revs sendtoaddress RNh1ajwXqQ9rCbyJj52Mpaug4wzFELuWSU 0.01000075 -fiat/revs sendtoaddress RYEQ6PCaGfRhRCcLHELrjzHhkU1rvczvHF 0.01000078 -fiat/revs sendtoaddress RDXvQW1ij5Ckrt9rzoSCPRUwFVEgNm915i 0.01000083 -fiat/revs sendtoaddress RB5QvQ3YbS5vwC5RtHoJZFhk1B439wRVKz 0.01000099 -fiat/revs sendtoaddress RC1w7sAMNqfPQnN5gWNczEjfX7iRZtmThk 0.01000100 -fiat/revs sendtoaddress R9SFnY8yWFYzQoUksWxVoZBRzLXHjBHumT 0.01000104 -fiat/revs sendtoaddress RU28bbjMeWmQ1egRgey4u8sgi2aQAzhPLB 0.01000133 -fiat/revs sendtoaddress RQVFnFyWzSACm94G991981E1HvwaHKS9Fw 0.01000137 -fiat/revs sendtoaddress RAARtQWzm1U8egais3zejSf8ZUdyxU281B 0.01000156 -fiat/revs sendtoaddress RVzeq9z9n1NT9af8c3eat5Fk2keCDV4dey 0.01000159 -fiat/revs sendtoaddress RFDFhZfmVed7ARbNndV9KKm9N9PQnyRYND 0.01000163 -fiat/revs sendtoaddress RE8dNTux1tdUXLTtmVj6aSD1MLeRCeswaR 0.01000177 -fiat/revs sendtoaddress RWYbLPBNfYPDgB9UaR5LTUduy7ByhAq6q1 0.01000214 -fiat/revs sendtoaddress RT2PGtAmPDsutH2wWR3Bx5BUA9XptXF9ZD 0.01000223 -fiat/revs sendtoaddress REEUCxzyWGZsrzayq17Hf5L6r9Dh4k1nL6 0.01000266 -fiat/revs sendtoaddress REokaRCVxXgeqhA3zbxz7h4d9FRhKefRpv 0.01000273 -fiat/revs sendtoaddress RE4YsCi3njdm5yDShHKfyVLCPsSy5pu8bU 0.01000282 -fiat/revs sendtoaddress RLBpa9pSeEj6qVB86qDVB4jS59iKBRDo3B 0.01000294 -fiat/revs sendtoaddress R9NvdQwG7Wocw7wqQ6w36FksisJvLXPJhY 0.01000334 -fiat/revs sendtoaddress RRyxQTiZn9MDCy5788GG4SSAxGZRgbZu5b 0.01000344 -fiat/revs sendtoaddress RTGwmZ3Ev9cgfmmbKmG1B2cCX1B9eMBiC1 0.01000393 -fiat/revs sendtoaddress RPnS2guiiUuzHaYPLPdbotHaVeWzaR83Xv 0.01000410 -fiat/revs sendtoaddress RUkH7a4hbdbADEa1hqke9WfxfLNH8wpCfp 0.01000451 -fiat/revs sendtoaddress RV6h8pSnw4G27zi5WP7dvD4ZMmMQFLv9vp 0.01000488 -fiat/revs sendtoaddress RXQNPnQqE8miKFNUdgywceB7Mtgso79RzU 0.01000577 -fiat/revs sendtoaddress RRzJNCijDwJ3rdNsBpE7syCyKduJoCnYKH 0.01000592 -fiat/revs sendtoaddress RGWvd6gwVUaLKyJMeK1bqJGkvo1afUTcPa 0.01000726 -fiat/revs sendtoaddress RBZniKXjrQEH7xnCY5dU1h5fAjF1M6bLXo 0.01001198 -fiat/revs sendtoaddress RCFh7HMEnbmUCxyiwmrfSqVRUyN7BKeUNe 0.01001302 -fiat/revs sendtoaddress RFbNfRDg41A4ok4PGwLBQfrAy6LBeJzmXM 0.01001658 -fiat/revs sendtoaddress RJMMLFY7JFbNk8qKAqjEBiLybiWAzQ74C6 0.01001875 -fiat/revs sendtoaddress RPNSdVCDY6xwRuq4v4qnbPQP8SXTazS2Pd 0.01001966 -fiat/revs sendtoaddress RCsLSfioGNaxfwoYTMhD6mYza4Bzz3oLEC 0.01002120 -fiat/revs sendtoaddress RXeY95UQJhMHPmgcQG9zyQzErvDRAYygtc 0.01002378 -fiat/revs sendtoaddress RJ8xyZFqSeUoGvw4BZudAtN6jbgGmXMybM 0.01002808 -fiat/revs sendtoaddress RSkAnttp6pECphdE1g9dEwXabHviFcWCES 0.01002868 -fiat/revs sendtoaddress RLR1TwFeSA4mg2SYARHCCMp8B3ewPDAoT7 0.01003057 -fiat/revs sendtoaddress RWdCd6yCLsZVinwcGRtoGiUAKRS4JY7KV8 0.01003105 -fiat/revs sendtoaddress RXpedEq1jY1PgriHhiRkNNYvZDfRD2pXYD 0.01003348 -fiat/revs sendtoaddress RSJ1as74MXwEHkGorHe7vzxnsibz7mte2J 0.01003503 -fiat/revs sendtoaddress RNXP6j1Hq1CmU4WCp4FRpbgBUr7h3tduhC 0.01003692 -fiat/revs sendtoaddress RUp1eF71wXbZ6H8Wv5KDSsdkVChSJV5s17 0.01003721 -fiat/revs sendtoaddress RRxMwVTtqWcvuW9bV91UYhcwH8ZQ1etavW 0.01004068 -fiat/revs sendtoaddress RTQLNBGyJurTkoAk8yM52S4D6AYGm71mHi 0.01004616 -fiat/revs sendtoaddress RA8YJq8YGLj4SmQnjboPKRmJCrpqJnBgax 0.01004676 -fiat/revs sendtoaddress RGsXkwc665F8pFpW3QFKTHgFxZ9Egzq9at 0.01005114 -fiat/revs sendtoaddress RDX9YewLd4qRFtxLCUqJbKN1LfreGyPmGT 0.01006496 -fiat/revs sendtoaddress RC4JsrwBsBYfPHKffWPSPGy25JhUs1KH1o 0.01006736 -fiat/revs sendtoaddress RQSADiPFv7DuEZfxd61QMaqCWwaSeXXAzH 0.01007369 -fiat/revs sendtoaddress RXwPdV7MYj5ZpANuWxUeWegLQ9HpEn9dSf 0.01007553 -fiat/revs sendtoaddress REvqYYRChgjhr8VJPB2a9BecAJNKbqa9AF 0.01007700 -fiat/revs sendtoaddress RBLEuM7cgoWHmRtC1b6U99ghgoZu2znacJ 0.01007706 -fiat/revs sendtoaddress RU5zLZuGWsa6BUoZE5VR2ptdyJTkcyppxr 0.01007770 -fiat/revs sendtoaddress RM1Dc39rGUuTSMptWyTw4sahfPNzJnUnFz 0.01008000 -fiat/revs sendtoaddress RXkAeKbwx3GL5kdao8aegj6rGWzfcUBurq 0.01008024 -fiat/revs sendtoaddress RQgky8HFTvDoYE12peHjzWZpPEKctiFKih 0.01008194 -fiat/revs sendtoaddress RBS6iJ1VzvLihpuJxBzjqXyzXDcWebxaw6 0.01008600 -fiat/revs sendtoaddress RMRbEesSADySwKwEWb8kpjeBTaDRkYZtHF 0.01009798 -fiat/revs sendtoaddress RSyKVKNxrSDc1Vwvh4guYb9ZDEpvMFz2rm 0.01010000 -fiat/revs sendtoaddress RCGTKLERJ9DqKezWU6meWB1ur3geSYkNPo 0.01011259 -fiat/revs sendtoaddress RAgnosAApQfPhqD2d6Y8JkCchgDin5P2Zk 0.01012000 -fiat/revs sendtoaddress RBzX1U7WWcmgHt6EFEJ5L9UXCyyXF9au9Y 0.01012220 -fiat/revs sendtoaddress RHFUWfDxKJm12Dt6gZwxXVW1xCDruiRMFs 0.01012526 -fiat/revs sendtoaddress RAJNRVijDQfiJFYyfrgJCHNvRhZaocKvdi 0.01013456 -fiat/revs sendtoaddress RNhaPhkC8Bk62EBQ8L9GF93YxoN4DTAKcx 0.01013864 -fiat/revs sendtoaddress RJrFx78JRaMJWA2w92vGqfpcFo5bQCKB1M 0.01014105 -fiat/revs sendtoaddress RXNNQ4preJUpZ9We2hPivV7TrfFmiyNBX9 0.01014403 -fiat/revs sendtoaddress RG2E65F26tU9iohqXPQEETxzpcRBSgU28s 0.01015897 -fiat/revs sendtoaddress RL3FTFhhsQyEPsZUf14bqq6ZtxxRKYmNV1 0.01016344 -fiat/revs sendtoaddress R9daRwcMmeHdvrCb9XLfhfik31WMbB4mBi 0.01016830 -fiat/revs sendtoaddress RUcXamHRY4Q4XoAjNSUwYXHixXtyZh95n7 0.01017566 -fiat/revs sendtoaddress REeomFVXGwK6um7bu9GMzmiwpBpwbVWJ4K 0.01018470 -fiat/revs sendtoaddress RSF3sXtNGCFdeuF97AfT7bqTNListq45NP 0.01020000 -fiat/revs sendtoaddress RJPNAVUf1zXP65H6iXkrS3ctoxwat1pN9o 0.01021501 -fiat/revs sendtoaddress RMjJduyXveBbnR5TJ3tf6xzeobhdN7jReB 0.01022254 -fiat/revs sendtoaddress RGb8gZ5sXm3doy4N96sJ5bXDS2EShvBhuX 0.01022531 -fiat/revs sendtoaddress RG2hTpwcnDc3q4jPySVu26nthEajK45dQJ 0.01023327 -fiat/revs sendtoaddress RJxu9LksP2r9fcQY6z2AJ3dgriCZt7A517 0.01025160 -fiat/revs sendtoaddress RMANxTBitUayx9yCygoyiQsWsBs64GvBxq 0.01025400 -fiat/revs sendtoaddress RHcw1ZgVCW961Jd1kYNYPkXp4K3N5W2iwm 0.01025683 -fiat/revs sendtoaddress RJsG3fyNHpU1gj9eTBkhx6Z6DcHQzQ6AH4 0.01025953 -fiat/revs sendtoaddress RQxjrQCW5uW31hhHsJF36uWbJmmx1iTWrX 0.01027379 -fiat/revs sendtoaddress REo3wCZEjSbjPXC8Ba3SU3a7fPnqehd3hQ 0.01027464 -fiat/revs sendtoaddress RCpbTkY6cYb6WQ993cWJ2cxk38m11Mcbjy 0.01027608 -fiat/revs sendtoaddress RBB15oUXKcYTSXvYf3wgx9gFdWhcuQDju1 0.01027609 -fiat/revs sendtoaddress RTYpKUgDhW7kqxEv5FNzy3fi6vmzAdvHcP 0.01027768 -fiat/revs sendtoaddress RNpvcFAbXRhwMd8oGQL32WwH4qoRbsCgDR 0.01028226 -fiat/revs sendtoaddress RJCmxRjWkptB1PAVvgJv5PF2NM4iB9cAcB 0.01028366 -fiat/revs sendtoaddress RYFNJ4GAMGtszeujuHduEBRzDQ6PgaQAf9 0.01028482 -fiat/revs sendtoaddress RLSYkqw4vFiT5V57Szth7CjZuQ2vfEVU4s 0.01028954 -fiat/revs sendtoaddress RWffYApYPncZ18BzKdGBJFwKx3XpFM6oEB 0.01029122 -fiat/revs sendtoaddress RBsqHLjGAeijHet5MGXPSnATDpAW4G9YHH 0.01029141 -fiat/revs sendtoaddress RTNZ3MxhxSuqLccX3nqXpKYobDhSEBawoW 0.01030118 -fiat/revs sendtoaddress RCW1WR3zHpnXjqmomieNTRgpdf2YnMJPWf 0.01030858 -fiat/revs sendtoaddress RAAK5LYHUJ77RbmubLUjzE5Nwt3wAzSvu5 0.01032044 -fiat/revs sendtoaddress RTeuURJ4VpcWYZQxQzNNhtjiEbD9cAHmor 0.01032549 -fiat/revs sendtoaddress RATdBj5meBWnmRo1EmcM6vJPVWozrLwnZ1 0.01032702 -fiat/revs sendtoaddress RF3WZk1NZq4ZjDVgs4yFSW5jDjJovbTZGN 0.01034000 -fiat/revs sendtoaddress RHYWHUCmdhvjKyZHJzsLHaVs1isZwTLJ41 0.01036299 -fiat/revs sendtoaddress RGZCtswqWZpFXqCZ2KQrYbWs4VpziyQAcG 0.01036379 -fiat/revs sendtoaddress RStgN6PG5Bu8uBo11W43Erz4T7QwrdK6iE 0.01039326 -fiat/revs sendtoaddress RApfaeAcJTe1GWXhUpq3vex5F5g38eaktd 0.01042000 -fiat/revs sendtoaddress RSyX1iD2UjZGuso8BNyr2cJEszuDyuenvH 0.01042126 -fiat/revs sendtoaddress RRkYTDKvHhMXCE2jH6wBfSJ9T5JTBw52ZL 0.01042877 -fiat/revs sendtoaddress RP73kSqMSRVFccWAi5v6SirVzc3qLW14DM 0.01043302 -fiat/revs sendtoaddress RTEFVKXDqAFicVt1JHxXinkEbuVkPfxjLV 0.01043999 -fiat/revs sendtoaddress RMWQWaUnuPk3MvhBLq6dEWPQrd9SpzFV1H 0.01044000 -fiat/revs sendtoaddress RUdkEWvGF5F5LDtk6Mhq8g1cJBEqu76yur 0.01045632 -fiat/revs sendtoaddress RCV5cLypyS8gfFto3CnwwG9BhRpg2bztat 0.01046000 -fiat/revs sendtoaddress RFMBbvMJeVM7wAgy53GboCUsy1D1MQBJot 0.01046802 -fiat/revs sendtoaddress RXtE6Z73YhAurhrt4s3LHAPE7pPHYXhp42 0.01048953 -fiat/revs sendtoaddress RN6M4ZUeemNve1iqk6nZs7AA9c97JidCDr 0.01049905 -fiat/revs sendtoaddress RQ94x1d4JnSySTKW3LBpcGozBtHw9m1Uxm 0.01051420 -fiat/revs sendtoaddress RW7Ui6cUsNgNQ79QNRpj8dBZy9bL9rWRJB 0.01051425 -fiat/revs sendtoaddress RP2X4aEafdYzNQhDkVdk1fDDtLLpyeNQWT 0.01051686 -fiat/revs sendtoaddress RVAW5R9ykvf8TVFMkbSqyGz1u9kX1GufCK 0.01052822 -fiat/revs sendtoaddress RBJgeFvV9KbKtiHFvjpRjhE3U3goUTg3UC 0.01053712 -fiat/revs sendtoaddress RHL3eqiPSM4odsyYEYysV8Ha25cdwKZdKr 0.01056000 -fiat/revs sendtoaddress R9XcgaaEjTV3wQUx4uxAbiFRXtu59TTmdR 0.01057602 -fiat/revs sendtoaddress RS7padSucinn8gmVoZxMBfH9JuiYt5acM7 0.01057810 -fiat/revs sendtoaddress RLmj8oxLpZgCBNCTjVVRaqsxj4Q7dDPC2W 0.01059314 -fiat/revs sendtoaddress RKTdffy1wLQfMQ9cFfJQ1sNagJF8fjcycL 0.01063390 -fiat/revs sendtoaddress RJ8xcXg5rdrwDzvmx3oXoJEx5kAnzaPghQ 0.01064000 -fiat/revs sendtoaddress RRSNq4nHzHfQCX1ssijsT7oGweWdirivGq 0.01064183 -fiat/revs sendtoaddress RAipBjtJ8WZRd8qL584NsFEJS2hRHxYMz5 0.01065014 -fiat/revs sendtoaddress RHVUiWiDS5YoC3CiTFxr1KhSTG1wcoZjPK 0.01067196 -fiat/revs sendtoaddress RXKVf44An19cTVemcpxiZY6EqDvzD1PbZx 0.01067364 -fiat/revs sendtoaddress RL687HHDiTqRHMcTbEoa9tYfGcxdLPmCnv 0.01067551 -fiat/revs sendtoaddress RCa91nr9SWGx44Uodb7tXCG9B3yzYqiGsr 0.01068804 -fiat/revs sendtoaddress RRTxmX96MkJqnxZohuM3Ce7HSvfUJ6hcre 0.01071467 -fiat/revs sendtoaddress RTxpZBsrgNr6Cq4GvRnoxVRYDoXz7mg7yr 0.01072458 -fiat/revs sendtoaddress RHFjRAk4cmrSiLLywRjZQYgZE1P6vwidjZ 0.01073519 -fiat/revs sendtoaddress RUEsddQc1BtZQUdf8tpHHQqLio45Trn8Nv 0.01075372 -fiat/revs sendtoaddress RQPGvEzLhE1kRFzGFNhc1AueEz5w46XssY 0.01078992 -fiat/revs sendtoaddress RNbiEMxDwndfBTbEAPLtdzRw4jL92DajZM 0.01080439 -fiat/revs sendtoaddress RRcTYzeRg5XPykYTdzzcxPCTAdNUC1vPuh 0.01080524 -fiat/revs sendtoaddress RWP6wdyToQK3yCPhKMosXiSiRBE54QebNp 0.01080578 -fiat/revs sendtoaddress RNptyue3iaDhe3UNYoTbwyr6xWVsL5KyXE 0.01082227 -fiat/revs sendtoaddress RUvTPLQpdd4SQJ4xPtLda46QzqvhJB9d6L 0.01083929 -fiat/revs sendtoaddress RKiz2KQsVLZ2kP8gt4LB5vHoP4vwjd8YJN 0.01085036 -fiat/revs sendtoaddress RNpXQ4ERcurLHisxkyFMrpcicfAsdxnVZC 0.01086712 -fiat/revs sendtoaddress RD5cP2cCEP7Fi1KjXYNWVxR5RBvVhCiAge 0.01088678 -fiat/revs sendtoaddress RJYdQ9g2cfBxKpUenvDC72QmrFDRNwmZnB 0.01090106 -fiat/revs sendtoaddress RCyARS3PQ9W13BA299siJgpQJzsNvHMHo8 0.01091314 -fiat/revs sendtoaddress RUhAqd4Hn85aedVAv2rBQ4tafE2htLo5Z3 0.01094903 -fiat/revs sendtoaddress RKgUeWb6JQeGVB5DxLojCfqQq42Aggxg64 0.01095503 -fiat/revs sendtoaddress RBcA1Pyr9BQk5cnEVG7xm6Ucs11YeYG5mv 0.01096661 -fiat/revs sendtoaddress RLpiUSfDcC4VvvnEQdd94Pchts4MBaBABW 0.01097300 -fiat/revs sendtoaddress RR2EsyiPbkMYuTVvt72LykKoj1y3ynWvbM 0.01097937 -fiat/revs sendtoaddress RRLVHCPmYpVFo6Bz24TKjdaV83pdeqPDNB 0.01098289 -fiat/revs sendtoaddress RFdgqCJFBhrn1UoGRPAPUfEB8MxohvHxjE 0.01098392 -fiat/revs sendtoaddress RPu7XF4VfH7n8DVMdYRRASG5J7Yi1fpxL2 0.01099413 -fiat/revs sendtoaddress RLevVUtim6wWwckvUm73UgLAu1ypcYuTHJ 0.01100000 -fiat/revs sendtoaddress RV7aV3qEXnmrzYrV1FhMVV9w5SMxt1zuse 0.01100991 -fiat/revs sendtoaddress RN2AjupTnv6F1ksdtvTnuyi38bKk6v9r9A 0.01102500 -fiat/revs sendtoaddress RLZdyfQFaiUP5MV4bFnUSp8nRiEHwz7WBy 0.01103112 -fiat/revs sendtoaddress RMWiL4KrtMZxTs3sxB1f3Uu83mxpqZERap 0.01107481 -fiat/revs sendtoaddress RTPukAQxm5LGgyFmW3iqVmbR64iGsyp8rU 0.01108511 -fiat/revs sendtoaddress RMutb7GC4SfvgWGYkopbfwchSmcEszd1Ux 0.01110000 -fiat/revs sendtoaddress RKhTK9Ugu21joCHpBsoKLBShibhbBj4vNK 0.01110933 -fiat/revs sendtoaddress RQM2Dc4s5LsxzWJJBgj9kHsko9voysLmb3 0.01111874 -fiat/revs sendtoaddress RUFhcugexBPQyFYLpstrT7xkUdLcHQBDdb 0.01114208 -fiat/revs sendtoaddress RAvSDNGyaiGicDkACQQZH9Rji5PYCApmup 0.01114402 -fiat/revs sendtoaddress RKU9xcofiRgTAJBgpPtEoDx79mQ7pW57dm 0.01114511 -fiat/revs sendtoaddress RU8XvWan4SGNWeNdtevFHoiA4uPRQ46Cv3 0.01116000 -fiat/revs sendtoaddress RP9DXTRy6hetxZ4neTrcRxGf9WTWh4f7GN 0.01117000 -fiat/revs sendtoaddress RRgxGKidYiYyj37smkJJT7Nw2JafD9LN9U 0.01118499 -fiat/revs sendtoaddress RLHjkcHyN9Xb2fbWZ4XtFhGDPcCGceXPaS 0.01120041 -fiat/revs sendtoaddress RCq52TQ5D3cYfL436oSrD8pTxio8mx1pBQ 0.01122292 -fiat/revs sendtoaddress RKBiQsfpcSSYwkKr4wjikQTYHJUBCnK35n 0.01123674 -fiat/revs sendtoaddress RW6L6CMWFgRLggN8hq7BWATFTpb451u2JK 0.01125000 -fiat/revs sendtoaddress RTGjn4oDZG2C9A5p6VfcMr5fSWZ4NdDJtL 0.01125458 -fiat/revs sendtoaddress RMKC1c5VjVUeTG2kgk4AP6Bt54z9ixdri8 0.01126299 -fiat/revs sendtoaddress REAKHonuUMxJmiHCqFQz6wA4wAGfwcfE2e 0.01128353 -fiat/revs sendtoaddress RLnunKg1CbXcTkuMhTCDURTzaSHYWQt8S5 0.01128865 -fiat/revs sendtoaddress RBW7JeDHC4xRWd4RLgPJZRuBRr8xGMkxdy 0.01129421 -fiat/revs sendtoaddress RV3k8FA8szypko6kPWPxMCHt37GetKtoLh 0.01130226 -fiat/revs sendtoaddress RDwgSNYmWqJPZKTQjsGi4J3YaphzGV5DrT 0.01134000 -fiat/revs sendtoaddress RBGz1sZr1WnBHrJdxLLxX4YMHWKjTpC2oC 0.01134100 -fiat/revs sendtoaddress RSMtCg2BMnRLVvRjeD8THkh1cmZAPhEZMt 0.01134186 -fiat/revs sendtoaddress RJ8ESHR2F9MqYY5DCNBZu6f74VfdTEkpgq 0.01136033 -fiat/revs sendtoaddress RW6hqX7ZJYfYmfnaKNFDuckxwcTid4xX4i 0.01136429 -fiat/revs sendtoaddress RYZgAYeBYnfMe3uNJBbENmdYL7mXEqesmP 0.01137001 -fiat/revs sendtoaddress RWiLGV7FCTUnjDp7p7gUozRKC8yAZGn8Ps 0.01138500 -fiat/revs sendtoaddress RPycRddbZKbQCyzvd4zM3EYEtfmht5bZ87 0.01141852 -fiat/revs sendtoaddress RRDrwmsUy48nUByV8JgJzndV7M7TMWn5S1 0.01143001 -fiat/revs sendtoaddress RFMzMkBCwjMo2YctGUxaqDYgjhv3p6ygUw 0.01143832 -fiat/revs sendtoaddress RFX6KeXSZ8ayui7HJAn4ZF5eYUsEYJ55VS 0.01145956 -fiat/revs sendtoaddress RCcNNPX37MkfKEWPdfgKtgJK7SGdDmSWkK 0.01146801 -fiat/revs sendtoaddress RXhzjGfvjoP9ceEdP1qybXxZaRA5tzR88A 0.01147501 -fiat/revs sendtoaddress RBqSrZGY1RBYGwpqG25fGw8AwZSBD74c2J 0.01147502 -fiat/revs sendtoaddress RXn3NeBAxPTCrQawAuZMjEEfyDu2i3wrjS 0.01147930 -fiat/revs sendtoaddress RQwJDXvtF2hpk444GjTfDPPw7fzxNTW9ZU 0.01149707 -fiat/revs sendtoaddress RVy7oPEWXnV9A4djxKQnBxzwPRn9vURcyi 0.01153748 -fiat/revs sendtoaddress RQdi66NKE3XQMDBHA4LYuak4gKesfo7Yez 0.01156501 -fiat/revs sendtoaddress RAia96ndimjuptAidvhqVMSudVxQgeaDQF 0.01157846 -fiat/revs sendtoaddress RPLKoXydFh3uMsouJM6qpVDbEUmV9ZENbu 0.01158020 -fiat/revs sendtoaddress RU83Y6n43XJ52VDWU5BaFmScAng7vv5YfB 0.01165502 -fiat/revs sendtoaddress RFmxsTB1QrPWAbfLZd8MRZt49ECK1CbDn7 0.01165515 -fiat/revs sendtoaddress RE9w3Kt51VWeud4YU1GH7VWLxXjwwjG3Ey 0.01167948 -fiat/revs sendtoaddress RCPEYofGbQjZK2ZXgAaH88jjrEDwXGEXb4 0.01170000 -fiat/revs sendtoaddress RJmuyc69L6dF9YZxce6Re6kPysSGsQGYGV 0.01170793 -fiat/revs sendtoaddress RCLy39aXP7HY9rBJjog8HhuhaRzRUVHGAL 0.01171871 -fiat/revs sendtoaddress RHS6z3o4r1mNjMfaxqmpHBJPkFrk5bq9TN 0.01173629 -fiat/revs sendtoaddress RXLBPQhHa1L2wN5U3Z1NEdoBpZjCtofvUE 0.01174771 -fiat/revs sendtoaddress RRtTQeuZYVk5byDjcVggXZu8akg9gVKa9B 0.01175626 -fiat/revs sendtoaddress RL1gmjmBgg2oP19DzZg4J4X6n4hoAWCuQp 0.01176126 -fiat/revs sendtoaddress RLPuVYfShzvjDWUJamZePLprQEGsoiL5wY 0.01177498 -fiat/revs sendtoaddress RKUvKLxQmtjGmYZgX6zUSB6HeWidFkismE 0.01178803 -fiat/revs sendtoaddress RV3hxHZbBSbLj5yYM7ehXDUCzKdFzNyzrB 0.01184000 -fiat/revs sendtoaddress RBK3MmGqRrguZggnXSvKbh8GdPJkqoGj3L 0.01188630 -fiat/revs sendtoaddress RFc3yja7kzcdPhVzQDWzanEKmz5qqx6Vqg 0.01190000 -fiat/revs sendtoaddress RD2uMrC7oNiXiXcnTWSkHbT6JVG4DrsxqC 0.01193587 -fiat/revs sendtoaddress RACwkWzev2zCoWgb2y1mAGNqWQe6TfbVYe 0.01194626 -fiat/revs sendtoaddress RVdu8pL8u3eGafRt8hXqkzR9UJfGivg1eB 0.01195092 -fiat/revs sendtoaddress RGxtEJ6yoGirGQxCBNk7BgPLAFsPoow3xR 0.01196799 -fiat/revs sendtoaddress RA94kpQjMq9fTh9egFirKcUehofXawNdRg 0.01200000 -fiat/revs sendtoaddress RUyFUkM5xmCpLmivktpYWR48EWki7oWKtJ 0.01202618 -fiat/revs sendtoaddress RUD77ARNfWLrU3yWftCZJ58sHpGkpYP8Ca 0.01203257 -fiat/revs sendtoaddress RXmFevixwxERHexyHvhQoXMxqykuCTyAnX 0.01206002 -fiat/revs sendtoaddress RN6gvgB2gJ8YsJ3QpAf2SXaBt8454YEtL5 0.01214476 -fiat/revs sendtoaddress RVaTGWcnmgAdX5ffC2TM8ZdjM1JHDE82Fs 0.01215002 -fiat/revs sendtoaddress RVCWpcqtjoYcKFpvcysZcCanxenCRaDE9Q 0.01217199 -fiat/revs sendtoaddress RMShV9EtLL2zzwCSgEJ5necR6R28ddn97a 0.01217245 -fiat/revs sendtoaddress RSMTYhjkhXYKSHQs5ScKyJWsJx3LoFcXNQ 0.01220000 -fiat/revs sendtoaddress RVvRns6cWeSE4jBnmBmQEXP44rWMRC4i51 0.01221444 -fiat/revs sendtoaddress RLfJRxi7vTUfvHVX1PomzyDKvYHGbF2Miw 0.01222919 -fiat/revs sendtoaddress RJgTVQRcytNNTUD3yabng5D6PXjkZ2BJpN 0.01223510 -fiat/revs sendtoaddress RW8jJyWjw4WnEZQXrrPKjidSULKhqECMz7 0.01227144 -fiat/revs sendtoaddress RETX681SncnSy7TNcb9He56NYuNBsrEJz8 0.01228747 -fiat/revs sendtoaddress RL5gfWHzZETSp95Q5VBoSxuQsvTiiFH8fX 0.01228948 -fiat/revs sendtoaddress RFaPRE2i7qSArKR3HVKCtn4o6GoJKFep98 0.01230667 -fiat/revs sendtoaddress RTEVv465rEmtdS934ZkiYGPbWspnGnU4y1 0.01240597 -fiat/revs sendtoaddress RFuGWjthZadaFEx3BfvocWk4z46UeLx1zy 0.01256000 -fiat/revs sendtoaddress RBnLj68n9anzKP2kLmS38828S5Qe6vtWGX 0.01260400 -fiat/revs sendtoaddress RBvrgs5vnuHFWj8F1uWtRP64ZtsQvBB9pS 0.01263357 -fiat/revs sendtoaddress RUqxwRuySGZuEy4vAXa73PofkuYNnW35ey 0.01263367 -fiat/revs sendtoaddress RVHYeSYW3aKmCrfsxdaef8fTMSBJy5E4fo 0.01264597 -fiat/revs sendtoaddress RAjM3t3LVZXoegaaM84471sBFWR29iMdJP 0.01265120 -fiat/revs sendtoaddress RKfgkmtG3WThbyNYi9wyV4fEpaibn5myhM 0.01270461 -fiat/revs sendtoaddress R9U9E8WZNjUvzdDXq3GCKRucNhfXN9vyU3 0.01271865 -fiat/revs sendtoaddress RPJjuaEAJM65VY9yfgPyWSsCXVUG2TXA1a 0.01275482 -fiat/revs sendtoaddress RH1iH66rNZZ5Hdq9uz3H2RvB9pyMpvaDbc 0.01277025 -fiat/revs sendtoaddress RQ4pp7Vsdxip2gtCp8eZpoHrSuyCmgFbwB 0.01280016 -fiat/revs sendtoaddress RJgeQbS731XZvFXrpBUQJ2oi4z48HpRKfz 0.01290000 -fiat/revs sendtoaddress RDjqaqeZoduHJxxXhVdvSciDxuMZGK79po 0.01294623 -fiat/revs sendtoaddress RXpH47dXawMfxz6ZHi7mW1oenmJi5e5sBw 0.01294645 -fiat/revs sendtoaddress RUviYgLt123noVvYF8zn5u3A77juLHxt59 0.01295000 -fiat/revs sendtoaddress RWbPBsuP8XtQ4gpftFZ9S35YZeqUYy4y75 0.01297670 -fiat/revs sendtoaddress RCcVAuTce7EGqxKQnH6okCF6oG1GYNzzRs 0.01300000 -fiat/revs sendtoaddress RRTbZ7anusn2v9qBXJdpRWLW9ph8xsMK7w 0.01306073 -fiat/revs sendtoaddress RCwwaUYuarCajH7oWADfWrMLBU17h2NU6F 0.01306886 -fiat/revs sendtoaddress RLsNHt8913WcLiQA1zYKbLpGFvhryNq6p4 0.01311000 -fiat/revs sendtoaddress RBDR3aXi2WNEbUzcizYQBCU8FtDPT1hd42 0.01314503 -fiat/revs sendtoaddress RPn7XYUcHAfznZtF6ixsw42oJx2RtQe2wD 0.01318951 -fiat/revs sendtoaddress RXxdWR8JcXRq9hb7ZLsRgvuicQ98CRbMHY 0.01325581 -fiat/revs sendtoaddress RDXC6KZFdYJhUgy2mxzY3Donngoo8yCnwR 0.01326000 -fiat/revs sendtoaddress RAekg6sR34dKBPNThSJ6DuUXgiYzWdzDST 0.01329528 -fiat/revs sendtoaddress RH8xtpXH2yuqPb3zgkwjGNAYU4BxPh4pAd 0.01331500 -fiat/revs sendtoaddress RFzuTAH8EaQJgt74AtPvMjgwQYSJLbDVNa 0.01331922 -fiat/revs sendtoaddress RRGt3rwAQ1ZoHqCmnKXyXUyYs83dzzGboj 0.01339345 -fiat/revs sendtoaddress RS7KA3GMTUKsPgNGAzx4NrbBJ2FBW57GcZ 0.01342617 -fiat/revs sendtoaddress RWYuLqKz3RXFgfiLG2UxX28cZ2fGe2sDoX 0.01346092 -fiat/revs sendtoaddress R9RczVxVXrLBHhYeCYymWzfJxvoRa3aDn4 0.01350000 -fiat/revs sendtoaddress R9XnMWSLkCV4G6D4p5phJmqW8zw9EJ5hW3 0.01362348 -fiat/revs sendtoaddress RRQkfRaXR4Th5hvrRaX9sPCRsLs2ebVj5i 0.01364520 -fiat/revs sendtoaddress RBuwLXxsXSF4hPYpkiQBJUpqNcDo473Yxf 0.01364568 -fiat/revs sendtoaddress R9b3rgiHpUUxnbV48gbbZQMffzFbLmLq8G 0.01366394 -fiat/revs sendtoaddress RWfn2V5rVpB7mxMygVo7CGPSngHiRzMFbs 0.01368420 -fiat/revs sendtoaddress RWtDHU3jLJpXZi1HVxKpUsZywX4mgsPrKm 0.01371713 -fiat/revs sendtoaddress bXfN7xkRtwx3XcGHyDbTXWx74BdWoUktJ1 0.01372253 -fiat/revs sendtoaddress RNKwG4PYQjr9W8CQd7DF6uBSkDKwgzz9RD 0.01374000 -fiat/revs sendtoaddress RSjtDUyNHYT7DYzjPSGSx7r6zyEJXGhnFL 0.01376281 -fiat/revs sendtoaddress RQFnEY9EeLobM3YYdUt5KjqAvFQBhchhzt 0.01377917 -fiat/revs sendtoaddress RL2XSfVaYkipZtv29Tc7n935F5RK7iAinr 0.01379041 -fiat/revs sendtoaddress RBBmbnvyyeUxss1uM2VMpqGtmAJaC9xg8b 0.01381675 -fiat/revs sendtoaddress RJ6DNwC8YgZT3PMDN24SAr8VRXjnJP1Few 0.01382000 -fiat/revs sendtoaddress RHyM3KR5fpbyA1wy7prjN1WBedBQRiUY2p 0.01388868 -fiat/revs sendtoaddress RMdZv8chTGGT15uZmLTxJJ2UWcxLqkJdf6 0.01393496 -fiat/revs sendtoaddress RC7etseYqoWg2JTVdmqTEXVRibSxuPKoLo 0.01395985 -fiat/revs sendtoaddress RHKXkyyKTKcQg5q2NFkp7nXQLmjKt3CUeP 0.01397416 -fiat/revs sendtoaddress RQQMj37DYBajnh7jRnCeJnFM749WiTvgcR 0.01400000 -fiat/revs sendtoaddress REEvfxwdDbjeSY4o2mM8jc1YYuxQgCMgNM 0.01403481 -fiat/revs sendtoaddress RWqUMjWroTQmMvTpJyziBaa6ZvL7TUGyZ5 0.01403710 -fiat/revs sendtoaddress RAxcBzADdyaY2aUJCxDtUHZv1WT7prP9sm 0.01404235 -fiat/revs sendtoaddress R9g4tBNBAthAQ6YmqyVoVULdUGJ8GRLgie 0.01407076 -fiat/revs sendtoaddress RPLqmpMjiMUuXaevk8Utio6bCbRkayZyHt 0.01408249 -fiat/revs sendtoaddress RQkEnZu7zeABt3u37Y5ghNMesA7JfGt4SE 0.01420500 -fiat/revs sendtoaddress RQ7P4BstQdtJn5CJ2PCZet1tuTbKd3gN7Z 0.01423420 -fiat/revs sendtoaddress RB1PDd7tdY2uhnj5ZMe3SeEWn1H4udVncZ 0.01428958 -fiat/revs sendtoaddress RTZj1bo69ZYM6LUcTRKZ67QyC82QJMbxHE 0.01431084 -fiat/revs sendtoaddress RJMnrDdSanaMMKuDHnVP29FoP3Np6tiGVb 0.01432640 -fiat/revs sendtoaddress RSDz7iHQXZedd6G1CrnqBXfg9W6VhHgEQe 0.01439928 -fiat/revs sendtoaddress RENhGeVN9teophMPpCZHtxzz4kFfPVP3Qg 0.01448451 -fiat/revs sendtoaddress RQGF53tgMdy92ywoJiQdW5V7QcyynnfocB 0.01456501 -fiat/revs sendtoaddress RPwGzya6GVnsAhCoJQndpc5BjkSNhqKPJj 0.01458287 -fiat/revs sendtoaddress RJaxRdovmztyWU5Yw7K9wvdBpVnDJTHrpp 0.01459142 -fiat/revs sendtoaddress RBhJKVtyAYayBsG1B7TmyrGZYEd6B39ow6 0.01463100 -fiat/revs sendtoaddress RDVA8Jxg4d2hu9AHV6Zpm22HVLT6K2h2Co 0.01463307 -fiat/revs sendtoaddress RAdPmw54B8JurSPx5Lv1VHc7iaUsTqoXM3 0.01466000 -fiat/revs sendtoaddress RR7JzXuz43E4WsBAV5vjySquvyGnyE2VJU 0.01470000 -fiat/revs sendtoaddress RYA4akKxpzygJExyy5xQ1i2QSddVXDHCAD 0.01473457 -fiat/revs sendtoaddress RAujzY1mExvHY4tsaGGSEebS45MxuaXjtc 0.01474586 -fiat/revs sendtoaddress RFPufXDnWuacGDZgNiAx98uspvPWan8NQi 0.01475282 -fiat/revs sendtoaddress RWHT1ivY84KHgS1P1SMvXjkJK32mgPHNwc 0.01477020 -fiat/revs sendtoaddress RJ12J7tmDnzMA1Z2NskkxrXv4iHPJky7q6 0.01477422 -fiat/revs sendtoaddress RDX6JQDhyn1gthF9rRPPrt4DAiaCNH2tRQ 0.01479481 -fiat/revs sendtoaddress RMMPJWqUCqF8rJhA3t6SACNtJRjFmebvTb 0.01483857 -fiat/revs sendtoaddress RDWAk6zkjgW6eR6JGdz2pUEYcEdyPVPNWT 0.01488162 -fiat/revs sendtoaddress RUhEteEoa3R8QMxYrzjLTSSVv2buBnNFxr 0.01490618 -fiat/revs sendtoaddress RJ6ySmudFnEuVZiBALBJtdTRUfrvV4FQ7t 0.01491627 -fiat/revs sendtoaddress RDJwabcnFbpo1P3jZnhCJwdPF85ybn4j77 0.01496000 -fiat/revs sendtoaddress bbQSJudmo13vUkLd8LuADf1R3cXy4VJKEV 0.01498259 -fiat/revs sendtoaddress RSGrxYezWyyFQNXDiRbJMCJ9sEnLmNVnHx 0.01508801 -fiat/revs sendtoaddress RKwjzxLeG2z811AFLQH785CxyWnRm4268a 0.01510411 -fiat/revs sendtoaddress RJCXNvQrVvuwUCvUS5HnM89T9wAEf8Yeez 0.01515673 -fiat/revs sendtoaddress RJAiuqXMgBCpnvaDyrchZD8yMRunTNCEaV 0.01518587 -fiat/revs sendtoaddress R9tWuunPiM3yftGazN1n4Xx4CaqdKEbo7t 0.01520641 -fiat/revs sendtoaddress RS27wLUeWyi94z3fMenSRWayiPKypsUgJj 0.01527137 -fiat/revs sendtoaddress RLoZ9CVuagNP8uznfDN9vGc5Fkv7NwJJpo 0.01527541 -fiat/revs sendtoaddress RKBpAw4HxbJ4sMHKjupXbJts5xDfbjgwGT 0.01530000 -fiat/revs sendtoaddress RWr1rNsYH4LjdFmJYFbR9NtYjPoE1r4oPE 0.01534000 -fiat/revs sendtoaddress RUi2SDgk8z2w5yxzCHEsfKwa77HXaQEDC1 0.01536410 -fiat/revs sendtoaddress RMug8fvgxacqQvaLyk8KR6KqBTAmrh5RYK 0.01536662 -fiat/revs sendtoaddress RR3xDZYUACDjhVWNCH3KfSUF94CAS6Fn6C 0.01537141 -fiat/revs sendtoaddress RPiLizCXvoYzAVY31mXhuHPf2v2JE4vUda 0.01540000 -fiat/revs sendtoaddress RTJu9pAPZnFKB1eNwVHznw2P1ZsGLR3mLW 0.01544426 -fiat/revs sendtoaddress RN523fr8VtqNL1hnPe1TdAR1tWpfjnNXNC 0.01546001 -fiat/revs sendtoaddress RXWy8dWUS8YxHjEUz6FTk2Hfe26joZj72E 0.01546447 -fiat/revs sendtoaddress RTqSHYaFJqfpcBcMSoU41qe8nxUBUywq1b 0.01547139 -fiat/revs sendtoaddress RJvpvfEjZ91vnAf1uhejqZyY2fF64TEqFd 0.01550043 -fiat/revs sendtoaddress RVhD4uPmZpDXNJB84Tyi2Tqa49gsvVwiMq 0.01550366 -fiat/revs sendtoaddress bU1qFKUDU7badk4PzqY7SqYGiP6yDVMzQZ 0.01552233 -fiat/revs sendtoaddress RC9GH3eNzVc1BpdYQD2k29hUF91xm2sZME 0.01556845 -fiat/revs sendtoaddress RLQxx5feZWkSFrGLyYYCp9tjh8bs1E9bJu 0.01557126 -fiat/revs sendtoaddress RFCuKb7EBWCmktv3Cz17wJTq7yi2afhF1F 0.01557450 -fiat/revs sendtoaddress RFzwtEjbKjSjXeUojJAcaMNPU6fh25iyQq 0.01559155 -fiat/revs sendtoaddress RPXGU8obqkNuGC3Uynf4aiEjc1oUAHXcqh 0.01564342 -fiat/revs sendtoaddress REr8gpgb27WrahGaRkBXrdXM7fqriVWv6L 0.01569100 -fiat/revs sendtoaddress RE8w7Hrtv7gr351TpGSAX9EHp4PRGEd3MZ 0.01576481 -fiat/revs sendtoaddress RRL3WWBGLHBFXoJY28iUc37BmNRGkfBSWU 0.01576883 -fiat/revs sendtoaddress RUGLBGGYivqnY3T8Tv7CVXfXRLNC4G3Ak5 0.01596119 -fiat/revs sendtoaddress RUfX4PxH3JVMY3G5WsoDrDee3vnfNRo1Wr 0.01596900 -fiat/revs sendtoaddress RAhMtmRUdqB6RoyjqmAsjrvaxJ3oCv74Sk 0.01597000 -fiat/revs sendtoaddress RE2T5GNjrDuV9WJL1XWqg6h8TtKS8PAqHr 0.01597327 -fiat/revs sendtoaddress RWUYiSWatJsXLTTnyanhUdX5HD536S1uP3 0.01598567 -fiat/revs sendtoaddress REcRMoBJLme2D87TGjzzE1b9LWFvtGSZZE 0.01599361 -fiat/revs sendtoaddress RUPPAsdJAUPe6qrt8rMtAPxRE6MDQVZXNv 0.01603999 -fiat/revs sendtoaddress RA8hbr9gDMG4eMTiUVD6RQKwBEc8nhFod6 0.01604519 -fiat/revs sendtoaddress RWmBbws8rhGtc8frghCcbZsZx6eevH498f 0.01619287 -fiat/revs sendtoaddress RHecLfna451jFKouyfJdgV14hd6RqfLBZ3 0.01621450 -fiat/revs sendtoaddress RY776kDDYPoqNdNbnaYA2MEG5iJAwik4DV 0.01624000 -fiat/revs sendtoaddress RLkw1P5w6o1ZBowghb2bELJu3qgiDbQbeW 0.01624590 -fiat/revs sendtoaddress R9fteCzpvinEY173RWKNWRksCTboozwfQ2 0.01627877 -fiat/revs sendtoaddress RV8odtnYb2YbDYJ7vAdes2acD6zTaecgNv 0.01629293 -fiat/revs sendtoaddress RXswHDbFge6kEFq9xm6Qgf69SxmuiU64e7 0.01633669 -fiat/revs sendtoaddress RF3XqrGLKMjboGvDXHcropVLCoURKDNgaM 0.01639459 -fiat/revs sendtoaddress RHNPEhpTo4Y6Z41BiDKFWQzAxVKP6FrLsq 0.01646727 -fiat/revs sendtoaddress RYSy4ePTnGYEFk6aWPRXw6aw2uubWLJMmR 0.01656767 -fiat/revs sendtoaddress R9sBjbA2trrxJHnKWvewqb9fscG9s3EtuE 0.01659514 -fiat/revs sendtoaddress RNwGHkYrd12zUoMnkUzpo494CzKFZsN6cd 0.01662773 -fiat/revs sendtoaddress RNqmxf5LNDVQjnqb7aKwwYcnnSo5ShqVzB 0.01666647 -fiat/revs sendtoaddress RVM5CyXsqjyGfEDmuv2WCg3iFLy34mSFwE 0.01668000 -fiat/revs sendtoaddress RA4mQUSyXDSD5KdrMshrvRnndzG31uGyJw 0.01671948 -fiat/revs sendtoaddress RWPSnLnXWoxgXeY8rjxUDiydygoMiS7D1C 0.01676797 -fiat/revs sendtoaddress RN4F2uhUUB5K2RdN3N3YaeWTwuaL8TDdXZ 0.01678000 -fiat/revs sendtoaddress RAs2gUfoJzLZJ3a1yxAxD3smrBqJAJRrSA 0.01688044 -fiat/revs sendtoaddress RC5WAsaeD8CrtTYXFjEX92zcL2wqshRBsQ 0.01688461 -fiat/revs sendtoaddress RMdvw6diWh9gAihBZixLccboS4bWDPEFbv 0.01700000 -fiat/revs sendtoaddress RXDWzYDLaC1DQgEja9GFKbz4gnGM7hmXNf 0.01707236 -fiat/revs sendtoaddress RHjDCoV3QRnHwfJxHZeuPKjjV7RjYXqxLY 0.01708070 -fiat/revs sendtoaddress RVpFSgsPaSqKsHBaEmyeLtezPCnZA3dpBp 0.01708742 -fiat/revs sendtoaddress RThtXup6Zo7LZAi8kRWgjAyi1s4u6U9Cpf 0.01710000 -fiat/revs sendtoaddress RPAt4zA9cTdvLaHy9Kmk1U8FD1sHCKQqxi 0.01714027 -fiat/revs sendtoaddress RTWdKZrkuUk3d7XRBcdm1zG4pDPyj89zc1 0.01723543 -fiat/revs sendtoaddress RSH3noPfhfGWAbL2rjeYt8ctzUF6ASVtZR 0.01723959 -fiat/revs sendtoaddress RNcrEmwYK6xSYQnr1rFMvAkpo6cXUdjoUx 0.01735430 -fiat/revs sendtoaddress RXTHPMprrVyxQ7HygtDsHq9BoJ12fXeXj9 0.01739999 -fiat/revs sendtoaddress RUHNretW7J7iCdMrTqQhCB92FTYG9yRPUf 0.01741380 -fiat/revs sendtoaddress RXPHsvb8jsYmD5v2Yj5DG7MmwjaQZJzMK3 0.01747963 -fiat/revs sendtoaddress RSuHCjEdvLDe9NUkVguKRNKmVzgJQPzdCa 0.01752618 -fiat/revs sendtoaddress RPyarR1kxXPAnwzrwvJajtjqXpotxSTWVU 0.01756267 -fiat/revs sendtoaddress RDZP4HpmWQw4dN3SPsH7Z5QmBuJWw1N1XM 0.01759503 -fiat/revs sendtoaddress RY8sWADq6mfd2b2ii92zdnEjtZGQgidFT2 0.01761406 -fiat/revs sendtoaddress RFYj3MEqWt67LWsqtV3eXJ8RpzkfM5fwZ8 0.01765097 -fiat/revs sendtoaddress RNRkSQuCZC4jwY5Y9sqA8UhnRZqBimC5Ez 0.01768000 -fiat/revs sendtoaddress RE1j15yqcWX6NZJ5n25v7tEYGehNJXDnza 0.01771462 -fiat/revs sendtoaddress RWqxwkPUKucvLwdRPoGJYYFDE4nra1hBjV 0.01774742 -fiat/revs sendtoaddress RSH2eEuZTYE2jk14hk7H6KGkA1DzMFVvSA 0.01775985 -fiat/revs sendtoaddress RKNBHzGuSXaiKy9U3hrxXZvuvLgPTxSXh8 0.01779522 -fiat/revs sendtoaddress RQLeXkbykDtoVJYLxsEwkHwheiQYs2gjbZ 0.01780000 -fiat/revs sendtoaddress RN4CF2JEpSLL6gLfS2KAEFAMmaHitsqYbJ 0.01782567 -fiat/revs sendtoaddress RNjNTBoJ8XUPSgpxa4UXXV53fowLJ7unZK 0.01787844 -fiat/revs sendtoaddress RAJ2LcBi7nBkoDqc4hKg59dke5EmNtTpe8 0.01798437 -fiat/revs sendtoaddress RN3KYdWJKoH9EfvbXA8YHC6XJqvfBrqCff 0.01800000 -fiat/revs sendtoaddress RKegatsNVgYXzA9JfMNcEXQBoFdBPza4M6 0.01802970 -fiat/revs sendtoaddress RJLNPVgWkY7LcYJXmww491MxuzDtQ2ZoGQ 0.01804923 -fiat/revs sendtoaddress RFX1SMnDzZDX16k91wDJGn2bNceHwDVjTo 0.01805681 -fiat/revs sendtoaddress RDa1aTWwT63XNFNipvv9MQ3X9DB2GUkpm7 0.01812000 -fiat/revs sendtoaddress RUvegHVrZg6QZWWqFeDaEdGdnSXMtNpr4V 0.01814227 -fiat/revs sendtoaddress RRfpAMy44dYRNsABm7K7p8XLWP2GK8zWKZ 0.01822763 -fiat/revs sendtoaddress RDBE77kJEkTXJfWgNpKgxDhZrjmisvVucW 0.01828000 -fiat/revs sendtoaddress RSaekb96ocrh3VPbw3PSaPuAWCUFupe6s5 0.01841933 -fiat/revs sendtoaddress RWjwsaGt5qzk9ecg5GTGQNejXutAy2jkVB 0.01844466 -fiat/revs sendtoaddress RRM8G8rZLrkXKVXQgf28p741AMeVX6JKm8 0.01858002 -fiat/revs sendtoaddress RABXMD4MwK5qoMKBG7ucCD9qAmaUencXKU 0.01860922 -fiat/revs sendtoaddress RYEY3TAco46qiHWvMUb6V3CTFiWd1vzRV5 0.01863221 -fiat/revs sendtoaddress RXFdqo3sakuXZmhT51bkhNzuwLyjHfCtdz 0.01877352 -fiat/revs sendtoaddress RGPxheWfyPE7BQxh6yeMVrfWPxA4P3TT1B 0.01877617 -fiat/revs sendtoaddress RXFkRS7bmVpkmDERLwpJhohFop2A2EyfJi 0.01888161 -fiat/revs sendtoaddress RD5qe15zJLeNr96Mnvg2kXxmQTS255kii6 0.01889746 -fiat/revs sendtoaddress RYKnkfraC6jsHGx3YYPKXF45boMaaD6nKh 0.01889997 -fiat/revs sendtoaddress RHYx6wSc7NwicjfmQmXzvNYNysNz2GH4PG 0.01893132 -fiat/revs sendtoaddress RKfVd7bkrZywqYSrCkFAsDL93STsSHp4n7 0.01896952 -fiat/revs sendtoaddress RRjxMiyAEio8FJ4UcpxTw71RNAAvkiHucc 0.01899886 -fiat/revs sendtoaddress RPAo5pL3StkDqsrrduwstwk459gWXbQiGk 0.01900000 -fiat/revs sendtoaddress RWW7uGHaLPKXX86oWGJwceUNAH9dPhgcVC 0.01905123 -fiat/revs sendtoaddress RCkHRXGXkpMfM9zQSYnRWSL4W6u6RgWWao 0.01908137 -fiat/revs sendtoaddress RBbmDxSjwiFurSzHTBiVoJe4YCWA6WaE4V 0.01912973 -fiat/revs sendtoaddress RWZ1v2v49sXpNLUzsC9zJFRx4TRnGapCLd 0.01919093 -fiat/revs sendtoaddress RJNtgPdHhBdJe5HzzykviMaRvaiMQNDKqW 0.01922458 -fiat/revs sendtoaddress RFHpPDF1C4qt9XutXE9K5mt4vX8wy66wrq 0.01923485 -fiat/revs sendtoaddress RARyf1b53u77BjUwRWF8nqVgtJPRF2n5LC 0.01929000 -fiat/revs sendtoaddress RK25MAt5ZURbnvLjZF4hwQ1Gd1EcBrpbXN 0.01930870 -fiat/revs sendtoaddress RBjefAaa6bguZ1zGKg5kzsp4yPpvk3PjVU 0.01931556 -fiat/revs sendtoaddress RKP9UxXfLgd34MpD6fisCw8KhN2ZJZjaQW 0.01938136 -fiat/revs sendtoaddress RHmJN36VwkzpHpuSY3bi1MuaiKXTWbHywK 0.01941812 -fiat/revs sendtoaddress RL7EYcySiYF8wimPdzjzk3CW6eNG9BHLnn 0.01948563 -fiat/revs sendtoaddress RJN9pmCYug1zJ4RhcvrxdCnBJXiEZUYQ8p 0.01950000 -fiat/revs sendtoaddress RWHwUDjxVtBmjXuJv8L9M8iTnDajw1CBW6 0.01953720 -fiat/revs sendtoaddress RUkK4bTf2mgATHTJbv1DtFd8vqt5GFsPC3 0.01958500 -fiat/revs sendtoaddress RFdQ6EcTnTDzpMiEJdPyPZvwy6YxsxKFtb 0.01966294 -fiat/revs sendtoaddress RRQ1J19fd6PGN4exfp2ewu1WE4ErsPDJBL 0.01974695 -fiat/revs sendtoaddress RUH8XSRynyvpm6CnHevUJCxgBud5cP9Qry 0.01977214 -fiat/revs sendtoaddress RAai85Z2WPZDpQATnBYM3zK318wqwzq9RA 0.01987471 -fiat/revs sendtoaddress RAHgZpkgZGVK2FXn8xYwx5CLhbHxpD4ijQ 0.01990000 -fiat/revs sendtoaddress RMzGJz9DuiBKq22zFWWfkkfp9ywa7BFVk6 0.01996917 -fiat/revs sendtoaddress RTVQxJ5fz7BdQdMHYcPgjWe3HBAoPm5zwJ 0.01998584 -fiat/revs sendtoaddress RP48XCUDL56NvH2XdkqaJK6NnUTCwRKV9P 0.02000000 -fiat/revs sendtoaddress RQoQjid2zytDSkuKT8NiRW3MAn6ez4AEjs 0.02001559 -fiat/revs sendtoaddress RMc3T1o7Xou24A3bexWVcvp1RYnQY5LKw8 0.02002734 -fiat/revs sendtoaddress RMkpZBw8W6R5ag1tU4TzKtBuQGsXsFBgFQ 0.02003999 -fiat/revs sendtoaddress RWHFjmEHb5wgN6oTs5H7mG2HrBvvgeF2Nk 0.02007300 -fiat/revs sendtoaddress RGQwBHuU4qPbmc8Dx8e7zRPR1ZaipzBfrV 0.02008086 -fiat/revs sendtoaddress RM3p3CcenRPN64qFS45nBtLZKFjroQMuAE 0.02012556 -fiat/revs sendtoaddress RHpmwtFAqE3PV4rwAGkAGA2f1jXHdgp2Mu 0.02016180 -fiat/revs sendtoaddress RLJVUkCaXVAXmqBphY8NYxTjzzJLyka6qh 0.02017938 -fiat/revs sendtoaddress RXEXdffiFvtWAHCbTzQo4dGcMGiP6phPsP 0.02019672 -fiat/revs sendtoaddress RU2jbH3tANmNFdw573drwgius4AKGJSpf7 0.02025456 -fiat/revs sendtoaddress RLU1mYr2GbqKJnaxLRhfe589bMJDWKAski 0.02032438 -fiat/revs sendtoaddress RFmYxF7PVcHRtEihqbj7L9hLSaC9S38JpK 0.02032613 -fiat/revs sendtoaddress RGvizu2o5icNfYB5aBZtKHQXs9ovnRfDJ7 0.02035922 -fiat/revs sendtoaddress RMDpkp1VFCAb3mHk6HBBbtqQZyvmFAimR3 0.02059974 -fiat/revs sendtoaddress RJe3PrH3MecgSbFSMHh7tVg383e3ZvDYXD 0.02065666 -fiat/revs sendtoaddress RBgnkkTuTRT7sps8mhvBMZHABGfewXY4xZ 0.02067750 -fiat/revs sendtoaddress RXqZyVW3QV9T8nkCMKyMAkxt42EDCZY75k 0.02079487 -fiat/revs sendtoaddress RLfKfrMWLS6JmaM7bGN62m3gWKdEqHN5D5 0.02080540 -fiat/revs sendtoaddress RMvG16BgELkWjfJ3AqMLqxRZVCerHZDBAv 0.02085500 -fiat/revs sendtoaddress RAR7EyrNEwHk7ADjJkUw8o3unEDWveoVhj 0.02086714 -fiat/revs sendtoaddress RCGTwenHSz1NcYip5QSYYk2XGo4gFBg2RJ 0.02102381 -fiat/revs sendtoaddress REoW7ERZAZeNEbJtZ6XkMVJDbA2cnDA1W5 0.02103611 -fiat/revs sendtoaddress RX13bGcLcUB5FVvYaF6UL3vBsyBREmAeai 0.02116364 -fiat/revs sendtoaddress RY3wGFuMGozkg3UmjDzQybLRKEYohyEhNQ 0.02118000 -fiat/revs sendtoaddress RJwx5yTpitRXMEDnFeBfEzq6NpZ9HAViW1 0.02120254 -fiat/revs sendtoaddress RM46hJu23Y4ZYbhETqKW918E9DxZ6NByUv 0.02125657 -fiat/revs sendtoaddress RJ15Mk4bTNRhGvAHXEzfLQwV2AwNwTxH1x 0.02145669 -fiat/revs sendtoaddress RKMHDHj1QjxFj5NdRd6Q9ryihNsmmynJTQ 0.02148237 -fiat/revs sendtoaddress RVzYAcssLmREBxQTq8S5opEhdLv2HpoyTy 0.02148489 -fiat/revs sendtoaddress RBg12AVZFkdnmMpWCfTWXg4QoDw2sD1jyW 0.02149001 -fiat/revs sendtoaddress RNPsd7gGCJtFKeJNcSLua98sHUUUv8bxiP 0.02154166 -fiat/revs sendtoaddress RCzLk5jEChwgtwR2HFMx9CyQ1jnLRXKT3y 0.02163980 -fiat/revs sendtoaddress RFcmWXtcTRFLNfdgqxoxpNuBzzhjuF6DaM 0.02164656 -fiat/revs sendtoaddress REzPK5Q2AyztkJi8GQerm8C8PkQMWknzj7 0.02175006 -fiat/revs sendtoaddress RNba9LBQDFRKpDCfkUtBrBLvfBxARgsPWj 0.02178785 -fiat/revs sendtoaddress RDmqkoBdohVHkiFHui2TawQ7uqdSDgyWpH 0.02191393 -fiat/revs sendtoaddress RCtL3Kn4Hjz9cCZ35JdTpSXy4TYyfsBQ51 0.02193976 -fiat/revs sendtoaddress RBQaKfmUdFcaMt2vkdNYSgPJyp8t9hErYc 0.02216728 -fiat/revs sendtoaddress RNiScfefESssdhmfwuDuD3mUjgGqQwqDSu 0.02219617 -fiat/revs sendtoaddress RV1V4u9RiqcpU6YyLcbhdFpHRSuaBgqRko 0.02221527 -fiat/revs sendtoaddress RKLLFhuf4ULuycPhosrpk3VDGN1J4vZ371 0.02224175 -fiat/revs sendtoaddress RWuG2TiCa2tfFWvHV8fsFa2i8p77NPGion 0.02228000 -fiat/revs sendtoaddress RUfrAMZfiihUq7yePZVvF54TNoSN3gXVm8 0.02229368 -fiat/revs sendtoaddress RDnuWY9RRNYB698v3f1sbPH9xCRv7ftCQe 0.02231947 -fiat/revs sendtoaddress RUTuGQ1cERyKAGNN9i2WySWz55nGgHkYL5 0.02238770 -fiat/revs sendtoaddress RUDJNs4DeCBSCbw7gLgPyqtjhHAZE6GaYY 0.02254000 -fiat/revs sendtoaddress RTpECTAsgmNZ9G5afoYEaoJgEJVAMs8nRs 0.02258570 -fiat/revs sendtoaddress RDjS3dCiLXAbv59onAu19ho4sb93EGkfoK 0.02267615 -fiat/revs sendtoaddress RSTAcCZBvdSuH2tjBtPazp2VcfLNTEgiZf 0.02280000 -fiat/revs sendtoaddress RErBvveK2wEBR3FiLpePAYvTLUpenYNytc 0.02286000 -fiat/revs sendtoaddress RHtcUpRhf9cdb72ivcfUC8nkS5jBh2i3hw 0.02287147 -fiat/revs sendtoaddress RRJFLpVxGWbZKZduX36FoPaG9fhA5DZsdU 0.02296000 -fiat/revs sendtoaddress RTZ7NtXVkJcTkKYEoJkDVG6TFYTmwkd94Q 0.02297205 -fiat/revs sendtoaddress RHzJq4JfVmaMExViQzMMp9B4rHrptEm9jq 0.02298806 -fiat/revs sendtoaddress RBZRcKWZ4Kq63QbJGSggJwZRn9AWBu8NKA 0.02308590 -fiat/revs sendtoaddress RFCeouDaswMoFhKsmNQ1GeoFdn1QbyAeb1 0.02309330 -fiat/revs sendtoaddress RRk1ewnNgn2CcwHpG8SBL6yo5UMY93vbFf 0.02311585 -fiat/revs sendtoaddress RDe6NL23jsKmoabVyEt9KwZF8CA98Qpn6L 0.02316000 -fiat/revs sendtoaddress RVTagnsvjtXddJekeMem2t6oPQxbETN67s 0.02317061 -fiat/revs sendtoaddress RSD8gSnkw8VteWy3DZf5ayZU51rjGU1Zje 0.02317540 -fiat/revs sendtoaddress R9MJUaoJX1RkZMA8BWPqs6RsC71C8QDtM9 0.02329378 -fiat/revs sendtoaddress RLNSfG6jb76GAv42UjwKYTpULAnHG9t3Mr 0.02331183 -fiat/revs sendtoaddress RStt5rZ2KqTFe8xeZGY8m56wKbY7c28jwv 0.02332000 -fiat/revs sendtoaddress RMcVuQDutW7HZ7x7QDLuRPWhH1hyZKY8XN 0.02332469 -fiat/revs sendtoaddress RBeQkkzJws83sEcn45zcsQeUKSSoHgx94Y 0.02336982 -fiat/revs sendtoaddress RTNTTkApuejDodnYcesexFxUd5QwVkDKcB 0.02340000 -fiat/revs sendtoaddress RRfy6ZyFotdfjcpwNjC78xHNn1qJ4vX4z6 0.02350976 -fiat/revs sendtoaddress RYGvZRd1Kmw44wGoPgAg39ivWKHyXPgX7y 0.02357573 -fiat/revs sendtoaddress RSz9Uy9YmCcUn84X6kCTNhrmzDrEMTgq9h 0.02363489 -fiat/revs sendtoaddress bYdgWoKBAfas8NqHtSa1A61qwKiE6s5UD2 0.02385664 -fiat/revs sendtoaddress RQCECUonAbsx5AuiveUuocYQd6QgP3YLJb 0.02387010 -fiat/revs sendtoaddress RNpcnfixySLVhKZSsvf64KsLFRbj59zTij 0.02395000 -fiat/revs sendtoaddress RM3K1nFzWrdvVBKPqRGryqqa9qEg52VyBF 0.02402255 -fiat/revs sendtoaddress RMSXKB7p3jKYCmsv96pQxSPR2L4LUALL2b 0.02403896 -fiat/revs sendtoaddress RL5QD9nFw5MAes1MfHuR2XBWkYktNkXQ7X 0.02410000 -fiat/revs sendtoaddress RDDppWhBd8w1sBnJniJpwV1ginqzbHzYDN 0.02416000 -fiat/revs sendtoaddress RUitX6YeDRp4KyuuBKBzVPd2JbEEMG6LKY 0.02429506 -fiat/revs sendtoaddress RRjbUoxKPDLgxtg8WKJRKFGqXX75gdZPtQ 0.02433655 -fiat/revs sendtoaddress RVbbL3Pgf6caycRkPf7gkRas3NhEeMSkXb 0.02439003 -fiat/revs sendtoaddress RWD2jNA9sesed8XmTo57QjWkFVRGgqCXMk 0.02459302 -fiat/revs sendtoaddress RRrTT2a5w6ED8udXRjXpWQijmu1iGraZRk 0.02459909 -fiat/revs sendtoaddress RS4rq656k63sZXEMD5eJ8nVN2Z92zjPdEB 0.02463426 -fiat/revs sendtoaddress RAXKXkNTs5KcLNdas65ws3KUQztsHtz54Y 0.02464938 -fiat/revs sendtoaddress RXegAm7cvAJSyZM3DbCZaHEpER56s974Wt 0.02466873 -fiat/revs sendtoaddress RKqf1D759nVZBS6PjAdqhD8qerPhgXmo43 0.02470527 -fiat/revs sendtoaddress RSH9PkuTc9fLjPERnxeuJhLTxKV1FHpCeJ 0.02473016 -fiat/revs sendtoaddress RNi64ue51euAakEUPobo4YjqMHhfPmGsyN 0.02484169 -fiat/revs sendtoaddress RT5LhaimpvbmpqX8wZ7F3RdwdVSzfqaVWc 0.02495724 -fiat/revs sendtoaddress RNGQngvMSHk5hosnQkduvnNyotApyRrWqz 0.02499348 -fiat/revs sendtoaddress RW1NKaJg5VSG838wLCqn3HqhGBYGonM9AF 0.02509237 -fiat/revs sendtoaddress RMY7hKHaMWZkZFnrf1wxS9uzVpiyMEHqZP 0.02523498 -fiat/revs sendtoaddress R9zu3pnhutez4wk9Ti3EMdiGNGiRR8zSPn 0.02524000 -fiat/revs sendtoaddress RF5bmKJmssaWfMVvstk6KJrk2CpBjQeW28 0.02526414 -fiat/revs sendtoaddress RThYtM2C6CpiBWczHtaeQf5JsLLp4cJdZk 0.02534586 -fiat/revs sendtoaddress RDW2Cf4qtuyPbBBMi3AcRHSwGKFpKYuwAm 0.02540000 -fiat/revs sendtoaddress RBpK7cr3uWfqVhGoz8Jah1kTNFTYd54ujU 0.02545562 -fiat/revs sendtoaddress REMUDE4RxmiUJu6UJEZjSs4qgymAWFDV4R 0.02550500 -fiat/revs sendtoaddress RL9vfBpquo8V1LcN4YhgjvHYfNvHPJVCEK 0.02552476 -fiat/revs sendtoaddress REaSpNWNXuVC6WvecUo3haxE7qz7Upsuyt 0.02558815 -fiat/revs sendtoaddress RBSNS5jacJZ6HCmF8szM9yTArTL41q6KV9 0.02564687 -fiat/revs sendtoaddress RE56k9SCttyvxD192snm4L39kurneKS28i 0.02567821 -fiat/revs sendtoaddress RRaVuy9ng5UBFm5fCJ91kjjTmyAEnLGj6z 0.02568000 -fiat/revs sendtoaddress RAz1y2kVPtqX6GVw5fhxSJQFoPh2CRBnqq 0.02571844 -fiat/revs sendtoaddress RMfzNZRHvkmHy8CbmWPCT2MA1D1gGtS4WA 0.02601943 -fiat/revs sendtoaddress RStfQgvtCp5GjktuB4GdeEFD2kLxwMA6mF 0.02616000 -fiat/revs sendtoaddress RRknGm6HoqffLiKHisJ55aAodcqGYaE4QJ 0.02623765 -fiat/revs sendtoaddress RFHXhX5hdYXV4JpK6FspLTKkhC7poUuT8Q 0.02626392 -fiat/revs sendtoaddress RDcgPgpu69QsW4T6A6YSgXnVDbwV1aZZjs 0.02631907 -fiat/revs sendtoaddress RQzd5Q8JjNWEUhKtM1UEBCHthzLWgFqveJ 0.02638875 -fiat/revs sendtoaddress RELcDMWgXfaerbJDLa6iwvdzGsNe39AuDD 0.02643639 -fiat/revs sendtoaddress RQKNoMkqjeoZisT2LmgStkBRGLQ4n1XwVP 0.02658000 -fiat/revs sendtoaddress REb9VZA4zsCjgr13NMzYzsCMcRCCXCQWDg 0.02664000 -fiat/revs sendtoaddress RMdecccJjcF1N7DfcitBdckmCJscFdz7R3 0.02666326 -fiat/revs sendtoaddress RLz1D1t6smam3Z7o9Ffaf6TKLTVgXeCqS6 0.02668865 -fiat/revs sendtoaddress RAqKqWs39xC4PYAi1H5njdY7mzGPaP4Vt9 0.02705979 -fiat/revs sendtoaddress RUL1dMRBAL1M7UAwrcicdRKFWoafgMjorq 0.02711567 -fiat/revs sendtoaddress RY5cRQHLvT6PtH7Y6NwNQdk4gen4JG9BbC 0.02713002 -fiat/revs sendtoaddress RLKdyc4KfZZEDY868Q3zwT1ZqsNmQCwAR5 0.02719232 -fiat/revs sendtoaddress RJR6XUrF4TdbVzJSZfyRFtZDusDY1f2wX6 0.02719602 -fiat/revs sendtoaddress RDJU2uwiMwJEEnZ1Cd5XfhErGRwaJUySWq 0.02725814 -fiat/revs sendtoaddress bZXU3b6HGr8yu4mW9o6xGmDWcR2PSKL3j6 0.02737871 -fiat/revs sendtoaddress RXDY7qGsCFFnTqVSvtUsmcorTZ4LAnefPN 0.02738707 -fiat/revs sendtoaddress RLDQWkgYzfj7gTQhsU83PiCYez9ZxnMT4j 0.02743404 -fiat/revs sendtoaddress RLtoqyozwjq5MNrGAViT6uykvQU2dmDj4c 0.02746000 -fiat/revs sendtoaddress R9mwFQGStw6Nw5UihpkigpWZFjRjGpHwP9 0.02747376 -fiat/revs sendtoaddress RYFcGGiJdrpywdatakwfYwgy9U26zLT6Cg 0.02756641 -fiat/revs sendtoaddress RTTBeYBx6zTu61xMRxT1q91m3F3BnKBfcR 0.02763100 -fiat/revs sendtoaddress RGgLyDfzizqyXDhc9oSECzvztpbd1S9DQK 0.02770000 -fiat/revs sendtoaddress RRb4zBFx8qyMJAXsTuJCW4vFEn8HkejBum 0.02778000 -fiat/revs sendtoaddress RB6U5WFLFEsc44qq61Rgd3qsbYRtpLhXQe 0.02785689 -fiat/revs sendtoaddress RBSR6mbcCwvJVNyKEgk5X2Qn4g64Y8KdVm 0.02787806 -fiat/revs sendtoaddress REwBG5HFscK2ebZ8nXjVUpL66fwTazCwKa 0.02787821 -fiat/revs sendtoaddress RBSYjTiXCmUuBetToRVUbUEr4NPgL6A8vd 0.02797716 -fiat/revs sendtoaddress RPBUWPQSdwiXFetbJxmEYUmdmu7hGcj67w 0.02799752 -fiat/revs sendtoaddress RDhpgRmtzGgxu2uZgWaMVtzvGB9zFUW265 0.02804690 -fiat/revs sendtoaddress RUNYbFUWgcrNJAZAS8WBVp7Ecq5Tss1QaF 0.02832127 -fiat/revs sendtoaddress RUSqFdHqNfY9rKJSFnufF6wDxJvz1Hwii4 0.02832992 -fiat/revs sendtoaddress RKfnm1vrNHvNmtisvoHXMuuoRGWx8q8br1 0.02834764 -fiat/revs sendtoaddress RW6xzrxQKfNjftoCsKASv87uzzvQ2hsGSH 0.02841704 -fiat/revs sendtoaddress RWaf48CLzmFk9qTQz8w2fV3yQZkGEAqz5x 0.02841733 -fiat/revs sendtoaddress RL2xfRe32mjjUKwBx2fwJgXsnVWeq4r1da 0.02846683 -fiat/revs sendtoaddress bVhcAoHRKY4YTLgE8Ht5JTufuKHT585vhe 0.02855475 -fiat/revs sendtoaddress RSG8uW57Q16eXaeXveqXYjvVvA4m7VFpfx 0.02858000 -fiat/revs sendtoaddress RSQ5EzE9b8T681cDhpFsjmX3sfPazbES3N 0.02868924 -fiat/revs sendtoaddress RKXKhMQRaQ4EzYQnZjdzs5km5N6gaaDiKi 0.02889270 -fiat/revs sendtoaddress RD9WTQAEdsmmp9ddhMEWHQBa8SdSvHMcHA 0.02893318 -fiat/revs sendtoaddress RGF2JnWtwjpyWu7gefsmQZRzKm8VfuhA2a 0.02910000 -fiat/revs sendtoaddress RSogfvhruNThJB5YLkGMvZV2vw1BMar6sm 0.02912000 -fiat/revs sendtoaddress R9M6q1BWPhZd8cJ5446PJkXErQ58Zj19Qy 0.02921863 -fiat/revs sendtoaddress RAvbyhkRbknQejthfGjRpUX5ZuBKA16Rpt 0.02924703 -fiat/revs sendtoaddress RSh1ejwmshc2CKUSNo81vJWrkLYX6EowdT 0.02934834 -fiat/revs sendtoaddress RSQwusDgRpaLY24AwqW2x2Q8irjeJNC2ru 0.02946931 -fiat/revs sendtoaddress RSvnToppwcGkM54ii52aqyxvJerkeE5HeW 0.02967394 -fiat/revs sendtoaddress R9vCgKMFDcsRe4o4pMBdzqy9d9WrzXdsbd 0.02969947 -fiat/revs sendtoaddress RAUAkLZtnSB79rpCk5dFgL7iaGX52GwZ1g 0.02974683 -fiat/revs sendtoaddress RTVvbuYYtr7h46PydGrf9jnd8pv8h378a1 0.02976000 -fiat/revs sendtoaddress RFopKvnbnuLi2cb5jJfvEzbRybffKGTrHm 0.02983100 -fiat/revs sendtoaddress RDvWrbocwkrSaEteNFXLaPNqfDVUqfZx5Y 0.02985095 -fiat/revs sendtoaddress RNCF4rb9pQr7WNNkKAuZus6THHv7EVYeq3 0.02988827 -fiat/revs sendtoaddress RTRjdkWGBE6sRLspQ9drhq2cSyXxwhcYVn 0.03000373 -fiat/revs sendtoaddress RAGdqZMufswqs1dHfb5BS5cbXZg9jDY9pa 0.03007652 -fiat/revs sendtoaddress RQtZLiGY7xc6Ltc2VaCDyqQfYdXDJVZ289 0.03023399 -fiat/revs sendtoaddress RXtPZTUKBvpjADwpSX7s1iCXWpZNPPTsqn 0.03023689 -fiat/revs sendtoaddress RXcQC3j2hAKZWvCGoyxjcywdDi9FNg1zdA 0.03026327 -fiat/revs sendtoaddress RXqcZcGHcgWnw3cD4EcX5X3xdYkQQu4yKw 0.03041960 -fiat/revs sendtoaddress RXPc56yKBShvFvidYvk9m7niPQ8esUx3Fk 0.03046254 -fiat/revs sendtoaddress RBzTvcRsZnmCGktVFWQkpu6i1PWJo6omtj 0.03064000 -fiat/revs sendtoaddress RBYAaWxvZ3KQ5HGinAaPuX7KHn4RW8Rk8u 0.03065032 -fiat/revs sendtoaddress RL9w7m6A9CLNoGVmXKRbnKCiFtz6xWuQjs 0.03069728 -fiat/revs sendtoaddress RDxAPsSzAaXsttmMeL9HRCoWJHdYHcGvQF 0.03071677 -fiat/revs sendtoaddress RFACL3fujCibuNfNaAgYM6PcvNwzG7exTd 0.03074000 -fiat/revs sendtoaddress RCeAmdBPyc6BQhYetUXVMmdzGQ8d1UvrVi 0.03078374 -fiat/revs sendtoaddress RGMjjheXCEaB1C4RAZ3jRicuM37W8LUn3W 0.03085167 -fiat/revs sendtoaddress RNNnn9dnhfKGQdNnQLy3iUrgXDLZvHxZNP 0.03094000 -fiat/revs sendtoaddress RNBsv9VCdxe7rNA2ENBb6J9gHZowhjDKK7 0.03107365 -fiat/revs sendtoaddress RKJgCXNR3dQxAqqxZfq3uDpKiKmz9WiE34 0.03114471 -fiat/revs sendtoaddress R9uqU4KVuLwkPPcVmFNYiuACJSJU9qtCtF 0.03114738 -fiat/revs sendtoaddress RXh6GKQu189NjChRL2gASHLKNStXUi1KPo 0.03118074 -fiat/revs sendtoaddress RCM65JnkTbQRS5HrEFZ3qQ5qPVPEFQeSg4 0.03126470 -fiat/revs sendtoaddress RE3QeFCFi53aBS8EeKiBSrqcpLdJsn9gsz 0.03127000 -fiat/revs sendtoaddress RDErhmQ3TqN9iHNXfE5fdi7jAdvgP5Fxwu 0.03128270 -fiat/revs sendtoaddress RQq5Dzhe6Fsvz9WaW5eT4gYYK8z3jZeFLx 0.03129333 -fiat/revs sendtoaddress RXparYPiB8ZbtcAvsnG45844nBz9ZsRAeA 0.03133274 -fiat/revs sendtoaddress RSGuigDKyAgiYZXcSGCGDug3n4vnPR1Ahe 0.03137546 -fiat/revs sendtoaddress RCALAcZSX9mQdn8oz3GTQt8tqRswZ8g1Lv 0.03149749 -fiat/revs sendtoaddress RCGvV9GoR9EGbEjg6uh6kE8yP85jVzv8ej 0.03175191 -fiat/revs sendtoaddress RMtkykzKuKiP4PNjgqKH6FrcSJm4Y6eA8n 0.03175485 -fiat/revs sendtoaddress RLoBpwi5WBc6XT49N9javwSxhqE7K5PXot 0.03185621 -fiat/revs sendtoaddress RLXCBHFF9MuTXHFHvKCQZFp4Uf8T8vFHLs 0.03186350 -fiat/revs sendtoaddress RMcw6rTo844mMVBC5cqhXYg5Q7o5XV2iKc 0.03189140 -fiat/revs sendtoaddress RUMoQeu3tGvRTSutn7YBzYYoXFoUW4GRhH 0.03192017 -fiat/revs sendtoaddress RQwahYgZGY3d7i3KoB3P19HTFtqnkdH2yt 0.03192980 -fiat/revs sendtoaddress RAmXHPXumvQe7ueH6CoJBF9zb6pbpnrTdb 0.03205566 -fiat/revs sendtoaddress RXPL2D6jViTt5Uwwu355P8Tni3rJvAacXX 0.03207914 -fiat/revs sendtoaddress RMJtVkeoAvLqH5cqqjwa38UHzLNNX5B7fP 0.03210955 -fiat/revs sendtoaddress RCCzbQJejwUdVUAVtieAKh7G3xCoV4jadv 0.03212000 -fiat/revs sendtoaddress RBVWhaGVhaZdBVMw3YdVqoyY7ksehWWRLr 0.03212660 -fiat/revs sendtoaddress RPPo9CWEt7MD3kGszA9S3zx3P1oAhFXG9E 0.03213790 -fiat/revs sendtoaddress RNoW2TiyxRiuZbxHabJz8uzVQcjguE27nf 0.03215858 -fiat/revs sendtoaddress RFvSfWMdx1HuL8w1bMR4aj1h9m2dGdaznn 0.03247262 -fiat/revs sendtoaddress RXjhVKCbypGxaPfUKWrettoissUWwNRAD9 0.03265814 -fiat/revs sendtoaddress R9mwVL7EYvBQWYPGD3nJxppqsMiKZWeUbs 0.03277666 -fiat/revs sendtoaddress RLWjPZWurwr6UuGbdvfushjVArvytpGXUA 0.03278213 -fiat/revs sendtoaddress RAw3pS9AkD8gnbMuYxLjwedUEmqqohW7by 0.03280000 -fiat/revs sendtoaddress RGU8fuYtMBgbqWpc4eeiXwGoQj35jaLuiD 0.03293370 -fiat/revs sendtoaddress RXL2z79Vp5BCKW94QNYwCNoYTaboJqqzwz 0.03300622 -fiat/revs sendtoaddress RW2b4XSAp1w9ggtNLueUNLWbbVKkTc5zjx 0.03307919 -fiat/revs sendtoaddress RSqBrqpwMb3TnpaXxDjZGhYjYkvh4ck33p 0.03312000 -fiat/revs sendtoaddress RSiyZVWazyjD7WMjG1qbvijJnUE2mLPZWb 0.03322371 -fiat/revs sendtoaddress RMVMzFBRMyJGZHiTDNkuo4XVnVdFVNGX2K 0.03335199 -fiat/revs sendtoaddress RLWNCVA1cnWREDM9uiVhEufJYD4rzQRXqY 0.03342826 -fiat/revs sendtoaddress RVEqdwEGG68D148ZVd5htxDwALNT6rajru 0.03352241 -fiat/revs sendtoaddress RToqYpHAbTtJEn87or36f7DpYZWNRDmP8R 0.03353895 -fiat/revs sendtoaddress RAWMbuMZp2jXULrE81sGCFU1KMWAKPtxjB 0.03370000 -fiat/revs sendtoaddress RK1RErF7Wd6BkC2ASAudCqNKXqComWGjYb 0.03374557 -fiat/revs sendtoaddress RQCy2i5kLtKTN8LQ9n6rXHgEwexFQG4qx6 0.03392471 -fiat/revs sendtoaddress RKZiVs3vDSCGdeAtCWjRS5kv6uS5tc5nyJ 0.03395000 -fiat/revs sendtoaddress RUwpZ54RdeNZ8VxGXdunGm48FVsia78ryE 0.03409424 -fiat/revs sendtoaddress RFgYCpVTSVoYPjaobspi2fqUs7p52gaaTe 0.03412173 -fiat/revs sendtoaddress RS7Eiya9XBh7yaZYKk8GBeDhUhoA6j9ws2 0.03416662 -fiat/revs sendtoaddress RBfUYEynTX49GXyjuWozQ48trPoQfzzNKR 0.03423000 -fiat/revs sendtoaddress RU5khXAh8iSnpJnDoDazmWwx1qtUAtVC3g 0.03438526 -fiat/revs sendtoaddress RMKRUGY4wEPMRUa7nMmpFzqS1CKFokaGYz 0.03445999 -fiat/revs sendtoaddress RU7b6evpnuAtLV6Lz1kVbcBazdzzxbFanY 0.03451531 -fiat/revs sendtoaddress RTGSVMoGakX3GRyHBw1Cbsm3c4eSem4889 0.03479905 -fiat/revs sendtoaddress RNCGGQhtjHzJ8zVzYTSNdMyAXZ5bRYLx32 0.03498647 -fiat/revs sendtoaddress REcsb3MYzgjvENTuPfr4grHhv2DPwyHebY 0.03502073 -fiat/revs sendtoaddress RYDxgenoMipmHzFRFekaniPPEmTr3R2G3p 0.03508000 -fiat/revs sendtoaddress RB8cp2joZL9Bhx5XiGyZVBEKsF8sf8gj7V 0.03508116 -fiat/revs sendtoaddress RXGhLxgcq3nYjmaRPwQ1TyaNfBiPCvZpKY 0.03524982 -fiat/revs sendtoaddress RGkvRhDzF5vb5s3joCXk7zr2X9hXEhLvFV 0.03536124 -fiat/revs sendtoaddress RTLVSTDRiwsmcx8vRg9RBZzhECnXxGzrE7 0.03570000 -fiat/revs sendtoaddress RJhvPpD4DQpyh1p4Qjkumw87ER5skHFtsT 0.03589236 -fiat/revs sendtoaddress RSFPtCaag8xeqrJqygFoSrfoeSyZWb9Hss 0.03601263 -fiat/revs sendtoaddress RTnGit4LYxKys7KnVGDhnKkDa5GWjbUptE 0.03609833 -fiat/revs sendtoaddress RAx5wRhYd8XLj49x1d99pGFQgX1m7DpaUJ 0.03617968 -fiat/revs sendtoaddress RL6dpqUjyGC7WB5Hq8PjByFAJdpFaTRnBH 0.03630184 -fiat/revs sendtoaddress RKH9sqCWRwUpqESq5KEDjeJEuDZkipr2kK 0.03649120 -fiat/revs sendtoaddress RHG5yisFtD669dH81Y67QyGgjviMTiYkv4 0.03654914 -fiat/revs sendtoaddress RHWXmFcwRSx2K4ApcCbdokSJ5VCW4fAuzj 0.03655449 -fiat/revs sendtoaddress RDPcR2fn4EjF63zEqdHng4jsiZGiGSYhhQ 0.03667646 -fiat/revs sendtoaddress RTk4KmjQ1kSeQohuR5d4BcXz3TmtRteDwe 0.03668701 -fiat/revs sendtoaddress RAsGkPWgTBvP7eMdUPehJ17dpS9SaK7T1R 0.03669399 -fiat/revs sendtoaddress RCyEF2aCe8ecLfbfDzQfzVX8a4KY3N4ty7 0.03678000 -fiat/revs sendtoaddress RUjuztUqiDnEeXwEJPSRwHk2pe8zYeK14P 0.03679149 -fiat/revs sendtoaddress RWfA8cPCXDSeAW52NZuiCULpwXU2XmUivk 0.03685730 -fiat/revs sendtoaddress RE8fXR1rbE91kG4bDfDZJae7snj9qg6h7W 0.03691051 -fiat/revs sendtoaddress R9gfCPNhSAnFBGSydx6wsUPc7DH6roeScQ 0.03695301 -fiat/revs sendtoaddress RQX5DUNbwDvcAHnW4FaVvLiKH6TBKiUrLu 0.03710000 -fiat/revs sendtoaddress RBWif6ZM7BeXu3kVtSjCKVffuKER4aXdYb 0.03714911 -fiat/revs sendtoaddress RASSRPHAqAmSoEjMYkH9CB8sBXuJwZGEbW 0.03724400 -fiat/revs sendtoaddress REfwgLFVHauWPQbX88yYhsmBjT2mmij1XY 0.03736062 -fiat/revs sendtoaddress RXaLD8L6WF2o7yo9daT1yCqwrSPR8L9vhc 0.03738333 -fiat/revs sendtoaddress RQVsgWbnxmWWua4DigMxezqcBweW57jKwB 0.03746461 -fiat/revs sendtoaddress RPqSnuht372kUNZunyqgQcRohb7Fe3EJxA 0.03750475 -fiat/revs sendtoaddress REpLfkSN8DaeWjWvdK9HM6YNa3ZptM3MLd 0.03760441 -fiat/revs sendtoaddress bLBAcTwvTa2M1M78FVK19sXWSRF6zh5Vht 0.03776246 -fiat/revs sendtoaddress RUMGsihg4MfmNy4L9ztyYQTFDjLQUCBGUx 0.03786000 -fiat/revs sendtoaddress RHdgmPwpPiyv2pKxvUpfm1e3DJXoTpjaGS 0.03792866 -fiat/revs sendtoaddress RJG6omqURY2NKYhdAyTFMzEtPfTAvEf54i 0.03794090 -fiat/revs sendtoaddress RJgi8kHzWKsPNciVEoBFCMGMV2knRpCQoY 0.03810123 -fiat/revs sendtoaddress RVsAestjmHkEcVyGz8SmtvrLUVG2dkfucq 0.03812000 -fiat/revs sendtoaddress REdUCa28pM8mb4r8kBwrLbWNefg61D4cdF 0.03827153 -fiat/revs sendtoaddress RQNwFKhd27CDUGNm8sDENPrDhNV9CjPhBu 0.03831889 -fiat/revs sendtoaddress RV35qwHnyRSVASK5VeHbz9Vz12XCaSQxSM 0.03847164 -fiat/revs sendtoaddress RHQKCT26bwsW5J7utnQJSejwPpoKi5KTtb 0.03849947 -fiat/revs sendtoaddress RXYfSggBp8PYSCeHNRtUXvMM6i8tPTKZic 0.03858720 -fiat/revs sendtoaddress RGa21g9CUQ5YELJQDbyEXhBYkUkoVqnmnK 0.03878651 -fiat/revs sendtoaddress RHKf1DgaTBznBzRQoXUK8yPBPjKJZnArj1 0.03887876 -fiat/revs sendtoaddress RAFUSwXpQFNAMYCbbFQiWTyLhZcEAzMxM4 0.03896973 -fiat/revs sendtoaddress RJGJETMA3gh4SBRid3jFsNzzhjcWLw6tsj 0.03917157 -fiat/revs sendtoaddress RUM6Vgtze4MzbowmyvbvWDrmMv5RJWEoj1 0.03958620 -fiat/revs sendtoaddress RWbJVFEjWEWmb91uvjJvxFs5urrQE9rLWc 0.03964259 -fiat/revs sendtoaddress RShiFppmSXUWz53fj7j2op3d8AXzzwMxjn 0.03968159 -fiat/revs sendtoaddress RJncdK2DHbgqCJdtMeXCcdE5jBDEz64er4 0.03975755 -fiat/revs sendtoaddress RNzU4zJXs7yrzw4txSTPBHi1WD2Cpk41yY 0.03976000 -fiat/revs sendtoaddress R9gnTq49vKrrH7wMQ4Yo6pb7bn6YJGTLdF 0.03991044 -fiat/revs sendtoaddress RR5CTdSyyMJLiXpP7rjCgisbTDFufN4faL 0.04006828 -fiat/revs sendtoaddress RE3yAwDSGEtEaK4GfLUPFuc2nCqkETV82p 0.04012000 -fiat/revs sendtoaddress RHmKQDR96HpwnJLdfVDzoZkBJK28tHzAQb 0.04017212 -fiat/revs sendtoaddress RWmewNoV34yEinrMRRuNZajzYNA63YodGG 0.04029107 -fiat/revs sendtoaddress RCS9vyviAf34h8gZ31pH4x4basNKWpKrrv 0.04036117 -fiat/revs sendtoaddress RQL5DWHqmy57jyhc7yMCX4bNmHGJ1kFxoS 0.04037523 -fiat/revs sendtoaddress RBZmGWTrAgotGYkzeML3HHvH15DujG14LJ 0.04052199 -fiat/revs sendtoaddress RDvyEa3DFecb4aVZEafs4WKGscKmAgg5zW 0.04052551 -fiat/revs sendtoaddress RAgtDs9pVd8ScDGiQpRzLhXZBjqh9TsTMX 0.04089724 -fiat/revs sendtoaddress RVY9Aj48jiXV8CNmxRo55RXw81FdaLBZb8 0.04089835 -fiat/revs sendtoaddress RTRhWF6myaiWN7AkaFcJccbFzmhhw6sbau 0.04099166 -fiat/revs sendtoaddress RPVEtwCC4pfRrAUd525DntVz132fvDDgCX 0.04113233 -fiat/revs sendtoaddress RHqeN1LJBm1Qb8wV3b31KNyetnGqK72TYD 0.04115050 -fiat/revs sendtoaddress RKMaJHAaKn2pCA8dTFwci3wnGs5x5VSKLp 0.04124775 -fiat/revs sendtoaddress RK2taATajhKxSNuYaaLv9f7QoFomRBQcXW 0.04134000 -fiat/revs sendtoaddress RR39wWWxkvDfNRXwcMqrsnGj6EP55HLzoN 0.04141640 -fiat/revs sendtoaddress RS8j1LiYnKL1dMfYoNwpKSokDebycgEagf 0.04144046 -fiat/revs sendtoaddress RT3chC712aBXtTU5Bc77DtcoG3vy2sWpuU 0.04152761 -fiat/revs sendtoaddress RXdYAPTZegXLs5KBwC81NaohLjGY2LgUCm 0.04195385 -fiat/revs sendtoaddress RVvPLWH6P2U9kLKpAQ1n16cVnpS5xjFM4U 0.04197737 -fiat/revs sendtoaddress bGAc4q6wFcBTytJrABfcFu7iSneaekUEKe 0.04202324 -fiat/revs sendtoaddress RNs3Xpj4NbUmnW3KVutks6yPRQu4232g2x 0.04214280 -fiat/revs sendtoaddress RXLwN1ChLxaQas4vqu4GckwygonL3pVDu6 0.04223532 -fiat/revs sendtoaddress R9UFzYditzurVfDQ2xqJji7VprsrRoqLwe 0.04228166 -fiat/revs sendtoaddress RNScHNe38YPNDcnaLMW6B6DBamTSYNP9qe 0.04234246 -fiat/revs sendtoaddress RQsN4gn6eXAiaKecJRDWytxMzgQugPz7UV 0.04270952 -fiat/revs sendtoaddress RFBLbUpRCMhymco5VAxhxh8224Xzmgih2h 0.04284708 -fiat/revs sendtoaddress RBHj84e2fmnJvKSRr6fDNTLUXs4E2KihtZ 0.04286821 -fiat/revs sendtoaddress RQ49WRogA5rDQYuL2wV75vRZQGoj5F68HP 0.04305188 -fiat/revs sendtoaddress RDSapMSwrG7PuBe6jxC4seVSWSmWXMrVbk 0.04307601 -fiat/revs sendtoaddress RPY9PKqyvqw15jnT9sk9B3EyBwPcpit2k3 0.04314500 -fiat/revs sendtoaddress RNos3TfAQB4oCfQc4HqgmThVVc8DqAnLFw 0.04372300 -fiat/revs sendtoaddress RDuCc4ZWX7vJ4RfsHZ7eriKzudZJhF3Mf5 0.04382000 -fiat/revs sendtoaddress RGNWeVeMKkacNJDVgCDHE4M6jM5V4YAYF7 0.04390557 -fiat/revs sendtoaddress RUgGhNt9c2aMAH4kGZcwCmaqprQ7Kxkttn 0.04390661 -fiat/revs sendtoaddress RGdFzPjYzt2dvGyykhhToXTgpVdB6QSrMa 0.04413702 -fiat/revs sendtoaddress RRAGkUQSkXR4PgaQGdRTs2eBLXPVsMwBkr 0.04442633 -fiat/revs sendtoaddress RStexzPLWXwdtxiGtrWv2oj7guTUbiCVTV 0.04450096 -fiat/revs sendtoaddress RH5QSsmUyo59UCe3tLCH7KCiePcucTKVtz 0.04451539 -fiat/revs sendtoaddress RJi5g76LSPPTzXEBAuayMvvqCL8F8zSiwm 0.04474381 -fiat/revs sendtoaddress RSRijK7js1UhNkXk8hfuCUDHxgcHQW9M2W 0.04474904 -fiat/revs sendtoaddress RNBqAkHvioxSd15rmTaZffx6HhqvYpUk7Q 0.04485297 -fiat/revs sendtoaddress RNQqDYpB4NhUmxMzfcfZBT3cgd3HtjY2Wy 0.04490043 -fiat/revs sendtoaddress RBQ1NPdeSEBLRUyTFWYwkBF1VNWXSooSCb 0.04501096 -fiat/revs sendtoaddress RQk1UxeX7PkTXHJsagYy2rPdJ7qK7NMdgS 0.04518187 -fiat/revs sendtoaddress RVfxLfS5opnvZb7VvBwysx8zA2oERwFJjC 0.04521649 -fiat/revs sendtoaddress RCH9cdMXVDwE28Un2Sez4rbnRycKiRe4dp 0.04553422 -fiat/revs sendtoaddress RLNUkVptBxWDB4JfGgZmc24reNHBrYjkFb 0.04567828 -fiat/revs sendtoaddress RB2C9taMpbmwpCxFKhuoyxURYS2S9PSnyY 0.04576940 -fiat/revs sendtoaddress RF1YNzpmXAdvy4j7PGN12gfzQmfHHQZXY8 0.04636294 -fiat/revs sendtoaddress RXAZTZXWPQ9hB1EXD7gThUEfCufgNCTEjC 0.04651819 -fiat/revs sendtoaddress RWtsLPrXbSAVktx6UVjRYShJorWPnyPyn8 0.04662930 -fiat/revs sendtoaddress RQeiTHJEPrFwg3VYcAPebmef8r7pbWvnBW 0.04689464 -fiat/revs sendtoaddress RHLjR5cdHcXTJNyDnP176pQDmMQjRpMw1u 0.04702944 -fiat/revs sendtoaddress RULxqvVarby1R3NdYTG7wsDwd5JV2ht54o 0.04709257 -fiat/revs sendtoaddress RRLtWp3LkfDeHa5DvUkUWRza77aWabRrPT 0.04729666 -fiat/revs sendtoaddress RL5uK3kcg9gcEmLmWxyTXspYUgWKYMXz6A 0.04766076 -fiat/revs sendtoaddress RKJUQv12U8jLy7gWXaAcpGaV31s6Hk6VJH 0.04778000 -fiat/revs sendtoaddress RRYzhf9JtLaCYPQUqgdTogdbiRj1CsR1Vt 0.04780593 -fiat/revs sendtoaddress RP97LDn9GpagG1vUaDY1NhFjTreotL7Wab 0.04784270 -fiat/revs sendtoaddress RN3xYgVhWCZ5RYWp8K37AKKHMRB3G9gkLD 0.04796232 -fiat/revs sendtoaddress RWwkvLuJu9GEvhc2xVpeoRPgtDb4bbbjkB 0.04799215 -fiat/revs sendtoaddress RSMaY2pHKGHTDSbwU81zupkxbUWzQnm1Zp 0.04806334 -fiat/revs sendtoaddress RP9B7gNk1d7cRrL9SZ9WYxwZjBvAn77L9U 0.04839237 -fiat/revs sendtoaddress RWKxXJsrEZNMwG7mGNEnDsmTGdP5RmAmTQ 0.04844798 -fiat/revs sendtoaddress RVGLwtCQdTz74Tip2YMQiAa6ur2kMZwYEG 0.04853556 -fiat/revs sendtoaddress RV3WtkxuMcAa3ggXgnUUFP3MUUZQdKbCvS 0.04864273 -fiat/revs sendtoaddress RQ9bCkwLQRbdMNTphfrSt7dgPLoW3jkecU 0.04865610 -fiat/revs sendtoaddress RAJ8PrcCtC2pw9kDy9f7JSfavTSBSgWcPq 0.04869686 -fiat/revs sendtoaddress RVoJGn7JQiJzAQiVFj2tHewtBEUmXtUaWB 0.04890400 -fiat/revs sendtoaddress RXNBPSKx3L3UJ86Z66T46howKjLXqmuhd6 0.04907968 -fiat/revs sendtoaddress RF5ERzE77iDJU3zGkRTn9Haq5g7cGvBnfe 0.04940000 -fiat/revs sendtoaddress RUf8PRTmC23G14kMmM6eKVxt5dXGhNfapN 0.04950000 -fiat/revs sendtoaddress RQfPpUCPnE4ab4aiBgX1P8EjJ3K7FMZSCk 0.04953001 -fiat/revs sendtoaddress RB78NfpcokAUQzMfnxbFRH7DeB7F6GHppE 0.04962506 -fiat/revs sendtoaddress RAEjVki4AkErEKoigi8sVB39nmcVdY4kpv 0.04973592 -fiat/revs sendtoaddress RJfhYgmohZbJ1CxG1AKi3kV8GgwJ4nLpDJ 0.04980000 -fiat/revs sendtoaddress bWQfg17qoHDpdt26uvxKVPuYmWoUAgRwqm 0.04985155 -fiat/revs sendtoaddress RNezEiRYttHoEoj1pNFKSpD5jqmgqAdukX 0.05028722 -fiat/revs sendtoaddress RYZHQGuNDzX6iN8VHXs64gLDWoCfQDP2wk 0.05036856 -fiat/revs sendtoaddress R9s79rHLQk72vs5N1CuMe77L1trrQJvySM 0.05039580 -fiat/revs sendtoaddress RVHQTbfwLCaRCRSmqcmfAie2N4EMREumLi 0.05059954 -fiat/revs sendtoaddress RM1NFRmScQgQcRxBEMtsvthpEjYG2Fc4bj 0.05102961 -fiat/revs sendtoaddress RQ5QfEtJdAthUXqaUs23bphhAtp2i2VLnR 0.05107668 -fiat/revs sendtoaddress RTGpErqQDzSH5JsXVtucYRM2pYdWMTT8AW 0.05123167 -fiat/revs sendtoaddress RNPuv5u9WEjvyV7rsJRSa9jNBhNNtXus2b 0.05170105 -fiat/revs sendtoaddress RL9q4vpnbQTVoQwaJTuDqgp9AyEvuX86Dm 0.05185541 -fiat/revs sendtoaddress RDU7yC7H6AM62RLEnPYS7urt64aTfFC7nG 0.05191632 -fiat/revs sendtoaddress RN4ptC2wpuCkzAHPXtRzEvAtahDNTdaVse 0.05270502 -fiat/revs sendtoaddress RKpMfdzmhJYTmGiPqoyqPqASiBmknBZ69Y 0.05278011 -fiat/revs sendtoaddress RDi2tMfiAcNxhaQYxAhky8jxdXGDeSHRuz 0.05298769 -fiat/revs sendtoaddress RHpeidh5ZMAix4ohApBKyTLbqkDMB9hC86 0.05299573 -fiat/revs sendtoaddress RVLcyFqwZGHMh8ieWSVtJMxcHu9J3WhFB3 0.05299733 -fiat/revs sendtoaddress RYPR9667zypZ3gCEEbGSAfUUjPYPsQwm9y 0.05300000 -fiat/revs sendtoaddress RRyigqukBgyzTt3kYVS1yHX8UvSJ6yMvdS 0.05316667 -fiat/revs sendtoaddress RNNN3Y2aWSYDVZ9iW1jK7zRimzmMUvYdjy 0.05317712 -fiat/revs sendtoaddress RGLEJ13JTW4ew4KE876pznPzW5tmxPyhA9 0.05351142 -fiat/revs sendtoaddress RGHnzMoTjGMCyuy8a4ez9XDWFFQWCA24bW 0.05360000 -fiat/revs sendtoaddress RTuukpjLvVtSTQRRAwHuyFy2EQW7e1qR4b 0.05380000 -fiat/revs sendtoaddress RAvnC8RQMTiywxemh6zCQr2m4TktKSzRAV 0.05390150 -fiat/revs sendtoaddress RX5TqaH4d2EMufC5nvmihBaBZ9emYcnmnu 0.05417181 -fiat/revs sendtoaddress R9tnzsbmAKpzF1rke41B2fGjoQww3JKyBA 0.05427051 -fiat/revs sendtoaddress RTQPhFLKTfdTEBTgBbMZNkhCKJ7X779m9o 0.05439861 -fiat/revs sendtoaddress RC73ibywAXVaER6oKXRG1B6kpGzPDQQ8ke 0.05478000 -fiat/revs sendtoaddress RBxuK16mcaVeMK71WZ9kM7fA6fzibBtUk9 0.05488915 -fiat/revs sendtoaddress RG3Xw1tcBxrPXA4S6WEnpAdgF9uXJixXSL 0.05492434 -fiat/revs sendtoaddress RTsmJuQ32TS4FqcpjavoHTaUrhgKj2dcgU 0.05499470 -fiat/revs sendtoaddress RAHVrDBPbVXdjShE9bWXWdn1ASRVuKBiCE 0.05511041 -fiat/revs sendtoaddress RYTBbXYRwGS6Ga2oRYMKPpEUsebtkzXrHP 0.05523999 -fiat/revs sendtoaddress RLwQuGQBNoZMSDquTiUg3DJrqkjjvLdvno 0.05531823 -fiat/revs sendtoaddress RCze7DcJvTfKsk18rTKM17LJgp1RSJNKd5 0.05534635 -fiat/revs sendtoaddress RKPj9mVMZmqRmAyvsVmqZ7A3XnEtix2Vhk 0.05536278 -fiat/revs sendtoaddress RUNgQZ9nmJXQwQPK2ZA2Zao4cpNH4PVDQC 0.05627517 -fiat/revs sendtoaddress R9atEth5jqBhtyXQm4niCLkVSErzE64B6z 0.05628219 -fiat/revs sendtoaddress RDdUUkihKoB3HwYp1Chez624HGZFae8E2a 0.05652308 -fiat/revs sendtoaddress RS1Fe2mJqmJiW82MjYnmoq51ZPuh3oFGKU 0.05673349 -fiat/revs sendtoaddress RGYVD3tSa2uVrzo4EdRfhL9Z6LiGpSNgtn 0.05687816 -fiat/revs sendtoaddress RFhdYumTKKo5UbvPeGHj6soLx42EBd4fSz 0.05700936 -fiat/revs sendtoaddress RVYiAWAYWQ6YkoTQFZRiH9g53qNgXHMCgL 0.05722908 -fiat/revs sendtoaddress RQ5cPydRd7wQmDxc81m5LPsntQ9t3iTWQk 0.05725567 -fiat/revs sendtoaddress RMv66oJHi3epKRkGmZqPMFoqTVmWgMg4rc 0.05748000 -fiat/revs sendtoaddress RXiq1WKnabHq3hLYCeSpkGcrc1c12wYsXn 0.05774744 -fiat/revs sendtoaddress RJusCPMJfStPuypgWZanvXYqQYY6zmqHUL 0.05776292 -fiat/revs sendtoaddress bX9RTdG3VLe64wSGpo8S6kYcTqTxCpcZGD 0.05780528 -fiat/revs sendtoaddress RArnnQzDBK5xfeadZuP6u8KoojWA8dk2Pr 0.05811622 -fiat/revs sendtoaddress RGqwjhYvETqN1eKbqELSWATMcqSVQoszK1 0.05818262 -fiat/revs sendtoaddress RGpfQZxcGxgNypU7fAZEszYHNPg7MkCPQg 0.05839005 -fiat/revs sendtoaddress RLVK4aCUBMNMoK16B2mBYcAF6QT93HdvKL 0.05850500 -fiat/revs sendtoaddress RQrSGqcqcmsoMrUSiQE3amJDUnsnX6dh8R 0.05853586 -fiat/revs sendtoaddress RUC97Xau9F2TvbJvdABwbxC5ub1uSZaeeR 0.05855000 -fiat/revs sendtoaddress RUaoJ2ULN7KderC9eFgqDLmNhTXXgw1ixj 0.05855001 -fiat/revs sendtoaddress RHNKKyXYXBoahR71jsZCk2e48SmSYYZLGx 0.05863914 -fiat/revs sendtoaddress RDgC5gCAx9vhsZkcA4zNWkVyeRoQ5DznAM 0.05864001 -fiat/revs sendtoaddress RA41BgHf15juz9cwXevihE3mQQRk7t3xUU 0.05873940 -fiat/revs sendtoaddress RLKpMHj6J3LqJWCCi9g4mLDhUQEvjXyVQg 0.05913440 -fiat/revs sendtoaddress R9egjeC4zLUPW5ZqwC8PDj5zsx2NvDgC3Z 0.05916627 -fiat/revs sendtoaddress RWQjD1P8Rns2Yf4mmiF5otEEXqXxtFyGqo 0.05958691 -fiat/revs sendtoaddress RUP8pmuAoHRda4zEL9bq3h6LqCZQVbhm4t 0.05977036 -fiat/revs sendtoaddress REwZWPSBHJCMMjqxnayanxsV17wR9ffzeP 0.06016991 -fiat/revs sendtoaddress RQwcnQRR2oeJFUPa49s7mcnupb1iUgejcw 0.06019085 -fiat/revs sendtoaddress RXKBBVRzcLzDmeVi2c2r4nRE3Cvrx3d8Ec 0.06027079 -fiat/revs sendtoaddress RFDaVndrRVdAvdJ7uGgobDYpg5Fx61RKYk 0.06030500 -fiat/revs sendtoaddress RVP3TP1bpJsw2XtEmR8cuaLvDvK5bdTUXz 0.06062000 -fiat/revs sendtoaddress RAqMoKchYE9MwregFqzu1L1qb32duTepUB 0.06067036 -fiat/revs sendtoaddress RQ5N6KbX83SFFWX25UMGEmnzAzpSHfcn6L 0.06073810 -fiat/revs sendtoaddress RHcuGUkDMgKzBGErZ5n5bruA2wQZBC8Ehj 0.06104292 -fiat/revs sendtoaddress REAXJES1qNumphEHXxeHriJjvBgL1PrnVh 0.06146100 -fiat/revs sendtoaddress RJqLtXPWZ4M8mzF3wrZ5jzg51ECbYi4QaR 0.06206689 -fiat/revs sendtoaddress R9dd1v2QCKNECQswzuwTXSmJ9JuJV7wE4P 0.06256589 -fiat/revs sendtoaddress RWbDdh161LJ6dGAdFBpU9dw4AgtMuMj4iZ 0.06274427 -fiat/revs sendtoaddress RNDESr3pqC49UPdwt9oxPa8YDyooo1mLZq 0.06274511 -fiat/revs sendtoaddress R9LJCkaEDpU9BnK8fZAR2djcR2NvUPfr6c 0.06279046 -fiat/revs sendtoaddress RQRLAjXoTw9NRhqLkouzYMbbJ9q9ZFD6JT 0.06304228 -fiat/revs sendtoaddress RSt8Fx12Aa8ttZFCk6djDKqz6TgNzvLg4i 0.06330709 -fiat/revs sendtoaddress RHjFhN8sqXXJHjE71wm9pFoZicoW44sDyj 0.06333254 -fiat/revs sendtoaddress RJHssS66GRR7NkcPr3aLh8ZghthtM1kq29 0.06355007 -fiat/revs sendtoaddress RCNxj4AxYUmJHh9nFxUqrJVr3UQsBi6gbn 0.06366384 -fiat/revs sendtoaddress RFGN9bzif8z3ob5urG7PyexxyLwhRVKyjp 0.06373294 -fiat/revs sendtoaddress RNFPKXDtngghsH9KYeps8rTXJB2vVpfK6Y 0.06376690 -fiat/revs sendtoaddress RLFfb7RXzY4mrMd6RudRJYXBVzsge9kFpZ 0.06390860 -fiat/revs sendtoaddress RGcDVNoLm56eNwY8dqhZQt1ced5AofWs2m 0.06395323 -fiat/revs sendtoaddress RLxa6cHCCDJK7WQ4XvJB7N9TkuC3ME4g9Q 0.06407572 -fiat/revs sendtoaddress RGFJ6sy6Gvey7Pz2GHEXRWSsdTY8kJu65C 0.06408308 -fiat/revs sendtoaddress RAsACgFUezEv3Q6Ez9v45zg28nho2RqvE2 0.06437704 -fiat/revs sendtoaddress RHfzgTXB8AirbnaZmFR5SMYVdYQAP9As3f 0.06447432 -fiat/revs sendtoaddress RLte6F3hK2SD43X573Vmnr99ErBfPsJjML 0.06458043 -fiat/revs sendtoaddress RKahke2wKkv4U7eroocSWEMobQ1uSHnq9x 0.06479421 -fiat/revs sendtoaddress RXowFBGAWnh9HzjGDpuYv21s1JreXJiRNj 0.06493517 -fiat/revs sendtoaddress RRxntKTe6j3QbXvCBVM3HbcUKCWhZkK7SD 0.06536093 -fiat/revs sendtoaddress RHH9BpB2zf4KkVqGnabuSYrdPSm483kAwC 0.06536297 -fiat/revs sendtoaddress RFxygoeBfFWNJh7Kk6bGodrL8UbHvZ9VNY 0.06562775 -fiat/revs sendtoaddress RNxvtXGDPwu6PD1Au7mMEqXK6Un7xq1p47 0.06564361 -fiat/revs sendtoaddress RQ3hbELLj17wGN3pTrNqtRyJJdGVuCdEYm 0.06571901 -fiat/revs sendtoaddress RHjJ4oqTG8X4GRwUaR2w6jXLn1skycL3Ux 0.06583423 -fiat/revs sendtoaddress RUdU5ApjQMRNs8SmM3AJj4pbTv694xEWXs 0.06585388 -fiat/revs sendtoaddress R9vAQ87cUFo77iqqCXkX6ZoJxQsvYUhACi 0.06616000 -fiat/revs sendtoaddress RWLoxsuMBu3hHjDBsHfubGHaNpHbPHF1HX 0.06623089 -fiat/revs sendtoaddress RDdYRRCutAzZEiqaTPqs3QA1QXEoqQi34e 0.06626894 -fiat/revs sendtoaddress RHmFFBWGd72ufszoPhM2oaBXmUymBNAEjX 0.06639441 -fiat/revs sendtoaddress RKxADc8ArZHERrnGY1zt8WUnjgTFZjpbeN 0.06647853 -fiat/revs sendtoaddress RWUJfRePmXZzsU5H5k1iiFT65RJuFts6cQ 0.06677070 -fiat/revs sendtoaddress RJ4FTfqxRFNf2uNicNECMtpSyzsjPh3unN 0.06677284 -fiat/revs sendtoaddress RVRKJb4FxcSBTnq9Ji9gGxjceze5myeTAC 0.06696433 -fiat/revs sendtoaddress RYP618hdy6M9C3wDhcg2LDBVUyPuibqdBT 0.06700855 -fiat/revs sendtoaddress RDQn1CScb7ESkF5RTvGmN5MefiipcUdfMb 0.06700876 -fiat/revs sendtoaddress RA8Ujur4CDWviytysoSwxpjFPT89RDzJd7 0.06704525 -fiat/revs sendtoaddress RCjN12isdWxxJuZN9bymfDEdzchAg8S9hv 0.06705500 -fiat/revs sendtoaddress RNpYvpnsN7rUe2gZPhjZ7WFZGAvtuhKaao 0.06713743 -fiat/revs sendtoaddress RFzkRCRuDqKB8nQB5bmBgsDwCKexZ94FQe 0.06716445 -fiat/revs sendtoaddress RCVxc7SMUyZmEPAEAqK2zyPQdTkUfWxYXb 0.06778006 -fiat/revs sendtoaddress RDTYmu3Yr3CWU2VzDxXKQLeEnKoPmwv54E 0.06783071 -fiat/revs sendtoaddress RNzEoXbQxsJJhAXjQpniPrbDUq3Zt4dabn 0.06819213 -fiat/revs sendtoaddress RAkQqvStt8xoN6zbjMyD6u3EFXbfneGFgN 0.06846214 -fiat/revs sendtoaddress RBEvFqKpTdvSnVqtEFhPheHfPRfT1cg9Do 0.06848000 -fiat/revs sendtoaddress RYUqEGSH15n7m7pYyEwxqPFNwK3ZMhRMpp 0.06857048 -fiat/revs sendtoaddress REx1GJttsdRAcrny5CZScvuN8KNFTyCf91 0.06885886 -fiat/revs sendtoaddress RLqioYmG4QF3RDYzs5W5NEk4fDTu2PCNJk 0.06895833 -fiat/revs sendtoaddress RRmDQBkNHJZD3Fy8VdnD1cVJuV1ryFwQqd 0.06904615 -fiat/revs sendtoaddress RPsCUgTCGdhqnGNMQFkNuXzVBFJfsqoX22 0.06914032 -fiat/revs sendtoaddress RLTaZfvpSsZMiR54fc61AhjGjCZzE3nQXR 0.06925133 -fiat/revs sendtoaddress RF3YTfUWQfTHbyswGvvsNA2pgnEbCtygqP 0.06933000 -fiat/revs sendtoaddress RTq6bMtkB45uCJ9GfGda7Xa6eMzzAndoWd 0.06933859 -fiat/revs sendtoaddress RHC2dPpfnEQ99ASEM2aNHyoVPmUKXNEVtF 0.06947444 -fiat/revs sendtoaddress RCA6JRSJ28xx2pabHwhvVi7qJ6GzH8NV5h 0.06964468 -fiat/revs sendtoaddress RBLxKWjmzBbE57nQWNrHvQVdkm49XXzq7p 0.06968330 -fiat/revs sendtoaddress RB7J6dYUedqqn3Ur88zctH5doGQ7hx1UwF 0.07011639 -fiat/revs sendtoaddress RNTQEMqwHLAqgEC2fhRKaEqagrSH3k9bAU 0.07018738 -fiat/revs sendtoaddress RWpkFm9pfdZzxLTTNDZ9TCYnFDCBdNMcTD 0.07023573 -fiat/revs sendtoaddress RRd78jkos9EirsvjvuyNNKa35FjFFzmpAr 0.07047971 -fiat/revs sendtoaddress REzdMYAQ1fBtdiRHKfLhnjr89p8rri5Me1 0.07053946 -fiat/revs sendtoaddress RTvxxgHFktZzPhXPf5AdybVYLR3D5AHJgw 0.07098295 -fiat/revs sendtoaddress RXz7Prmcgv4UPws6t5xYFuwrS7b2Uchvr4 0.07098401 -fiat/revs sendtoaddress RRj22JuANA1GMXtxjP4nzdcmWycmvMXU1u 0.07106242 -fiat/revs sendtoaddress RWN5kx2u363XGi3SBV7NVaC2Hocf8GiooH 0.07135800 -fiat/revs sendtoaddress RXjJW2b2U4FWogsHMBShYZUZ1vADtLFqwN 0.07137366 -fiat/revs sendtoaddress RXcQVnxY7DHmPTj4oXKbkDpBBpLZLwaHGq 0.07164716 -fiat/revs sendtoaddress RU7Ca2V7oiUbNFu8PTAyjC9vUuyurQzYN6 0.07180501 -fiat/revs sendtoaddress RH9bKyN95NcUqztQUKpmJdCNZ72KoG3ubY 0.07190342 -fiat/revs sendtoaddress RRu2qDGvpY5utKbRS68Rkx7Hq4R3pc34fi 0.07260882 -fiat/revs sendtoaddress RSucSugvaVoXHMihbtD4ivSnRAwPiMuDEH 0.07263974 -fiat/revs sendtoaddress RPsgWXTDgtwJHvgJuNCDSEKsg5C5ZtKJQo 0.07294557 -fiat/revs sendtoaddress RQwuAD5thhvTCg2VTyVn2iDZxL1Ak72Qzr 0.07306414 -fiat/revs sendtoaddress RJeaX36258fEGM8rnJbULKaACkawrCFeJV 0.07315885 -fiat/revs sendtoaddress RTBGmcuevJtqVSpL4ii7FBMsbRcEhvmiRA 0.07319837 -fiat/revs sendtoaddress RWAYVkZvFJXX3emigXkWgZ2j1qbtqZ685j 0.07326111 -fiat/revs sendtoaddress RLqC6t7tqHC7uqW5pnk3aGkDbs6fQnyKtB 0.07354846 -fiat/revs sendtoaddress RLT3YiWcSZ6jxnYiw1PZGvQ4ouhkrp94qh 0.07365325 -fiat/revs sendtoaddress RQgfMQDStU7rRUSPaFytCsfvvmjTH5jopJ 0.07384438 -fiat/revs sendtoaddress RTJYTnvY38qqajJCgQNjQRWRJj8rbToVmF 0.07414000 -fiat/revs sendtoaddress RPNp9rqQQQQHP5TxzMUttjmc3hdvFaXcM5 0.07416926 -fiat/revs sendtoaddress R9a8uEpvWV8k8JMhdoKw4Q8Wt6KEwZaNyD 0.07507147 -fiat/revs sendtoaddress RGekMLPN1LTeE6f4A6Tmj1DYNMMeNJjVa1 0.07513147 -fiat/revs sendtoaddress RGFycRTJGmZkFvBbKUyHq9ru7HkqXF6ifM 0.07521410 -fiat/revs sendtoaddress RCR8gUWCEMFJsbMfkh8VQVZD7v6XoTz86P 0.07521598 -fiat/revs sendtoaddress RA5V6kEDmD7ZEDK3w4dRDMbARseQu7RKML 0.07547950 -fiat/revs sendtoaddress RRHcmSNevNQT48Ab3WkwiFeVkatV5xb3hB 0.07563692 -fiat/revs sendtoaddress RKBr2fhh7dLhnAmk92KUnkFBMUU59zXceR 0.07585065 -fiat/revs sendtoaddress RAZxVrGzu5HxRH4m8xwh79iz7EUjNj82dZ 0.07596558 -fiat/revs sendtoaddress RVFYEP1FJ8agH4z6qnJZpiCuUQmDSuL6se 0.07660024 -fiat/revs sendtoaddress RJCVvYFJFr3v5dVAWKvXdVrhCETki8BCof 0.07663007 -fiat/revs sendtoaddress RJmMc9KeNUmTUkPfcWdYAHQUNe3kR5jKkS 0.07670105 -fiat/revs sendtoaddress RVv7UqwYjC9P4YJBmW3RyHmCUniRWiv3Cn 0.07746830 -fiat/revs sendtoaddress RVbK93aZGzHmLKAPmTb67uU9h3nhGKb3BD 0.07771713 -fiat/revs sendtoaddress RRjV38mis5Fbis6AbGL613X56F4q6r6RwZ 0.07791755 -fiat/revs sendtoaddress RFimpwR2LkMch53fHHsMRqmeaHoDAXdXPW 0.07814108 -fiat/revs sendtoaddress RVGwzGpst2MbHisGDSqtCKq1agq9joHfY9 0.07836237 -fiat/revs sendtoaddress RBawYoCkY7NyBxBL9nofrtCi4XGEpafVNp 0.07848215 -fiat/revs sendtoaddress RE9X9vpLveNqxH3yE72rCPnhQjxfHnE1pv 0.07887789 -fiat/revs sendtoaddress RQuvj5Me7VzA96VaoAGdBzGYnPzj68fejB 0.07921072 -fiat/revs sendtoaddress RCLYU23DVCRo87DQqZLLpDFvx8YucZu5Nu 0.07924454 -fiat/revs sendtoaddress RKnB4gtvxZHoS6MLLGFZnuiJjTGRUuPPzK 0.07925118 -fiat/revs sendtoaddress RHTZwEJyFBDyD7gcc4AF5cgbieQit2FQAw 0.07936583 -fiat/revs sendtoaddress RSrmxzyQeWUVNiMAjbmDvCV5UjVGNz7Q9j 0.07942000 -fiat/revs sendtoaddress RLQibfT4MkpjTXkU2UvwZyavY1bF5rEnGC 0.07950000 -fiat/revs sendtoaddress RFae4K3rGzjudSfq8XaxpaiQppTxTVZTVD 0.07956523 -fiat/revs sendtoaddress RGggxtKcVDkAxbyCPGv8DceQxfgAASCQ94 0.07979124 -fiat/revs sendtoaddress RXRSaEJTPhovho92nT1x4ih5incMR6jvxA 0.07984744 -fiat/revs sendtoaddress RK8rDC2xnoCnaJJ9YNMf39u5VGV3RSsrSv 0.07990000 -fiat/revs sendtoaddress RT859Xxw9uezyDTYFaAiSezVC3vSKzpEMX 0.08000000 -fiat/revs sendtoaddress RTRteadpVzwmjGNHLWbPRVGyzZBYk9Ebog 0.08035816 -fiat/revs sendtoaddress RSVsvtAaVHnxKztKsjUkm5rJhN88CqRM6Z 0.08069884 -fiat/revs sendtoaddress RTcuR17GQ93rjzneWZxoMMHYjL3hTynzAd 0.08072161 -fiat/revs sendtoaddress RPku2oKNr9tYjNyQf3wNXwFmB9hPcY5roU 0.08118640 -fiat/revs sendtoaddress RY7bzUKTPsuVzrRd4W4np6fRWHbmT9FvvD 0.08141491 -fiat/revs sendtoaddress RWxGM6HVMrdjU7RJyTTuRqnGVzQMCKkChn 0.08155734 -fiat/revs sendtoaddress RXkGcA7ENGZRc6qKgHRFb7X2XHhyZW7A5n 0.08171524 -fiat/revs sendtoaddress RLdWoDet29fZHEx1L53iR1KbbpWvVb77FH 0.08203554 -fiat/revs sendtoaddress RXSPW5iZZovrovCQgN58hkr1uqX8bwvCuG 0.08248000 -fiat/revs sendtoaddress REvXdNN7r18v3X9aKZDVioXrSeh6gwuJLs 0.08269429 -fiat/revs sendtoaddress RM3vUz24xYGr6DWUELMHrULc2nvhDnX4YB 0.08303995 -fiat/revs sendtoaddress RB2nPchScGCij1VtrSzcRmiSD2taLV6KqF 0.08319886 -fiat/revs sendtoaddress RJCcB7KUnbvVLtUcAjGfNvkHu42qDPh46b 0.08345907 -fiat/revs sendtoaddress RAXm7ZRQJFfTPnD9gRfGUsJEpvwL4ePdsK 0.08356422 -fiat/revs sendtoaddress RATksy5CdYjoQtco6dyBRU5HrMAJtPxJkq 0.08369368 -fiat/revs sendtoaddress RGAKzQCrU7JNZha7jio3Uok8Zezhyafu8m 0.08400258 -fiat/revs sendtoaddress RMBqGX6wBhVD1S94Ny45CPYsHbh6kXRQfQ 0.08522724 -fiat/revs sendtoaddress RQXZkThGEpytSkrQRxHPWYqSwW1HfsdqWj 0.08646019 -fiat/revs sendtoaddress RULuf39CBpWmkHPSSrr8En5bU6GTHcdHzn 0.08730300 -fiat/revs sendtoaddress RDqXur4WpP7a2aQoaxR5VAZfeZWXwYaJmv 0.08748000 -fiat/revs sendtoaddress RKqP2bHZkTkGu6gLRDvDc7rTHDQPjzPA2R 0.08789070 -fiat/revs sendtoaddress RM94kThuu8iPBfsbis6RcoTCj5U7t2aPmo 0.08795985 -fiat/revs sendtoaddress RMuPCGPtVNZ62M3mKn5WQV1itxvXnPCCaq 0.08818572 -fiat/revs sendtoaddress RFsxCC2d6sajVMMdaSaNHRqz83eYMfDimx 0.08830260 -fiat/revs sendtoaddress RJGDsGKc2humKbZPy9H6Gv5cZbTzDnJh6V 0.08903150 -fiat/revs sendtoaddress RQw8NiaVtXKvu5WEtg89uTAzJWJoea4cAS 0.08911152 -fiat/revs sendtoaddress RKNPWnsfYY98PbWywsjgViwwqcrg3SYfT9 0.08914218 -fiat/revs sendtoaddress RTxjUikvqXok6uoYLPvnQNKjMxzNY4KJzn 0.08961512 -fiat/revs sendtoaddress RE5xcFuu5ZhavEvbLEDAZHBPQWR8Wz1rHX 0.08980000 -fiat/revs sendtoaddress RL1CjJnhJ88wYucWG6k2DPvXhcS9prTMwY 0.08988895 -fiat/revs sendtoaddress RP3Bvfs8ws1SGpJc7APUKaJDERft7sbmwj 0.09000000 -fiat/revs sendtoaddress RLdyvu3zJmj4Q3reuUN2JcVpBugT6Lfq9z 0.09023039 -fiat/revs sendtoaddress RDmcKVvQwbdTYV222AjotFx5kDzn9iTJD4 0.09052962 -fiat/revs sendtoaddress RWmJ9LyeaCyeZarCsCLv7WKhfVBvqzgyEA 0.09122222 -fiat/revs sendtoaddress RVDbTHWcUzXN56F1d4ho2Q6GwpmBFFZhe4 0.09148670 -fiat/revs sendtoaddress RCdabmNLZ3FddCJPcaZ4yPe8XnCVSKMXMs 0.09149827 -fiat/revs sendtoaddress RMSaJPx9ANnGcfxyzw8yKzQ6NQxaPVDucj 0.09150173 -fiat/revs sendtoaddress R9T9XmW4dEXz2okWXnvoAYs4QFqWHqkFad 0.09161957 -fiat/revs sendtoaddress RHpoozZd9n2t5JZZe2h8DJwkxfVu9WLGFa 0.09216215 -fiat/revs sendtoaddress RCgbMT2kFZkJ3zeKVauwmu7tggPkLeHZuf 0.09226126 -fiat/revs sendtoaddress R9MczKGJQzVXFdz18wCHhd2qYmK6EcnwQo 0.09246678 -fiat/revs sendtoaddress RBstx9iYvt7FAeeV62WZ7uEDXMj7x9uzno 0.09286755 -fiat/revs sendtoaddress RGYgHnyHUVWzmrisUMYKCiTZFsWFezeZah 0.09293689 -fiat/revs sendtoaddress RRSXCZjwKVHggxEGCdqV2PptC9BVW7fCqc 0.09323394 -fiat/revs sendtoaddress RPgVUnqqJh2koEkCN1tHC9fZWWVsHondRL 0.09350901 -fiat/revs sendtoaddress RKcwC4jX17xGAfB89qihrdPUmR5zp7M94u 0.09362242 -fiat/revs sendtoaddress RCh9gox3gy4myuTfd4LfTGzag1Njq66FY2 0.09379232 -fiat/revs sendtoaddress RPcaf4uYJ87FwBX4jkdtvp3gRCCjJwTBkd 0.09381010 -fiat/revs sendtoaddress RJ4Y5VinqKPKKAwWWq5CCuwxRjozKPXuWK 0.09382817 -fiat/revs sendtoaddress R9m46De4gwMe4CWtL5JYYxpVd58iieiKbh 0.09422057 -fiat/revs sendtoaddress RYZx5dyCXHqgJ25g8aJX3wUbpzMjPW3tFP 0.09485672 -fiat/revs sendtoaddress RRDCusDfZ4ELqAUmhnVEqCtTJu1ugr7zDU 0.09516619 -fiat/revs sendtoaddress RTXWQ9gqYdWgwXa7419GFPDQsDDWY5VH9n 0.09528797 -fiat/revs sendtoaddress bQe7PPn7YmoeTm5tziLSPF3F4xcrwLcqCS 0.09564014 -fiat/revs sendtoaddress RUzBFhy6yVtNYVVGGo7p1Z8wR5rf58T36v 0.09580193 -fiat/revs sendtoaddress RFWikpZ3CeKny9SbAfC9eKWr4J97KiVjYu 0.09597467 -fiat/revs sendtoaddress RQ93gwpCnMyTSSP9fXJk6SNFWy6chSoLEm 0.09622245 -fiat/revs sendtoaddress RMzHgDHB1oHkL8LNz7QFGWRqTqsMUhzAPR 0.09631144 -fiat/revs sendtoaddress RVRxK7ECToA78YB4YYvUqfotmUqhVfbcrN 0.09634762 -fiat/revs sendtoaddress RNhjPoewBRBf19hASWQQQ14iM5eNbLHSRb 0.09672094 -fiat/revs sendtoaddress RLqX224NsA9z7mtuM2doNy5rU94v3yY4mU 0.09714149 -fiat/revs sendtoaddress RY4VTX1T7d8AhUdedZ6vQsAmWDmGZEomME 0.09747328 -fiat/revs sendtoaddress R9wYf5VSWfsXS8iE9cTzrsbeNQbQoECoJ8 0.09756344 -fiat/revs sendtoaddress RL9iSC1WRExySFo3928d4TWMi2foCJe4hN 0.09806000 -fiat/revs sendtoaddress RRdVoa86Yf6hYW2gP9B8PYBT5TqoR5ozQp 0.09848232 -fiat/revs sendtoaddress RLsynX4z2QCV4ZLa6DeD1WJQ6KYMYJLX28 0.09863763 -fiat/revs sendtoaddress RGadU9kAGVDbTAnVn26Wb4YZTQfkAniYo2 0.09940000 -fiat/revs sendtoaddress RX9dtUNEf9Ae6fs15UA1N329Udq1omYRXT 0.09949194 -fiat/revs sendtoaddress RLgNWEuNwFMffuWBTUXG8YDsUqcyUkkzun 0.09969390 -fiat/revs sendtoaddress RDwjcXMk3A7r1mqokQUVvopN9KNmQAAMvk 0.09976498 -fiat/revs sendtoaddress RAvoz7shGwbBhubH1qDhXK1xH8LhrBnFZb 0.09990000 -fiat/revs sendtoaddress RWXaCL3h96NrA9uDH2E8MyeAQEkrHfqKkJ 0.10000000 -fiat/revs sendtoaddress RVNc9BDkXVcKk5H4raLz3Rvgjd7z2yQ2AH 0.10019605 -fiat/revs sendtoaddress RSn23Tv5mR3Y23a9KsW7JHHJCte2exux2H 0.10035080 -fiat/revs sendtoaddress RVaHUsdbpHF2BMZChz4rQQzSWxhH5FFNwk 0.10040000 -fiat/revs sendtoaddress RLuFKA8i9EwbNVcdAN2FH13XrHGwQDsGVX 0.10048046 -fiat/revs sendtoaddress RJbwmjT2s9X5ebRrRgHgLV2Kc9XiKRbF5G 0.10048718 -fiat/revs sendtoaddress RUdUU54F7mKThocnVsxxTrMBAfQxMY3rdS 0.10121176 -fiat/revs sendtoaddress RBhErwQ4rRMBPuy8DmUbwS6zd9CLmProw5 0.10156509 -fiat/revs sendtoaddress RRRY2QAfWPHeMQu8oSqeMFTuNVN2eEHwU7 0.10171333 -fiat/revs sendtoaddress RMtwwth8LjHmXyAL6s5kBpBt4CqY5rNi6t 0.10226000 -fiat/revs sendtoaddress REJLoHX9Z7AmqsDiX8h7nDqthxzhsoDfp9 0.10230231 -fiat/revs sendtoaddress RT5yiVuqxSyKNg92wEMdMsDVXcALGC2MJG 0.10231955 -fiat/revs sendtoaddress R9HpJ9kmNgvX5sVe1XW3rPNX3wiVRCePyd 0.10264404 -fiat/revs sendtoaddress RUPumL8gJgGWqqPwcmsakyKz2xXZ5UF1Dh 0.10273884 -fiat/revs sendtoaddress RCfnu5CDBqWdyiF2rEK3XJ1AEGVmR6jC4c 0.10346000 -fiat/revs sendtoaddress RYBSZsoZy5957JK4Kps4AZgT3TxmL9JXPH 0.10442984 -fiat/revs sendtoaddress R9Nm5ohs3YWTYfkRk1ak3PyW6ykHPfYFJL 0.10551516 -fiat/revs sendtoaddress REgPzcfhEBynjcqYb7taHG8DVfu71pjMdi 0.10553929 -fiat/revs sendtoaddress RX8i1Hpcb1qACsVMyvcUtd2Mn8scQSvaEJ 0.10598417 -fiat/revs sendtoaddress RMGMi1yVMiKdZWWVnKzVYwrtnJewDYMP3m 0.10649468 -fiat/revs sendtoaddress RVK6pQb3fz3aoX7YHnxPy3eXRNVHJe4c5X 0.10677212 -fiat/revs sendtoaddress RJPfyHzbU7aDVJSHEVH7wriqJR8rFPxNGv 0.10707890 -fiat/revs sendtoaddress RJ1bivaX9mX8Z7e8uYzgwa4zWu7Dmisjj9 0.10722929 -fiat/revs sendtoaddress RGvUHCDaKC86EHtzw75hx52gJiMW93RQsh 0.10723405 -fiat/revs sendtoaddress RNiDjRCmNon66CR9XkvqU8G9iWnxzT7bgu 0.10723537 -fiat/revs sendtoaddress RGxzFTYdVCHQHGCLTkbmixuWRw8dkpn2e9 0.10766188 -fiat/revs sendtoaddress RYQ6guxEWDhBejaGnMpsYuYYssc6NTMVeS 0.10815643 -fiat/revs sendtoaddress RXgj3WDeAMJtxVjx51VK6B8VbyAtpihdqb 0.10840578 -fiat/revs sendtoaddress RG6wQNu9jEv75SkVV8bRLraZ7JtJvU6rvJ 0.10850595 -fiat/revs sendtoaddress RAo32hgEb7JKEXYT3UujFpk2td5SKNf6E9 0.10875647 -fiat/revs sendtoaddress RVCEyRzcWpC9VZmcz5b6f8vAJzooEF2VXu 0.10891527 -fiat/revs sendtoaddress RAtmqgkqUYsKEH1cjj6nDouVMS4AgobZST 0.10908516 -fiat/revs sendtoaddress RRvwv79bmYbfso7osZkoowNrYHCFPKtgW1 0.10918949 -fiat/revs sendtoaddress RDaS7bRRbKnGNixQ62t7vkUx64JDGFQErc 0.10937145 -fiat/revs sendtoaddress RMjqNmy8vkkeGUa5w9qi535QpkpoUd6zCQ 0.10943606 -fiat/revs sendtoaddress RHw3NnEUuGr5fkK41KULEuBGa4s2rPz9R8 0.10998643 -fiat/revs sendtoaddress RSNqRxrepsLDUQf4bFyinycdnS5SoDi2mz 0.11031923 -fiat/revs sendtoaddress RM2B3rP1CPEybcPxykwtKhaSbXvyYZxLym 0.11092756 -fiat/revs sendtoaddress RDj8bcVZCG6djvmtFT44guyLuxJgUGMk9f 0.11098568 -fiat/revs sendtoaddress RPoCEs2ttkMUN1vU6WcCoEcTQdTi1muf98 0.11132000 -fiat/revs sendtoaddress RDRmMnHZRPLxPWoQZQRNeA7ygF6653K9rt 0.11139059 -fiat/revs sendtoaddress RUUwB1iyjeY1MeCkLzc9cde2xAwZKCMEU3 0.11248552 -fiat/revs sendtoaddress RMW6G6vtuyqZBPfWDoujCqNo8qLjYSWfjF 0.11254607 -fiat/revs sendtoaddress RJRfDnLzqFicgf6UtqycAAJhwbyquSUMCy 0.11297624 -fiat/revs sendtoaddress RXcxVLeQxFvYqo74bLfaBc9DTUtTJxX7D6 0.11420070 -fiat/revs sendtoaddress RQU9BMkGD7y2D2CdqL9CYzU3natPDkZEEi 0.11424180 -fiat/revs sendtoaddress RADWDYanuLbpkt23EH811MXV4LRp8a1Nxn 0.11494613 -fiat/revs sendtoaddress RHDrb4ao2cpryuc4SMe8TNRhbGZTwxVxhu 0.11511341 -fiat/revs sendtoaddress RGaKeFYERqwZc6oWr3A2WPaucuPt7qbPfE 0.11542951 -fiat/revs sendtoaddress RAfDXykDF65dWKcxDR2h8paR1Msg1Wo2Db 0.11558773 -fiat/revs sendtoaddress RBEGfZJyvpyZHSkf9YLmp8MdjcJpeiBXTo 0.11568657 -fiat/revs sendtoaddress RMEsdXQH25dk3276YtgxyX7aQeJBsi6g56 0.11569015 -fiat/revs sendtoaddress RWYDC8dKBsu8wisMtNHSbUbGbGzcW46Kp4 0.11729182 -fiat/revs sendtoaddress REGufEdvpdRhW7nZF44MZ11EuCKNcEb3WQ 0.11814625 -fiat/revs sendtoaddress RFTYSiH9E6zEXzrcA6FbbjEXPDMJT3eow1 0.11823698 -fiat/revs sendtoaddress RCExADvKt8yopZWqrM7SAZuY6gBWk5GYP3 0.11829147 -fiat/revs sendtoaddress RRgriPXSMPHr6PWWviUjMzeAJx2t55XeAG 0.11913389 -fiat/revs sendtoaddress RTokXc8yhvxVdfzXTCupCcHCVsQ2Q9jTbw 0.11923711 -fiat/revs sendtoaddress bHizmkcc6noE2upERvvGqmc2FZNZ8BM4pA 0.11941578 -fiat/revs sendtoaddress RSa1qo9b8rA42vSutq8yCaDwUJycLgdDK3 0.11942796 -fiat/revs sendtoaddress RGVW7X7PJwB9m1LBbRPDYrUUZc3rfJkb1Z 0.11985162 -fiat/revs sendtoaddress RGhKgCeeCdW1MFLYMUeA2Gm8tpbJXigNtH 0.12001261 -fiat/revs sendtoaddress RSkDzCysrvhrp6q8s2ZzxfUGm5941tcZD1 0.12040003 -fiat/revs sendtoaddress RNS8BPsdwFgC7MrhwRGfT4Ds5oZJeasmw6 0.12075202 -fiat/revs sendtoaddress RE68QYEbmJtY6fba6K1uTjHYHP5t5t9mhM 0.12125594 -fiat/revs sendtoaddress RS8sawBfX9LgY77uGsTA7MjUtbhVHoW7u8 0.12180048 -fiat/revs sendtoaddress RX5j6VeZngVmaBmPaNVCRaseTTd163kVyR 0.12190007 -fiat/revs sendtoaddress RHHeUquZxcY1Z5qfmp7mz1XAzCHn16HMb3 0.12219425 -fiat/revs sendtoaddress RJ76gf3cGadbJUaC43JcxtWDN5Kjv7UdXR 0.12345678 -fiat/revs sendtoaddress RSRBEYoHVMkcxmNEZYK7JcSoCxc6QkzRTL 0.12395501 -fiat/revs sendtoaddress RBqjXN7BRhTaUExvHuPB66JoyVTy6HAoab 0.12448782 -fiat/revs sendtoaddress RVXj8rXJffntDFUuVg535V7Nva98rQQgNU 0.12451718 -fiat/revs sendtoaddress RHbPDCVCUW82zzUKeCUxX7jGnv48CjYuSV 0.12464697 -fiat/revs sendtoaddress RSMe9uoh8sy9tD7yxVwpLUkTWph8v9HUyY 0.12489385 -fiat/revs sendtoaddress RADft9FGPWcqZ3MWJKpa1m1keqrvo4Kb7Y 0.12509721 -fiat/revs sendtoaddress RWAZkV89waNwz6dxQHgYVdRTbVe3uyfhKd 0.12528341 -fiat/revs sendtoaddress RT7eh3KZsic7P7BsUK5aUTHEZybkCndCAe 0.12538672 -fiat/revs sendtoaddress RRorwv83bqTyBYVfyQm9uJ3QVsBQdDuhTn 0.12555495 -fiat/revs sendtoaddress RK9W1RQs3c2zhQkyDgrvDksYJyLqShibem 0.12624349 -fiat/revs sendtoaddress RHt1j5bMXt59imEWwKatXLJ7aRT145GQLe 0.12628587 -fiat/revs sendtoaddress REQLiZKtqfrC8rbHb6XwoXn1AKTY8XcaLw 0.12631331 -fiat/revs sendtoaddress R9qbo6A1tkX3tu8AhbJmf2BCyDv4dysSZ5 0.12759959 -fiat/revs sendtoaddress RDrNujUqTDu7c9mZNUufPjsganJ5PUUVbh 0.12849307 -fiat/revs sendtoaddress RAw5vAZyDnRBjJpofamwnc8m5wnYboPGAc 0.12885544 -fiat/revs sendtoaddress RKJCdChFwifsKEAL7gDGEGPQFpj3Dw4GwZ 0.12993241 -fiat/revs sendtoaddress RARRWJTbA3CuLoho319DvPqvdGD37NzXTd 0.12999694 -fiat/revs sendtoaddress RDzjvR2S3rwc9wfL2Ed7B1c69KmzfRAKmf 0.13103663 -fiat/revs sendtoaddress RJ1BZx18AeWEJhX4VvV3S9xLhj2B65PkK1 0.13185666 -fiat/revs sendtoaddress bRRzjDmjyccZXugDcj72PJpCJhBFY1f9oH 0.13289002 -fiat/revs sendtoaddress RTUp1WUnrJHNCZpwh1eVzLRwtvMatFXCer 0.13356258 -fiat/revs sendtoaddress RLTWdpJfsBrGidMT12tBThbd7zqkEuyesw 0.13406876 -fiat/revs sendtoaddress RCPPbeE6ZTp5ub67KTj6VHWVtNid4EqKch 0.13666388 -fiat/revs sendtoaddress RMQrjtkVcNKy9remN1fEMB2HwDJXgMPk87 0.13668541 -fiat/revs sendtoaddress RBemUocaocLSH1t3RRr3cxCMHF4BJnahpm 0.13685971 -fiat/revs sendtoaddress RPZiWWDrNNv8a5WuEdPd6URWpLNTbdzVP9 0.13715722 -fiat/revs sendtoaddress RLKfoM3LtKvfLT1BRT6PwZKs9bpzdTpG3d 0.13716519 -fiat/revs sendtoaddress REuP8XvJkvpBzvviVSvXpYmR1KCwyP9bZR 0.13739133 -fiat/revs sendtoaddress RYYGzcDGyLBUdaUG9PEVtQVzAuRoG1d2B6 0.13776954 -fiat/revs sendtoaddress RHizXH4MszJuhQ5BzU1XAPTwuHvf3Jbui5 0.13796612 -fiat/revs sendtoaddress RCn45fkDC2G5399W42v6yne1uUG5igFw4g 0.13966691 -fiat/revs sendtoaddress RRhCMQamGbygNCAAoBFNe6tATKJseospAp 0.13975972 -fiat/revs sendtoaddress RBmiCvDLouUiLAAMrP3ui4hBJ6q7HpdqYj 0.14012136 -fiat/revs sendtoaddress RKEPhwhxZX8WtoCddypBvQo35a43HBUybf 0.14018140 -fiat/revs sendtoaddress RAsCkm8fqgPas3xyFdvQBhh92JM7sAQV64 0.14137129 -fiat/revs sendtoaddress RVu1z19615frorRKJqQqZ2piy6dwYWwV7w 0.14253768 -fiat/revs sendtoaddress RCzE2NN5YCjAsZGgLYVHFKPa2tJgrHbe3n 0.14309809 -fiat/revs sendtoaddress RV9meC53UC6ygACtaLL44DyRhtKrcxA4e2 0.14325183 -fiat/revs sendtoaddress RELsGWRQDM6bBfb8pbzo2ZLDSvAVaAisUZ 0.14428838 -fiat/revs sendtoaddress RLLkzBHRmaFgAX5EFBje9249R9EPnFKwpp 0.14440021 -fiat/revs sendtoaddress R9aTVydiqK5mhgn9HYrDSApbi3r4JTjUJN 0.14560287 -fiat/revs sendtoaddress RKGhQd8D2B4UNLgZojgqMEbSDNefhxr1jK 0.14620409 -fiat/revs sendtoaddress RBNjoQnzPp8bU4FARtcujpCbdPpKqRU8f6 0.14775029 -fiat/revs sendtoaddress RFgsP97g5DTpSheuqC5Kvm81WLFAg39A9S 0.14797999 -fiat/revs sendtoaddress RQCAZsMjvofHNWF8QmdDfZ2q9zvKV7Xt9T 0.14843518 -fiat/revs sendtoaddress RAjCKyJK19kYkdWCvcy8KGi7EJQwmXEjo5 0.14867105 -fiat/revs sendtoaddress RAG6TgMo3ygU4s6xo5QrQjmpH1geNvCtux 0.14916335 -fiat/revs sendtoaddress RKriPC914o56158KhoK9SY5CYYdiMyevwJ 0.14933380 -fiat/revs sendtoaddress RCWzBzS68KYHDHf7fZEnxVnbTMnxXhcmtd 0.15001194 -fiat/revs sendtoaddress RQWk3wqyeZ8Yov5Lp71iHUMhijYUK2xesT 0.15037260 -fiat/revs sendtoaddress RLSe1sNUUXDSDhPaxTG1i5AXkL36Tw4x3X 0.15043070 -fiat/revs sendtoaddress R9M6EmCvPQGyuU87DAusHSo9aC5WtKaQTf 0.15058215 -fiat/revs sendtoaddress RX6VRCsMkTidnnDykSbD9bcwujuS6ErqYZ 0.15079985 -fiat/revs sendtoaddress RHjHHqhwq1Q3enn2crMwRxkPFkd9xWeFRx 0.15164185 -fiat/revs sendtoaddress RY2ma8cHSkhJgvbCycsxqSqyeDv2t7PCSW 0.15213506 -fiat/revs sendtoaddress RTA8xaYHSVHB5oh3GvUVcxiJcfL7ybMi9H 0.15305184 -fiat/revs sendtoaddress RHzsnPqJWvJ7TchEj3HGV8D175Ge2eYZMj 0.15359798 -fiat/revs sendtoaddress R9jAipBT73ikKhrX88YTyerVvwonubbtLX 0.15428970 -fiat/revs sendtoaddress RUB3NYsqEmWKgampwURJvryxKDdhyw3Pky 0.15509126 -fiat/revs sendtoaddress RKHsmj7KbCAtm4GhZG3bB4qSciQzfrqaUe 0.15646220 -fiat/revs sendtoaddress RBUZ3G2eqfuKZGPbcJPQwbr7i1VJhzvbvb 0.15770699 -fiat/revs sendtoaddress RReUrP5ZCPgHVM3L3pJ5UXpancfZw4wtFF 0.15846844 -fiat/revs sendtoaddress RWZQgTHfzyzCCANw6RDLzhG5SvCQ8uui9F 0.15976000 -fiat/revs sendtoaddress R9uosp8Beh9spjvpydSeahJckeLNmNLApr 0.16060142 -fiat/revs sendtoaddress RNVLtfsDmNB9gmYcnDfXBVqJquFZpBAT3M 0.16156013 -fiat/revs sendtoaddress RPbb1A99a3yhaJDmNaiPYtZfas3gbcYTos 0.16218408 -fiat/revs sendtoaddress RT41P4qcQXEMixAv5k7qXWrgp5BdNwJfmF 0.16263799 -fiat/revs sendtoaddress R9jihhHVUo8JPKZrZzkjMSgPB7U9q2w7Xa 0.16287899 -fiat/revs sendtoaddress RDwokS8cWmmzRDtZbJAcMZZWtgcyTXzPPP 0.16327212 -fiat/revs sendtoaddress RFHgYSVpPSnwodMadcUtWfoBHN5ViRH6pM 0.16340483 -fiat/revs sendtoaddress RXHvw891xJ2nvBNHSfCnzB9c2LeH9YUGt3 0.16362076 -fiat/revs sendtoaddress RXaHRTS1EXpUUsBiCZkMq9BVdNRxqRFc4B 0.16590033 -fiat/revs sendtoaddress REYDwmCC9C8FNuWGS4biBax1oPHfJ5JUtj 0.16593133 -fiat/revs sendtoaddress RLQXdVJFqwxXEJzphmMdiGJM6Kp3VYW6hn 0.16636351 -fiat/revs sendtoaddress RBdevGcqKhuFSdZsuWgB3zdzrrD55TwJyR 0.16678550 -fiat/revs sendtoaddress RQB1w3wajPR33xoCiRe41EpEDJzTgFdpM1 0.16821494 -fiat/revs sendtoaddress R9TyFH2po7HXwN52VonAfMiJAGfUNV5f8n 0.16944346 -fiat/revs sendtoaddress RPNQL4daRLnvWNFXAe9EJ5TWu2bFTQCSvH 0.16957754 -fiat/revs sendtoaddress RR3rKb5fZ8cH4m7eE6VdnYqWeTPKMwmobg 0.17070368 -fiat/revs sendtoaddress RVjKSsdk2gMVeBbiAgPtVkvBWdW48wwCSe 0.17193156 -fiat/revs sendtoaddress RRENV78h3cjqjxCjiGG6XszL2XMw7HPKFx 0.17216247 -fiat/revs sendtoaddress RAgPzQGB5gZy7yGRhnwxBy4ayGFx3GvrLk 0.17233834 -fiat/revs sendtoaddress RGQWx9DykjKAunH9KWeGBvA8CzkiNgfzkS 0.17300000 -fiat/revs sendtoaddress RJTVi4xCfYaBLLW7XrGhoo9BKAX7aiMQZt 0.17321253 -fiat/revs sendtoaddress RWAEGGAFCanTMheEbfgGvMoQHHuHfubtWr 0.17381632 -fiat/revs sendtoaddress RA3hoKYvnkBsajJJthoWVL7XhQH8obb59d 0.17407210 -fiat/revs sendtoaddress RQYSJfmoPkWZqWxz9wWdtrU25NdRwrnQ36 0.17434018 -fiat/revs sendtoaddress RNygFjhRSyaFcbvBwUbaUCeFoaeDbTabiy 0.17543083 -fiat/revs sendtoaddress RTTyuoYvkocQavWfUEhMwUaG9YbwADzRHH 0.17558986 -fiat/revs sendtoaddress RE7hhDDP32oNb5XH2QxksFSwS3GHPxa9FD 0.17587755 -fiat/revs sendtoaddress RNBAyNtkn6D3ju9Q3m9p4V9EiL7ZrUQjGS 0.17639956 -fiat/revs sendtoaddress RJhS2TGaWSNghKtXbzU7PKP4QVWWxpD2aK 0.17642305 -fiat/revs sendtoaddress RQ5zLFGwZGhTKbANAbCHaAP1ghZWnv6wKE 0.17663187 -fiat/revs sendtoaddress RSBWqq7HhG2FRTLhMh9E6iVgwDXomnLTiP 0.17675691 -fiat/revs sendtoaddress RKS8KWuAGrmWT2jrVo2xPVWBUYZkhPfjP1 0.17704643 -fiat/revs sendtoaddress RSQcAbMhq9EdA4t9s4hbz4MUyJC36BMYbZ 0.17705551 -fiat/revs sendtoaddress RPXyjRry1yQ3Dtx9t4K17XrfHWAYmWcQ8A 0.17824500 -fiat/revs sendtoaddress RKLmoQhbEsHXc63etuLgyxMAFGLcv8zgpx 0.17831785 -fiat/revs sendtoaddress RJRGvA46WZnzNZ4jEE36exd7bmMBAjXeoK 0.17926653 -fiat/revs sendtoaddress RNUP6oz9qHvger59FyEQjwHyvNZ5Ca4KCe 0.17932964 -fiat/revs sendtoaddress RPRyS82DAvJCX4W1nCBhjAgqoynsPaQaQW 0.17953042 -fiat/revs sendtoaddress RLGGQbFBtsSje6NjaHjeW36MiyvWjLtjsM 0.18244435 -fiat/revs sendtoaddress RM45BMBXyq1uZwoUgwLCMmQkTcj28zmgUB 0.18252224 -fiat/revs sendtoaddress RJzHCaeGfJv6wbDc7kjj7478FKtYSfabho 0.18281584 -fiat/revs sendtoaddress RL7vHeQe1GozjQKzj3qNGCdH9kPEE5LK6S 0.18321538 -fiat/revs sendtoaddress RBVBkzfw9yEEbZSom4Hcy8AknRs5t5JMe6 0.18353047 -fiat/revs sendtoaddress RDYrMk1Nrj59jjxBc3HpoQzfDr4KmgDCUN 0.18633576 -fiat/revs sendtoaddress REqg9AMmtRecBW8tSD1vMmL3S5t2djVBR1 0.18810885 -fiat/revs sendtoaddress RJEJGiaEgn6fyrGotKuckQcAR7XtbJ8Emo 0.18869775 -fiat/revs sendtoaddress RQjRJDU4dKhC4wcRW7FrWGjmMoFpkXEyC5 0.18962646 -fiat/revs sendtoaddress RFpN3DMvqjBkx26mWgX89RqNftjEah4KwU 0.19090594 -fiat/revs sendtoaddress RSfmVra4N54YvtYxBJhrzBS7uD2QjCoNgN 0.19228559 -fiat/revs sendtoaddress RRPE5zBLjXQijWrtLgXMsGLWAfXWMFpG9C 0.19347527 -fiat/revs sendtoaddress RCBrSXf2dgp4wqXEexN2sCCcWPQRxo57R9 0.19380137 -fiat/revs sendtoaddress RM71tknipTMB5FD6r4V99gevEG2Zc28nPh 0.19494516 -fiat/revs sendtoaddress RMMCqv5UvoZY9FnogBxy2qDk8omh92t1QJ 0.19524778 -fiat/revs sendtoaddress RPgVUq5TgzASr1cnf8zrXv24u3qoY1mCys 0.19550145 -fiat/revs sendtoaddress RTaQKFoVJT3erktmwwRANooUErqyhm4DMG 0.19602941 -fiat/revs sendtoaddress RR7t6wVc9x6Te96Gphf3KDUgxbVnbWinVk 0.19740781 -fiat/revs sendtoaddress RK6QcBXJiB5wq4NQpchMiXKvJ1TQHZJSoW 0.19743604 -fiat/revs sendtoaddress RLc294N1j51s4es5ojz2Dv1Pqvt7EEBMzz 0.19761478 -fiat/revs sendtoaddress RKwqnPmJzPJnRSkXf8ao6KozrxoDNCaD6a 0.19894000 -fiat/revs sendtoaddress RP2tciau3K53XS9hdGY5jjvA2K883mimGX 0.19966000 -fiat/revs sendtoaddress RHQi8e7eiPMVqFWY55Ah1aj7bArJQiGjhW 0.19969564 -fiat/revs sendtoaddress RTd5ZjQ77hnAwbRbu4DTnza1p68WPQgcZ2 0.19973097 -fiat/revs sendtoaddress RTdQquZPretS7rA8hPtBPPrEBKhoPvRVbj 0.20021877 -fiat/revs sendtoaddress RCZBsn7Eu3oTZc98wEehF81bVFBnBTGCJJ 0.20078734 -fiat/revs sendtoaddress RNYgqviZkTA9DsSXoLQHA3amafg5YYks8o 0.20080000 -fiat/revs sendtoaddress RMgDF5hmk5omTKo9BLvGSG89ZiSsuJJ2GR 0.20321535 -fiat/revs sendtoaddress RT5UWNNFZeTNzyBk6iXAxVgfzkb85TVaJn 0.20330731 -fiat/revs sendtoaddress RH9aRQL6tT6i8sC268tTfS8QfPoZegyUrZ 0.20348830 -fiat/revs sendtoaddress RXB1kEegs2HkZja9qiZ7QhtBa79ETSiXXr 0.20386447 -fiat/revs sendtoaddress RXZYvDJUrWyQoUTuEoH1HGLow2emh8xxD6 0.20396056 -fiat/revs sendtoaddress RJNBJSfkkyyPnTyZiEc1FHfNQ6hYMUuuDB 0.20678848 -fiat/revs sendtoaddress RTdjDA3DDsMSWHACXqqJkXXAYTBfmg4GsN 0.20708854 -fiat/revs sendtoaddress RR43eBcXkNwtvdGHAwUEgnoE4hDBSjsXEi 0.20741156 -fiat/revs sendtoaddress REyyyMKE5E9iqfz9PJS4dbpjFf47xt4D5d 0.20769133 -fiat/revs sendtoaddress RQgthsRvGmbGvTUGpr9LDpoxRWjdppP6Gh 0.20825794 -fiat/revs sendtoaddress RUp5QowQ3q4vbc88mPAm2fKCUauoWUz3TZ 0.20853377 -fiat/revs sendtoaddress RJxKurEPDoxJkyghZCiPYQdRU66BZKtVtd 0.20856790 -fiat/revs sendtoaddress RE2ADgqMgs5dra9RtCNdpq6ow1reTvVFcK 0.20917925 -fiat/revs sendtoaddress RQM8EfdemZ7vCbyQwTs4P9UJLSV7XykdQu 0.21181339 -fiat/revs sendtoaddress RWjYTYQVsuVtfbHpVd9ZvXNTZpvshhx4nj 0.21270742 -fiat/revs sendtoaddress RM1mrNvpUKCDDifnCNigKrdHApNG2gd1Fn 0.21320449 -fiat/revs sendtoaddress RY6tz4EQhextn4aF6p3V9d4nNoEesbv8KY 0.21390210 -fiat/revs sendtoaddress RMkeFYjuqjJNeX93bgkUWGUx62nd1swu4d 0.21523667 -fiat/revs sendtoaddress RXZq1PNsMaYP3nLsdNh9N2FGGH3YNTpE7L 0.21527093 -fiat/revs sendtoaddress RHiuprGUR4tQKDxQrV959AdT37BLj1gB2c 0.21652956 -fiat/revs sendtoaddress RAtgxUYnWwxwzYgWiFk4TSv47RyQWYtM4v 0.21900813 -fiat/revs sendtoaddress RBcZp4E7pKQQxM69vCSSTapPt2Kc1DuZkE 0.22006411 -fiat/revs sendtoaddress RGZEMZf1U1ke2Z13ambD1bEtWXZBbA7Tnq 0.22081164 -fiat/revs sendtoaddress RLjHbjbf5GNYApgx4h7eEQrXfQk6RE5niT 0.22204010 -fiat/revs sendtoaddress RPHVb6rhSBPY4vqVgjP9YwmHZoWRaevjMN 0.22218562 -fiat/revs sendtoaddress RA4JwJy6WgZ4HY3HaamSsEeo1824YCLgLb 0.22422995 -fiat/revs sendtoaddress RGu5tBr9xsfRgLos3JJhLC6HEh5kVCNaTS 0.22494892 -fiat/revs sendtoaddress RSJwSCpYGnvE8wVz8cC5EqdNQYEKKhhU2r 0.22596352 -fiat/revs sendtoaddress RJF5DCReRLgHgzvcBrUFKnwuSwWDMjNSD4 0.22885507 -fiat/revs sendtoaddress RXVY6k44FkM1Y3WifKjWKH9DHYz8H9TfNh 0.23030000 -fiat/revs sendtoaddress REd3pSVff2vzCLttMz8dQ8xNkrdUS8ruv8 0.23148915 -fiat/revs sendtoaddress RNvFfi4murBj2oYcSECFKTR8UbeSjith1v 0.23156649 -fiat/revs sendtoaddress RQZefEbSXrMDdfBtEwyjDbeZVqbLa7PveJ 0.23225742 -fiat/revs sendtoaddress RJSsNYsiMCqV6WAVmJ99E6eAFnWWz4xP4o 0.23256160 -fiat/revs sendtoaddress RLtRyjid8bwL3aW83BC8js6YdKW78dhYZv 0.23413298 -fiat/revs sendtoaddress RK9fAGqCUZbdMyymBA7zUgtAc48FEcnf2q 0.23488907 -fiat/revs sendtoaddress RLcuqdt9cFFHc8eAXXhYSuekCBCVMMseX3 0.23572531 -fiat/revs sendtoaddress RKrYYe2VoAhG1hNALEq81ETVAd5vH5UjA1 0.23773551 -fiat/revs sendtoaddress RNSXTTAhs9NXjPQSg5sTjAfhmGFKWKakgK 0.24000000 -fiat/revs sendtoaddress RVPuDP49Z4MbhtA3mqfzEjrXqFE4bNPJ2f 0.24049051 -fiat/revs sendtoaddress RD5EsXqQLEYeBJbGBVdK2SL1hnr31RSfsh 0.24067740 -fiat/revs sendtoaddress RXXMPyt16EkLLagVfkPSxj5kcuV7kEqzZp 0.24218447 -fiat/revs sendtoaddress RJBG1DbCNp4RwCMc7b43Vz29yY5QE6f5ZA 0.24248488 -fiat/revs sendtoaddress RHJDfrjK5Tz5TgiQA284RSPnUQzGpzceAr 0.24697438 -fiat/revs sendtoaddress RWQr7KU14VmFkAYH96q2xKQqF9avjadkLm 0.24815574 -fiat/revs sendtoaddress RNMUrwh63JjuLfkKsfzNHsftWixAe1i2bj 0.25000000 -fiat/revs sendtoaddress RLyNDC8U6LfjDR8ypGqQJtE2Fyec5HH7C6 0.25125011 -fiat/revs sendtoaddress RErsXAiSJaKqSzpDunmLQq8DbGLgFQPxu7 0.25196302 -fiat/revs sendtoaddress RL8oGjSNsQLh5E1qS4V1wuGDpxQ2K2jg4K 0.25422377 -fiat/revs sendtoaddress RAvZQJqv4yZJsagR6cee25NAWzUb6GHprU 0.25454156 -fiat/revs sendtoaddress RXbJXZ2TsnwZ2KFVxxJh9FRMHNb5qPnzGc 0.25489171 -fiat/revs sendtoaddress RBbKbC94HzcrLyphbYzQCE5E9ckDpvKfEc 0.25654569 -fiat/revs sendtoaddress RCyZw8VB1H3npL35AvEJz7wVp4ESg4dht1 0.25713243 -fiat/revs sendtoaddress RDntByiLhGB1EdYYR8TJC34pCibDUYJvpp 0.25715857 -fiat/revs sendtoaddress RCEzP3EJ7obNFWUpWZPXL1D13GGhUB3Xs5 0.25762726 -fiat/revs sendtoaddress RHyneB9Lr4kD7Updz6KYCwTm3f83S7CSNG 0.25928511 -fiat/revs sendtoaddress RE3vx44zLGoRrbGnGYexxRdhwWdf2ynTTB 0.25938296 -fiat/revs sendtoaddress RC8naQP5o6Q51kNkm4MB8e6MdKo4Xi6NNz 0.25987472 -fiat/revs sendtoaddress RMX9BPAWr3fQXpistRuDpEgLkhMAY2PLrd 0.26000000 -fiat/revs sendtoaddress RMfs4dU61822wWCWa6iNs7sm2XhC38Jv9x 0.26112934 -fiat/revs sendtoaddress RTLJxiv7tyz3DYSYpaKGvMPsvWsULigjE3 0.26141233 -fiat/revs sendtoaddress RUPt1v2gp4p9Zi8u7eaKbbxRABYkJ92w9P 0.26152116 -fiat/revs sendtoaddress RL8jFGHgD95F6WTYhKmjteDcNecfrsht3E 0.26169661 -fiat/revs sendtoaddress RRcXibdzwAy558ZJLVpUSrbAPihWYgj82n 0.26190000 -fiat/revs sendtoaddress RH36iWDQASVXkNhxBRbETz3Kndp43FD7QX 0.26396780 -fiat/revs sendtoaddress RS6iKiibeGP17BZxZo9gEbzhcS1RZBMJ4c 0.26674839 -fiat/revs sendtoaddress R9QWu717oX5QgMnJWggXeHYFVpVNxsZmnY 0.26770574 -fiat/revs sendtoaddress RMdWiJZqEebnbaBCQZtUm3w4bG4C2rV7ta 0.26945101 -fiat/revs sendtoaddress RBMx4qabuPeuVrHvTah8SP6GQqmmio78HD 0.26964496 -fiat/revs sendtoaddress RJjq3fQ9upqeYPBxGsNJQGutJDmjzgYDCv 0.27112509 -fiat/revs sendtoaddress RKztsDxVL34e8FoDVeAhRDJQSaTF2QAnic 0.27204725 -fiat/revs sendtoaddress RK7Nqryu5fYFGBnAqRu583kfx3Z2y8tbBX 0.27291161 -fiat/revs sendtoaddress RUjWoxQzzW5ou6HJu7grpmCpCBfqFMLYit 0.27389494 -fiat/revs sendtoaddress RQsCPeKdj1Uy28ZBZeTTHUTKiR999ePZAv 0.27638022 -fiat/revs sendtoaddress RAESww9Frk7pwqK8R1b9GcBJeVo5hwRzkA 0.27832234 -fiat/revs sendtoaddress RPdMAieFroZzeicddVKj7dyBtL2xe8SYii 0.27888759 -fiat/revs sendtoaddress RVcY3ri76eDPdFcyV9tEtFJDYnRscVtiR4 0.27935968 -fiat/revs sendtoaddress RDQQ8VLNvDWSD6Z1eszH8TW4Ne9jB1k6uK 0.27985557 -fiat/revs sendtoaddress RRuA8VjcneYcadF9jfQhffMm1L4PvwEH6K 0.27994966 -fiat/revs sendtoaddress RTiwWcUVngsNGUepY1NkcfEjZEEJsPUaUV 0.28178826 -fiat/revs sendtoaddress RArx52m828shc2BMCFijmcf8N88a8EhphQ 0.28240901 -fiat/revs sendtoaddress RTt4NjKeuMdjan3dZsnEW8S5VCccrEohPR 0.28274841 -fiat/revs sendtoaddress RX8FNyFZ7o5xmG9D8y9YjBQ4RdJCQnHXBL 0.28318017 -fiat/revs sendtoaddress RQPxLFeF2TQLWJdEvzXjaDDhPpbAR9vi6A 0.28402303 -fiat/revs sendtoaddress RJEQwfbQHTmJzgMV6xbCiZmofRqS43uCW7 0.28433865 -fiat/revs sendtoaddress RNiz7fYSEKRAPUtfD6LSdBqwNL5m5GUQg3 0.28585787 -fiat/revs sendtoaddress RTKNhAegFH369DGAxJf89hz2Z6A6NRuPHC 0.28705876 -fiat/revs sendtoaddress RBdC1VDSgLuJacCXN4Hftu6Zmifu5j4aTa 0.28727143 -fiat/revs sendtoaddress RFckZYFCrwf9jaA7KK6scGejixAfkhArHT 0.28850705 -fiat/revs sendtoaddress RXm28dJFktJ9gsM33TyJPR6XAvj1Fr7cd6 0.29028565 -fiat/revs sendtoaddress RSaeg2DVN2i8v56cchCU2kmEGfvHz6JCQX 0.29072669 -fiat/revs sendtoaddress RXD8QWpyZyo9axz15B3Ncecd3Bvxep64zU 0.29127681 -fiat/revs sendtoaddress RSLzih3nr312iP9qFWf2qjweBnifw8Ys2e 0.29260000 -fiat/revs sendtoaddress RNovkbiF4diAiPzWrRK3gVo7Z2zxLShUkr 0.29323191 -fiat/revs sendtoaddress RBHW9p7g1fsYVfonknzoNZXekANo3sf1U8 0.29424724 -fiat/revs sendtoaddress RFtxN9zn5M9nx4e67KjNyfXPks3PTqMd4p 0.29482947 -fiat/revs sendtoaddress RWNDczZg1kAsEVBziu7N637H9FEZLTYF7Y 0.29597258 -fiat/revs sendtoaddress RAY4pAYrsURGnXva3AaUdtK6ZJcRMFYiy4 0.29673353 -fiat/revs sendtoaddress RUwFGHDzv7JBRpGpjtKD6S3eJK6wyHgSKP 0.29870389 -fiat/revs sendtoaddress RT83z8wYi1TdcCx5WX4D1Q52hXeXQEAzYf 0.30223687 -fiat/revs sendtoaddress RKDY35mEEC1uAjpoWw9YWivWeeKxx6xLY1 0.30494317 -fiat/revs sendtoaddress bSwNkymByQ7b3N6HWaoVg7JLy5zS7twP6C 0.30499999 -fiat/revs sendtoaddress RLsEaBnJnc9hSxCqUESbBVXcTKf3XGvpMA 0.30693227 -fiat/revs sendtoaddress RY595S1U1iX8rF6gHHMRi2C3tfQpuWxS15 0.30830162 -fiat/revs sendtoaddress RETunvXoMnYNe8Z7tUcr9erwJxD2fnmpUJ 0.30935183 -fiat/revs sendtoaddress bLcFK8Wqb97jD8Axx2K4ed7gHjwuPW3GvG 0.30948000 -fiat/revs sendtoaddress RY73FfWMj5TqeBFHc7LcdsWsp5aVFRe791 0.30958720 -fiat/revs sendtoaddress REJwnjDRwrL9pGzUBHZSzmRBazoA54EGKZ 0.31320922 -fiat/revs sendtoaddress RBmzBCDuvzyB8fbuxdgA5Th4CB6XcBkdAX 0.31332475 -fiat/revs sendtoaddress RNVJ8e2pkehknphkYijSkDkoMBW1LafMcB 0.31379825 -fiat/revs sendtoaddress RPvjhikqKPDeotkMLuqjir8ae49jqzrU8o 0.31394915 -fiat/revs sendtoaddress RVYMqP2R4UAUcC1vYjXiDu463zJ5NDRa55 0.31629287 -fiat/revs sendtoaddress RKqCJsfqLxwnoAVXt5V9s8oYnEqGNenmzU 0.31644149 -fiat/revs sendtoaddress RShBCV9bt1xkJ9FyJPRoU7cdYKjdnuiSSq 0.31723268 -fiat/revs sendtoaddress RYPPi77MQjYWCpRXtJhwCCcdTZwY98JuCs 0.31871145 -fiat/revs sendtoaddress RGXHJzLDkaroLuArRB8tPrz5pKeP26uiwe 0.31966782 -fiat/revs sendtoaddress RPgiYeK8XwqrihLc1vNJ3FR95CHxWaSRnn 0.32240674 -fiat/revs sendtoaddress RRQyi8evLM5YynjRryvzWTBdhCPu58N9Wj 0.32658835 -fiat/revs sendtoaddress RAWjxtmRBguFb6u8ABjx3MRLtMWGgJ7Uzq 0.33173999 -fiat/revs sendtoaddress RJ5hnzcdYe1SUD4Q7futsrxZ7tqPckZYUq 0.33352250 -fiat/revs sendtoaddress RSCeJkPaT5WJmTB4GnqP8LPQXJcMBnbVSU 0.33386827 -fiat/revs sendtoaddress RSK2oFwwcAf17Zo2n9sWxyH9jrkHM2Q7EE 0.33627405 -fiat/revs sendtoaddress bTWxe4WkKzJh4bvBLUxHPMFPqtbDYVQPpK 0.33642912 -fiat/revs sendtoaddress RWKudaVndePxrTvBF1FQJTB1q6v8bkxjze 0.33990000 -fiat/revs sendtoaddress RA4xPewoFW8GCJcoHnk8ELP8bxpiP585UH 0.34156250 -fiat/revs sendtoaddress RPtkYsYS3jAx1v7RzURYRMXDEYSTbeyhut 0.34158206 -fiat/revs sendtoaddress RAwPxnBxGF1ysaKSeHH6ae7LZiTsgurCKR 0.34247174 -fiat/revs sendtoaddress REtH1zTmV4EqwxKMYCgi65uKiypBjDMbAT 0.34281732 -fiat/revs sendtoaddress RBZqkQtCha1BxfstEUzEjQb2rkqEhEJqpz 0.34358294 -fiat/revs sendtoaddress RXWvD6pMsQasUy1wuWZD3QE4QjJVkgmF1L 0.34400565 -fiat/revs sendtoaddress REvs33MxVeW6SaixUbS4pPKZtn1hx9ey7C 0.34585233 -fiat/revs sendtoaddress RSukA6UUV1aTgtRKZB2Dpr62d57iHx5PuH 0.34716255 -fiat/revs sendtoaddress RLtEdfNmbQUxAC2uzuqdBuQHekTr5udBM8 0.34874127 -fiat/revs sendtoaddress RJqXgC5ohrGtHBR8vCsFYAyxL8QWxPMG3G 0.34879851 -fiat/revs sendtoaddress RRokHdU38AhyewGRH2PUC1bx7E8QARwaFn 0.34950649 -fiat/revs sendtoaddress bN4k2yqfykPUkiRbgyL32xbyrFdwWV6UTu 0.35000000 -fiat/revs sendtoaddress R9dLnjKYuo717qXpJYmzs9G6iC4kJWarc9 0.35257905 -fiat/revs sendtoaddress RDcqsnZBe8u2wVkWAaktK2pSaz9cWRbcDr 0.35420794 -fiat/revs sendtoaddress RGxf8rrkMLCcapCSN7k543qBozMfCm4Pym 0.35473416 -fiat/revs sendtoaddress RP2tQvuiT5fFYzoas6Sx6oSBsgwQVwdr3R 0.35544212 -fiat/revs sendtoaddress RUJjc9yBsyZ2Pa52Y6FH7SL72ADh967f61 0.35684586 -fiat/revs sendtoaddress RB39Gs3EQoLrAcWDEHmE1EmqMuVUPTLLGS 0.35730133 -fiat/revs sendtoaddress RWnJoDwiuMDRxUBcTgnKfzVBfCZS8FLGmH 0.35906168 -fiat/revs sendtoaddress RN3fyst7t1K88mAZA9zYdJ7WketQKKsWHt 0.36160653 -fiat/revs sendtoaddress RHvggVZRLorteBGHTSN1YkFnfj4ppp17vg 0.36224119 -fiat/revs sendtoaddress RUYUNdpWpi2x5oEnS9Tzw8midGtKidPXmy 0.36298511 -fiat/revs sendtoaddress RFtJn1sqs8MaicRtLoFwp22f2zNsMEjocv 0.36316573 -fiat/revs sendtoaddress RBtoUFe8SbdzrXZzwtg9uzT4gxk7MAzBkC 0.36324330 -fiat/revs sendtoaddress RMPJKa16tBdx84XySX33sfWucw2eV3UEsu 0.36530616 -fiat/revs sendtoaddress RGT9uY1vhTpV7hVVjBo4brh9BSe9rF1cKs 0.36549510 -fiat/revs sendtoaddress RUs8CTL74agzNXBAyXHVLToizgeCgRcp3r 0.36769154 -fiat/revs sendtoaddress RXawjtPMbpqNbHh5vkF6QUG3hmpBqubM5P 0.36944611 -fiat/revs sendtoaddress RJ6STh1xD6zy2iSm47eCwrrBbmdtf4Mxbj 0.36971668 -fiat/revs sendtoaddress RJdmPpwSbHJiAEohEfnkS9m6CJwG1x8wBo 0.37124084 -fiat/revs sendtoaddress RLnpWFxydeBMMcpyERPyg3FKzyZj9EHxXb 0.37136463 -fiat/revs sendtoaddress RHooE7xbh3jB7B37uZ8NdL74T1Lj4FhaTh 0.37481529 -fiat/revs sendtoaddress RQn9TVJqiCzUY1CNLqUhft2FBX72ye4ANR 0.37654190 -fiat/revs sendtoaddress RBk9pNBETcWt65jYKESwwoZ1DwiC2LMvmt 0.37696260 -fiat/revs sendtoaddress RFux3b17XXemEqQWr6VLtwm9gQnLY52w4b 0.37837273 -fiat/revs sendtoaddress RB339WQQCMafa6mbSvZe1g9bpwTDjPkiKc 0.37897611 -fiat/revs sendtoaddress RSFpEktam6xpAxyau6qbWguN8DeGHK6XFd 0.38627158 -fiat/revs sendtoaddress bEExmZmegALdXniSz1Zpq8ntffif2Vhw7R 0.38700151 -fiat/revs sendtoaddress RCNGbXvefTKurf9ZEqx2o6QeCbp1A7mUi5 0.38722974 -fiat/revs sendtoaddress RXCtSnCYx89jkKAS5SHiFWwueMs9VF1Ent 0.38889629 -fiat/revs sendtoaddress RD5pMf1WowWpmPj1qKPbY93hF8ZjpdveLK 0.39149432 -fiat/revs sendtoaddress RMxTuuicBaiqewGGxda3igdN1PDzVfUCzT 0.39251764 -fiat/revs sendtoaddress RADCF8f9FtG27ywNczoYuDuXecupPGpKb1 0.39321350 -fiat/revs sendtoaddress R9uXQRUJcN36g2YAstH3TZ7jKG6EzXQnGb 0.39685937 -fiat/revs sendtoaddress RPkhFHHvoyPdC9mhiEr3PxsKcTiQudSHnF 0.39778531 -fiat/revs sendtoaddress RBai5N6VLVobF5vwU3BPoaUYLG4ekPj7vZ 0.40000000 -fiat/revs sendtoaddress RSPWuJ1RcELrmHYP8uQ41xmdisQxzkzLD2 0.40218847 -fiat/revs sendtoaddress RJ38w79JgWGjjbQK9dCXHHofmA7JraEYyy 0.40310628 -fiat/revs sendtoaddress RCbr11w1zECFA2CfVab5Zxa1YJEKmG9ReF 0.40328548 -fiat/revs sendtoaddress RXC86jAGzBWmi4S7QexXkYZgNFpZnRAivt 0.40595567 -fiat/revs sendtoaddress RXHSibSiVFR6392juShWLntzSgezGxXB5j 0.41187419 -fiat/revs sendtoaddress RFbQqD1g8dRtJnud2RXAz6jiP8eBuMghN3 0.41324060 -fiat/revs sendtoaddress R9zJmpbo9E8bYF7kvYcKEs8fwHC5Rd3YGF 0.42165335 -fiat/revs sendtoaddress RKRMjMSxeCsbkPUAkjfTrcSHzg8LCeiT1E 0.42197322 -fiat/revs sendtoaddress RFGWcXoZZzUwrixWps4KzKRUySm23J4oqK 0.42494012 -fiat/revs sendtoaddress RKgNW1cNC6akxSg5zxTGTFahLKTiS5CCBc 0.42578577 -fiat/revs sendtoaddress RKamoBTmmY8ysnpAK7FCRbYx53HiLaPYcy 0.42679142 -fiat/revs sendtoaddress RUo45wtHhg5rDfwR4kYJFfZHbVySBsiPHk 0.42695792 -fiat/revs sendtoaddress RNwBnuN5DnFzYaDMqDt2k6GovQmhMyEA75 0.42886173 -fiat/revs sendtoaddress RAtKXVuwQf2reFG6ibrTrzSKA54fdxUPkZ 0.43219422 -fiat/revs sendtoaddress RXrYWrhmkykd2o8SySDjMyqDdViZLn53z7 0.43296655 -fiat/revs sendtoaddress RWQhXBmhLjjCJJPcbxoe1gfpDo1U7W5BVm 0.43611711 -fiat/revs sendtoaddress RMrJgJEFD8XPCEAL47UfDQ1PLAHSnHPzNS 0.43935272 -fiat/revs sendtoaddress RFxVW63efm7kAo3ygRYQrKpTBTaMffTEe9 0.43970000 -fiat/revs sendtoaddress RGNLNmwxWEmySGgvU6rUcXmJChNiqyusMo 0.44203947 -fiat/revs sendtoaddress RCyzUdqoeiuAutSj4vE8ePA1EMEHsyFazo 0.44218863 -fiat/revs sendtoaddress R9ed6we2o3Qad1rtr8STVfd9iZccjWiwWV 0.44679748 -fiat/revs sendtoaddress bQoJ6GKTQKvdWS7zDcQ1sQuD9YCp9DXSzk 0.44730743 -fiat/revs sendtoaddress RQPzuBXSpuVrUD6SfJzuSqURBDnnQ1mJv2 0.44749057 -fiat/revs sendtoaddress RRKycwZG3mcAktdqw2Mf3bYQ9Pxu2sAg9x 0.44803809 -fiat/revs sendtoaddress RH9BB8jKor3jmqYezUQYURciPyXTXH48CJ 0.44852680 -fiat/revs sendtoaddress RULQ97X9zBTUYUFiJWgqWVRjbqVG2ZJXSV 0.45030175 -fiat/revs sendtoaddress RJw2RHFJTNYz1a3rWGY53wpLscEedGSkB5 0.45097780 -fiat/revs sendtoaddress RWiXULxYj7ymikHRm5oTzV7gRvUm7Z8rKp 0.45132451 -fiat/revs sendtoaddress RRzH1oKk8AjtDT9hVEMNv2bKWvqSNpAmBi 0.45360277 -fiat/revs sendtoaddress RBTckx5qPn6WvLAmUJMeWBdQxmuqhPfhfC 0.45462838 -fiat/revs sendtoaddress RJG6w3SUToDpAz56mWHQH3myV3UjGonTvv 0.45551268 -fiat/revs sendtoaddress RYAM1oN7X2c5haq3ndgaxCoeauji1oCKSm 0.45660444 -fiat/revs sendtoaddress RJMXgP963XYFNtzRkYS9oGc6RnBXjBnV5y 0.45932301 -fiat/revs sendtoaddress RLkn3E26ZLfksgAqK5GAoZ383JWeaYdCNN 0.46206448 -fiat/revs sendtoaddress RPUGPxPB7k94Xce4AwSAXi4w5UpXc1zu1B 0.46740853 -fiat/revs sendtoaddress RDt6VJ2zZsCx6MLoGVMLMQihugnEry3q2f 0.46789972 -fiat/revs sendtoaddress RHaaDVbTUqRxHLEm4SjzyBzgu4xBG4Noez 0.46795546 -fiat/revs sendtoaddress RXE8NPASYrPv79Nx7VhSUMHNr8jjSRhPL9 0.46800567 -fiat/revs sendtoaddress RTbZ79PQSwVYQcmtvdGcursArnyr9u8cJ3 0.46871821 -fiat/revs sendtoaddress RS6pLSZw2K6BDuE1fJ3AKRg8F8f6A8KtZz 0.47176376 -fiat/revs sendtoaddress RGbWLYTCdHEy68jKR6otC1GDAa6a176Mhb 0.47354920 -fiat/revs sendtoaddress RV3shoCfdXpuBcp5B7pYS3vH9HGVcZZns7 0.47470057 -fiat/revs sendtoaddress RTYy6ByQS2JfG9ouW2X7RivfzFHJXk54sw 0.47902502 -fiat/revs sendtoaddress RWzbLxBk36W9BJAVW5vZesVjSXdZNgXpUN 0.48089630 -fiat/revs sendtoaddress RVwPRDkUtEnAUsR3thLUzbimigCXKTTVsL 0.48531213 -fiat/revs sendtoaddress RTAJneAP7e1U17QPM5qPT8xrXxNCiMBHbw 0.48864480 -fiat/revs sendtoaddress RGMQykbvyJ29T4f6Cgjuhw1ACiTsr7SYNF 0.49149086 -fiat/revs sendtoaddress RMnV6VzbPzkoe7hgghm6n5QK5DRbPqDSEc 0.49780000 -fiat/revs sendtoaddress RQ4LwxnrrmiZUnQFHL4ph3awkjHfXJyLur 0.49898133 -fiat/revs sendtoaddress RTC7PsSYXVeogGigZQoEz1qkmhLm9cE6YX 0.49990000 -fiat/revs sendtoaddress RUX31MZQBfbsynJanhFCtH926EdMyX57NZ 0.50000000 -fiat/revs sendtoaddress RSrWLPZ4MjEVXHpatfNF4vuX3EvCcXtn4W 0.50019199 -fiat/revs sendtoaddress RT3suBgfnsK6Ben6BCXdUBnp7zmRutAsAh 0.50019313 -fiat/revs sendtoaddress RKWj3kgjm2ptNceePqtS6bTiastT8NgiX9 0.50270000 -fiat/revs sendtoaddress RCfJAHmFMWcfupEUmqAgBnD5V47qVEPY6x 0.50446411 -fiat/revs sendtoaddress RRXMJvZiYBEFLwVZibMm1dGGG1vtwcymH6 0.50463307 -fiat/revs sendtoaddress RXLpuRvssLLiQvLy7gnfovMjU3jbpuj2xM 0.51049442 -fiat/revs sendtoaddress RJNwP6ntGeVehFiG5kAK6q1x6bktyMsWK4 0.51153833 -fiat/revs sendtoaddress RXmTUtb3F67ecqTyP6m2t5sikWkqmX9ZcM 0.51507306 -fiat/revs sendtoaddress RKhbLRhSaAxDNc87b1yFgRzzRzynxiqzmN 0.51651298 -fiat/revs sendtoaddress RTdu1oNB3fYpmzsLqRrZ4r3DYpnhCzuMew 0.51660342 -fiat/revs sendtoaddress RPTQiCxhNuPwZyg9y3F3iqHmb8w1PgRLfV 0.52262459 -fiat/revs sendtoaddress R9p7XpnfCWzCCBQy5Lbf2pV1yEPZbrUszg 0.52277698 -fiat/revs sendtoaddress RJSYPTJh3WU6jusr3nSTWdNKEFPSWCrmMc 0.52340316 -fiat/revs sendtoaddress RAKRvmJfWdQ6CXTVnhx7HRtJBcFXWaMqgr 0.52523992 -fiat/revs sendtoaddress RV2p6GcrmgQ4TRxy5Mjan7J41oZdpzJ2Ve 0.54346878 -fiat/revs sendtoaddress RAhbdHeuazcyqz1tgLSYnroZFkBJhQyTmD 0.54459796 -fiat/revs sendtoaddress RGvH7jZCy2WYZGndwgngAUUzuxqMTa9f51 0.54459995 -fiat/revs sendtoaddress RAUkzR9FuetpZHPkBBEsF4Ej7psZYVZVZc 0.54663470 -fiat/revs sendtoaddress RTiwuTKJuRDKgYcEhZxAagfbKeTasG5bsh 0.54864768 -fiat/revs sendtoaddress bRYAfqJwjMKJbt2o2TUAqUZSpnVWhz17xP 0.55000000 -fiat/revs sendtoaddress RUgR79b53p9zk5JseQoAUCfzXUnU1zoio9 0.55177606 -fiat/revs sendtoaddress RAo9b92t6VKs2qcGrEJMLr84mqSD65ovFR 0.55533996 -fiat/revs sendtoaddress RKuUUfjNzpL9Kgw41NBvGRz7VkEoVHPMse 0.55720359 -fiat/revs sendtoaddress RJtCWJEFBxKAzVzzcpdU5pFMbmZ61QQ16b 0.55892099 -fiat/revs sendtoaddress RCKErCiGE1Dpbzggt4NkkGr4ghrQP12fVd 0.55951196 -fiat/revs sendtoaddress RJRM26mwejqj2GVCs2XDAoxp7bWGvgT7HX 0.55964827 -fiat/revs sendtoaddress RGEHH4cCFrriVgnXaJDdoLWfTZZ6HM2CRz 0.56039437 -fiat/revs sendtoaddress RLPQnbh9N8sVgoBxXrrHFwXYye9Y9S4yJB 0.56071189 -fiat/revs sendtoaddress RNZskVCSB77baRgKTZnheispLUkXuKfP14 0.56611665 -fiat/revs sendtoaddress RBvw9qBdF4xC11B2fBJZdBWa7PU7sjgBGF 0.56692672 -fiat/revs sendtoaddress RAgVqCNsZaY9rL5y6hP3znScvuF8z7WpX2 0.57000000 -fiat/revs sendtoaddress RKfMP2Xz6LEP5V1ZStq1hZF83ixdaXnByc 0.57187545 -fiat/revs sendtoaddress RCLeULfzbdqgi3Vdde6mbonXryckHPpVNY 0.57439595 -fiat/revs sendtoaddress RGUhK8p7kXkRPxVqsfdUm1vb8MBiyGvNMU 0.57784799 -fiat/revs sendtoaddress RFAYPdd6nf877NhEH3vvPxzyocnJ8UvBY8 0.58006444 -fiat/revs sendtoaddress RNfWLSnWB1NFMJm8dLPoS2v2XrG6VnUN6e 0.58227983 -fiat/revs sendtoaddress RJE9gydUaQ5Axt5D29phUzLhjN9Lc9Uu5e 0.58352396 -fiat/revs sendtoaddress RXNePh44ka1z13hVqsChSy8TcEtuGmiqh5 0.58570000 -fiat/revs sendtoaddress RVFyinPqbJ6j8kMXbLVPJJn69NsyCt7Wpb 0.58608133 -fiat/revs sendtoaddress RVt6J7CrFhuEXuJJE2jUpi6SFNBiVKxTja 0.58793750 -fiat/revs sendtoaddress bQnJU3iQgSUH3tmQUAoWJQ9t7BHMbdawjw 0.59026090 -fiat/revs sendtoaddress RMnBGZooFXbd3m5XSNpWxtv3YExijZsSZZ 0.59217095 -fiat/revs sendtoaddress bMBwHFaGbmAbq9reMcyt7UH5mHtHeatPPu 0.59303242 -fiat/revs sendtoaddress RPZXdQNpoQkNZqCD4Vqic2Mw5sqdDHbPht 0.59359911 -fiat/revs sendtoaddress RNpYbPWMDwvxW6yEn3BWhSEqfodpedDzDZ 0.59528627 -fiat/revs sendtoaddress RVMMeKr5inTkrNHV7dgw48X1CR55CmN9Ax 0.59629831 -fiat/revs sendtoaddress RPkifP4ujr7xm1W4iV6thNBt1wen6qaCDE 0.59651124 -fiat/revs sendtoaddress RJwXHEQgFkHxscggYXERKS1PWdK74QaoCT 0.59825550 -fiat/revs sendtoaddress RUHWSzBpc31vU2TU7BSRd6QngHR6iVyMac 0.59987352 -fiat/revs sendtoaddress RBoPpQkKEbYCzFvGmxT6vcWq9MriigAhy1 0.60150583 -fiat/revs sendtoaddress RT4Zikaqm3P8CNcYkFJ982fE4raZ9rZs6Q 0.60260307 -fiat/revs sendtoaddress RJfMmy2oEBvR4VNdUZYyAbWGLyDBMPDmNY 0.60450640 -fiat/revs sendtoaddress RTatBWrgpXYvJA1tU3k4RiH933Xatx11iC 0.60551278 -fiat/revs sendtoaddress RCbvP85onRMPJ95J17o6btos5w7ApjSGyX 0.61001707 -fiat/revs sendtoaddress RSZp6dg4YS81XHessJzFqBV4eaM3cULTCB 0.61500780 -fiat/revs sendtoaddress RBeHZMXcF8H1CXaqKKpzqj1sagTDQt9Ufj 0.61511031 -fiat/revs sendtoaddress RN8NSSZqESBePrTvXJ45ApsFDeotGFLMvU 0.61598538 -fiat/revs sendtoaddress RNfMCDHEEQDkHcSXd3RXfK54NAGZFwV974 0.61895079 -fiat/revs sendtoaddress R9e9mLsXRRix56S8u4HiJPNvF8noTyk8ER 0.61930693 -fiat/revs sendtoaddress RRdTJJ9VN4Mi5c4tubXyhN77qRVv1DT47H 0.62324058 -fiat/revs sendtoaddress RMzAxFcBi7TzPwxRefrteto1q7m4CmobEs 0.62925700 -fiat/revs sendtoaddress RQYzKZ7r2uKPKXTDFZVktLv5QAuijEfu7n 0.63060764 -fiat/revs sendtoaddress RLnqPBWMRmC5iwBGoqgWjXCinjBD6TquGC 0.63063433 -fiat/revs sendtoaddress RK9oAxorBNdQw9fwEoGKt8UXWhgf7S2zaY 0.63171999 -fiat/revs sendtoaddress RKRaFcVn6kYoQHmuRBzamLKNshgWw9SnmC 0.63193349 -fiat/revs sendtoaddress RNnjcXWVT9vaQEpobf2rNduR3KtHfcbwPh 0.63268021 -fiat/revs sendtoaddress RDz28MiFiKVZBgzTqcSHgmA3Wyc3ULmzpB 0.63282719 -fiat/revs sendtoaddress RSJH8nai4Dy7WATfnzjtbtBfs1amReJ8jB 0.63283721 -fiat/revs sendtoaddress RWahfEL3BEeJ33yUtWr766PMTEztPt7kzM 0.63439708 -fiat/revs sendtoaddress RRh4qoEXJzrzyaFENpe3Exb8j4UNbaXLQu 0.63557692 -fiat/revs sendtoaddress REgDgR2epgdc8P3XaGQ3S1nKyfg7qzBrCs 0.64100805 -fiat/revs sendtoaddress bbGihDgrR8kNrDspfSvb2wrPgeha5tcYgn 0.65008350 -fiat/revs sendtoaddress RCGX2We6w46WKkyF6Sa3hsU2ze5NZD4QwE 0.65496189 -fiat/revs sendtoaddress RDQPkMLqBZzksQCfKea9Qmj3pK5Yo77TyM 0.65592269 -fiat/revs sendtoaddress RGvFVDkfBzmZdqhC2gMAv8BvYA9Ns2b7ed 0.66496969 -fiat/revs sendtoaddress RCGAXoo9TrWinswd6HD1sZtGevREoGS8vQ 0.66776372 -fiat/revs sendtoaddress RYYR9oKZbVvLZjgr5rXUEdXVaieSeHyHhs 0.66877829 -fiat/revs sendtoaddress RJU7oYuwWq9bhs8ivvMQNr5MTWDvvWc2Ni 0.67497978 -fiat/revs sendtoaddress RDftDKVhoZjjJRMozhakANUEfwGtt7bJVS 0.67722319 -fiat/revs sendtoaddress RGpwweDWRGJCvhNvjyTRiTb6UAMVZzhSAA 0.67899046 -fiat/revs sendtoaddress RMtFHpJTNd8QKV8XjwPJKeLetY3CKtC7XZ 0.68603823 -fiat/revs sendtoaddress RHZ9LESPxQRKwN3nGPXb3cx3Hh6cqZhhvp 0.69080885 -fiat/revs sendtoaddress RBSzeEYQNFg56UmLCY6hnAwZojAiaezRfH 0.69536624 -fiat/revs sendtoaddress bHXMFhYDCHtZdDyTu7zircnUGgEvVwa8cm 0.70070000 -fiat/revs sendtoaddress RD9shySmNDPVgZpdiPRXwEgr9q9r7m3DnM 0.70143377 -fiat/revs sendtoaddress RLa5pyy8Z7Y8wket1KdtMmntneZaZD1HAw 0.70195184 -fiat/revs sendtoaddress RUBFNkH4SU5BbnDW7vLXDB7vVBfxRhTFMo 0.70627649 -fiat/revs sendtoaddress R9zTJMwbFkHbQJ8AQKBDtNJipsWSaTixJF 0.71567057 -fiat/revs sendtoaddress RUF9JpBQBjm8hX8a8gBGX5G8hHn41BemSk 0.72223244 -fiat/revs sendtoaddress RAWzJ9UFxQ2SYVzdxouVk8xVpS9MDhjhL9 0.72714154 -fiat/revs sendtoaddress RDy6amUyjSRYZ5FuaFHvRhExgspJdPbWoE 0.72819413 -fiat/revs sendtoaddress RBYGSLwNXEZujSYAxmGERjQwiCQ9FPwNHD 0.72951688 -fiat/revs sendtoaddress RQYjo7V2xC5zDrJVyNG1G768thHu7ReWYa 0.73914089 -fiat/revs sendtoaddress RDGi3CKdYC7h3cqXFTyd2xPkTVkwza83aw 0.74195886 -fiat/revs sendtoaddress RMXQboydjwDc9WaFmTJo9dnC75PdkqJ6vg 0.74323366 -fiat/revs sendtoaddress bQdRPe3ekvYCBG8KekVrvUmTaYkZv9m4Qc 0.74496448 -fiat/revs sendtoaddress RGfvbWMVJyNXjngMjg4P7iumTzS2LZuj8z 0.75260000 -fiat/revs sendtoaddress RCwKP4BYG2UsLM82Yz6kZk2JNoMyn2MfhN 0.75315497 -fiat/revs sendtoaddress RRD83thMA4J68D4MKN2Mw3zSDWUupmGx5M 0.75342004 -fiat/revs sendtoaddress REXSJz5FowxJKbv8sEkR3DXsTNbCsW3UGC 0.76267102 -fiat/revs sendtoaddress RHWsRzVY5ySEJw6FZxZQ5yXr5AV6ip59xY 0.76430989 -fiat/revs sendtoaddress RYJKGJA5UmycWrb75riQ2mf1KfWydQq7vE 0.76841293 -fiat/revs sendtoaddress RDZSofqrUSJDuL2CpnsrbU4nbxM4vuS3dz 0.76895546 -fiat/revs sendtoaddress RY93wjQ2uk1KDCKzJ3S7GYw7gkXbtXYBJy 0.77005601 -fiat/revs sendtoaddress RVXNV7CPNyP4M3Tk4nfJBegizZXwh8xkoC 0.77282719 -fiat/revs sendtoaddress R9HqjZqiMGGpkPGFU6HD7QEPqAJPJMF6rH 0.77411655 -fiat/revs sendtoaddress RNLSsjipadvowQFn8SV4ca5fBgSV9qkCLq 0.79142849 -fiat/revs sendtoaddress RRReKhh6yAvhcpfcRfmmj3LRrYitQoV3e5 0.79980000 -fiat/revs sendtoaddress RYXDYC22RagcThHYwDhRtPBP8b7aEkVWCr 0.81222721 -fiat/revs sendtoaddress RMct5h8MZD2NrvMjNtNiWAinz6TssPEY45 0.81632669 -fiat/revs sendtoaddress RHm6SJyDmDtWWvStivfnsVnHpHwb5EX6eR 0.81827079 -fiat/revs sendtoaddress RMUconPnAq2WFnZF8WAb82ytkNEsGQ2JHe 0.82454518 -fiat/revs sendtoaddress RSQv7qsTfTdSUVnKkSexC5iLwWzy3rKRco 0.82459305 -fiat/revs sendtoaddress RT1mX8BxLe6mGr1C8kqfxCck75LphHq7UT 0.83208787 -fiat/revs sendtoaddress RNkzXSdS3HVAjwEp8LKZCWUnqm9jTQpjzZ 0.83414945 -fiat/revs sendtoaddress RN3VzRoL19B9sibkABvTmdi2KvgZyqr5ge 0.83537405 -fiat/revs sendtoaddress bSZTbcXWAJssCtuPWG3YxsXLB8aAfbGkNx 0.83749020 -fiat/revs sendtoaddress RSuRhSZzRM7tfgU8UVu9wT9SysyB4m5Yxo 0.84142909 -fiat/revs sendtoaddress RMjA9XDmvSvhJk3E9daKruxcyvwomL6tbx 0.84213149 -fiat/revs sendtoaddress RCKcLWLKWk5s8niR1LuFavAsRDGFm24uvi 0.84791791 -fiat/revs sendtoaddress RXa45NtQ3oyouE3eCSmtwXnHEPiyqBqEvU 0.85589805 -fiat/revs sendtoaddress bHp6LRyqf4bSGVQuUwCjwL7c8hekkH2i24 0.85641234 -fiat/revs sendtoaddress RPkFPijnAdb3jaRYWZTVb83LUaGBcaWsyV 0.85688004 -fiat/revs sendtoaddress RYYt7yrUC9YMVvMfT1jWmybRttbFnWs2wD 0.85720926 -fiat/revs sendtoaddress RJVobQQuepMNJbPxsDTQ48d16SvJst7Wv5 0.86182115 -fiat/revs sendtoaddress RJXEoYyaScL7ZzVjyKRvGiZ83FTCTbVYdT 0.86269514 -fiat/revs sendtoaddress RMHVtgX7Yfme6VikgLnp43CHGEoRu5wgZH 0.86499417 -fiat/revs sendtoaddress RPza9dmNCekRW2nbR19GwtQRYPnPgpbYiQ 0.86709075 -fiat/revs sendtoaddress RHKMFFVSNPXPVpyGFYG6Pr6mxbSRAiYsFq 0.87148787 -fiat/revs sendtoaddress RGx4re8EpFuEP4EF7do2MjxofaKso7sgmj 0.87460907 -fiat/revs sendtoaddress RCzGxpVWtHv19qXWbbZsnU3iJpsYthV3n5 0.88173875 -fiat/revs sendtoaddress RSiWUkd5EJqKB67kGyu87USMes1nnhsNMw 0.88193954 -fiat/revs sendtoaddress RWMLVjTPNnbBzkXPoEX1itgKgGKQfpQu2U 0.88221524 -fiat/revs sendtoaddress REKM8VbTD3qSkpJsX6NSBy9yeE3k1V7RdC 0.88350367 -fiat/revs sendtoaddress RRtwiRd2dVqv42ttcrxkz3Um6PDCiea8Vp 0.88828024 -fiat/revs sendtoaddress RJqpGXuYPYULTXPryxmwJr78Cjiy6Domy6 0.89088385 -fiat/revs sendtoaddress RQaqBnifTPLrmojZsQvbRss3Z62XzKvkcf 0.89158334 -fiat/revs sendtoaddress RR7rR59u3NYK1zqT8tLg6dv1ZadKKbkTUa 0.89236842 -fiat/revs sendtoaddress RUrPKDngLmNnE788cnF6TfV79d2wZqyZrq 0.89680237 -fiat/revs sendtoaddress RBo2FPU5vvJ7oo6E5gDPgopX9sGWorSRGE 0.89780314 -fiat/revs sendtoaddress RHdHQT4y2EArySery66Cw2vSa1u3CAiMTN 0.89805340 -fiat/revs sendtoaddress RTxpGtYmMHJDuhcgKjJmKFb2DmT3KAhymq 0.89830000 -fiat/revs sendtoaddress RWpLoeTF17e57h2dztWjVtFiPGJN68oWwx 0.90000000 -fiat/revs sendtoaddress RRpGS3w4PdmCXh9XkFZBTDSLTND4SvAo6z 0.90346661 -fiat/revs sendtoaddress RWCHKHsLbTqDiCYf4GHBdXpRUTd3MCfEpd 0.90552284 -fiat/revs sendtoaddress RLz8ZqeDkACEUy7FTCwRf8WxyoNcfXWEHH 0.91807110 -fiat/revs sendtoaddress RJ2CJ2iRk5FkMWowFGqHjfjywkE7q8oRGe 0.91849096 -fiat/revs sendtoaddress RNHhWScb5GSjjdCq4xzj2mVV2kc5iPPiUf 0.92014146 -fiat/revs sendtoaddress RLAjuRuMRVmFpNZfCCBnJaJxJ48QKMsUGK 0.92660071 -fiat/revs sendtoaddress RG3KZ4r8VH8pSKi9UHZ4rDSFK2aeMqw7gW 0.93268277 -fiat/revs sendtoaddress bTXkkXKeiGYvHL1GUnPxZuYJopVEFZd64g 0.93290367 -fiat/revs sendtoaddress RHgafK4M7eWGdaGZX4dJ73nBbQdT2Bzzhp 0.93314542 -fiat/revs sendtoaddress REmzcTzCAST8T9wsbYKv7uMVZSP2hsGzJx 0.93706472 -fiat/revs sendtoaddress RFhWcxfnA7DueEGgqfDu8r3Trgq49MpjbB 0.93912909 -fiat/revs sendtoaddress RVKs86V7ApAQKL4zy8M5Xfhgp8tZvsHxM8 0.93950000 -fiat/revs sendtoaddress RWHdvoLYvqBfdETrbDakSQgS11vvQmsA79 0.93985910 -fiat/revs sendtoaddress RCUt1M75bE8aafxcmfiauZmJRiVq9WpJi4 0.94011953 -fiat/revs sendtoaddress RVq3BeZT5MNKxV43aiQoKzY9sBnibuxmfr 0.94149132 -fiat/revs sendtoaddress RLkDYw36bu4RZCMt5n5T5z5WFLLqjZwWKz 0.94374984 -fiat/revs sendtoaddress RMQd53s9DECUXjru3VY8JWF2wt934nZB2u 0.94616033 -fiat/revs sendtoaddress bTksXHEctsgfZce41UFGLyxEDJwLu4LK2D 0.94669999 -fiat/revs sendtoaddress RSdaqUhMAGnXCxkQ7vytBFBLEjZ2VZnuBb 0.94890005 -fiat/revs sendtoaddress RXWPpcq463fp6YBTBMjNZAW4WCmcuwWozB 0.95195119 -fiat/revs sendtoaddress RVNXJ8sjbNMBWort8MadpiKqxPLAv7m3Yo 0.95359617 -fiat/revs sendtoaddress RPY7DPHaNjirXQ7ed4VqBW7t1Fs23i9ddp 0.96037622 -fiat/revs sendtoaddress RS32mjEnvBEL7yDEmMG3o1azWrsWsh1hQn 0.96999512 -fiat/revs sendtoaddress RQnSgGmjwidCsEPJg6SKTKGhvusbAMQSmz 0.97446572 -fiat/revs sendtoaddress RJPd9LAS74JPr9sKnp33fPvnNGoRWRpEHH 0.97580539 -fiat/revs sendtoaddress RP5CoAdfcXGjQ6ntZt2tRLBgAYFoeXfBRq 0.97660169 -fiat/revs sendtoaddress RWuJ2dffPPT5d3T61EbQyZoepnzz2e6iDF 0.97685052 -fiat/revs sendtoaddress RNDFBZTwMLJW874D2c7igyQjtVBaoxhrpy 0.97960000 -fiat/revs sendtoaddress RKpmRtyoyTPXsF5eTXdtRjT174Ay2KVwqt 0.97998047 -fiat/revs sendtoaddress RVXDvFT3VjF4zPJCFh2pC8v7Z4dXZNL9oL 0.98000000 -fiat/revs sendtoaddress RMjND2koLqq1Rg8Myf22vjDG9N1mSG3L6r 0.98111600 -fiat/revs sendtoaddress bKZTeCjSGtbzXBpYfDmRhvDzymdMixpPxN 0.98239995 -fiat/revs sendtoaddress bLZ1tuXsL9ZxBmSTKRSmHGbsavEKhKtS75 0.98758993 -fiat/revs sendtoaddress RUM3yAsy79n7dJpwQfWugBwxKjW663eMZF 0.98829757 -fiat/revs sendtoaddress RB61928CWBstCvJjkDdV4mdbtRVWJgc15S 0.98918912 -fiat/revs sendtoaddress RJdY4BfYZgsEC8WS1cRQ3hh8L8qGShBSuZ 0.98990000 -fiat/revs sendtoaddress RTXKNvGReDoDwk6KcknJXtuhivRjezyYHu 0.99000000 -fiat/revs sendtoaddress RXrsUcqB7kEzAicEdSJMnKRFbeR1rd2ij1 0.99316451 -fiat/revs sendtoaddress RF3KUa9jezYLhc2MvHXdvmRkemssM6Db8q 0.99408000 -fiat/revs sendtoaddress RBfyFdGbeE7Zt5JV6Qv1ZKmzy1Nmbp9dUB 0.99536917 -fiat/revs sendtoaddress RN4aS41pmQdPVFe6V69NbFPb4e75zPDdmP 0.99641004 -fiat/revs sendtoaddress R9PWqnxTSp51BdC4Qov5FzLXQ9Ezh98J8h 0.99742866 -fiat/revs sendtoaddress RJpfoSkx4RpqiXQeiX9fKquVkYZeuQeJn4 0.99820489 -fiat/revs sendtoaddress RNExSSPF3JiwBV1T7epbLPMyTZBohmLQdk 0.99900000 -fiat/revs sendtoaddress RQK4mc7ZySXtQ6EweC4r2fcCdBTvsZqDc6 0.99960000 -fiat/revs sendtoaddress RHKuo8pMGLqucswHfjpVrsG6EWUKDYNjZC 0.99990000 -fiat/revs sendtoaddress RT4e4DRn4mKEYenw6BJTA17851Zpw5kY1U 1.00000000 -fiat/revs sendtoaddress RYXNNwhn8yWRNkbAdUCEBSvqUcTivqxUsF 1.00219032 -fiat/revs sendtoaddress R9TgGaoE9Kvb1ueqBH8Px5XHAkYiKoTqQH 1.00235226 -fiat/revs sendtoaddress RPsvT7SkSvCSeGG7HQaXhABLGn5ZTMmrsi 1.00323306 -fiat/revs sendtoaddress RB522aFX4HZa8FG3uQkp8iN9Wu6aCN4Tfz 1.00438063 -fiat/revs sendtoaddress RTrnP43t1WyXSuyVU5hocNThZ3SHDVehqZ 1.00492821 -fiat/revs sendtoaddress RUK99xTisiQXLxeGd1dthvnMDU2vRdv2sa 1.00506510 -fiat/revs sendtoaddress RVZx5sSoM69dTriw3h5aPHYZCdbyMbrSWk 1.00520200 -fiat/revs sendtoaddress RB83thrZiTF7E5CtuEufz7y5ox7FiZPv9a 1.00533889 -fiat/revs sendtoaddress RTpRFdQuweU5nGqror7Hh98agPt74GM2FY 1.00533891 -fiat/revs sendtoaddress RDXhENQUVE3xZTWRMynBfay2ih8PAXYQPv 1.00561268 -fiat/revs sendtoaddress RK7DnD9meJHVFRMYHQhHSbcRujbiLq1Hr2 1.00561269 -fiat/revs sendtoaddress RU7qaDDeCW73DvFgEobUUr7S5ZLNjyk9ws 1.00571268 -fiat/revs sendtoaddress RDt7LuGsu46DqyVLrzBmP6Bem2G3DMfC3V 1.00574957 -fiat/revs sendtoaddress RHNocz18MS4RvUGqm2rGZRK5NBSMmfsob1 1.00574959 -fiat/revs sendtoaddress RSMY1xDJm6NJWjvUKWgTTPWJgxADq29Avk 1.00588646 -fiat/revs sendtoaddress RR7if8S9HJc3NzcKQwskj1r3AkF4Qq3H4t 1.00588647 -fiat/revs sendtoaddress RAsqCgMrAxA2E9AkNB4wP3HakCbMsCam2N 1.00588648 -fiat/revs sendtoaddress RBfUQwZEU4nGBJcb4CgjohhE56r2FBj6js 1.00602335 -fiat/revs sendtoaddress RCJ4iPHQYGxbQBr2yrSHQDHAHmoJcNq2vg 1.00602337 -fiat/revs sendtoaddress RM6pXaUi2VVvE45pPSLkg7fTDgZiG3ZMeZ 1.00602338 -fiat/revs sendtoaddress RGJd7kAJZukbGSejFzfwa54V5BL66wK8Bg 1.00616025 -fiat/revs sendtoaddress RGaaRsUJXx935dC9TFHHSLBjDe4SLiZWZf 1.00616027 -fiat/revs sendtoaddress RMdJBwoRuuFRk8fvtzZG6YjCcrw1zpygpa 1.00626025 -fiat/revs sendtoaddress RPEWGCJ1khGbfggd1GVFVBpBVcvoKziHsj 1.00629715 -fiat/revs sendtoaddress RWibUtwLfz3y5k6b18KZCxMNe8Rh3K3ZZ5 1.00629717 -fiat/revs sendtoaddress RPsFft6ce7VExfwrAk1pDbz1dRvmZhjXox 1.00643405 -fiat/revs sendtoaddress RBaTVtWAJBRWLrwoLJqJcaW2RfKnykGYsN 1.00643406 -fiat/revs sendtoaddress RRx7phckZykXqzrMyuLZML1dkYGdAqt48S 1.00653406 -fiat/revs sendtoaddress RK38qjB5RsTzQVsfanjCZXQcGCCMgdwCMd 1.00657093 -fiat/revs sendtoaddress RNnpckXPNgDcN93j3d1WQ8X4hJs1YYf51T 1.00657094 -fiat/revs sendtoaddress RVFAUQkNEFXJrvFceBA9nSbgzBPiJNUNu2 1.00657095 -fiat/revs sendtoaddress RAmCMxnuvhTWJT1VawDRMcS8dTs451W46F 1.00667095 -fiat/revs sendtoaddress RTMQMAjUenKUGqfNAKcJEGK2unUQ52o8wV 1.00669715 -fiat/revs sendtoaddress RX7xiKrHRUnwngJfSRcagE5mDiS1qnicuW 1.00670781 -fiat/revs sendtoaddress RKyBgaG5tJyVVA2kJUAFzFMorgWzs5kzA8 1.00670783 -fiat/revs sendtoaddress RS5FbA78PK6SAe8GHSmmUWLF1qvWvuiJ4X 1.00670784 -fiat/revs sendtoaddress RNEQc7KmhxUTSg2qGjK6v9GHKE5KgufySa 1.00670785 -fiat/revs sendtoaddress RRW9d9JZHhRkLdJoX27UcDecqD9wz5Dx72 1.00680783 -fiat/revs sendtoaddress RLLQNJDEKkMZur6cpgjPdMgpHS3UUgUrha 1.00680784 -fiat/revs sendtoaddress R9uvvN7k5jiQYws3h67EEcqQdhDSL3pUw8 1.00684471 -fiat/revs sendtoaddress RW34SVHK5c3XJRBN2wUq8YmwwpBkHtx2ti 1.00684473 -fiat/revs sendtoaddress RR9es3yRQ4PAes49w2x8UErHYFddnbvhkk 1.00684474 -fiat/revs sendtoaddress RXUThKYh6uMvv5mf4geStrLLYYDSF34XSM 1.00684475 -fiat/revs sendtoaddress RWwEXx3b5syksp3cJae8kqeTRTRDnsEzj9 1.00694473 -fiat/revs sendtoaddress RUSwJUcREkKkK2uxoBpHMWXj5foaGMF5er 1.00698161 -fiat/revs sendtoaddress RLQLCMktbxJWWaz3BWairGxgPpMQr2mpV4 1.00698163 -fiat/revs sendtoaddress RXtYrtBJw6B4wfiX2oVbvKBYVNT4Khjmsf 1.00698164 -fiat/revs sendtoaddress RCpLjxHC4Ki9kL6H6NVZ36MaGxgAyEhVqw 1.00711852 -fiat/revs sendtoaddress RDP6ViSrCckekSa7PGcphnX6vxgZKv7FDh 1.00711853 -fiat/revs sendtoaddress REovwe65if2RSkhETRpWK4yUMAZvyQesHy 1.00711854 -fiat/revs sendtoaddress RRFQjZ26eMg65BQQszYM8KH7MTx9xT5MPT 1.00715541 -fiat/revs sendtoaddress RMuLfxyR77ghChbBLrqeq1MmC9dSJ1eDAL 1.00725543 -fiat/revs sendtoaddress RJhywbyJk8FkTCMKXVRzypQcAJAMeDHnU5 1.00733406 -fiat/revs sendtoaddress RTR8bnNwg5PWkMQvr6EbdzT631taduNa8j 1.00745543 -fiat/revs sendtoaddress RHJ9gDfHVWCNDbR2o9xfVGaPEFs3AUGNDP 1.00756611 -fiat/revs sendtoaddress RTUdnAHu38ukszdvcdeZqH4nSpHyfNePw9 1.00783302 -fiat/revs sendtoaddress RA4tNV7a2X6zTwzYFqbHfBeFFveckrXxNZ 1.00821753 -fiat/revs sendtoaddress RT7P27xJTwmijtQvQbXvkskNCmGB2oasCn 1.00839715 -fiat/revs sendtoaddress RVdGLVL4PfRyhLZR14N8ZYGQiXsj9uHDHb 1.00897627 -fiat/revs sendtoaddress RNwhd2Q8Ht3AxVjiPdpkSsWCmMTV3jVPLS 1.00898185 -fiat/revs sendtoaddress RHyzfjE73nikKXn2cgASXiQapjsLEbXy5D 1.01000000 -fiat/revs sendtoaddress RQE1A6R1JNp47dV4w7t6eRo5x2BMQhri2D 1.01318580 -fiat/revs sendtoaddress RSgu6rSX3193VXd1EBt1RuZn7Wm9M3ucSv 1.01607052 -fiat/revs sendtoaddress RVrcKQ5mb1gyBp6YorUPHdzdgj31SpFGh5 1.01814050 -fiat/revs sendtoaddress RKFqJRoYizcmSphVeKzvhiqdNXRNfarVGU 1.01938979 -fiat/revs sendtoaddress RNjZQxQEEQssAKUay8n1TtChxUBQ8PBqwK 1.01987315 -fiat/revs sendtoaddress RV25PKU1uER2HxA5PpgbxEx3YUe8VGaW1U 1.02385871 -fiat/revs sendtoaddress REVQCfJjPCqTVfi4iszhPKZDeQiaAPRHvF 1.02411103 -fiat/revs sendtoaddress RSKmx2FgUFuZmRyimuZ5UoZ6PFWpGShTTM 1.02699342 -fiat/revs sendtoaddress RKY7pHG9EadEcaoWSygpXcPFscAYS6HSQa 1.02751965 -fiat/revs sendtoaddress RMtnxXvFiVj8dgnP5gYeXpovt7nzTM8Jks 1.03047428 -fiat/revs sendtoaddress RWUcw7dePV8cMi29nFwnLFQ3eXE4S5H2RL 1.03153735 -fiat/revs sendtoaddress RQs3J2QfDe2ETL7A3NZZWHedNXvhU6etiz 1.03328580 -fiat/revs sendtoaddress bSjWe9tp4sjtehJxBSEBJi1Aed1NXejE5m 1.03610000 -fiat/revs sendtoaddress RVp8ZGAACfpXFguGiT3saVJvhKsns99JFW 1.03893782 -fiat/revs sendtoaddress RNhzw3UNS2EDv1PG4iY6cCFpWLkc4TvMvu 1.04070429 -fiat/revs sendtoaddress RNtXaHPobwLBH5mLsF48sramDRECZiRhZw 1.04736687 -fiat/revs sendtoaddress RS3XxRpr7ew9B4t1B69C9Y9NHYXYstDz1Z 1.04908716 -fiat/revs sendtoaddress RKNRL3tC9m72ycUG9u9S8Yr2CeuwQXHa2j 1.04916801 -fiat/revs sendtoaddress RYPHft1dLmsqJS6yxjG788HZ8Ze8n2mEF3 1.05636881 -fiat/revs sendtoaddress bHEoRLM5zSHjdP81LW7sD6Mr1ZQRZ4Fu5J 1.05700000 -fiat/revs sendtoaddress RRXXa6769aALZvfeiC5WYjtYM2vnNhs7BT 1.05772610 -fiat/revs sendtoaddress RLGrcD5YgDYhciRATJTiA2aji3kndP7n4N 1.06364344 -fiat/revs sendtoaddress RShuJwaNmvyU8bc7GtE6XZBuZu5iV3mVs2 1.07114814 -fiat/revs sendtoaddress RSxGVspEt8xUJEs39sXdovkoQ1GRXMjRC6 1.07521774 -fiat/revs sendtoaddress RH6HTbU3i6SJTGZbJfcoZoPNHQBtvch6bA 1.07759935 -fiat/revs sendtoaddress RRrgy1qYP56iRPhCRN9zTWhupgLPezAxdY 1.08673844 -fiat/revs sendtoaddress REeenBUJUdkpwVkBT9fphjXCTkWShKBQMy 1.08755766 -fiat/revs sendtoaddress RLVuSHKtXPg1ttx44h6zDJJBiRskMkUbdm 1.08915528 -fiat/revs sendtoaddress bRmhenKFGwcHmv5pcegMGqqaKPMqshU58E 1.09000000 -fiat/revs sendtoaddress RTWeue98rTN2MEyobj7fSmff7CZFqGkxAm 1.09677588 -fiat/revs sendtoaddress RPMTn6kP6qkbqWU2LSgJHRAK1qZ9qioi8u 1.10090396 -fiat/revs sendtoaddress RCJvbEYyU1rJFf3mRG2mj9CRAiNkfRo3yS 1.10167493 -fiat/revs sendtoaddress RPZw6kcMotYjcykX1S6FBaNaLTUyUMzdz2 1.10264199 -fiat/revs sendtoaddress RSiVctTs1sM1eeG8ruNtLp2Yp8GYRotjqD 1.10273790 -fiat/revs sendtoaddress RTYfFMyhibug31XcpzwfridFJdqY8vHaKH 1.11583822 -fiat/revs sendtoaddress RPF9SqxScrg9mhUyiaJBCnAUDGGNzjnwV6 1.11999426 -fiat/revs sendtoaddress RYFiBBm5PmMHarY5aYzbzrHKC39YGU7jtU 1.12446319 -fiat/revs sendtoaddress RFm3is8KmTmmCPbhwm16txnHH4fNiw9GTo 1.12618210 -fiat/revs sendtoaddress RWqJ2GtJ7gJ5AHVWgLWQr8C9C6Ve3ky4ub 1.12814944 -fiat/revs sendtoaddress RVqShVM4zJN5ek2stHyJeQB3UkH4NLg2hZ 1.13102130 -fiat/revs sendtoaddress RTZL8HjD9g8nZJA4edWdvERsH1aTq85QWP 1.13302477 -fiat/revs sendtoaddress RTfB4qE75df5XW1rPgYaR89WTpUQZFQHSp 1.13740666 -fiat/revs sendtoaddress RQ7S1HrupzMwbXyAi3azcj9eFFMKciEfVZ 1.14590863 -fiat/revs sendtoaddress RERL41V7aTxUJmpewF2jZ6fcEvKtFzf5ZH 1.14647693 -fiat/revs sendtoaddress RQq26XJaZewYWSpt8p8gjfU93qdm1s5366 1.14830381 -fiat/revs sendtoaddress RAzLrZcbyuZXawkYK5HdihKZ9kzhD8wWVz 1.15438148 -fiat/revs sendtoaddress RQMGqPvzcjUoCYTb25LHV5WGenA4bukdhA 1.15566613 -fiat/revs sendtoaddress RH9Z8Jw4Xxahem74s7EGWUeyJTXinaeTLi 1.17046666 -fiat/revs sendtoaddress RWY9zQf3763qAVR4x39BfXYrSKc2ZNjP7W 1.18568692 -fiat/revs sendtoaddress RBphVPd4MiKi1LkiPfu1et8Kpa9JSk7rh2 1.18700000 -fiat/revs sendtoaddress RV4Mw8nMXijvPBZ1zBBM32BFvzp7dYZ1C4 1.19154018 -fiat/revs sendtoaddress RX36LorLqGgbMpCbrUyjydu45aweN9jh19 1.19454928 -fiat/revs sendtoaddress RLdB8ZZ8AfAviYxCaYP7wVkntqgYD64Jpn 1.19713102 -fiat/revs sendtoaddress RT58V9mS1JmhKjSRZaHdZLrt4PzwN2nSR1 1.19875350 -fiat/revs sendtoaddress RN9oHPqf9QmFi7m56AMsEk9FPJu1vVP3zY 1.19892206 -fiat/revs sendtoaddress RUC1iYeSLb2YRMZiazT8TqHaz3gYmf9Gut 1.20000000 -fiat/revs sendtoaddress RBNE1yHgYp5bNaocKn9Q7BZYtYB3XzufNQ 1.20068347 -fiat/revs sendtoaddress RM8vw2rnTNhQ1xVFUzuVgModQhUG9d3zwk 1.20567914 -fiat/revs sendtoaddress RG8cEVW7WLAAh6JKKngopbd4RLQ9kSfisG 1.21156235 -fiat/revs sendtoaddress RXpnUwb8DKVsi2T3SWhbDADkXFMBCKsVye 1.21223647 -fiat/revs sendtoaddress RAvV3Lk6La77gyKcJfH9jqDRdP4nki24HP 1.21423234 -fiat/revs sendtoaddress RX8TSFaxZGUPPB9uRzPH2AiKBRq13hLuPC 1.21975557 -fiat/revs sendtoaddress RL4kqyihwav93jo8VwJwKuSJZiyf9sK7Tn 1.22237299 -fiat/revs sendtoaddress RSSa7SScyTtDjXc3jP6npo3mMhvC5Th6oj 1.22249997 -fiat/revs sendtoaddress RQnfXbXQQcE43muwMm3ojq16wFCad3PvrK 1.22426673 -fiat/revs sendtoaddress RTjeebKboJjNXW3waS81VkSMC6ffJoPz4P 1.22501630 -fiat/revs sendtoaddress RK4MmD9oCKMcafRh5BE9TRuFfhs5Ar5DeN 1.23454729 -fiat/revs sendtoaddress RGdwjLpxScLGQPdY7HL9HzxL1rVXmLens1 1.23741881 -fiat/revs sendtoaddress RAZmr6RjC7c7RQ8mjhGCriwgTJK8oXWKNC 1.24308814 -fiat/revs sendtoaddress RPBo2F3mYmXUua6Sf3XwPT9JWpgmnogABQ 1.25335363 -fiat/revs sendtoaddress RRdEZ2kLUU4HEhpQJQKDPE3SVmG4uod5VQ 1.25492241 -fiat/revs sendtoaddress RNRF3knrQws2LnpBqMcYR826eAsZY5DYzQ 1.26518133 -fiat/revs sendtoaddress RMjh84gmUjQvmMmEksvFtyPJ92NtnJXmzE 1.26914043 -fiat/revs sendtoaddress RY1FYvxUs7qHtVtpGGu1VYQZcp6GEsZnv2 1.26977694 -fiat/revs sendtoaddress RCkc86LUZmcunwZ51EzsdauRSC2sYDqXqo 1.27990000 -fiat/revs sendtoaddress RQjGLmSN7MceVQaFJMEFXxgqLZcn8Cdxce 1.28329754 -fiat/revs sendtoaddress RLK7k8fYy5w76ScQ7UbjbMYjYsq9B12LcA 1.28629131 -fiat/revs sendtoaddress RTmhoi1TfuVqS1TVpjQKyPCNfWUNJu4BsH 1.29101449 -fiat/revs sendtoaddress RQChMmyxVzCKgdJudUQarmEYUMDeyyNpgi 1.29146132 -fiat/revs sendtoaddress RMGLFX89yRLAoBRghk9zsW1tbwHh1ox8ef 1.29446427 -fiat/revs sendtoaddress RQPbJwfyVvbBtLG2gEX6xhbafZSvXxo1iU 1.29905594 -fiat/revs sendtoaddress RQ8jDfnuHbm2G2ULMgNXwWpftwjcfiL5GT 1.30218820 -fiat/revs sendtoaddress RL7LAXxhWoNyD5eGE92gB72m1ThjXwoYWM 1.31742887 -fiat/revs sendtoaddress R9PnTkUFSegkFNzJRXMD6wX6mkLGg1hyjw 1.31863412 -fiat/revs sendtoaddress RNBGifRYKUkRKosNm2cWjWa7mC8FyPxZM3 1.31970855 -fiat/revs sendtoaddress RGtrs1cYyPAQMd85sCekvRwC6AKXcZ3sDr 1.32005014 -fiat/revs sendtoaddress RFaEnmNkqJCoM7LwVkmm1dQvZPw7WQyvZZ 1.32515352 -fiat/revs sendtoaddress RYc1aVTJF3jEQEsnofiypBH7BZaK7MFpKv 1.33271517 -fiat/revs sendtoaddress RQutfzuVzjXQZY9bGDf8LkoXC7zYR3dCdY 1.33280514 -fiat/revs sendtoaddress RBDqmM8gd2GpmqBxp1745YnnwWwCdjN41e 1.33515153 -fiat/revs sendtoaddress RK5PjWa9bLssWRa9MT6YwpitkxxYC8GmEG 1.33650226 -fiat/revs sendtoaddress RD3b4gfPAYKZa8GouWBsT4FVxAf44hdVMA 1.34813377 -fiat/revs sendtoaddress RCuvkhb6VbdquBhwTLQ5LcsX6yJgSgsiSJ 1.34856314 -fiat/revs sendtoaddress RCu4FfEWht2CEWi7g98JDRe9f5Fn75cwak 1.36199095 -fiat/revs sendtoaddress RL7mTzWvtFC3F8D1WFbAEwBmnefKYiupVK 1.39208756 -fiat/revs sendtoaddress REy7L2BAJsJqryyg7Ab4iDMBLpFvWssE6s 1.39461673 -fiat/revs sendtoaddress bZxsv5Uavht6nKtWfFPppGodRKB18kmKYa 1.40153681 -fiat/revs sendtoaddress REPyMFnLfqVsyRA2KfrQ776ayvTsK32o3J 1.41501441 -fiat/revs sendtoaddress RFVpMGVbjeCaSeQFHKiYAbpRwGyfiMVyxX 1.42000000 -fiat/revs sendtoaddress RLV5cKTyaYVABXjCkzd8vHvWqjDi8aLEH8 1.42624969 -fiat/revs sendtoaddress RQZXGQNefs8Zx2SFgzhtEAkt2RdVAMaDr5 1.42755666 -fiat/revs sendtoaddress RDjcC2MNpawEZgq2JTK4Cc9DTNFMZ7PsSh 1.43201326 -fiat/revs sendtoaddress RDCsAhpcZqpdZCWigdM1ujfeQmCAHbfPfc 1.45874046 -fiat/revs sendtoaddress RPhBpv2cQ3WSMNzqmUb86ET5y7jQ7DPD2T 1.45929382 -fiat/revs sendtoaddress RPcHvF4jEty9qqKfYeNjTacBhLKGb2ixpt 1.47310188 -fiat/revs sendtoaddress RLpaETsoZj52HBbAW7rHANBg1t2ttySPQb 1.47750626 -fiat/revs sendtoaddress RSF8gGSix9untMctXB3G2vrfzWyJzALu6V 1.48250000 -fiat/revs sendtoaddress RHxNWVSRdyVbomaVBWVuzYnS3RKZzWuxFg 1.48653046 -fiat/revs sendtoaddress RRVrfwgx9x7gkZER1yrhR4a4Pk2gs8udNV 1.49702366 -fiat/revs sendtoaddress bNaoVTFpRaXnCgb5vBtAXbZ4pXvHsySb3J 1.50000000 -fiat/revs sendtoaddress RGsQUfcFvZLZdwmKX4aZvunTxbwKx8yccM 1.50780573 -fiat/revs sendtoaddress RS7UtKWKAnp51Mqzkfb9zFus6g56V6VzxS 1.51352332 -fiat/revs sendtoaddress RMqbEGZBu1iXQErb2r8mBdRHJYLWnoP5nU 1.52457228 -fiat/revs sendtoaddress RJBUEVzgvSw4HF2vVvhjecADHxWCGhSjr2 1.52864745 -fiat/revs sendtoaddress RJ4u4DgxYqMArpfp96hTy5Srx87hyc1J7C 1.54124286 -fiat/revs sendtoaddress RWZJ8JjYJDjt6kNRLBEQq1aeR3juoKrvPU 1.54585135 -fiat/revs sendtoaddress RFkLL2xf4vsTiajnRevya9TVcQyHFTsKiQ 1.56358736 -fiat/revs sendtoaddress RJ1VYwz6fV6J5KVKmgutCwyeSfb7Xv1No9 1.57797376 -fiat/revs sendtoaddress RVBqRSC7BH5QYoqF1cBLDxceG74n5fMJ34 1.57905079 -fiat/revs sendtoaddress RBBHBNytzvyMyDhR24noVBAq9uxZKxLAeh 1.57927229 -fiat/revs sendtoaddress bGudHujZahqnRJvXC2VCSDnczVHgEPh1Wa 1.58700000 -fiat/revs sendtoaddress RFtwVS6TN2Aq1CsMuBmM6o5QMaVMTfMsCg 1.58954872 -fiat/revs sendtoaddress RCJnFAfMno28iC6Xnia49LSdUn2WRkLRpU 1.59419732 -fiat/revs sendtoaddress RBGWmHq9rvFzabmacwXxnTCr7YEX4Jrqod 1.60046674 -fiat/revs sendtoaddress R9j9cH2zvMmPFdB9pcwC9zXwicSPP7pwE6 1.60400995 -fiat/revs sendtoaddress RNkzqWHi5Dgg96F37YpeRDFGqJrxRfbBnH 1.62257668 -fiat/revs sendtoaddress RRTinbg9zaegzof3twiJxSNuBnsHHgZaEQ 1.64318216 -fiat/revs sendtoaddress RGniivvshN6EVGUKZRF5EzBsqKxpS93RJm 1.65639919 -fiat/revs sendtoaddress RXpDee4SEiY9rhfxoEgdC8PVWsbqdEZw1k 1.69773342 -fiat/revs sendtoaddress bPXgssSE8kC7Saoj7L8u5Pe1gJut7tvPb3 1.69910000 -fiat/revs sendtoaddress RRjVysht9ZeeSkSMbf5JDQJPcJyErSAjcg 1.70322869 -fiat/revs sendtoaddress RFRM37qFvntM7TPqrAwYNAy2y5xqn3dGpr 1.70656263 -fiat/revs sendtoaddress bNXWWWqNtTXD5GmxK19eZcSMgrxN3VDboZ 1.72734851 -fiat/revs sendtoaddress bPY6tFSkLUzQAkadwvimYc1spsxXaEYbae 1.74189851 -fiat/revs sendtoaddress RPBdNsv1HHwgeeeEJo7qT7nM6EVA2rroso 1.74888552 -fiat/revs sendtoaddress bZG7wd5BaUwzY1bNGuqqFnjVMvMV4SmEut 1.74920000 -fiat/revs sendtoaddress bJrkgeBFbfs6oLMyoJXsskADQPjKYQ6Ftb 1.76577984 -fiat/revs sendtoaddress RUtxrXiAFq1oqg8fqvJ1Ax2CX4BiM1dy2Z 1.78316624 -fiat/revs sendtoaddress RXW8GvCBxqkzZb3kHcm55ormZTa3YL7q8C 1.78616541 -fiat/revs sendtoaddress RNJmgYaFF5DbnrNUX6pMYz9rcnDKC2tuAc 1.79820000 -fiat/revs sendtoaddress RPBXkDU4Vu4N8B3FXGDgghtT4rqgw12vTW 1.80744276 -fiat/revs sendtoaddress RXb9E377iq3CZNMJ7aSUauoMZWMButpA3j 1.82576189 -fiat/revs sendtoaddress RH2kRVyri99Nt6UWTpuXmWda9ZvtiEz6xX 1.83128234 -fiat/revs sendtoaddress RCs9Sqe99sRDD3yKCfY39VvShamcGXXSRD 1.83578804 -fiat/revs sendtoaddress RVufZEJRVw3UTKRjVApXfZgzxW8JV24nuw 1.83846574 -fiat/revs sendtoaddress RWE5VQQ6oDKGyXJxWh3FPQ7RFJFiZWDjYN 1.85417492 -fiat/revs sendtoaddress RQygqtXQJpngKZ3NM5MbeoByWbHyNGyJRe 1.85486597 -fiat/revs sendtoaddress RWTYpN5VBTSXjgbdVACNiyFULRPoLvaV61 1.85972528 -fiat/revs sendtoaddress bKeuwSTZWjWm87vJpYpy3eCuFJmWCrF38v 1.86222005 -fiat/revs sendtoaddress RHMC9tBFYL8Fb7zJUm81BD8oM6Uzu2feAb 1.86531877 -fiat/revs sendtoaddress RRb1eZNQo8mxgKtFEQbWsEycUr4Pbik7ha 1.86735991 -fiat/revs sendtoaddress bDtewFRcLkir2cf9SRPyPTYQug8DyF6xfi 1.87282410 -fiat/revs sendtoaddress bEL3j9hiN7DtaCHTGB4q825MNvnm4wUDoh 1.90359999 -fiat/revs sendtoaddress RNDYvqLDMztos8BPkvKxVHccsmE8QvmNub 1.90641705 -fiat/revs sendtoaddress RXHWasBG7RhWDysy9YgCFDcWcdqDYS7tbb 1.91990000 -fiat/revs sendtoaddress bZDxcTBZ78TmfANqEe9p96FFEohgCYt8iN 1.92178425 -fiat/revs sendtoaddress RHaXgjxZU8v5TZMtAs4hEw3WWchjnTdYGr 1.93088161 -fiat/revs sendtoaddress RBeSgf3owwzrjSiKQfZQPeYUkiFF1HNHME 1.93308711 -fiat/revs sendtoaddress bYjsXxENs4u7raX3EPyrgqPy46MUrq4k8h 1.93456780 -fiat/revs sendtoaddress REtzrDguaT4m1hz9JJNBrhWxamfCG1kjQn 1.93727166 -fiat/revs sendtoaddress bDCZH7qzJ8nqnsiLq1123VAd4Wgd3byR8q 1.94455537 -fiat/revs sendtoaddress RLbo3UjWv9bT45RiYZwgrJ9bP29QDAN81B 1.94599612 -fiat/revs sendtoaddress RQfScf1meLqV9BRDo2QuT5hbQpienYF5i9 1.95091094 -fiat/revs sendtoaddress REf51DyPU7kyk4S88Ea7vD5wTADKaRAZXr 1.95304633 -fiat/revs sendtoaddress RW21d98WXt7XXNGDAZxG4VByLTtzEHekWj 1.95600000 -fiat/revs sendtoaddress RCrzyCkHN235TGnPeNcUvhm6Pk8EpeJQgx 1.96000000 -fiat/revs sendtoaddress RQiqMgNyVqaqetsgosDeP2LUFKVAm5Nrwp 1.97995553 -fiat/revs sendtoaddress bKB5RdkKnHKKjzQHnonvf43PWMkTtB7K5u 1.98000000 -fiat/revs sendtoaddress RJ2Fs5ymVobuQ6A8ttQTCfxNfBETNoZ78t 1.98088848 -fiat/revs sendtoaddress RWRAwwHiSGdjkGNbDfw9exEHifuwLjdJUW 1.98200800 -fiat/revs sendtoaddress bE6fVmnjfLRjfr9Gq86VTuNCoc86JhAHgL 1.98620009 -fiat/revs sendtoaddress bRq5CJZwSgb3k2aCXBLzDCRTP2HsLGmSph 1.99000000 -fiat/revs sendtoaddress RWCADpdrQZCTiyo8nfGqQ9siUBipet9zrx 1.99959601 -fiat/revs sendtoaddress RTvcjHngNQKXaK5NjPcH7Wssin7hvTkZ5m 2.00000000 -fiat/revs sendtoaddress RPJjzoKPb8idoUCT9XLBkNojNgysjJ5qrE 2.00090000 -fiat/revs sendtoaddress RE6qPxVbXsF8kFUSzgXQM6VQqm9SWrJKLo 2.00365927 -fiat/revs sendtoaddress RJrVCN7kMqVx9jVC9He1MWR3MeGViHsg4e 2.00980787 -fiat/revs sendtoaddress RVkeqmBucdaG9DTLbYanHZ8KzLkp7pFDkp 2.01242056 -fiat/revs sendtoaddress RHmXxYpYVRSM4uoaKb4iEQHMQLcs3Vjrik 2.01293993 -fiat/revs sendtoaddress bE6nkWV2BF5YWKwmHrirDPVQLAjj55S84m 2.02380000 -fiat/revs sendtoaddress bKzDfRnGGTDwqNZWGCXa42DRdumAGskqo4 2.04990000 -fiat/revs sendtoaddress RKxm7MdSse1JtHY7XBn3uHh1AJTT939DKu 2.05575531 -fiat/revs sendtoaddress RLGKaQYUEbafkm9kZKemQ83JkhUFF4uZ4u 2.06173997 -fiat/revs sendtoaddress RAkyFUu4fEXtpUuGDbzcjM3DSny9tiVzAz 2.07064827 -fiat/revs sendtoaddress RG3F4QihQgrKpHk5RsBwnCwDAds5rLLWqW 2.07695299 -fiat/revs sendtoaddress bV2A8j7JJJxpRuW1M1hUSfe9n6UEXQHEvR 2.08000000 -fiat/revs sendtoaddress RJT3MMQdahmsQzKMRUCfci19gJrUE9TgFb 2.08312949 -fiat/revs sendtoaddress RXzjUGvZ7oUrUTGaN2mP4aJSbLbqzpRnz6 2.08564650 -fiat/revs sendtoaddress RFJuCQAevqPqVDBGbBruMRRub72WDCiMeK 2.10001000 -fiat/revs sendtoaddress REvjSkX26zyPX7HgM6RCJgvkYjSLPdCZTn 2.13044119 -fiat/revs sendtoaddress RKJzUA4MvdFQ5F9PGWHaxkcEvXCKCGg4VR 2.16410519 -fiat/revs sendtoaddress RGzoukVA7fHUD6Nds6USQFsp4QkWjsBh8B 2.17894706 -fiat/revs sendtoaddress RRZARxvCqWuH5H4crSc6KjN6HFYfvGJ8Gg 2.21090900 -fiat/revs sendtoaddress RFC81cLV3sGMmqbCUiVrkBTGAXnHPg2V3K 2.21844875 -fiat/revs sendtoaddress RYYbrxAnF9szAsTitPipp9p4X2f5F37ZF3 2.22917835 -fiat/revs sendtoaddress bNEy6y2USZkmXfiWb7dx8Sg88rVJqfnunF 2.23217506 -fiat/revs sendtoaddress RWZNekyWtFa3qP9poAyKN23tZdvZFNG9hS 2.23284202 -fiat/revs sendtoaddress bWywMc6kV1G5x1ZJZoZxE7UJB4b2R9bbMD 2.23548655 -fiat/revs sendtoaddress RPf6z9yuQNg8gP58GYzgjSaLsq43UQ7oEx 2.24946914 -fiat/revs sendtoaddress RXPVEFk8NjAaCjyaSXkjo2dk8ZMiMCJWWn 2.26061327 -fiat/revs sendtoaddress bTUSLAm7UEij24FwUZd4TKFwvKVGDTPfyT 2.26307039 -fiat/revs sendtoaddress RSb5zwsBoTK1UkHTqFwTiPeeGVfacNztFo 2.27998400 -fiat/revs sendtoaddress RBTgQUaUkU1oRMusrGUKHCQVwkJxqoJBCS 2.29718810 -fiat/revs sendtoaddress RFGfsGR4u9F7UC2VtxDHH5dWR53gjfucrt 2.32198080 -fiat/revs sendtoaddress bUS5pwZBM744sY6gsaWMb9kNQHCb8U7MMs 2.32918072 -fiat/revs sendtoaddress RQykFxhNuBbGdGdcCp3kRrfK77NJ4fe2m9 2.36204605 -fiat/revs sendtoaddress RPp4fcMCnznHNAAfT3mVCK8sZLit8ULWqy 2.37664696 -fiat/revs sendtoaddress RRL3L1M9XZD2iRtScPAyT9tN3HkAtAukmZ 2.38743361 -fiat/revs sendtoaddress bJtuUb8C9LVj8pwMNHhjHYVfz6jLvLTQTQ 2.40912026 -fiat/revs sendtoaddress REVK99cVFsMupSPgnn98b35jGTARiyJMUA 2.41992887 -fiat/revs sendtoaddress REoZHPTDS5EVS5LZbt14JJK3KsLinWGWcs 2.42156948 -fiat/revs sendtoaddress RTRByU7B58URFDFJ3dyBeXP6xhyXQ68N5F 2.42619962 -fiat/revs sendtoaddress RUS9xjmpzaEr8w765Lqs4uvf5f4VV9Kwqu 2.47000000 -fiat/revs sendtoaddress RSRzzNnhMX26Jb3GKA1QjZM4LXkJT2mysH 2.48509167 -fiat/revs sendtoaddress RT3N8cQ3u51hu9yDfEVrKQDQwW3cXEqnq5 2.48874638 -fiat/revs sendtoaddress R9TYuUNUywNVrE8WFM6FNnr16pJy7bbTnv 2.49146775 -fiat/revs sendtoaddress RNKrApCguSxc7R2RWRZ3QaNTLCoT2qfovw 2.50000000 -fiat/revs sendtoaddress RWRoTk9tdhdiusKK8ZYx2H7zvoeMCG7nEg 2.50725545 -fiat/revs sendtoaddress RA5N2WrysZJqLNrocm9Ub7eFtgRuEpChb7 2.50897343 -fiat/revs sendtoaddress bUa9ZggkafUny4QdtBbHRWZ6ooPJyo7ms5 2.52752023 -fiat/revs sendtoaddress RQYku4fpqpwt2wdMGNpabeDtTzQA2kxjef 2.53994527 -fiat/revs sendtoaddress RRHTYjv9UDm7fn3bTmc37DwqpvUsoj5kQY 2.57131849 -fiat/revs sendtoaddress RL4zAeZBg5GHhbQ8TmqEcJQf8YZesmWZdt 2.57411256 -fiat/revs sendtoaddress bPFABV7tn7YjKiiT6JRt86kwFc1XFmJeGV 2.57541784 -fiat/revs sendtoaddress RCFsvyxWvorh54XBr3wWYs4j6huDUXRPp2 2.58877500 -fiat/revs sendtoaddress RVTMKYZDgpu2K6EJePhwXbfXyF2HJSALjn 2.62725726 -fiat/revs sendtoaddress REGmmJTUg8s5xD85RLinEBSAHhsMvmXHRa 2.63202023 -fiat/revs sendtoaddress RDqXcW6f7fXWELD8Krd3hQhyRv85BbknjY 2.63206417 -fiat/revs sendtoaddress RDuK7tiVG9i611zudsKAs5xiycRDLARzz1 2.65449250 -fiat/revs sendtoaddress RJ7tPLopmnk2w6MqvBNPxs4upARiDuLs1w 2.66827444 -fiat/revs sendtoaddress RHvoTnReTrY7FjXZcRgjyZGraAPAFFPCqR 2.67580000 -fiat/revs sendtoaddress RLsZsXxoHF1GTmWavAT1nWE4F5X9XgaRp7 2.69784800 -fiat/revs sendtoaddress RUdtBYhwwmJN2ioAYamNDE9eixUFiQUasK 2.74269645 -fiat/revs sendtoaddress RL4c5XhjvnQzijV5yAAd5G4oxCDsnTwjtS 2.74873446 -fiat/revs sendtoaddress RCsPHNjrhL7r1cWhgey35WZU61ksWnHjC8 2.75509594 -fiat/revs sendtoaddress RMihEZdA5SJCshcEmJ1cfYy4gKjpHMbGjC 2.76003097 -fiat/revs sendtoaddress RWmaVVDurBiZxTwkJ1LRWcS2CKj82BVab2 2.78395528 -fiat/revs sendtoaddress RT1XUGeJGzEEkwT3i3GjGXtcqq47eRCM75 2.78844263 -fiat/revs sendtoaddress RHybv6nbE8QTEXT15CyNc7wUXUb3RrUEY9 2.79749605 -fiat/revs sendtoaddress RJbQhJLpn2fWmEdxkrNfjU3EAcaFwLKYja 2.83312566 -fiat/revs sendtoaddress RACaaDhrZWEgD95PKbr3A1Lg1uKB75qQVG 2.84063548 -fiat/revs sendtoaddress RY3Ym6WDHTXHwSuWTJ7Zv3pCsJU2jDVKAZ 2.85660204 -fiat/revs sendtoaddress REwEabCzgasGBpJ1voD9G3bEi6o7yxppgF 2.86976420 -fiat/revs sendtoaddress bJXovSo5a7RwQGsTgkcSmvbMvW7zy8DJbZ 2.87000000 -fiat/revs sendtoaddress RWtKSzjTPw3ArK6ooCcAdSVaU4dzrULQs4 2.87997775 -fiat/revs sendtoaddress RGaswcCVFmxpZM4pcEdkP68LFiKwEAsLW5 2.90824900 -fiat/revs sendtoaddress RTVYgG6JfeAgqXT7xmFZa4MPu4QwWK4woJ 2.99000000 -fiat/revs sendtoaddress RDdRQ5j6LVspHfwcHeL21er236MvCPSj89 2.99158800 -fiat/revs sendtoaddress RQ9wS5HjveiXqBXaxwBCao32L9ogSS5s1m 2.99206721 -fiat/revs sendtoaddress RVfEv3qesfVXdJYRjPLMwQRGwfCxSNVnPk 2.99604321 -fiat/revs sendtoaddress bJZuURSaU6vCto4MJgeDrEiYDPNvibvuwz 3.00000000 -fiat/revs sendtoaddress RDvk2puiR9d7xGLg4yddUsLHxBEQ6Q5GG3 3.09347716 -fiat/revs sendtoaddress REjUEkSoC1SsLwnU1pGhYH1zs8DRqVUNRk 3.12909427 -fiat/revs sendtoaddress RBWWZxY7eUn5w1gCxHhyGkzNKpXBzVP4xF 3.13259544 -fiat/revs sendtoaddress bNFpwB3Wpy6TYicuhJ3TVMuhWdjERvazcD 3.13612794 -fiat/revs sendtoaddress RPm2iZjtCR4iUFGJmh5goC4WisemznUrF3 3.17226153 -fiat/revs sendtoaddress bJLdH7y8EMuxGoJJuQDRwhQqg64AcyY1FH 3.20101972 -fiat/revs sendtoaddress bbxreB4NRa3N5ApXFCvEm5MD6FnpjtS78a 3.22895411 -fiat/revs sendtoaddress RBgnekdZTPXo8HZwFw4pTAXZhH6a7MJhR5 3.23482598 -fiat/revs sendtoaddress RPLa6HQrRdXbHwfVbWzbSPg8sw26s7zW2g 3.27749623 -fiat/revs sendtoaddress RAEXYhfEXRDuRB4ief16ZoDiGNYoBP4DC5 3.29504240 -fiat/revs sendtoaddress bQLtNMSxwgWf7FRvkdvGWLWPxbHDYUnzgf 3.30380000 -fiat/revs sendtoaddress RFcGPCy4ABXnmDuhhzTwUyTGFthnrsbxqZ 3.32146226 -fiat/revs sendtoaddress bZy1RXoHG7rTgDcKerym64djkRSbHhqFrg 3.42157328 -fiat/revs sendtoaddress RPRqxGLZFiQwEpKoFeq3pA9YTDNQZgjw3y 3.44064699 -fiat/revs sendtoaddress RW9RK2gP4uwsdLd9vtLPuyqKzwR1hDG63t 3.44524832 -fiat/revs sendtoaddress RQqTgaoSLVFwZMAa38uJ5hXJFPpiuiNsgP 3.46075137 -fiat/revs sendtoaddress RCe8skL8hbBG3vMDqLAh3UNVQ1xhGaFhqD 3.50025765 -fiat/revs sendtoaddress RQ6a9R3MMY3gLyB3juFejLe6d4VJ4nseRd 3.52343620 -fiat/revs sendtoaddress RS5iwgvZF2K8pMrZWQX88St5RXowK6rL2D 3.53209615 -fiat/revs sendtoaddress RT1JF5w81bD9VPo2tZtGRYAavTY2A3aN3w 3.58176650 -fiat/revs sendtoaddress REtMhx1eqgAJCWi8ThEQQsSqP6xRi62Dka 3.58484457 -fiat/revs sendtoaddress bDG89EsDs9o7h4Q9mjSVGRsW588dAUdrqd 3.59331365 -fiat/revs sendtoaddress RS7hg4amfzoFuaQt2eTBZDqm34zrQKLLW2 3.59958961 -fiat/revs sendtoaddress RPQMSMtdUdRSqx8JN7vaAQfajbwC4zHM3d 3.60890805 -fiat/revs sendtoaddress RPHMzajSnHaDRXts3L4RS5BcJikAvS7T59 3.67122767 -fiat/revs sendtoaddress RHwMwj79Aq8Tpa3dXNdUNr8eTWWqquCUkr 3.68495362 -fiat/revs sendtoaddress REHJPWZr4RKX4sRXt3xyPaASuP9Uzfcv4m 3.69478143 -fiat/revs sendtoaddress R9NERQaSneNLBGd3NowTvmhaJizjdjVu6n 3.71517590 -fiat/revs sendtoaddress RR8Wsp5DTn3rmR4531kbbPYZTQVXZoCwm3 3.71915767 -fiat/revs sendtoaddress RKi5WEbiEQkPRJdwv6RsM5hRqByLTmoEjC 3.72300876 -fiat/revs sendtoaddress RGo6pr1kJwnmy7iqkhvWtSDBLXrhACcQVa 3.76892503 -fiat/revs sendtoaddress RDVHSwjjbmvRQ3pkNJxQPSQZwGzoTeNy2S 3.85839309 -fiat/revs sendtoaddress bHTnZNnT4BN7CcZu86XByARSzHgx9VBbSk 3.89492068 -fiat/revs sendtoaddress RYZdCN4hvqaffVUk6dvXKvXdVnoc6DsSW3 3.90798966 -fiat/revs sendtoaddress bWVvhfUNUZqukaLKF6v9vVxMBk5EKzvo2k 3.93362425 -fiat/revs sendtoaddress bTGYQFtwHc6jaxzhDgNVAxLXqgNvGBCTRB 3.96787567 -fiat/revs sendtoaddress RGcgWanVKKdNn3N5SJ8riiDzoCqhqdFaQD 3.99083039 -fiat/revs sendtoaddress RRiMVwZGskYaNKQ5U77ygt7GRhzFquSWJe 4.01959642 -fiat/revs sendtoaddress RCx6Ts9V8gRV2WExzQeGP5cnWt2mNmwerj 4.02463493 -fiat/revs sendtoaddress RHMq3Q723zevaDTk6EyPdFUvnSb4D7aFVq 4.02943320 -fiat/revs sendtoaddress RNjtvMBfE5gyVvpiHdZqnWz88xnQ87mTdQ 4.03000000 -fiat/revs sendtoaddress bLRp614oYpZCvJ3PjJpJG9Kw4GQBh9ui84 4.04690001 -fiat/revs sendtoaddress RVhGrmQKc3kE2oWfGKEdcAq6FLE3MBMmah 4.05228522 -fiat/revs sendtoaddress RExi2qBNpP2FxV4fGyJ7krVwdX8kSV2fwV 4.07342248 -fiat/revs sendtoaddress RRNZsaPb8rMEtkj9LQ4dUDxh8K2E3ntL1i 4.08531176 -fiat/revs sendtoaddress RC8tn2whAqacHxxGjEvYLG55tAFvJDz1j2 4.08862550 -fiat/revs sendtoaddress RWhwxSbibcQYKa2PkyVsQArHa1tjp8dpt4 4.10310990 -fiat/revs sendtoaddress RJUX3LKJwnCaTREMr1RUhbpTbQWsKhXmZX 4.11609401 -fiat/revs sendtoaddress RV1xc2KHBTmj6LTRKLah7QBNGyXz71DhVn 4.12372278 -fiat/revs sendtoaddress bSUjA8hYfQsqHPL5RyVruY9shnwy6aNzmR 4.13948139 -fiat/revs sendtoaddress RBspRqZnwNUKExmwX8wvbL3pK9FW8zFLzv 4.16600446 -fiat/revs sendtoaddress RN9JkMyiug2yyk6uvHU4x7bYc1gRjmT99Q 4.18806510 -fiat/revs sendtoaddress RQZ6yUnLwG4KxZWgHSjsysP55ELTQwgbFu 4.18891770 -fiat/revs sendtoaddress RK9eGduosS7qaqdK4WBdV7ekuErkcu1fmk 4.23609095 -fiat/revs sendtoaddress bQw3mN168fQuBpxzrt3ZvNoaTmBEpj8UCs 4.24456392 -fiat/revs sendtoaddress RYAkmpmghTXkzutKuHNWveQpxBUfpajbKn 4.25843165 -fiat/revs sendtoaddress RUuDFrhMXYowVRvAPxJ23iqW7JUtTFTxmS 4.26075162 -fiat/revs sendtoaddress RGsWp8uDpeaJyfe2BqBr6vPmZCkoPwcPAQ 4.27803826 -fiat/revs sendtoaddress RGJ9g8tP6T8LyWBp2giQUYwxD39xHi9bHT 4.29251906 -fiat/revs sendtoaddress RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z 4.31860001 -fiat/revs sendtoaddress RRXvDgiJ6wtCVWCjfqe7KHFkDFZDg9SmLr 4.32375278 -fiat/revs sendtoaddress RSY8jJJ7NRGvFr1gmvL7XTAXZuCTro7wgM 4.32644404 -fiat/revs sendtoaddress RPte7o9GeSdfJsHVPcYw6BiHkcZ7fV9NQH 4.32771484 -fiat/revs sendtoaddress RWfmdid5JYnf7TeaRV4gGLV7NLAcLhZT4R 4.33826339 -fiat/revs sendtoaddress RFXuXXffSu6PpVxw71WYyAYH2gW9ziB3is 4.36956575 -fiat/revs sendtoaddress RVRNfEidMxZRfCwLjaJGsVpEtrzr4tzH7C 4.42288273 -fiat/revs sendtoaddress RS1qbKDxj7rFbwuJR17k9tqEUfeQQztYEY 4.42527774 -fiat/revs sendtoaddress RRLuPbK9qzz2rLVYRbVqe6z2zYpx7dYVHM 4.42965965 -fiat/revs sendtoaddress bJtisakm5oUkdJQZHJMDz3FZDsjWZHR7Ps 4.45700001 -fiat/revs sendtoaddress RGQKqoiFKZVrAqoo6F88DnHCoX8JvvjUHQ 4.48512493 -fiat/revs sendtoaddress R9yXurqBmnjmpKuDkuRtkLTf3951ttGdsc 4.48859816 -fiat/revs sendtoaddress RLFLrKx8tpsoUi3YGaWR5UfebvikBENeZU 4.50632723 -fiat/revs sendtoaddress RHW1uX8E8VMCDwBRy3jSkQsQGS4n1U84uq 4.55672414 -fiat/revs sendtoaddress RAfvHP5Ew8iUd14xWa6CQWPYdR11V6F2pm 4.59747581 -fiat/revs sendtoaddress RTdg93uKWzpD5JNJaAAV5zKtufasdjYNK5 4.64825892 -fiat/revs sendtoaddress RXbdbm45JL6kSvy5kGdHZ4CFVi9CnEHWgm 4.69035736 -fiat/revs sendtoaddress RDPZaeCumMyHb1mdGvxNriZWHq3r6jjKQE 4.75309658 -fiat/revs sendtoaddress RBVL3L5V3MxwuAAuyBjDeL4ywZ63ipGJfm 4.76661661 -fiat/revs sendtoaddress RVepoYFYbX9R8pSNs83jaReqtBVcESPKQe 4.80115071 -fiat/revs sendtoaddress bP7vFSRNbFdnFRUZFe42H89L8AHJSaarL7 4.86350000 -fiat/revs sendtoaddress bJB2BvB57Pf3DiGWaKjcYGqRBP1YwoCzBT 4.90780000 -fiat/revs sendtoaddress RCrZNMtJm7PG44s9rZ6WwfntGzV6RngoAK 4.91402989 -fiat/revs sendtoaddress RWHonVjmsX5LF9MpWHh35XWfMGfQcceCLx 4.95706575 -fiat/revs sendtoaddress RHcRQFGpsSwvUN7C8Z4SvQYLZMbs5Ugz6j 4.98000000 -fiat/revs sendtoaddress RLytuweJthPvjHY6erv3owjYZg8rmMkS2F 4.98780303 -fiat/revs sendtoaddress RA8vVLi9D7kzCw8wcvwPmne3XJjdjPqZf1 4.99686523 -fiat/revs sendtoaddress bJJ4BtUdgz4QwSK221VyDNku9qBUsxcN7k 5.00000000 -fiat/revs sendtoaddress RNq9ZvNxAgKnPkGfho8DoLUTsSGSEjxdhd 5.03909090 -fiat/revs sendtoaddress RQGJuEfE9JJsrcxiqXDugafTfUuGGcK4gP 5.09814157 -fiat/revs sendtoaddress RA6XsEerNDRaC1M7gVtRYANafh14rWdHNw 5.10658589 -fiat/revs sendtoaddress RVwAm5E17BVxiEjNc6XUSmZg3pBWWvQxUL 5.16105657 -fiat/revs sendtoaddress RXcUfGadc61jpm8fsDz6p2fj4zSn9BmWGu 5.17217723 -fiat/revs sendtoaddress RG6gYZMxdNWkDwz31E1xSA9DUipcBCCrZq 5.17336848 -fiat/revs sendtoaddress bY7sNbdVUaV9jnq3WJsJknypqRuymd2NkR 5.21561285 -fiat/revs sendtoaddress RQtTteK9hRnDo9HR4tJgW2jJQdg6cGaLYG 5.26062962 -fiat/revs sendtoaddress RFcGSUKjSX3AtCyaF9hZn3TUuUWUuzJjV1 5.30055325 -fiat/revs sendtoaddress RLLS1GnQ928Y93iPzEp7P3kAbkLi1Si1P9 5.30359561 -fiat/revs sendtoaddress REQnuF9xcLFN4giC4JFK6xcNAtj5DmoyGs 5.31130764 -fiat/revs sendtoaddress RUJYuNkziiJQyfjbK2p6XZ7BLjwTs8Qvmj 5.33867197 -fiat/revs sendtoaddress bTL1aHX93V9YKzoEJ5mMkhq8w1isPsdjgD 5.34256292 -fiat/revs sendtoaddress RMWmAAyeYRTXw2FrZqJ2Tnt1Y6va8za7MG 5.36719392 -fiat/revs sendtoaddress ba6xGsVQBhoSfsuePXNeRLqVRNsSwrVhYM 5.37647634 -fiat/revs sendtoaddress RSoRZxg2hfBqeSQNYGtpHREj8Hs4hr31AQ 5.37745371 -fiat/revs sendtoaddress bMB4ECM8DHhJd4YP5zzktoyDsr5ZXsBxro 5.38691659 -fiat/revs sendtoaddress RVU6vTgkE64z7TXdhEWS4qJ3TTiELeDJjz 5.40441340 -fiat/revs sendtoaddress RDiLF8GjeWpqUGn49oQbJxV26v3nEt9sAR 5.40540711 -fiat/revs sendtoaddress RJbFz9QxGgJZ9ZzYUA2gsrZV7KrK9P9RNa 5.45916020 -fiat/revs sendtoaddress RQHpFq2hP1DKsdzMMqm3mgs1fBWNrr8VMd 5.48588608 -fiat/revs sendtoaddress RVh4vRybmr6vdtcJYSxbhtbkHXEzmJfRJk 5.54283710 -fiat/revs sendtoaddress RRdvTNkiqDL5RyifpFSMynCoPUQEo9b82w 5.57804444 -fiat/revs sendtoaddress bY96rJtT6E5Hsu8kUWpPLwZkQnNTa3vugQ 5.59161129 -fiat/revs sendtoaddress R9aKC9fDGx7FCsEGRgxqhUeKbGx1NWUzYb 5.63387351 -fiat/revs sendtoaddress RVCEeszwRkLz97FwuvxcWBMzHnWzVXBiZj 5.65838637 -fiat/revs sendtoaddress RJ9hR9mDHaFR3aCDjXvM9p8A7LjvhsL4bB 5.67842818 -fiat/revs sendtoaddress bWf9LMCfvscafJbkFdmmGxYVTkyWtayaBg 5.68573823 -fiat/revs sendtoaddress RLu679Jerpk4TRdB4JEBeomKHxHKpHtAWD 5.77791739 -fiat/revs sendtoaddress RCfxaAv2aqftKGq3yx2bXNtYsp5DVPGKAa 5.78934941 -fiat/revs sendtoaddress RXevAUM5QbSUWyyUcNkQGbLsxRPnQagaAf 5.95388731 -fiat/revs sendtoaddress bLvqs86RAZA4z7pPZgWk3JUDSFhzYH1gkz 5.96138993 -fiat/revs sendtoaddress RTERUvGEuKjv5q5HkrZumQ8jT4iieAvjxB 5.97079602 -fiat/revs sendtoaddress REWN11YhFm9FXuA3UjtiE4MWNytdF27ZPB 6.00558341 -fiat/revs sendtoaddress RUajR1po4RwaW8AEBSYvGuTQ7wTFfXUDSB 6.02345907 -fiat/revs sendtoaddress bJY7DSYsS4T5xHFJsd2AgaZtPZVitXYRJe 6.02384480 -fiat/revs sendtoaddress bNAG2b3hsNqMZjtp2Nsx82AK2ZYzxECdwb 6.06434319 -fiat/revs sendtoaddress RTfUWsozDr1UyzGkqLCjf8Gcy8RX1nMZii 6.09834713 -fiat/revs sendtoaddress RUrP8wAG9Q3AWnXoQ5GtQQeHYzED4z6Fdg 6.11569832 -fiat/revs sendtoaddress RHh28ETXZbxRr115cuwviah5rYREQhTX7G 6.15465639 -fiat/revs sendtoaddress RJMjSghHKjSxUju79ZEFfotF3U3VzWjMuo 6.15607830 -fiat/revs sendtoaddress REjW5f2tDj359qPfohXJTuQmQH4fygXo3d 6.15875877 -fiat/revs sendtoaddress RF2ECSJgGiwUNsyJkgmQDYfvKJatFPfU5h 6.17851917 -fiat/revs sendtoaddress RNSzg9StyTZCtpHkQAC6ZkQWxMYiR9k7hT 6.18106775 -fiat/revs sendtoaddress RTZEL1RZ4SW1UvvYNWTDWFbjdx7cPzuo9V 6.18142560 -fiat/revs sendtoaddress REmhyAviaF38EVcF4AGekv2THdpk5Ygiuz 6.19264761 -fiat/revs sendtoaddress RAgLdxBGDkzE7uBXAgbsPBDM5mAC5n536L 6.25307746 -fiat/revs sendtoaddress RPjMSyA3g8BjoUUsriQvdD1NLrrK1TB3Mz 6.29263862 -fiat/revs sendtoaddress bEoKuv3ZQATw3ZJLpJyP9xBZ22KZeGGHbM 6.29978870 -fiat/revs sendtoaddress RXn9kR9D2XNGsjCTGtU4AwiEz9wx5hivth 6.37285131 -fiat/revs sendtoaddress RXe9gVvBUiobEZpD2kin6ci3rqjcdTxQdq 6.40626439 -fiat/revs sendtoaddress RP519KC4eJ5VubBM3m9h8UWj2G1DrqCGyk 6.44654665 -fiat/revs sendtoaddress RKNUssHQ1MVm9RfYkMFbtqmH8hTPjLj1x5 6.45071233 -fiat/revs sendtoaddress RPN4UxMojhN21FAAjanY2Ym3DbVRx8baHM 6.47991749 -fiat/revs sendtoaddress RX5nuag97TfD91vBtsYfMmkNU5mFwxRpjs 6.55679133 -fiat/revs sendtoaddress bLF3zxeasZuDbWLJjvmEfGsWZj4Ef5Maq4 6.57726223 -fiat/revs sendtoaddress RDR4wckLqkbSQrVm1QVmEFNRpvdNSEnuZt 6.57751649 -fiat/revs sendtoaddress bZ6QvZdesEFM4rVoZeTbVVyUyuX1tVmPMJ 6.61263963 -fiat/revs sendtoaddress RRsgbucf31dzNkdrke1dCYTQKDna5jzMGY 6.66225723 -fiat/revs sendtoaddress bU56V7Qk4egxMpF3Ty4E9MFY66fhHEjZ6C 6.76298899 -fiat/revs sendtoaddress RASgmQ7vpS6ixq2oRamQ7pdfmraLwgETki 6.82799533 -fiat/revs sendtoaddress RCCahX9yNRkpq9HaL58kC2fR1ZjAFsy7Ay 6.84109943 -fiat/revs sendtoaddress RD1Ki5Qkzx19C4tu46TV9s7U8zDH1Uzp95 6.85401372 -fiat/revs sendtoaddress bMr4ZKP1415NwtyqoLRNkuBJwUYnk3SMWp 7.00000000 -fiat/revs sendtoaddress RTuALQT8coBXcLnYmRHajhZHw61o1E2KGd 7.01513900 -fiat/revs sendtoaddress RCGoxVfZpGs4dxUs8DcLDTfojL1wkWMxcL 7.02508499 -fiat/revs sendtoaddress RCCAQhsikDfUuemcpT52M82VP7DPpN4ug4 7.05979335 -fiat/revs sendtoaddress RVw3oQ6ap78HGn61K7CSCNBz2jg7kE2ZHK 7.06099231 -fiat/revs sendtoaddress RWM7cZbjQ1t2GyyGWkfDwxTmkxatLCbM6J 7.09011587 -fiat/revs sendtoaddress RVP6S4o6bCtWqRktETnwcpX7symQPnw55h 7.18860202 -fiat/revs sendtoaddress RKpek9H2vrekZ213cyofxUjhSDY6Gbq91D 7.22046828 -fiat/revs sendtoaddress RYJjYsaK5AEegbYvvT42vNGysdK7UYpcDS 7.26124120 -fiat/revs sendtoaddress RHS9zj8CR9yAnjcfUbNV37Bh8L7CQh6jLK 7.26198113 -fiat/revs sendtoaddress RM76KfYhKNTmvshcWehrLP5ctFRdX1G7DC 7.27877611 -fiat/revs sendtoaddress RXtqtekeWMhzW261sBvaQ2bEm97zsM9xT1 7.30896024 -fiat/revs sendtoaddress RDTH8uPQXZfhLreqpAKBYyhUNLZr4EHQPn 7.42232722 -fiat/revs sendtoaddress RTVhP1vHoFG6EHdKi4HNCi3Vrd4zj2sPRp 7.47550000 -fiat/revs sendtoaddress RCwxX8YjgWnDJzUcb46dAjrPHyBjzyudjE 7.47872317 -fiat/revs sendtoaddress REJjfqXKShS43BHqUxLpx3uzwt8wz9c1zx 7.54805723 -fiat/revs sendtoaddress REN5wkHRo3UWYY81sGgV2R1vr5m4YkLyyX 7.55087913 -fiat/revs sendtoaddress REGEjAsxB9MCUV6W3VD3ioz1kHpHX6zjiZ 7.63189129 -fiat/revs sendtoaddress RCLgACGpktPD9vKAnEYxQDQQppKt9LnfmG 7.69901513 -fiat/revs sendtoaddress RA2SrMLyfCdzNHZopFKX3wBzE4Vfpo8t2z 7.70733708 -fiat/revs sendtoaddress RKZSYmdLj6WhfwSkHu7Y67w4K7hSPyquyF 7.73050202 -fiat/revs sendtoaddress RDixr3uj3gKAkYjSotrEQoTPVBoM1p6Fi5 7.75437207 -fiat/revs sendtoaddress RUtSnBuS5H2EvXjsv21fbQds5q76BUG6q8 7.78695249 -fiat/revs sendtoaddress RChLfZZo4ptQmWndAw2FaGuv72gUcCeG42 7.82175932 -fiat/revs sendtoaddress bLRMfoBCRgYCKahVfjs8vDhAANYCrwyusX 7.98287448 -fiat/revs sendtoaddress RB5vwEfQ3N7GJ39qQjGTbteQ5K8U3udUDu 8.00000000 -fiat/revs sendtoaddress RVE5bbkWVYDsyY4yW4L7E8m9gFQBH2uod7 8.00916943 -fiat/revs sendtoaddress RGnfzigKXUuRWf3XczBoQxXbG8766bVVFV 8.08700041 -fiat/revs sendtoaddress RE8cvJBtbEsS8B93m5tmFEzrAEQZUFEVKU 8.17119008 -fiat/revs sendtoaddress RMFuMuMuDaY3ryXAkF9WCd5uQevGMKW7EC 8.25112000 -fiat/revs sendtoaddress RK4YuiJo8PXaz1MPDpkahSNxk4PiQxWry8 8.27336417 -fiat/revs sendtoaddress RSVYZFNfpxWBSvmWo1wx9TrjrMmJTc6NXS 8.55864135 -fiat/revs sendtoaddress RRhPti7wzrDr41soAJr4c5dpKXyqZokJhR 8.60934449 -fiat/revs sendtoaddress bLj21adcDpdu2WMpVuyWNtzQkHMUhzzBxd 8.64768637 -fiat/revs sendtoaddress RDDhdWuYrZMciPtJP23S2uVFny6vb9X7iE 8.66077898 -fiat/revs sendtoaddress RNTZjRB162SPSdHfNUEzvYTcVw1y2PPXUU 8.66444303 -fiat/revs sendtoaddress RTzB8ezpXH6C1GB89PjX4XoLSVwYCS5fLQ 8.66577801 -fiat/revs sendtoaddress RVQV5spiARDTqfwBCxstWnMbrT6Q8mhRYz 8.70430000 -fiat/revs sendtoaddress RJ85BeANJJa2wJjcXRGUZQWTRTnnqVyJvR 8.73016364 -fiat/revs sendtoaddress RWQrMiW84qn7G69hxFA6Xws66cMPpiTLGU 8.75387271 -fiat/revs sendtoaddress RNnjQ3VrdCAq8M9wQxuF9amyetjCLnxogc 8.90245080 -fiat/revs sendtoaddress RHrQ2NJSHeHTouBJyk1b8jsQ8M5RZYtNBK 8.96604688 -fiat/revs sendtoaddress RPFKYt5xoowtPkcn4yszFSRpUEnktymetG 9.07044639 -fiat/revs sendtoaddress RMvT5Yiqf9XUVxeSz3gRe4s1RQiRVYKtf8 9.31783113 -fiat/revs sendtoaddress bKXGYrJYDMa8tLznG4KWBHJ9s7iYQHfwgy 9.34414085 -fiat/revs sendtoaddress RKWsNksSp9wheZJmAEBXqsguwyRt7BUWC2 9.40598001 -fiat/revs sendtoaddress RPM8y8JFL5svCr8osxJnfQFR8YAzhWuWxB 9.42863849 -fiat/revs sendtoaddress RRXDmRBVgQaEWZD6zEBrXobeShAibTxAMd 9.48885324 -fiat/revs sendtoaddress RBMni8BcodshhstqsDY6Z2G2VoV98exkaM 9.53705814 -fiat/revs sendtoaddress RLxixyXF5sqpaAudjMeL6xHsCz3gagonFA 9.62088045 -fiat/revs sendtoaddress RHhHcEga7TcgmYVS7Uny4FxpA7gyMgDXgn 9.73476933 -fiat/revs sendtoaddress RKtHAoxJLN8LhUPZh1mR1tFgLKG8nPWTCx 9.76245781 -fiat/revs sendtoaddress RLH17YLRpFZAj2pvKerVHSatYfxchrZB4F 9.77918294 -fiat/revs sendtoaddress RAEhAyrVT3SBy5RgsGNzAb1ET9teadNvQF 9.80265036 -fiat/revs sendtoaddress RM1FH9jneo3DzArwhFjVVkCx2oSZhHNXbk 9.83053279 -fiat/revs sendtoaddress RW4QXNm4iqWAdJBXiHinPjJ85H7Z3zhhJh 9.94000000 -fiat/revs sendtoaddress bPtJnUANkDa7qH5Wtztex3tL3N6SrrGUzr 9.97000000 -fiat/revs sendtoaddress bGCkEU15D4L44GXFL9WTqAZd6JJmgcyGAg 9.97730000 -fiat/revs sendtoaddress bTWACpopGbMuUmmXCTr1TKCc2oZdqrRYtB 9.97800000 -fiat/revs sendtoaddress RGxx6Dt9BD5bDrBKTFshkzgzJEf5j9drkT 9.97990000 -fiat/revs sendtoaddress bQbVVtjwoqr8uSfwyE3Ndo5QzSTrWo76VG 9.98000000 -fiat/revs sendtoaddress RQRD7qPoe2kr7qA4cBJ4RXPSVAmqfJc6wa 10.00000000 -fiat/revs sendtoaddress RLvSkAwDUdMJzS32hnz6txeasC1H45u3oA 10.01628389 -fiat/revs sendtoaddress RPBZL2cNrMaKRM9d8jVkJyK1XgLErNjqBb 10.04589271 -fiat/revs sendtoaddress RJepZPEKTnjRCqs74a2WtiFc3jfDGWAKU1 10.09575378 -fiat/revs sendtoaddress RKxdtxraDBfkFcHVwnBsJyz5xqPJAa1PWg 10.09875834 -fiat/revs sendtoaddress RXug7zpcUDXVLvi7zyGuV8nPpH9E5z8A9W 10.09934689 -fiat/revs sendtoaddress bUpDGMBSkEkaXmS3Va4x8XEKRSwHo1zANz 10.10000000 -fiat/revs sendtoaddress RNjLw9C8qfeA4465ZgSm5e3vWo2g9fqnhp 10.12231392 -fiat/revs sendtoaddress RATZjtx6Jb2qJPxkUfGC552bUnPvxr2k6J 10.12324646 -fiat/revs sendtoaddress RTppyFJBBTux2WWme3VN9W44b9t3nQcaqh 10.17085261 -fiat/revs sendtoaddress RAzZ3SApjjECcxKRAbfJpsKv9XLwXfZSXq 10.22925792 -fiat/revs sendtoaddress RATLjzZDPj9pMRk39i3yku47SxCKeQ29wT 10.27439517 -fiat/revs sendtoaddress RAAhGiiHbDVTmcFtHX9uSmpeMwwZpRbng8 10.36000000 -fiat/revs sendtoaddress RKXDhcAH7CCgf6SqSnQW43b5znB7bcjivf 10.36425561 -fiat/revs sendtoaddress RVTGaBfe1aCWR5uXJMMgikRfP9DnAHABPw 10.40724092 -fiat/revs sendtoaddress RAgHbPuF3pK7UjQ6194G4qtAHPxHnSQLgH 10.70551662 -fiat/revs sendtoaddress RWovFPYJdsN8EEyvna5cuTrF8cyHoN7Xvi 10.94374601 -fiat/revs sendtoaddress RG627XfAkt2EEm6wjspECKFZLTd7CBt8ye 10.94403493 -fiat/revs sendtoaddress RY51cChTJAM3Vu93S1CxYCXBqoaK3pcSP4 10.97863973 -fiat/revs sendtoaddress bFsCjoceWYkpGnRZQ64SZztN9KWhtaFrGu 11.00000000 -fiat/revs sendtoaddress RCNL1GJuTVt88dgnuiwS7i51ztjYHpPKF2 11.08420000 -fiat/revs sendtoaddress RC1h4zAjJcoXq5q637dK7QofvzXifi2wri 11.29086294 -fiat/revs sendtoaddress RLE4TTGnMPma6cY2M3C3YQnEUDjHienMwo 11.31241989 -fiat/revs sendtoaddress RFFNMEGjko4PFsbzf6MnNQeChwkkSSaGxr 11.37982774 -fiat/revs sendtoaddress RFAUxLikD4e1xfumD7qUBvu9LwP2NLXJ9m 11.46412992 -fiat/revs sendtoaddress RXQu5iNhbKmMciB8yb45FKa7MEykdNnBdu 11.46809665 -fiat/revs sendtoaddress RY7JPTHmLVyZPaC8dqnifyTTjdLGFTKcbP 11.49885173 -fiat/revs sendtoaddress RSi2k8no5EjRPVvACiEjuMEqR1nuMvVpQr 11.50552477 -fiat/revs sendtoaddress RUndNcE3waCCYmSir6YAEPqQ13vrtW1U2n 11.50998241 -fiat/revs sendtoaddress RLZyNC1mJv9xv8XW9zmNtTbWjmuYXPwYun 11.59027663 -fiat/revs sendtoaddress RMZXWs6iCKcy9xqzFqSQRNjxDYgdPNtHa8 11.61497275 -fiat/revs sendtoaddress RCfwEwNiVHbE9ZtviNEwip5kX7Xw6bBuQy 11.64061118 -fiat/revs sendtoaddress RMwewBVYypysdK6kgyViygPeegCRBQKeAx 11.72419877 -fiat/revs sendtoaddress RM6zMhsezMzcdhiQxiAJYmvs4gHUYomnxt 11.72940887 -fiat/revs sendtoaddress RGQ6tqNipuKa2g6jNva2bRJVS5t6Wwdq61 11.91053184 -fiat/revs sendtoaddress bMBrJQzzyjadRf1hbefP5NYth8KCAJv4ue 11.97804853 -fiat/revs sendtoaddress bGzChjyd2QSy6ngHvaoZoWsvSHoS75s9S5 11.98000493 -fiat/revs sendtoaddress RGnJK86j6n2gxJ5yM8Y8JU13A6gn78LFek 11.98632762 -fiat/revs sendtoaddress RKXvhRQoVM57PMnXHjreBLuSdC1hNv66nX 12.22549689 -fiat/revs sendtoaddress RNbE3759WCwGxZK4H8mkpAu1N3DZeeQQ8C 12.22838967 -fiat/revs sendtoaddress RDg29vmrLNZRxWrRwW9qMhr5f1Dc6obMJp 12.23635859 -fiat/revs sendtoaddress RLBrfF7wA4XawMeWuEjkGQ6Vy4xRJ8L9Rm 12.26271901 -fiat/revs sendtoaddress RGcjC2ZT5jABMYegPDaZXQKMH9yQ3FP7yn 12.45720563 -fiat/revs sendtoaddress RJZ37ZbAE5gSCwzi17gjvzRERC8zLEwzmX 12.48602133 -fiat/revs sendtoaddress RNzYbCtkEw7dCt2qyC5XLPANB1Fyt5QpUd 12.63140000 -fiat/revs sendtoaddress RYCRYF42iNjFmFpEcYBj1BaSj893vsP4jR 12.73240581 -fiat/revs sendtoaddress RHDz1SBqnogKuDc4yGjwrpnoDvYoz5TEEE 12.81132571 -fiat/revs sendtoaddress RJLiW6quCrwEgExwAsJcBLhNgxZCTxbVjF 12.93284052 -fiat/revs sendtoaddress RRezFyHPgUNu7Mo4rdyPgxXwA6TzyZvUfF 12.93365966 -fiat/revs sendtoaddress bEfb9xoDhKSK8mvFBfuJwWiB7pHqEsDoy1 12.99702667 -fiat/revs sendtoaddress RMY62TF2rZ61Y2LE9rnyaejMGhyR5r4ga6 13.00138970 -fiat/revs sendtoaddress RCziZFrJmQQDcMziVuL2sr5GQPUgQRZgqS 13.08556125 -fiat/revs sendtoaddress RRq5Wna4FnVEsEqvQiSjiH1mrBJjuDqMpa 13.11364546 -fiat/revs sendtoaddress RPN7WeABqDw9gmoE7jzQKLFU81521uJT59 13.19427008 -fiat/revs sendtoaddress RLVsyrnFVyh5g2AXRwxEywSGVTzLHVvDR3 13.21087443 -fiat/revs sendtoaddress RKHt6mmoKrLG3DSjv5KnDU7szqUiSG3Dy7 13.32421245 -fiat/revs sendtoaddress bRHewpfqA5YpGvff6YiSMbFSTjS792HZP3 13.40000000 -fiat/revs sendtoaddress RUyYEBCp8yeEmxA8rZdSX7JAHYffqf3w2H 13.64425051 -fiat/revs sendtoaddress RKDF3bRUTQTQNeXahroqU5fcK7XLpcUHzZ 13.71270708 -fiat/revs sendtoaddress RTKABgPTaekUvupeLVtord8C7RWoRTi7Fz 13.71530638 -fiat/revs sendtoaddress RE98nBuhWCu7UpxsBTSqbK4tGAWwaDFUzD 13.77683460 -fiat/revs sendtoaddress RHhQXJM12G8xKaH1e6JM27vgGKNavZitRf 13.85923910 -fiat/revs sendtoaddress bRMrnxqd4DnmC7jzhLBqHNoazbGZxtjXy1 13.91898000 -fiat/revs sendtoaddress bNJAhxa7uRQn7X4BWQVotaGmV5ihmkRzb4 13.98000000 -fiat/revs sendtoaddress REigyrSa6rg4kh5JnzHD5Xmi7LUXK7P1Ro 14.07056206 -fiat/revs sendtoaddress RR96Qg7pMbPMJ2W7g2y9LqUuN29jT6Vftn 14.08583460 -fiat/revs sendtoaddress bDNSNBjBMGu5WXYqZV36qDdGhu8JLeW8oq 14.38667315 -fiat/revs sendtoaddress RJ6axNdbzY7KwRBDRXGYAstdjY2ReYdKHD 14.39206871 -fiat/revs sendtoaddress RKDuPMsNqAchvvgHit3FjCa6xXj3MBYFE7 14.44006093 -fiat/revs sendtoaddress RTFkVz41dAidUbZNi2KjhJYDJwVFtuvRNa 14.45799256 -fiat/revs sendtoaddress RP8ZdDgwnC5hkv2pRhLHWJA3QUor6vV8bw 14.60896206 -fiat/revs sendtoaddress RMz7CnEbCarY4eWcauV8zPA5VbiwpV1tBq 14.69168104 -fiat/revs sendtoaddress RVhuV561hXCCWiqpSTXeTJVRBR8aghZCVm 14.79301683 -fiat/revs sendtoaddress RWzkYvoCVean8EdWv5BYcPms6Pd4WPfVtg 14.84881740 -fiat/revs sendtoaddress RJkVFVJjBLkjtqWAcoejf6N2YwtyFpx74e 14.86126740 -fiat/revs sendtoaddress RPKHftKfT42qC6KLkAJNd6qt7jYoJ9uYB2 14.93004526 -fiat/revs sendtoaddress RLdRxr1d4JgfHVqhHMgK5HkaVeRkNbUaBk 14.99000000 -fiat/revs sendtoaddress RJrntvb2jYahU1KFrwvPErLq6fH3vBH99V 15.07434953 -fiat/revs sendtoaddress R9dMSZYhjVar5WPEiMfJtx628xCchEkkns 15.14149722 -fiat/revs sendtoaddress RRyNrbePcPoxjdUZx39saC5bezu1EwbnXU 15.23806169 -fiat/revs sendtoaddress RJxBSmJSn7Gf1MVc5xTohPe2NBZjgJSYDx 15.41660974 -fiat/revs sendtoaddress RN8hiGJkqi7a5TuhtnWh5Xrv55qdsw1LaT 15.47900157 -fiat/revs sendtoaddress RRXW4oiL5HQxeffXQPX16sY2RqVxxsNR4i 15.57990000 -fiat/revs sendtoaddress RL3EUFd4U3tNKCFC3GPTxUknrjMLbaDwWq 15.59110501 -fiat/revs sendtoaddress RL89Nq2YVnU1cx2DimvBSUuDKJDo4v79f5 15.71654101 -fiat/revs sendtoaddress RM2nMWMeQ9Gw4GTLq3m5eXPyzbwB9mppxc 15.84493003 -fiat/revs sendtoaddress RHtUj519CWFXZLYmxqTKnzXujNQ5BcDQdH 15.86105167 -fiat/revs sendtoaddress RGM5Azshb3uj6fYf54y4t2Uk936ZCZTEu3 16.30462792 -fiat/revs sendtoaddress RPuUeAMvAPSepweaSFaDKgbaugdvKyyhTx 16.34892435 -fiat/revs sendtoaddress RE67nbSrh2hDEADHACNWsxtxVkQHkb2gBo 16.41382706 -fiat/revs sendtoaddress RDBBd3eQdieMBQ6GfKZwcpMKzNbeKEp4Cb 16.59177141 -fiat/revs sendtoaddress RERSUpqfSCbdoTSpQWhwwe9KqDaDYJG6CU 16.70612498 -fiat/revs sendtoaddress RQpserUdG9MEi5HWnq8XwnxD4fNFk5EQfc 16.71481224 -fiat/revs sendtoaddress RYRLVH8J2YUM4PSmRn4US4CEeXfev5oyVT 16.82656086 -fiat/revs sendtoaddress RTJHsf5YGCnpzmjXSLxmdApcJ9FLe1scZr 16.91416826 -fiat/revs sendtoaddress RGVYJst5uBroFFL9iZduhrMQnJwp5CmgP2 17.10952827 -fiat/revs sendtoaddress RGGT2ew3AQsDGiTM3odnCUyiv28e1vMjQ3 17.13634047 -fiat/revs sendtoaddress RE5N6moX3S95h9P1o182miapBuVCaYUpHC 17.54142304 -fiat/revs sendtoaddress RLfoQiJ8Zz3DTpvTcJRF4EmmgdKTZSDCBn 17.76085471 -fiat/revs sendtoaddress RGPxHboHchYagV4YUjyzS5x12YaMdTNuTU 17.76559916 -fiat/revs sendtoaddress bTisc6Jj89hkfUfKXaixKAE2eDn84JBchG 17.98000000 -fiat/revs sendtoaddress RVGEtfcsr2tuFpEJ9fe8YKMLnWScH3eLaq 18.11802172 -fiat/revs sendtoaddress RAYm872orBvw7DBX7r7SjwdKusHCoP16QC 18.22020782 -fiat/revs sendtoaddress RLk5xhUE4yUeAmakHbCWaAxeFxXiMhbdx3 18.27183189 -fiat/revs sendtoaddress RQv94vYLnrUm3oTAJijoma5pHxFPLQkAkU 18.28349476 -fiat/revs sendtoaddress RWMW2MmVpxHeeZ7CWbxjbdvFwR2beU9XHX 18.71186656 -fiat/revs sendtoaddress RLxEbFJZk2eMBApNLtp5CPMkecAsud271x 18.79673763 -fiat/revs sendtoaddress R9JprN4X3oYP45QUx1wiRbgUEUZeffYDP9 18.99990000 -fiat/revs sendtoaddress RQXCg535VfPKKav8eRHFbKJYjhnSEDYyF4 19.19168638 -fiat/revs sendtoaddress RE1fGebb8dQ9nbC6W4BBY1wsSRwERgYUK2 19.49566224 -fiat/revs sendtoaddress RJDbYk2yPqefWTGzd1euqMeanrta2wgXwh 19.53159729 -fiat/revs sendtoaddress RUzuV9tWd2QCwnw9QAdF6Rvu1f1rxU6vV4 19.70650000 -fiat/revs sendtoaddress RQqCqY27MFw7Bz7tuZrjN4Yv52yX3trhLV 19.96986886 -fiat/revs sendtoaddress RY6oEhMB9XhLhZCYRJ2vDf3r47Nega1qvi 20.00000000 -fiat/revs sendtoaddress bbhNkGRmsdCdef4oDaJ9TnB9KBzD4U3Hqi 20.00050000 -fiat/revs sendtoaddress RKK26dWi9GeUA7DKcTztuFWcfzAHZQB7yg 20.01297681 -fiat/revs sendtoaddress bb7wzpimc94Vmy1LJqWA2u3AinCj8MYHzd 20.05410472 -fiat/revs sendtoaddress RA8r962ZQc8vzENfrDPUqURFZy7TnTFLMN 20.08202268 -fiat/revs sendtoaddress RStZxiAUeTisYU7bSkRDHN7dZf4ye8spkK 20.08980500 -fiat/revs sendtoaddress REw3BxmpcDT8i1DtnnpwyEbkdtfh5DTC3G 20.32291312 -fiat/revs sendtoaddress RHnqXn3W984FzeNp5ZyvLEpz8f7eiLR8yn 20.36885561 -fiat/revs sendtoaddress bG1RRbdWE6M6mbDBdTtZ8i7VQLFPavd7xq 20.52186953 -fiat/revs sendtoaddress RSJcMZuzcvr47DoYPMquM7ciWkN4m79Ats 20.70261657 -fiat/revs sendtoaddress bRv9NA2yL6NLj158NrkdVkTL555Pmffweo 21.06991058 -fiat/revs sendtoaddress RUnbfGwqwgaKniaUzmNRgaD6suCMkpWsSy 21.17667297 -fiat/revs sendtoaddress RN6LmMTEY9yCmpszz9QW92Nr6TjruqRRUg 21.21727192 -fiat/revs sendtoaddress RTkEpCiLFdks4H7MNsbV67hxXPScHKJYTc 21.23403553 -fiat/revs sendtoaddress RYLfBUkCVR8ZXrRijBS3i53akQw4u5cwX7 21.50295318 -fiat/revs sendtoaddress RD5t75MABmK9CvGYQN7a2cYcTE8obAoeSj 21.52317207 -fiat/revs sendtoaddress bD4nDFKiCLJGJT22gbVrFro3dXiET5nhPh 21.68163463 -fiat/revs sendtoaddress RAE6RubBDc4ojW8U2CT1NS95Hf495ahn9A 21.76541771 -fiat/revs sendtoaddress RDRgUYhC7752xwDQrAqUi1DsxWjyiZSJtx 21.85310020 -fiat/revs sendtoaddress RTgYq4LFL3LiT2qBHS2jLQJVcR9wAVbdVq 21.87197169 -fiat/revs sendtoaddress RUcY7jNkfcr7FdCGicxm6rFFMsftVG2q5g 22.22900000 -fiat/revs sendtoaddress RTMapTtbfKjqcHyJRH7bnA8967UFFXeoKw 22.72955192 -fiat/revs sendtoaddress bSwduqERWfjSLtyEaDhkPuYaWsB4GiRpeh 22.88086692 -fiat/revs sendtoaddress bP5YYJuouR2zkbRVTmbRWDM5EUzZXFf5wW 22.92160462 -fiat/revs sendtoaddress bUhCLBFd2rmfPvmbXWXg7ZrxdQFpNkVs9W 22.95887915 -fiat/revs sendtoaddress RLnfLx1jHoAWWHfLwMB6uoGDU6H6DUc7s6 22.96060896 -fiat/revs sendtoaddress RGk2XbwmXxbgbyZ2ED7f8pDqzCnJ4JugAZ 23.63488442 -fiat/revs sendtoaddress RTA659rVfjuZ9nVCeF17A2tSEX57HYUpT9 23.96332418 -fiat/revs sendtoaddress RCZriSKpiSSmgwjumuiMP2XEC2FgYgTrBf 24.05385000 -fiat/revs sendtoaddress RSf14eDKMwqirfEhfGwFdxwxEn32k88aQb 24.54185339 -fiat/revs sendtoaddress bPWMmT3oDWqQJy22UiFqEerbwDgvHBmJdv 24.94000002 -fiat/revs sendtoaddress RVdE9TtbBER6AX8VKEzZ7c67wLzAmKGxVF 25.00000000 -fiat/revs sendtoaddress RPPDVgfhnvR2VY87rSN52ECwkmucqDwoHq 25.09012689 -fiat/revs sendtoaddress REFZgK5DiG21VNYYspvyJcoEcu3w9cN1m7 25.18682282 -fiat/revs sendtoaddress RGJDE8ZhKcKwBhQ8pA8PHAkxMabjR46DLX 25.23164985 -fiat/revs sendtoaddress RPZmrnCKnZJpEXDjqwF9tR1NnrPsGyNedq 25.30329901 -fiat/revs sendtoaddress RPsudhrty5f3RERUQKb8JqT14kWJ8Pgo2t 25.31263322 -fiat/revs sendtoaddress RTVhcwSx4g8zQvyfmzBB7eVMZHUenG5Hbp 25.52825141 -fiat/revs sendtoaddress RVU87RsgsPs5XCd1cKxek5Cm8UMdYb89Zb 25.56542965 -fiat/revs sendtoaddress RJA39wH5wayxBQ42FEYq952Nh6G4cTQCVw 25.99079855 -fiat/revs sendtoaddress RY2wme6iYopBVGDqfDw2Ky9Sr6KohYCBSz 26.59001804 -fiat/revs sendtoaddress RAsUxrXkZJ5ZSH7LhbKaXGWu3KNoiURs1A 26.65141146 -fiat/revs sendtoaddress RQnAJYgm76XKGny3BUntkFT6PrdACJScFr 26.96884349 -fiat/revs sendtoaddress RA3xr2Us7u5z7d6nxZrRCfRCtxTX2u3stS 27.99163429 -fiat/revs sendtoaddress RF6ZXivZJkNJwdbwdnNxTSFebS1FA1dAov 28.25611482 -fiat/revs sendtoaddress RVpjSJitvEHaEpBXaS8UgPKUqZQxhA5Ven 28.34230329 -fiat/revs sendtoaddress RQJ4TPSTYxVtxmfkHDHhqhiJwudDS8fLgu 28.42905520 -fiat/revs sendtoaddress RJygH3aomv3bV8jSrKMuBKEmWWYrD5izCn 28.55163073 -fiat/revs sendtoaddress RUs9Jc1oe1eGcJ3DBh76hzRP7Qug1kG1N2 28.76362070 -fiat/revs sendtoaddress RUzBwyqJeZZBZtQEoASetrYLqCtg1Y6hsu 28.78899081 -fiat/revs sendtoaddress R9n8dRBCbTmcGSX7d4WNq8iiFG8BUvRuUz 28.91110731 -fiat/revs sendtoaddress RQKQmahdtDuZZ89sJCiHqJaexhNi8XsZ9C 28.93042991 -fiat/revs sendtoaddress bTBscx9pemaGuUH4TS4YeJhACjxJNYhWqU 29.00000000 -fiat/revs sendtoaddress RA7C6BnphnV83PSg4D2ddXBNtbUfRw5W76 29.17499765 -fiat/revs sendtoaddress RLr1kaGMePM2tpej85TMPVjX9hiW9qbeQ5 30.00000000 -fiat/revs sendtoaddress baMdN84uxhaax7s3JNqyHmDsrwPcdjfBVu 30.01000000 -fiat/revs sendtoaddress RBWi5QkS75yXSeDDdvKyTfJo9sytNFqdca 30.03538484 -fiat/revs sendtoaddress RF21HJfT1q6rLwiZZEqZW4yxJjQUdZS8M6 30.07940327 -fiat/revs sendtoaddress RDd64Cz8nkF2a8HVJNfdRhr7wMffqUhpyu 30.81611795 -fiat/revs sendtoaddress RYbVkE1rcRWktcpxyqwh9nFqMZduPi72Ks 31.03202705 -fiat/revs sendtoaddress RJimwiT35jAA7VZT7ZHv4unrj1pWcMTjBM 31.08585106 -fiat/revs sendtoaddress RVfMRsetW5Dy5WLKsefuDQxikDLVEE2gR4 31.12958871 -fiat/revs sendtoaddress RV94vi3zsVKmWaEJhZm3NwwZcftUagaZmw 31.38033168 -fiat/revs sendtoaddress RTywPrMpFgm4EWrkX2p9s6WBhqn7qvrUQB 31.49707608 -fiat/revs sendtoaddress RMYPPZKq5kmspA6PRBKGURNy7fTaRfWXFj 32.18730084 -fiat/revs sendtoaddress REy8KiPJkq18MrhUEHBZK6ZTJZVhsJM9Mi 32.26197903 -fiat/revs sendtoaddress REeFYdQ81qoSi2LHAT4mfDSp6meaUkq54R 32.48842943 -fiat/revs sendtoaddress RYZuCvn5ZMGeAFvNDJy3Ws44rnRvCmWfZZ 32.81268577 -fiat/revs sendtoaddress RH4M2Fm2RFds8ytetqDoQCqjrMK3YXDV2N 32.97000000 -fiat/revs sendtoaddress RFiVhKH5A32yxh5PbAAPYan6EqdKk5RCUU 33.69673470 -fiat/revs sendtoaddress RMEDMMCwTwPokiY1FiUKqqry8Ru5VD3uEY 35.19000000 -fiat/revs sendtoaddress RQVPHPjaGN5jJboBeKHJdJ19XaJSG3YKZY 35.32086964 -fiat/revs sendtoaddress RYJ4dgrrfLsGebPTj5qdnf6reRTWoy3o1k 35.57154136 -fiat/revs sendtoaddress RDMjM2gAZjhWtP2Ztaedkt7qKVycMmY67a 36.97762226 -fiat/revs sendtoaddress RKAGNCcrxCgci43d7XCt8H5bkSTGHe14SV 37.19249558 -fiat/revs sendtoaddress RBeftVvNGBpHjmEQCUg8CCDHVULgGVNJsP 37.54892664 -fiat/revs sendtoaddress RSfkUZpp5nW1dw7GzEwUEfcPusCaGD6XkV 38.08192060 -fiat/revs sendtoaddress RVYUgpjwCF4ohFkv8W5118Nc2kTo22MkXx 38.32196946 -fiat/revs sendtoaddress RMsPcEQnPPMiZogu7vccYTTDZM46TXptun 38.67375486 -fiat/revs sendtoaddress bV91tz6BKcygZ1Xewdv68H3F6UQPo6DV8F 39.22798428 -fiat/revs sendtoaddress RAUbunsjA1xdPD3xsDpP5bfbUf7t4f5QDe 40.00000000 -fiat/revs sendtoaddress RW9S3bnW8UqaoHMpLAK3E74LymQ5dvk6UQ 40.06389247 -fiat/revs sendtoaddress RP9QtzmRNRfLFi5Mbm8gvD6TZfoHwj2MmV 40.66855529 -fiat/revs sendtoaddress RDwzirpMNsH48w5rEL4JZXnTvRruCmybrx 40.83472214 -fiat/revs sendtoaddress RS9jA75yxYvZJkua7GE6kGrQJqSbPaVzjZ 40.90800000 -fiat/revs sendtoaddress RAP2RT4eoLBKuWXGRDiA4fSsJ17vqpnnKm 41.11815355 -fiat/revs sendtoaddress RLFN7yZoyQMc82Bo2VGgE3d3gqc8Q6JcjL 41.63038353 -fiat/revs sendtoaddress RCtgFQuvJPYUQTXywNh7vJ2YW5tFYXPPHP 41.92581014 -fiat/revs sendtoaddress R9Kj3m1ZvXfRVr8NfwoYQqgXPWnfAEXNer 42.46570277 -fiat/revs sendtoaddress RN9Uc8y1tfkAohARBr8x6Tvb9P6y9dqx15 43.20551649 -fiat/revs sendtoaddress RQdhMza6wWp84dHZPyrRHfibAsYX9yfzru 43.60137527 -fiat/revs sendtoaddress RCBtWy4JKPwQDSNPj81U6QL5PVNNgrRhcb 43.87960000 -fiat/revs sendtoaddress RTKm5hJAkLccm9BMkw63W6ceEpx7kNrVAE 44.27236648 -fiat/revs sendtoaddress RMVn8uBovxtjxtbhYp1WiGahfaRp8urgVL 44.36039614 -fiat/revs sendtoaddress RCSwNeGfNQCv2A8E921aqZgE4KoVM1G4xk 45.26159097 -fiat/revs sendtoaddress RFSLmAGrHmUuQN43rVBE1f5aaQkxi92Lc9 45.35485306 -fiat/revs sendtoaddress RGAiFaWTsD7X8N3Y1cRnSuQSbSasxCuu2e 45.36502840 -fiat/revs sendtoaddress RCS2gVPEfFVjTWovdGXm4UoE93V9RGYneF 45.78716177 -fiat/revs sendtoaddress RAhRFdzDF7mrchNZxp7pFsxFPLsgRBB2Si 45.88643625 -fiat/revs sendtoaddress RTcJXCL1TruoZ2hFMfaPuC3r7HRFpRdaWs 45.94912573 -fiat/revs sendtoaddress RUSBeCaGi3LK1arqUJUU6NMLhEGGmdvF7k 46.17388739 -fiat/revs sendtoaddress RLT1PH7WHARhoV3Lm5j8n2Jf77Rj9pGAPb 46.51149000 -fiat/revs sendtoaddress RAfuUdcYQ3GQkmiojQHbfozuvbGGNHVi5w 50.00000000 -fiat/revs sendtoaddress RXRk8T9yDyt2Pc9rPYK7qZ2EqEhr9qaeya 50.21033178 -fiat/revs sendtoaddress RMpsdtAfSxWpHVXbTpJF5TNkf71MRahQf1 50.73219475 -fiat/revs sendtoaddress RPESR5AymiPaYP6QTZPFfP6T9ws2CRu329 50.92160000 -fiat/revs sendtoaddress RUoBWjRaoR5dwSfQ9UwsTmEJaEvjHexLJh 52.16835519 -fiat/revs sendtoaddress RGzVULuqZSSWmnxeqdggZt816SxTfDzAuP 53.16556252 -fiat/revs sendtoaddress RReFVgQHePN89U9YiraS5L4Wq2izaCyVZy 53.64128669 -fiat/revs sendtoaddress RLXsMTWBikxAgqqjuBd1Uveq8wtLq1VjbT 53.81988797 -fiat/revs sendtoaddress bWPsh24sRtkgHg8o18x6MraGgKG5ZbwMf6 54.77669998 -fiat/revs sendtoaddress RUkFd6ai5SXXj5cAbX5C51SSJ2ZjsKPVFe 55.56852967 -fiat/revs sendtoaddress RJtmLD2E14LkH8hDpGYUYzkeUix5piRtUG 55.63858042 -fiat/revs sendtoaddress RTzcdBFvrjL2xhj72k1GzBqjcydQ6PeWxo 55.84620814 -fiat/revs sendtoaddress RVweURd15ub1h85wfNkYqvXMyUqFB55564 55.86220000 -fiat/revs sendtoaddress RDzKUu1uEoRXcKPvQqacmvBAEAXSKkzvSa 56.18294195 -fiat/revs sendtoaddress RJ7DNRagYN1RRX7CekDYDf9pzyQYLFKRpX 56.37277591 -fiat/revs sendtoaddress RBUDJzemwyBvPF8hY1snRuj79we1WGM5qc 56.71074057 -fiat/revs sendtoaddress RXMcD9J2JFygmaPxLBHp4y22kz1KZ1CLYw 56.82525711 -fiat/revs sendtoaddress RKjqSAZer1R5JGScaXWoESvGUJ3LctfK7J 57.29543876 -fiat/revs sendtoaddress RFUQsPXj3Ls547Me1mpLCf1uSoumwUP63P 59.17036860 -fiat/revs sendtoaddress bDvNazT4qdiTvcBnRNRvZfA8mW2GpfrMYw 59.49000000 -fiat/revs sendtoaddress RKfJfdFP4Y7zvjS1D1aSKz84vJVZ2k3u6z 59.86359941 -fiat/revs sendtoaddress RHv6F3txYYk6UKjyboSbQjWMLyqgdAAieE 60.00000000 -fiat/revs sendtoaddress RHrERJZ6yJ62Hu42s6ENYauP7PbtfTKouK 60.89100237 -fiat/revs sendtoaddress RAnXn6JX7mvcXB4oQ4HDvG1LqGTTyDBpDK 61.33416695 -fiat/revs sendtoaddress RCBrFa25Dnc462ovQDkTBYuypzscWS4rc3 62.54983642 -fiat/revs sendtoaddress REYtA8PVRe8AfNC3qYungbVnmB1zwkBzXx 63.69739387 -fiat/revs sendtoaddress R9xDXLjankytgcWQY7atn7Bbdb3gdchVSR 64.10973396 -fiat/revs sendtoaddress RDkjbRzi8YEA53cWqrzRPygxXQDpHtChTe 64.14507919 -fiat/revs sendtoaddress RRPrHoMQ86N87f8YHfMiGjSax2D53PmH4A 64.80890026 -fiat/revs sendtoaddress RU6xJqp2ujs4DekPy4zhoH2w6nLENPpuNX 65.79183438 -fiat/revs sendtoaddress RCwTYcnjq4D5FZHqof4FAVjnJnrL43vLFM 65.84642049 -fiat/revs sendtoaddress RTkaPWn5ikgiKeDX9225guk6tTaBA7RqGg 65.86789399 -fiat/revs sendtoaddress RQt5oRDo7xHg1xEkoNLgFJ2bdhyKPr8HKr 66.69911819 -fiat/revs sendtoaddress RKL7QVeP7RVxJXV2c2D34WKLo3zZdx7NNp 67.05614804 -fiat/revs sendtoaddress RJsAQynCwmVmKhLQ2TWVqke5hr9Md98NTU 67.56912018 -fiat/revs sendtoaddress RAWnPCfHYyaF8w7DGUFjWfTKHy1Ksy6uiU 67.57766718 -fiat/revs sendtoaddress RCv1zUhwdZ4eub4J7MQqK4y9TXoxUw27dy 68.91424493 -fiat/revs sendtoaddress RUEWpaa6t4t8ZkXMQFea5o2hyLecvmiSgf 68.91918018 -fiat/revs sendtoaddress RPpiV8XJrhkv9ZiyM64Akr3UXhnuAyTQC2 69.04779793 -fiat/revs sendtoaddress RWci7EMXg3rHsWixDYoS1awmtaXcCcNUKD 69.05662957 -fiat/revs sendtoaddress RVziSFdCLqwCoCc4S6h8gMid3b7wSv5paH 70.12692312 -fiat/revs sendtoaddress RCMoyxzyRA7d1D72bVAWnhUocB9BxRJWW8 71.59658394 -fiat/revs sendtoaddress RR2eusoUZRav6vcTdgFVeNWA44B62zGaYK 72.30662573 -fiat/revs sendtoaddress R9KAW42xg429dz8iNf1ndZ1JpUVP9rh2cm 72.39322336 -fiat/revs sendtoaddress RJLWdeLn1M5sY1T6DqnBCthmo4kx56EfuE 72.41353461 -fiat/revs sendtoaddress RAWmLT4xCMMoigdLZ4StuiQRCUm9XpCeZu 72.73825100 -fiat/revs sendtoaddress RQJ6iQ8BQwUma8XfW6cwTPLdsAGrqC9kDT 73.07378007 -fiat/revs sendtoaddress bG8bXdDdDGXC2MRoctyduJu57xj4zkECxT 73.36528155 -fiat/revs sendtoaddress R9MAG1Lv8HW9DRq78DDZbz8SQXyP2gHGV4 73.59822799 -fiat/revs sendtoaddress RAMLFBRuCsU8RFx9cqmXMSuxeMoMJsDatj 73.95460045 -fiat/revs sendtoaddress RA8uFpmvySKWgDnopuRQCYmngDtoYL1Bm4 74.62258456 -fiat/revs sendtoaddress bFvKi5z6fr118nMMM3fRLrzmXtgqNg8TFZ 74.93094772 -fiat/revs sendtoaddress RF8CDS3b6Q3vqeAzmoL6ngbyNt2oNF23sj 75.71613168 -fiat/revs sendtoaddress RNW6Kkcdktbeemd2n8NVPCfgnRirzWoiZY 75.98999999 -fiat/revs sendtoaddress RUPEK1UJ9dxDUnZVFQXfKdNERFkkAUzBnv 76.09309632 -fiat/revs sendtoaddress RE5oyQSbMXC7ccRHgkoAApL8h3PB3Gp4bE 76.51471756 -fiat/revs sendtoaddress RL8m3betBrE5hTHPMFT6qdhqyanTFshyKB 76.89974819 -fiat/revs sendtoaddress RFUCrHkgp1pT6TWn7JM8c8dkbi2zaiCxhg 77.24810157 -fiat/revs sendtoaddress RFfz7SaUQqVW7gXovhbgNpCA6HCE7KG783 77.70000000 -fiat/revs sendtoaddress RHjemTRTpTN2m1g7gqZEQRdHTjBCpBDxfY 77.93130589 -fiat/revs sendtoaddress bKGnX6Kv8vFC6jALbf39SiDCVTf4RJdgz2 77.98778009 -fiat/revs sendtoaddress RFxXM8MaUaUPt8TzUg3yub1hugRvnXz2oS 78.74400181 -fiat/revs sendtoaddress RSL5mA7bwZSYEfWb4xa6Y44FdC3dK1ooXg 78.82514781 -fiat/revs sendtoaddress RVdj9qFei2CYbezv7F6URG9Ztn52UEM6vQ 79.02526364 -fiat/revs sendtoaddress RLY3AYB1A8ZMKx3jjYRDersmuMY2pWuYyF 79.33015345 -fiat/revs sendtoaddress RSByda5tHs8P24SEpLTjVYvmM224VFUMZo 79.65688080 -fiat/revs sendtoaddress RNmCUjsZgbyb1WpJ2geA7PudX7FEWt6A1f 80.83392215 -fiat/revs sendtoaddress RXACz9vncXsH12yfw1cy5jcAB7Ac8ntEa9 81.00660000 -fiat/revs sendtoaddress R9QiMbjeajKnjjjj9SCDasv8QSqeF7PMcj 81.69159762 -fiat/revs sendtoaddress RQoG4MwfgFXKd4YgtqKAhbrUBxBsBFPHcx 83.03037663 -fiat/revs sendtoaddress RR2mB6Pwc6Gb2cvNyeHjNBXx68HXtVaXxZ 83.30080000 -fiat/revs sendtoaddress RQCiBLdKTwHFwzzmhcJMCqEXCiawN4iU9e 83.35113918 -fiat/revs sendtoaddress RTBQygMTKnEUrb6mDuRX6oZMzD6bpz7MHV 84.76381876 -fiat/revs sendtoaddress RYZs641EAgUVndtfummJSN6R6qRYFbUM2s 85.17955243 -fiat/revs sendtoaddress RYFif5LZddRF4VNggedHDV8Sb6KdfHLfsY 86.40991880 -fiat/revs sendtoaddress RTotPYKMLJ8kBGidruLBNsuD23sP7t26V9 88.23282148 -fiat/revs sendtoaddress bUC1sLWLJAg4rhJqX7iuM9hveEqaBrNejD 89.18619772 -fiat/revs sendtoaddress RD2cWM7HimECphiu8V8sctwGfubg2WKrJ3 89.81298936 -fiat/revs sendtoaddress RWMvsej9DLbf7Ah4pERzig9f7jRr3GQEjp 92.20066887 -fiat/revs sendtoaddress bXnJfaRrXzXG6hB7rzyf5RhMs38dmbyucN 93.75110762 -fiat/revs sendtoaddress RKZU1TEmq2AgR55V5zPou9wbwL8aoY4BLY 97.14527606 -fiat/revs sendtoaddress RWcFZhSSAy687UnNQuLn4FH2z5jvADHckJ 98.25817616 -fiat/revs sendtoaddress RN2L1tSiXFGzqwiD4JnpW4bNm1WwuW3bCB 99.99000000 -fiat/revs sendtoaddress bRrtZrDKaeB3BRuU4sGPFxQbKNCPYghrF1 100.00000000 -fiat/revs sendtoaddress RWP5jYB4JBngnikbh2DWoL6AmkQtU16keG 101.03001729 -fiat/revs sendtoaddress RWxknfDNTUssXFYXs9WjyGY55gTouXRAiT 101.03220000 -fiat/revs sendtoaddress RMaTWd43Y59AQaMV7A2yUo17UxgjCrWsLk 102.06379403 -fiat/revs sendtoaddress RXL21swDPMdGZduJdpj5Jd4xmtZW7ADn7n 102.07140374 -fiat/revs sendtoaddress RPuc3TzLc4mvUFeSSCHMdka2mD6skMdt2d 102.07309463 -fiat/revs sendtoaddress RUy8CriCsoirom6SDQE7PbKG6peRYLkg8e 102.87000000 -fiat/revs sendtoaddress RDDqYEMc6U7DCk5yo93Cy8phZi7cpRMcHo 103.29269921 -fiat/revs sendtoaddress RRCDVWSxqac2aRcR5TQeGj9RY9vVJ5dDv3 103.74612194 -fiat/revs sendtoaddress RV81npybQ798Gq7xpEy1N4iszz3Y2vezsA 104.18722767 -fiat/revs sendtoaddress RY8Lsz2tM6kzyi38fuH1zVpBiii96t73c6 104.49000000 -fiat/revs sendtoaddress bKysATBpmdYMzN1u2JR9qoGRMztNkAndV3 104.77000375 -fiat/revs sendtoaddress RSPpiHRcmFQvSpeepeXuuuLHDo2ZSXArBo 105.21121101 -fiat/revs sendtoaddress R9HVQC9seWf4vub1Nw6yYZhsaDWAMmhcLT 105.59787727 -fiat/revs sendtoaddress RSrQrnZB1ZCxS8WTPVUqzkiwRcXbKekf48 106.26016048 -fiat/revs sendtoaddress REWLpX7P3YZwJG6pWcDRV3oqaSMRBrrnxb 108.09472652 -fiat/revs sendtoaddress RRL9HpNhootz5qHax7UA3ijUaqTqqrpJjs 108.17453259 -fiat/revs sendtoaddress RU5DB5mWRWsHhu8sZTWmckGcQwhdJUDqpP 108.65124152 -fiat/revs sendtoaddress RETXHi8xLcgjW5YzRo6LPWtD7Srea8kojF 108.85720716 -fiat/revs sendtoaddress bYy5Lrv3TjWxaewGM9W3ZgAiE3CMwdTdtU 109.06796023 -fiat/revs sendtoaddress RTo9KuSFye1nMUMwqNrZY5Qdk6JPuSFhdd 109.35742161 -fiat/revs sendtoaddress RKGauAspW6jwnFYGcjWjyLb6C6RekiWfAW 109.72267940 -fiat/revs sendtoaddress RXKhdVSuLNMFNPQGAADye6QxtAv4wrXLKp 109.83484606 -fiat/revs sendtoaddress bDtQQ3LrzfucJZo3nEf9hQsERQYMyGAnVd 110.00000000 -fiat/revs sendtoaddress bN5hZtKunzwMBqBykcs3upMa9biJc5QiTe 110.79984203 -fiat/revs sendtoaddress bD2o1o77YE6CS59CwVKozsSTXsakEeXxA9 111.23900000 -fiat/revs sendtoaddress bYMX6vnisuBuaNfJwAm36YhxvvzsVhAUE7 111.44650003 -fiat/revs sendtoaddress R9mVKdn5XBSgk9SqAZ3b7vYT5DYYdbMmuZ 112.23680320 -fiat/revs sendtoaddress RDnngUbvKmFY1xVEFrcUrd3mF1z1CZL4ca 113.18376426 -fiat/revs sendtoaddress RGFFr1ZW5CfM63ezygMei7GnNZDGmmGkTf 113.19540830 -fiat/revs sendtoaddress bLuMST8VKhkgkjkyFDivUddserzvrSrUjP 115.14320000 -fiat/revs sendtoaddress RD7AEjxCAZrTtGkCC31QF5GnA41GBraWLT 115.59707426 -fiat/revs sendtoaddress bYhubBJb6dQquG6qy1VPycYSwAGcX7uUt5 116.02835750 -fiat/revs sendtoaddress bFQw6FJKEDDXYNmFTyGaQL7TUcgfzUjFVn 119.02425427 -fiat/revs sendtoaddress RWcvDsT4NZ13JhAj2qLJ9Wd1fZQX7VnfPa 119.92800000 -fiat/revs sendtoaddress bGStxaL2Y6Z7kEYDYGMACEqRnCoFXku7f4 124.42418850 -fiat/revs sendtoaddress RFnMLGg2P8MquXAUrKwpgRKyhypdSw85Ns 124.58995140 -fiat/revs sendtoaddress RUVHvbf5DkZJQstTYt8XnNiLJuTsndiP66 124.70965075 -fiat/revs sendtoaddress RH8T5D1sxscFfh3tAm1GsBLjBN4A4D3dei 126.44377040 -fiat/revs sendtoaddress RCDmBWeYYBX5wXsKxmZjsbiVAMzwuWizZd 126.63803423 -fiat/revs sendtoaddress RUMpTRo2d5gdo23gXW4tjbWGEvAPHDjWni 128.42575936 -fiat/revs sendtoaddress RY5FWH4N3eSZACd2VuBoj9dqfPuZLPKUo8 128.45984982 -fiat/revs sendtoaddress RFPNe5BcNz1sgcW7s1Rmcq4t5jJThJRZRw 129.09473986 -fiat/revs sendtoaddress RT7U3WZW67mAQUaqrdVgwXw5su7ZiA6Bsu 129.16030619 -fiat/revs sendtoaddress RUmnosqbFAwLoiETLcHvuo8E9dsJtq2iyG 129.49860507 -fiat/revs sendtoaddress RJbuiMNx66QNizQgwGuHRT3H59ViETfNxc 129.74892513 -fiat/revs sendtoaddress RKmoYcFcT22fwPZsTYq1F3G2oSoGevwCF1 133.14058657 -fiat/revs sendtoaddress RUjai4VGtvjfW2NWdgZQDpbuCiQ8M9PswK 133.20739488 -fiat/revs sendtoaddress RTDMPwXdg5kYn416yHwRQZt5ZU1qyMqMmK 134.38426806 -fiat/revs sendtoaddress RA5E3yCgWjVo6hgLq4RjGA3shkX2PbtrpU 135.12217336 -fiat/revs sendtoaddress bFHdzaZD7RfnRgbGKqimzx52hYDxjyg3zu 136.79000000 -fiat/revs sendtoaddress RQF16BQCW7KwWQ5kQJUPNoVmqLK3jw6mGt 136.98025871 -fiat/revs sendtoaddress RUxzdHCj27j8GUQsfVpjUWfCeeEL8NoGUu 137.41618878 -fiat/revs sendtoaddress RJ66W5cbSSRMiPqLqGD2zFPpFJa8Lz2Ps9 137.72500465 -fiat/revs sendtoaddress RNCqLXDDnfYxkrfXZNQ2UdtVYBqGs7eNHr 137.88286666 -fiat/revs sendtoaddress RKWuqX2Lu7U62qkTjsvMzPj5v5wD3y3TMY 138.36843821 -fiat/revs sendtoaddress RYGz6a6htzW6Z3ZuwXeCU9evWrud54kM2e 139.28924668 -fiat/revs sendtoaddress bSWtbVqFM6TDPULibkMSKeVubbPRtAef19 140.00000000 -fiat/revs sendtoaddress RPYVGGwVqJpPG4P8oRv6PaaXZWZL2WyAbX 140.02010000 -fiat/revs sendtoaddress RQDGhbt6ez5f4udUb5W7NpB3p9fwgEi5Rk 144.61662947 -fiat/revs sendtoaddress RHiV43fLaNduShusi6oveEMkManXYTDbHA 145.83490394 -fiat/revs sendtoaddress bJ3Ers2f4x2LNikgQhcnCfE3jdUgM5F8As 146.61293122 -fiat/revs sendtoaddress RJoRrRJ2fMNS1u2RbEuxv4qEMAyzf59NJg 149.97999999 -fiat/revs sendtoaddress bacLS8FB73nSK1fZryuNdpP5FBWdyHWTJV 151.63363650 -fiat/revs sendtoaddress RXGaGPgd8trrUjSefqPnvo8f4dkLSFUHGy 152.66602809 -fiat/revs sendtoaddress RPpU9K7UfairC4DpQyUCYYSjm3R9HhikHi 152.87919619 -fiat/revs sendtoaddress RKqQ1gfS2V8feocwzRKaBTVa7dJN5cmVzv 153.78237940 -fiat/revs sendtoaddress RF7Q4dR7wfL6m2ezMAg28zcn1kxcpWBgM2 154.21079380 -fiat/revs sendtoaddress bJco5BoAAkkxzoRw8c9GwNtC4FWa5xDswW 155.46509045 -fiat/revs sendtoaddress RCRiUbVm9c9AhDuDj6zVwGpVmp2YyvDQGr 155.60103980 -fiat/revs sendtoaddress RYFzcG71eshar3WQuH89n68EYz1EpUtE2t 159.55861379 -fiat/revs sendtoaddress RY3vfgBpJcwYFZpFo8woTJj35kJQiLyXmU 159.61549762 -fiat/revs sendtoaddress RQyZ6ffCveNat1Prm1QpFSBA8ixUyygkEz 159.77050000 -fiat/revs sendtoaddress bFP7W2vA9SwUmsPej8TpCkTVWHRNCi3ivg 159.97000000 -fiat/revs sendtoaddress RAzndmF383hyxSLnZRtazbmGRRs1CtPpL3 162.01532205 -fiat/revs sendtoaddress RAHgHm1cjahRTaXZu1uyJLYc5nuYofUATD 164.13512046 -fiat/revs sendtoaddress RNFrgZYqwhUnZwxWBFpm4cpxREGDtRbbte 165.11938752 -fiat/revs sendtoaddress RSbAxPN91TiGcGUmsv6czUog8bBEEBxAgx 165.70403879 -fiat/revs sendtoaddress RB5Q63vAW9yx1tsHp8SNRBqxckbWp81Edr 167.39044670 -fiat/revs sendtoaddress RGzQ3cih6otR1BjkqpDTDpm8pFF8u4ztXF 168.28892221 -fiat/revs sendtoaddress RPCcfYA6o1kfEZH4G64BQBYCc4gxCJLiHJ 170.16705435 -fiat/revs sendtoaddress bDTQPYsdisnCmeMRgMjdbPWLtm3XAPdbwD 172.73941026 -fiat/revs sendtoaddress RV62WyrNLmRQeamkJ3QxrrnwfYDVfjcgeK 172.74920372 -fiat/revs sendtoaddress RDNfqkziCYdpyJQBWJU8tSTxZu6WTdS8gF 177.93629331 -fiat/revs sendtoaddress bYrb2PMz24NCdvRhHpuDuqU6L3rKiVmaDB 179.00609901 -fiat/revs sendtoaddress RV3uDVzT6t67NJeudiCXJBs7VtYupw9Ar9 179.49681871 -fiat/revs sendtoaddress RLDc6KmUUsQjfWVWmAXCcKdrYEiKA1MHir 179.83179727 -fiat/revs sendtoaddress RPr5vw7WyytSFqJaihn5K9YtSks9LC1npb 180.72169916 -fiat/revs sendtoaddress RSRniHtiToruxfLKx2vehX52w997ja9FXM 180.89312968 -fiat/revs sendtoaddress RUiTAU5RKEdkFxm8cL4XHny1Q7q9kWygZn 181.00000000 -fiat/revs sendtoaddress RB3Cq7NFoiBrWtBDuBcTEChZmFsKYBWyU9 182.99000000 -fiat/revs sendtoaddress RKGYQUCL9vD6i1PxJ18UPmxufPww8PY2B6 184.99000000 -fiat/revs sendtoaddress RXzvjALGUh7AgQBCvyyqWCVYXJMnEpesbP 185.75821658 -fiat/revs sendtoaddress RNZdeNaniirmNFEsDnoPopyUyFt6FkusD9 188.40297419 -fiat/revs sendtoaddress RTAjocvBccVgu7TyhRY6Hf2xfmNx92pzLx 189.98000000 -fiat/revs sendtoaddress RFGxfyFbZnmxtnU9iFS5cC4L3pWVvMUGYW 190.94497623 -fiat/revs sendtoaddress bbLeGoxJEzjyvaBxFwZM7h6ySyydhM5m8E 197.68254058 -fiat/revs sendtoaddress RRNa93gNRJoygnbu5HGT1kdQdQuCHpqHkn 200.00000000 -fiat/revs sendtoaddress RGu5zqbftY92VJFchBXdfTrk1dJ1YSWZoJ 200.32704136 -fiat/revs sendtoaddress RF6g4Fo6zoD8MKV1g1wp54xzZGK34RXkb8 202.22778625 -fiat/revs sendtoaddress RU2KCNXDWnenp5v2nt33ipL4p4QYNrUhjY 204.30408005 -fiat/revs sendtoaddress RLyfAXoyaE4fBoF1sSdi1gcYN3wDzKD8GR 204.32479990 -fiat/revs sendtoaddress RYQ48DY4828Rvabks852BZMfoLG1NdJoSo 204.38917526 -fiat/revs sendtoaddress bU5VBCLQwu9d5DuUJfoHjUM1Hs19YAv72C 205.00610085 -fiat/revs sendtoaddress bKfAmn3pediqbHZvEuTxVTyMhMimi2kYVR 209.98000000 -fiat/revs sendtoaddress bbStrHZF7WUwDnPr4ijrYjuEJiuoVGsrqT 210.00000000 -fiat/revs sendtoaddress RKmZhK5uhtza4WAywnWsN398bqyQois5oU 210.10438688 -fiat/revs sendtoaddress RSCkSSty1jYM8fCwDZuWwXBa27LKQJD4Sc 210.23364623 -fiat/revs sendtoaddress RGvEKh9WyJ9hiNVWbyTC2KDWKQ4BEs7Th7 210.43508396 -fiat/revs sendtoaddress RFiXf9xBVopnj6zzpwA9GJvL949S14ymR7 210.58913554 -fiat/revs sendtoaddress bHsPKv9XEtN8RAYhqRHv3BqdquZ31bD7co 211.29966352 -fiat/revs sendtoaddress RMq5sfV7rVQzf6H7SaeuXzAK9fR5R3JFja 218.42967306 -fiat/revs sendtoaddress RWcJVaWagHwedcvHFvwBGbc114pmrfnrkM 218.89063780 -fiat/revs sendtoaddress RDHNJYXuBQo5oJVfZk9puQ2N5Z7JnHuwYW 220.59598299 -fiat/revs sendtoaddress RRsRhuCnKiUtaW5bMJYGURr59PEtXWHT3i 224.55408869 -fiat/revs sendtoaddress RHeww6CSzHFsYkDWyanBzvSHJpWmbm2st3 225.65799662 -fiat/revs sendtoaddress RH1w7tz4Gbvwx6UEgFL73w3sUCCKDYo4JF 225.96608282 -fiat/revs sendtoaddress RTzC7EwL6YZsTi3rcRu65zRu5XRkNEK4GC 226.84505627 -fiat/revs sendtoaddress RM98UarGogmuPGuaVWcu32m5xEB7K2RwE1 228.97743683 -fiat/revs sendtoaddress RMQYpQtcQDzwtKKUso8c95yV82b4Az15D2 228.99599800 -fiat/revs sendtoaddress RVWAwaF4TSxvABnv1sm8usYm9xNNwUBCXW 229.33065176 -fiat/revs sendtoaddress RKCNEkJkj9TVo9hKwuwXkabJ9cB37PWXHY 231.44778423 -fiat/revs sendtoaddress REbX7oMD6SZMKUN7ZwPa3c1no2wuVW46kc 231.87096527 -fiat/revs sendtoaddress RPk7TFQrccjSZVZL4AqJrhvXnmNa7bPKC1 233.59000000 -fiat/revs sendtoaddress bD1p6oibYatoRHo3EVPXkyVE86pNgJjt7p 234.64089600 -fiat/revs sendtoaddress RRE5A2QoE934tcsu2wBqk6U2oHnCh7wjSK 239.57769669 -fiat/revs sendtoaddress bKhxoozko7qKJQD4yDQgrbfZnMtkDhmy29 240.00000000 -fiat/revs sendtoaddress RNerSsSBiGngBguyYxQ9ZSqpcZyUcPLYRU 240.33867862 -fiat/revs sendtoaddress RKQfN1Y8aJ64Zxms83JECQ9oBJzF9AjnfA 241.97686429 -fiat/revs sendtoaddress RCLQYSKcSAnooB4Vjps6m65iZpLtFjEdJQ 247.80300179 -fiat/revs sendtoaddress RXaFNT43dJMd1ZrQzfh1fH23xhZCj9GfC4 249.29379492 -fiat/revs sendtoaddress bJpWurgzJidkaHQMgDveGHUyd3Wd79iqMe 249.99000000 -fiat/revs sendtoaddress RWr9pDaNDqC5tQxAUaB35sc1cLFT8wimXZ 253.28888467 -fiat/revs sendtoaddress RGacvvKckDJR7qSTnFoAWuYDrm3QVK4FSv 254.31918912 -fiat/revs sendtoaddress RAYYUqsDb41SoETDAbBzGSct6HWpHBRe2s 255.79012692 -fiat/revs sendtoaddress RTxV7qMBsuFzZ1rjuMe2LW6PLT5X1wYqw1 258.77462194 -fiat/revs sendtoaddress RWNfZrTPdb6PUdRfHEhbJ52jNK5pyPNVUg 260.24907020 -fiat/revs sendtoaddress RBUdGJxwaUF9dKNC7DRWXqNEwCau1WoCaY 278.69301585 -fiat/revs sendtoaddress RSfgSNh6HqXEgcHaQbXM8K83yCJUek7xkB 281.76486338 -fiat/revs sendtoaddress bUi1VsVeoyHxq9mxys6gGntBy9vdxXeeVz 283.69305405 -fiat/revs sendtoaddress RHMNYPvHLKG5McGfsUxuRhmoYWHkUet8Jx 285.45438215 -fiat/revs sendtoaddress RG7mf1AHWGXUpqd3FTrUTYfFPbwjKLLvPp 291.60482497 -fiat/revs sendtoaddress RAJ11XuG22Nucs7yzoLUgNzbUqCSEtScZy 298.42252899 -fiat/revs sendtoaddress RXZ7BcoNfcc2yZQARRG587fsEJqhheDJA3 299.57911711 -fiat/revs sendtoaddress RTiNp3b5SoXvFvKEFDoPUom8WVFbZYLKMb 300.00000000 -fiat/revs sendtoaddress RURYZ8FhS5oJ1h1xuv78EXe8rA32SiM4Dy 304.32862968 -fiat/revs sendtoaddress RGba6AJogyFQGuMAzD1czE67KR6eW5PV2k 304.98070893 -fiat/revs sendtoaddress RXMtwrMXyimRU5CWSdtWzHwWmcCeAc62ua 306.73973391 -fiat/revs sendtoaddress RYEmXCS9D2qR71XKzzWbsiAMZGg5E2UWt3 307.15599818 -fiat/revs sendtoaddress RWM3UrsRP4WtH6DTetm5KmUyBASvFCV6wH 3005.5069077 -fiat/revs sendtoaddress RL4hFVzdntZQ2DM59QXZc619boZV45YFdk 316.05434626 -fiat/revs sendtoaddress RG3vbi2TJp9jeqn8qDSnL1W5eFUeTGQJmu 317.33569076 -fiat/revs sendtoaddress RQYgriDwRUuUbfw3E1AecAHZXryGSx1BdN 337.23469627 -fiat/revs sendtoaddress RWyjhMRtXkSMFgaqJem2smR17Gcn2DswNx 338.51975147 -fiat/revs sendtoaddress RDWMR1dGt7EyjuvJrHXcL8aoo5D23JX37M 338.52917347 -fiat/revs sendtoaddress RWAoeRWoBpAT7xWeZWoXmgM114hLVxiVFg 338.53842558 -fiat/revs sendtoaddress RL9pVyV7EhGKujNcTwcw8m7n9LbeWLcbgK 338.54432258 -fiat/revs sendtoaddress RV7FTQ5ivqHU4bZwdFdsGuSHpHkKqjPZpD 338.55302702 -fiat/revs sendtoaddress RXa4aDTZenjvLeN7h4LRxd4jvHVpN2FmvL 338.58187076 -fiat/revs sendtoaddress RNcscpbG6dH4AGffwpj3NDCN7gW8fL4Pnx 338.63694015 -fiat/revs sendtoaddress RDgxkT2SnhVrcGx6jRuBrQ5FMVkxm38C6T 338.80993693 -fiat/revs sendtoaddress RPxbRx4HyB83Y5uTLwue3bjEMDHizt1Yrd 338.92318296 -fiat/revs sendtoaddress RHsPNWmD7YZwFsBzqB7CeWb3essSPUXynv 339.01798043 -fiat/revs sendtoaddress RQeZBRQRsFMKT3ittCZzyTSrHkSaCXGRZb 339.16387361 -fiat/revs sendtoaddress RFmPR4dYC2J4SGJQWyYF75DsdaSzs6amaf 339.27093705 -fiat/revs sendtoaddress RB6yVhHGirfcXjqyZsSJLmJ3piSyBq9QnD 348.36515758 -fiat/revs sendtoaddress RPsG2FM5DSoCEsoMLRwmKVgqvSRvM8raYW 350.00000000 -fiat/revs sendtoaddress bDfaeJk4Q1PBLB5ghUsJ4qGpoPEtNuSViR 352.05485019 -fiat/revs sendtoaddress RXw7hzKyWNGqKjc51XaE2GtsW6iF15S7VW 354.98460556 -fiat/revs sendtoaddress REQAbdfBsdfLPqkUbrqq4FzjCQc1mUDJwY 357.17138770 -fiat/revs sendtoaddress RPAgmZyfvcjBDbiPrr6k7aptgRJajNpdf2 359.88265432 -fiat/revs sendtoaddress RUkWpDYuSF7q9Ee5qSd3prMcuc2qdXGKL8 362.16988971 -fiat/revs sendtoaddress REtWa3fas1CDnGVDgbgLPQfRjHTpELQ5oL 362.89945753 -fiat/revs sendtoaddress RVp13qMhi7MkRjeV7cZp4mPwap8g3GB7pj 364.88330000 -fiat/revs sendtoaddress RMJaHNoxMR8efShueiySEXqEce62gviWp9 385.00000000 -fiat/revs sendtoaddress bWzc9xpS8PoaUXwL3H15F8BVVrAFM4HbEo 387.00000000 -fiat/revs sendtoaddress RRkn1n1Gj3qCazWkSWScEwcGtZ5bctzDFC 387.88469890 -fiat/revs sendtoaddress RUzj43VUzPWzLyv5ZUzFjzLvQNnYePZdss 393.14137381 -fiat/revs sendtoaddress RRorKDSJg5nQJ42W9VfoLXxNg56Wyic2ye 397.49164512 -fiat/revs sendtoaddress RQ4EicmosAM41MTcg6Pn8KkK4xFto4H6Fi 403.00294489 -fiat/revs sendtoaddress RTEgENkpiXgpQfauEG9AdnoZD8UUCPsvws 405.02784721 -fiat/revs sendtoaddress RWxXDSWjxTgm2DQkMkP43CFYs21T3UyNh2 407.90306325 -fiat/revs sendtoaddress RFBKhFCoTZ8yv3svNxm2KrZDFRFNoZ36TZ 411.92646474 -fiat/revs sendtoaddress RA3SdteuK73TnyFY6ERdoX9hTxYCqeqt6v 412.56794909 -fiat/revs sendtoaddress RMZuEijs8pH78aoxFgfWrsMLvNA6zVSeok 415.01988324 -fiat/revs sendtoaddress RK7uSTUkBFzAzJRry7U1YHwrHuxHXyrbfj 429.26665095 -fiat/revs sendtoaddress RCkjAp39oU9YHj1LMBwpyEzvU32qaBVAhg 429.65636091 -fiat/revs sendtoaddress RQGUx8rqF6MAdbbZyoP3h1e7ukpTLCeY3y 433.50000000 -fiat/revs sendtoaddress REDuRH2VAbKHriXjemDARr8yZjfnuAzp7z 436.77575645 -fiat/revs sendtoaddress RD1cpMEy9tGCXoYKnuvCguAED4GfGHoGvT 439.98136544 -fiat/revs sendtoaddress RK3qrWAPpjbe6ENVumhesNfAnc9YsBYyiT 451.87677477 -fiat/revs sendtoaddress RP8awkjU6TTTNgahXsgAkdVhDnfzA5Z7hv 458.70559633 -fiat/revs sendtoaddress RMnFJGoToc5qQKbaZyocen8k6mfVCGaqYY 461.70514904 -fiat/revs sendtoaddress bWtsHmWGb7Lb5dWrSDUQ87vGB4H5qS7LqA 465.10657278 -fiat/revs sendtoaddress RSat9yC4JxuB5ijDhH2FbDAJ5ArRnAHfWT 469.13540009 -fiat/revs sendtoaddress RMFrL52Gi4HdJJ4Hvfbu8dosKJNo4RVA7p 473.35491660 -fiat/revs sendtoaddress RPnyG7pDUePrC8us819Y9w4MZhguYFeGzh 475.26809848 -fiat/revs sendtoaddress RPLhkZw7tUcoJTnBaTkfvGg6ijqzNV3TA9 480.24541236 -fiat/revs sendtoaddress RFs2Mvsuaku7NZji16txxd92nJh8tUK28h 480.25997692 -fiat/revs sendtoaddress RSeSsp5oQ5P4wsbabW6xyaSoHX6stNLkqT 485.91365273 -fiat/revs sendtoaddress bNtCZW5GRLggbnfSQd3gYexSmJ8TgwqERF 499.00000000 -fiat/revs sendtoaddress RKjcz5oj8SAgWxPvnEkmXrpAjo57NRh87J 516.33357993 -fiat/revs sendtoaddress RGdGceBEcBs5F733sMY1DhJb5UikgEP9Hm 518.39299913 -fiat/revs sendtoaddress RSjXz5b8y8cu3voJkaGzhf2mjXbcdArHQr 519.14858738 -fiat/revs sendtoaddress RFhtwdLbpzHPPqE2E12g41ij92B8w2nbQw 520.13194764 -fiat/revs sendtoaddress RGgCoh8S3KSb4C2YWQ4PbffuS6Y2XYtSZW 521.28427061 -fiat/revs sendtoaddress RTVc5fn53gzZdV8Npov7THaqZLjkQtPPcM 521.93818312 -fiat/revs sendtoaddress RCXtKno8uEU6RhPBeqQPaFfgptuVVzFVTD 522.14752884 -fiat/revs sendtoaddress RQFi68oSBJWcmvj1gCiG2gxH458ER3AHgP 522.46660091 -fiat/revs sendtoaddress bY78FJ6EBgvrNkvvX1DS4KEcE7uiN2heqx 526.65276086 -fiat/revs sendtoaddress bXGxhTKhuaibYHNsH1HpxTEa898vA97xiF 528.82237107 -fiat/revs sendtoaddress RSYsWBudyTjQf57JoD8B9KD1U6aSwsH9Do 530.61712025 -fiat/revs sendtoaddress RMYDkqhQLZRjvv39Mfsy2EAp4vpFRCjdkN 531.49628827 -fiat/revs sendtoaddress bTVM8FrxdBixBLimtFa7rTRTCdTvG4H5Fp 545.95950000 -fiat/revs sendtoaddress RXg4YhwCZCHH5Trsej9e4XRHKVgfVNuyj1 562.21708186 -fiat/revs sendtoaddress RYMQkDytoWGKeygfouRJjPLmmais9t8ovQ 564.89274744 -fiat/revs sendtoaddress RXH3U1958u7a82KmLW4RwU9So6RmCfraaY 575.80164953 -fiat/revs sendtoaddress RAjZsvmu7omTUZc24AEEB4rvt1j9keHH61 590.17732021 -fiat/revs sendtoaddress RFd2ygcFgrCd2MzPfF6ZiamnNAunypabRw 600.66098439 -fiat/revs sendtoaddress RS4AVzd7SW8rANVnuBydxEJLfBRCt6KKyp 601.77765154 -fiat/revs sendtoaddress RWRWxi9LiPSMhQVTSXKppmtBeSFKB7zTkw 623.13492532 -fiat/revs sendtoaddress RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut 630.20000000 -fiat/revs sendtoaddress RCBZWHkpyvBjV2sA5kzCuUimoeJfJVsec7 631.93532165 -fiat/revs sendtoaddress RKKRz2VW7WiYefjWcP48Nj2enT7i62ncu8 662.37110434 -fiat/revs sendtoaddress RJgboHU12hUcWCBAQJmtsCUsohksjGrnmF 666.41577353 -fiat/revs sendtoaddress RYatRGtqiDZHS63CaBkAWaDbo7SZffNv4u 683.84493839 -fiat/revs sendtoaddress RTZrNx8tjx7F4b5qwCixT6rkgynzDkg11s 728.66953211 -fiat/revs sendtoaddress RX9H4o7wyG6nTNFiQF5tCSENFGeLGMWUyL 739.71019424 -fiat/revs sendtoaddress RC83L4gshS5WE2BkmomjbzQgiFtq7xBfJi 769.33230149 -fiat/revs sendtoaddress RApYWob9QocU5Us7LLEwaV4U8h1z68dDiW 782.08757984 -fiat/revs sendtoaddress RAbWNNciRspsMniVJbzHrrv5MSUwD8HuYM 785.64503552 -fiat/revs sendtoaddress RPpXeiGfv1yYdrLGFqjPpAF8ZSo71ghq4o 810.85168289 -fiat/revs sendtoaddress RKYWTbwFoUijKCieriwofCuPgiJ2bbes1X 841.27927382 -fiat/revs sendtoaddress RRNj31z6oqiNEv7GFmhNifFLGd1MMvvAqF 842.49822301 -fiat/revs sendtoaddress RXVwRd2rB4nE7MkWjDQWcLgFJRQgPjWaUa 850.32853855 -fiat/revs sendtoaddress RNko5DHae1cVhbeazqXvLJEVYJccHx67KW 867.82542543 -fiat/revs sendtoaddress RA49LjsMvLfmAFy5qYr1oCQ8rdch6Lj1NE 880.14735554 -fiat/revs sendtoaddress RQikhyiVU6meX3on5A5JDwzwraRnUiHQkH 882.51675831 -fiat/revs sendtoaddress bZVpBR2daTncJZZtPuNqv88TzrQkbQYYdg 900.10000000 -fiat/revs sendtoaddress RDoDgWSFzNFcBkiiM8jHyG9CTgAHA36rLd 928.97360414 -fiat/revs sendtoaddress RByFvbaE5nrB4mqUJ2u4vwzowaWvaB52ar 944.98000000 -fiat/revs sendtoaddress RLunPXFJMWQ9DJLVGUP2Xj9fgH8A32vWPt 970.67993828 -fiat/revs sendtoaddress RMPXvtVDndUeCHBPXS7nWneC4b7kN9PtZs 987.30467389 -fiat/revs sendtoaddress RTGQ1Wjijq1PXzPGJV9oHRPQJq1B64ALpV 1000.00000000 -fiat/revs sendtoaddress RKNo9k7vM9Xe8TvZpr16Qeb5HbGpdAydrL 1001.64702040 -fiat/revs sendtoaddress RTsh1yvLPM86i5ygVeD8vfotqeVB1zV4Ps 1011.15326271 -fiat/revs sendtoaddress RJZvpWzwxALD9FwPvcXZLGFGdamGLC7Zf8 1021.54501080 -fiat/revs sendtoaddress RT9obeyoapYL1kzZdrBKTtJvasTJoDTiwA 1023.08312357 -fiat/revs sendtoaddress RC9mY5pgfqfyQfsGVSuo14E6mMp78sD77c 1030.00000000 -fiat/revs sendtoaddress RWrBZR2W72YKHujQ6YdXwkrVRArLRqAqZZ 1030.32106028 -fiat/revs sendtoaddress RQ49CbZ4HpAVHPb5e9k6C8VzGRizV7wVUC 1037.11942646 -fiat/revs sendtoaddress RLwamWWsbVQbqpbVYiGDUBDrACuNprSpDa 1070.33908131 -fiat/revs sendtoaddress bWMnm4JFHc3P4wxAQNWhkxYWZV9pkPXavq 1079.83959447 -fiat/revs sendtoaddress RFyurZh8G5mHgHose6CNSxY17jrCzwFA3C 1115.69217311 -fiat/revs sendtoaddress REKNAiyTbkAupJYHyDCjwoAU6zqYGc6LUe 1178.35224911 -fiat/revs sendtoaddress RWZKyeoA6USwkdpMnCLvM4gdQNJ2Jkyb9E 1182.57361147 -fiat/revs sendtoaddress RS4fhJG53XUyvD9gmWEjep9ecEUYLpzMYw 1197.42230538 -fiat/revs sendtoaddress REKW1Fds6ZR1kr9ZQpMQfX9JtVr4JoMDQP 1245.36418320 -fiat/revs sendtoaddress RCzdxZnzEReriAHYShjqVE7fWUKBmUAGKr 1248.11187974 -fiat/revs sendtoaddress RMu8dLXBwygMM6QX26RUZumoNz6gsSPUbW 1252.75530323 -fiat/revs sendtoaddress bbQ3vYxDVW121iRGR7Gif7HLJyV1J5kGpx 1255.04360000 -fiat/revs sendtoaddress RSzQ8VgtT5fcoWSxG7msWenU4MZspsRuZE 1258.45808870 -fiat/revs sendtoaddress R9qzjnYUNA5AQvaBFzHHkQcSgm3c7qaGiq 1270.43960528 -fiat/revs sendtoaddress RXnGy9gspTSbXyBHHpDuDDJ8isZKdbdZDM 1283.33070550 -fiat/revs sendtoaddress RJ7HrZo1sbVi6JjU4U8mTqZeesh3cgikqx 1500.76743524 -fiat/revs sendtoaddress RTdKZwhyw6JLhtFHPSq895ss3PGVRoFiTv 1533.78985801 -fiat/revs sendtoaddress RJxmRHNggLPjZTM2eB4ApEs9NqrDeo3pX3 1552.58020215 -fiat/revs sendtoaddress RB8dMmoUxCGTA5BnGiUuUpLuWMmYBGKka6 1580.79802115 -fiat/revs sendtoaddress RJaaJGWo6kKCV3cH4gtZ8zU1nhLRfbpHEr 1597.30381665 -fiat/revs sendtoaddress RYCRimXfejiMnenUJaDuwWPuAiPWCCW9WE 1624.86184672 -fiat/revs sendtoaddress RC6aYisvBT1GB5GmzeZsrXwE2ghbmzGyHD 1680.63385794 -fiat/revs sendtoaddress RSAFhoDsaHgpvWQAQHfQgrTw2y251sMdSX 1711.15826952 -fiat/revs sendtoaddress RKoUvKXy6eApLpUQwvvBF1phNp1fApeu1t 1712.15414286 -fiat/revs sendtoaddress RD4gYn4oSN3bCoZ5xG8ZQcSCUJDnEot3dD 1748.97302195 -fiat/revs sendtoaddress RC9UvLgfgFx4BsS77bkC8swFA5WjNfn58w 1922.42175949 -fiat/revs sendtoaddress RWyzffxhC6E8qAmndUEWaA9HsFAokB12kr 1953.81900169 -fiat/revs sendtoaddress RY1WSzWWgaJRof1tK3Vxmo6q8f6ZYsAvvp 1989.58109245 -fiat/revs sendtoaddress RGWa4NEsEEtNGcHtH7tba3sKoifHgy6xgU 2012.14166801 -fiat/revs sendtoaddress RFFJFhgSy2z36BNJ4AqzhRwMdiECqkLu5o 2022.18035204 -fiat/revs sendtoaddress RGaGoL5vZcd6teKEHPzgkurA3grskipQnb 2050.81194884 -fiat/revs sendtoaddress RFY1AA25ME61rw5eqTYiKUUoFnSuz4g37S 2065.02328418 -fiat/revs sendtoaddress RM5NNYdGee6X65aFGkyaRkYocSxQVNsB8d 2070.75469155 -fiat/revs sendtoaddress RU4vhnUxetvmDappwN1Bip3UQLWXQZtgVC 2080.00000000 -fiat/revs sendtoaddress RRWZoKdmHGDbS5vfj7KwBScK3uSTpt9pHL 2198.60600609 -fiat/revs sendtoaddress RQXssiJhWsc11wimZDGQtWfP2z6xAEjACh 2203.39011975 -fiat/revs sendtoaddress RE232ssJFR5qE1xEfVc8mnbfVykxtHpK3V 2242.14368261 -fiat/revs sendtoaddress RRZZ7VYu5HowvkadGgpXoYDhTtuhFt3Rga 2306.22009491 -fiat/revs sendtoaddress RDoY2wATo6jddqNP34jGqJ8LtUYB92vDn9 2392.92000000 -fiat/revs sendtoaddress RMQY3Rnm74oB8k9kwmbAhiv4KASBAXgc5Q 2410.55569525 -fiat/revs sendtoaddress RWU752dM2s3sjpPZCaWpihUEYmbL6m7Pne 2537.07064054 -fiat/revs sendtoaddress RTCq8NorFo4bNwUTNnyKg9YwYgxH49SbbY 2556.94031291 -fiat/revs sendtoaddress RNiUNTzDtBgQyA64txPH3W7gMXAjJriM1T 2597.18712886 -fiat/revs sendtoaddress RHuJvZphT6ZhKP3hxCRDDsCnNmCMtDy43r 2603.59182293 -fiat/revs sendtoaddress RKxJ7a2J8faQ7VD5dAyFFjMU9DxMDFqv3D 1.10000000 -fiat/revs sendtoaddress RGyC2cGKrTbv1zQq4f6fbMc2byCNdUAwBX 2700.00000000 -fiat/revs sendtoaddress RWJPh9C4WQGuT8UDMXb4u278Teqzcq3zQt 2784.22122603 -fiat/revs sendtoaddress RNjNREuiLJ3D5eWGqLcsMvjno5RBsBxqKN 2894.22787069 -fiat/revs sendtoaddress RM7V81SXk2iGG3Ks5XoiqFcfmoUiWHtvwu 2954.22050198 -fiat/revs sendtoaddress RSZAauYp87qK1bYHTLECVNwkz8o5sT378i 3060.14169415 -fiat/revs sendtoaddress RG6CQRTT5YELbwZsbXQTkpM6AwuYJdmTbK 3158.94508818 -fiat/revs sendtoaddress RXJTdXZFtHSHn1uoUKjPf1o8EnJWfPQctm 3219.09324326 -fiat/revs sendtoaddress RQQeDVVZazjiVo4hvX426Mveu7w3oG1ctb 3462.94432823 -fiat/revs sendtoaddress RR67pFVScD4dVhaksdAmBwiNU2bi9GLAnK 3947.67767456 -fiat/revs sendtoaddress RGakaSDQtRH91A9LJRMqqCRmLtsBKBxscf 3979.52576425 -fiat/revs sendtoaddress RBdqPkQkwDCPWqTZChUjybb9fR4MaqMbFP 4153.14427322 -fiat/revs sendtoaddress RPYyAiFE7ZPs5MS9AEPRBK4RozvR4N3ZgH 4181.63220753 -fiat/revs sendtoaddress RGnSemXxYSWJNgdZYpQUf5wNwsFU8aYhNi 4299.51617127 -fiat/revs sendtoaddress RGfVQAre3NPLZsk6ggwk9wsnUqtTLkFsBp 4314.00888047 -fiat/revs sendtoaddress RQ4MryQ1eqCybU9WUe1eH9MmEgzGcfMmgV 4541.72536969 -fiat/revs sendtoaddress RJdo7GR1LgtSG8nuuAU2F5vQYtw7whMKVw 4869.97663739 -fiat/revs sendtoaddress RLAv4hKnrweHfmWfe6trpTWmkp8By89zEH 4912.84976935 -fiat/revs sendtoaddress RTaYBryxVTYy6oorEspmnDLYh5WkqeuzBi 5133.33174713 -fiat/revs sendtoaddress RNBdRLCTf1DpgSsnhKmTMbfLRxCgsTGjh6 5142.01416110 -fiat/revs sendtoaddress REzqSJ7qonDbMVWfPEJKfRPduvfPyumkPR 5338.41830397 -fiat/revs sendtoaddress RVHyYHfgSgFux5iNoZgBEFGC747r5Lk5Wi 5344.11999439 -fiat/revs sendtoaddress RBCtWKuc9XvKQJqrxeNAGB3fh2JXbsFS87 5432.11872965 -fiat/revs sendtoaddress RLdUWLMxWLz6szQYUbyfvcZMra8dTjwDFX 5682.18856311 -fiat/revs sendtoaddress RKqfxo98Dmf6xamGfSFVeczQaU8UdBvzgB 5810.91344741 -fiat/revs sendtoaddress RQfmbLQkvJEEUE1s4qC7NJn9nm9LVtLDYz 5945.95358406 -fiat/revs sendtoaddress RQ7pyVDnUW2dW4VsyreWV843ABkDETxuih 5978.00568581 -fiat/revs sendtoaddress RTXuCinnhGU5Vz1MsLcVQBPhA3Kj6zffc2 6744.61067515 -fiat/revs sendtoaddress RGaV5Qxi2PdtMpe8GR9MpQ9JogDz5oaZbK 7192.90498591 -fiat/revs sendtoaddress RRA6inSrHDZKXFWMD4V2dyiyHtghLHDq1m 7474.72830247 -fiat/revs sendtoaddress RDnHMnK8tgm9WmY9u3EoRLww9FyFBannCa 7674.44264872 -fiat/revs sendtoaddress RXcEPd6zV1hHAVZzfe2d8Ccv3MzHMZEZ49 7979.29356057 -fiat/revs sendtoaddress RUw1psGnNrrcgmXDc7cRwEBLKRudikSdmy 8009.98000000 -fiat/revs sendtoaddress RWAxa88tQXVDY64Bwz6DP2ZppsFotibaYh 8600.42312744 -fiat/revs sendtoaddress RGqQ24q9Ar48oyuG3krmEZoYwVumhJmZ6C 9021.00000000 -fiat/revs sendtoaddress RJANoTkNwx76yB3Hkx2Bk1KdisTVM66DmW 9099.20666047 -fiat/revs sendtoaddress RNfuDmVjCkCuXHk8MBn6K5mUyBHY5xXRew 9212.51505260 -fiat/revs sendtoaddress RTJiW6nmfYpwE9seVBCBGFg9o4SodM41rJ 9228.95935659 -fiat/revs sendtoaddress RPMh2JYF4QrveeBYC9oBgaoLvVNm2PadWW 9238.95876293 -fiat/revs sendtoaddress RWUTuApNQuuSustN4DBt6PxxVRwZhh52An 9285.66131773 -fiat/revs sendtoaddress RN2oUdxRbBG77NwCuyzw8KRtAnhNczpSic 9324.74856304 -fiat/revs sendtoaddress R9UXLLQwJDdWDCRNSFRnfBPwaycxxEJ1Jq 10000.00000000 -fiat/revs sendtoaddress RM9iwyjkh2KRxWwa71DFfNXZsMtMzDZtwq 10054.89954688 -fiat/revs sendtoaddress R9g77ds8kFS58V24s9Wodt8quMB8NSp3FC 10145.26130120 -fiat/revs sendtoaddress RJ94yrqKCP3XjFsAsNj9WXS5SLpyHUpx5n 10530.83468511 -fiat/revs sendtoaddress RUZ9AKxy6J2okcBd1PZm4YH6atmPwqV4bo 11376.67477057 -fiat/revs sendtoaddress RCcyievEDRE2RFUag5jcoz9fMQ5uwXXPaf 11413.06578145 -fiat/revs sendtoaddress RBCLnsjCVHWRyUpfgauyzUu8iP6X5CabJT 11587.12695823 -fiat/revs sendtoaddress RV5eKvybKDNctYxXiNYV766PzCakiUNRRm 12320.60757772 -fiat/revs sendtoaddress RYNE2isKrRu5b7xxm1DtXcLxdmBEKatuJY 12352.53172757 -fiat/revs sendtoaddress RR1svWTDxD6bjtkXDzq4vhB6PWPETPNU42 12442.52868329 -fiat/revs sendtoaddress RDvdbqJLu8GgLL1TvdADNeCbbjXRmHBjog 13489.95082851 -fiat/revs sendtoaddress RUtWXg4RK7rs3pF7zCUGspED4aUoRzoopg 15100.47446281 -fiat/revs sendtoaddress RJPGpRQ4nudwzw6mjWCUb6cq7aWP4to6pM 16712.75904663 -fiat/revs sendtoaddress RGgbJiV2Hs8eWJbZmZ3hZLS8sSzFA7tYNu 18146.04892666 -fiat/revs sendtoaddress RQif3cnnrWjP2zzrhum24FjgwS4wBzBfts 19648.89190390 -fiat/revs sendtoaddress RVVXPGLFbRUeQo1oGSWjkposncuzFirxep 19960.31588900 -fiat/revs sendtoaddress RMo9emPiNDd1kvn9jpDBEvLavPxb9rdyNk 20322.05955760 -fiat/revs sendtoaddress RJjAyD4hgq3XgtLikv1U1TrTvp46fBdxbB 26613.67939303 -fiat/revs sendtoaddress RDn6vnPHXixF9zJNj6jyowy32qUJhrVDvx 31325.56985113 -fiat/revs sendtoaddress RA7FDvaNFXZNLqosSbCWFbypuvijJNQw5J 37986.61891061 diff --git a/src/REVS.txids b/src/REVS.txids deleted file mode 100644 index bbf5b8779..000000000 --- a/src/REVS.txids +++ /dev/null @@ -1,3683 +0,0 @@ -root@static:~/komodo/src# ./REVS.snapshot -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -4cc92748f84e1bcd6595910560318c740af74225ef99fa2fdde8f49848abde1f -4eda2204a28181d1d403b60f219b71b2970613a394119493dda994481b8d49c3 -979dc550d9872079747a383d632f71068bf6126fa2c0857357c342318e92527b -ea202f6bf0e4407369365c767bb4b5b0e50cf9080694631c0c0db2e8c3b3754f -4ba4ab3ed6ea2d5be3301b1451cfc9bcf758ed3092a7ece135ee08fd52bdde2d -ddd06b3711d31587543ae62560ff38807f9051cc5f09dd5eb01770aca6a11bf3 -923b6283ebb97e89b0d707a1f736784ede13a1ea26d7e13243bb842cc7687518 -26fa2b01b3aadec075583c6f933f7b2e74c2d1aade8fc2d27e75773a6fd88a6e -3a912f51a0d2a868c3f61fb533d5d073d28c5047a13365c1c7765fc079d49afb -b5492f647b1ba36ff1c349e94f64e09fc868dc78a249121c5a6875e6338bb30b -6e73503c82fb12fe27d15504d1e06ffc0c638b60aa4122477d0ef28bde25d897 -38dd556c3edb4e387a566e9e2e78e49dc29e5147775674bfb0c48f7cbb83b1e7 -cc7c91175d5638b76b9b9d0295c9d005788482b64d7ca0354e6077baafced3b9 -77cdfc003cbe52c7ce6a3986885e3d9d1ff5c85fa75a527b5201f2490c9c9fa3 -8e7da93230856257101cd83571ad34553731d38a42063b0292fdc492c3118223 -4477c422acc562989e40a33fcbb3ab011e9a0642c0485a57c24913e8984cfd7a -a48d02869d904e73bf06f31c94dd7cad49244d6d2de5debc386886558908334b -78573e96723403f9baff40938aee6c7350ddc2ce71ff9416450eb93cc046b9cd -93728c457a6095d01ad863549dafbc9ceb89fe01fd7dc05c7743b2e2bb1b7f5e -œ2852bdc6102d2e04f82edac3a2f1dffae18d07d2451124f5790bb92f194dce06 -f686a7a442230ad7498dc491efc4e3cea04f43017005d3c19fafb5ae9ddb7719 -db6c19fa9af8da476f1ca1d8762e50d40cb2f5ff3a2b1eb3ef5fed159cb4f78a -f6a90c866ab4f91eb8a0d923ecefb409b0703cb4f55297ec4cc2142be2d38881 -fbb28af14b7fa464573ee647cfca984c81555583c7dd24cfe31910442aa58a7b -58d2e61c7045a7e1da665c40c6cbc52f8e498be3e0eda557448e481d637098a6 -a1276cd899b1b749a196fdc6d2bd88a9f2ab7c3ef06fc031a37be00b64e06841 -e9b40cfb9e62d7b6ef21802d167944f18bc315bcf71700b6ae853e76067c418f -d87e9208874f6a155b3cdeb25e744be3014ceee4cf8857d84f86acfff746149f -623a12af447de9e0f78fadee21c133def6e1a87a2b16b922b20a5085a6056eda -85c65a36f2e5fe4168eaf3338e35afa05d1d0676f576328ce077099ad3940c38 -1759b5793997ab1c04129d925fb7b015705d9962b106fa7ecadf063b233b371c -49e48b394eecce1250e5d8958543f45f1409f4885f3c251b6aa8c0a282f712a1 -dae5fae73e5cced5915711aa774467cc05425ff3be4c8b569eb77fbfa6fdcfcc -c8e9dd1c40adcae8ae8fb1800017a76847973bab37f4a9bff52f236ec245201d -8234408128e3153876c6f96d90a03128ee5fbfed0d266d9d07b308cffbf0fa3d -205d8b1df65bcade1a4fd3861e9ea7f43c36559c0cce6e1f8d79528803f5510c -7fd3a0c5a94fe5d6c7980881c18afbf585611da41a21acf25bb71cd1598e58b7 -86a04100492cf20b97f6e1e9856342fa88191e783d8fbd88ad523ca0d9faf4f4 -ab5fe28417383d3c91921d6e786133c2da84d04d1eee69b18707bafa783672f8 -5291eca18b8ec58550f3d4657f208ceff71b46a46de76ffecff845d40f08871e -76fde957ecfe58274cd166f6f0adc851237866ba7bec89a1d8fa533a67ea50a4 -99f92c7f42c4ceb81e3f81b7b9f7f63b97701f6d161a04e8be2b9006f37905ef -2aedf6dcb191df30bedda717c42305c921dce284bd3c907948d774b14e249d48 -6621dcb301a32460ec1e34068adf13cdc86d26605bb877099dc2bc375eb7b972 -824bab3e6b0a372edd0877e50ee688aa7e8f543ff6b60ee0039b9c74951d7e1e -28480c9a19cc974fd70e56b81af6f77f414f7d7ed7da4c44bb9dd6fe966adc55 -4b31921194e7cbc7fd4acfb99e42c0662c3dde7bfd5649ae4e67307464211a60 -6ac3b3a98feeba90187b5337c84e88ec41407331d7eb5be0cc115d6e01a916fc -ff8dc276f9d7540b9c50c2e665f374f1037d9e75d0b6bfc64a633c1950b403cd -b2751e58d6fcf7c368d391d31af59c1f2ba6779d164948b3b2f80cf6c5d77765 -03cdbf0b2bbdffdbd0e313892df1112fbd24d8b3dbd2fb5c6630d300ac9cb12f -ad340c0fde59c893d6a46f5abf79e8fa13fe79f444a55e211e7a43e884e36e4c -d1d4ccec85553bdaf2dcb5872b373fd7cdcbd83909956f9d06acc0435b802492 -c8649f21b65aa3f2e5ac8c769ab1f2367d87f7dd9398dec4a870fde0fa675f8a -4524fa98c46a77c43b2cf49ba4fa0a4d3d1b1b23cbac916ca31451bb09bf73fd -f4271d05a33b66d79873bb05c3a7a63ac7a8d1ea82ef95aff90d1ebb1437bf79 -4c6ab27cec7dbf87e0f6a40d6135faba120da5f4199637799edeb018d596a078 -79722fe42f9be6e6765a4ab8d66a0af7c628638062a7b0bafc9e3b3974261022 -04de7f0748987eb12702dd7ff3e70ccb5275405c2c08a1bf3f12d3d9cbbaa68a -20632a7a713bc0aab0beb808cfe8de431c10e0868b8c1e6d501a9c2d642e7959 -a336594b992b6678bd0b486b31631198775038eb1d8d741306d397e1cbec25a8 -7a3ad41459171acbcbca28f50b97037c72633db9ed9f68aa50b87e564d5e2609 -9d22daa2fe23446fb7e9fc2f27dee693dfbe95c94a15450547a5cce040b0874c -c1c791ef93ca830a3257478dadd4c47a514ceaf90b9cbf6124d370591d45867a -9a3f0cadd6e34f7b9000e30bd1baf5f7ab34c6bb1aa2925858cddca962ef7502 -30ebeafb1bde4a2bfea0917291f2a682848ada035954f3d9e8951321055f7643 -02b098de7521d0081ca026cfc3be28ee016fef648cb1a1c89dee87a70f3098ac -2c34dec34d09c97745370a7b6dfc997086e43f9338887140476569a1d052f6ad -a500b3c5d176d54974d3707e387b7bf135249676ce63a52f37f228b81a6673c8 -7df8d6754faf027a40de3b538ef33acc1d2094df5b98e4d2d57deaca121d4f9e -8fe7df1b51b3155a16e1f094fa16869c4719be49cf99f285df6a15f8ebeac124 -61d34c3c9962a5b82aa0d4ba477c9f8eb301551e742aebd60bd5a018c0449b36 -e9de516a6c19187283f248f740a9115b3b71755ac8988c82f2c8080bb8b77a0b -64ee052342aa4608236bbe6838c897b0e82706fc0e4e7cfcdf3a5bb0a4926090 -7841fdfe6186619408e04f00f9015ee984eabc59b66f0866416b9a1a577f8c5b -0aa62789892e87492dcee1def311b9cd736a2c4d21b2fef21770640a329fb836 -8225bb6417973331875d816c1747e9c73badc403f121a7145fe9e41a85b20f04 -ed00945b5042e8181037c8ad36d6a79fc28975b810c5e3b6203d4f4e4b33ec04 -1192b61ac2cf0fa71e9f27ed2ccf9736aefc98ee72c330c57dafc0eda3bcf8b8 -d42c921f9e8627e18c7a80f8f3b1932123ee7759542310757bd66c11c32f9e59 -02ed12185bc5f1e6aceed33ecca4e5914bf7dd9c8a737566c4aa792e7ab4b3eb -2c5a56a262b8f68e6c46e10b1597c35bcef1e937ee361fc297bb05cdb3245682 -f48b211cfedf7d995e6cc786ea78f29e16f24f5e690859e55a964541054405a2 -beb4c7e28b5e53a397b27fe13a3f5c58db0adeddaa799628464812572ce68dce -87c8b10d79385395510ea818accb1619eec7792e95e8d0af95c73d219d8c5b06 -68e6c181203e58b68ae81710f5033e4170d43d9f16afc1d60b74de9daaaed2e8 -fb7b3d27692b5418a9dc67fbf3e3e851389e6b6bc653472e14658dafe1d607c6 -96b6b808155e21eda9850abcc734221ae46e5d8011effa9f00795b8e6ac22c49 -505651d7aad349ab025e818437a820ee5561200b6b3fefc3a7127c4bcf034762 -2721db3061d1628fc52f253a6b483504cc7a81d9e95a8f8474ad244b9444a681 -672a2285562b91461ff05c879fd6b124ccc7bcb74e5afad9528dad810ea856be -a47cdf9110e6329912edd793c96f07eed7e17f5b64b40b9fabe306f4a17a06d5 -d06db9e13361e4126edc0d470c18ccd63c81251c37c987c1a2359d5ab6ed79c7 -7c133dc6e24b5b99603d56028c0257664705dba6fe7e5a38a27230fe6e4ecbb1 -2a696dc1059a79a6cda15c86f5ea5e0f304e46a2490565a92381c699e6d8e23a -7f06b90fc4dc50591450b32501b0a5bb191ed4bd4d9c716836ed6538fa8f2da9 -66735fdea51df6945afba0288e432a6706c4c56f4004331b36e616356a8bf9a1 -c79f0945085e1aea74ae82be75a194527325d8823d33d7bbe39c3b6ee46c6edd -44e922c1f849f357df249c2d86d60f6637b55123dae704d9759d79a35c29d7cf -efa85576133815eb6da1985e2dadd9db55c40f5c76a14238d8ef2b49ce12dfb0 -f747dc539fe67f4c7eaca254ba607b4500c55dfe6e87c5011b2fc4349c507621 -56bf4a4f6a5a842abef5175d14aac44a7b9c06771a408a76ffbb7c43a8109e67 -18eaaf95543947f3643d6a00e4512971fa49f1ae7093b8493c568c60e4d14d7f -3b521c0fa0a3272fe2554504a0547c43ad11dde520c3bdaadaabd333139da5cf -900d4c56eb105f4f5a4397110bc6a3d18e6aaef8c6a5c651de03d527004c1dd9 -26da28ce293fa3854d09d7bac99e6da823dd5ec64d9f10646aaaf7f81b3a4ae4 -b29795bd7a1da397c47da30d26bac83e196ed126d4a04cf94b0d48cf75ac306b -d7927af75fdc0379282166a8f6dae1352d80d58b9dff24cb4ace3778d14d6f17 -b9a629b34962bf64a3ab1b5a1b10b44461feae90c55606b936b30427b3c751d2 -45eb14c4cf3398edbd031d6ea19bdecf77d699c40d1d5fa7c24bb7aa92c1c4f3 -28674ab5c8d595238000a6b2872240f513151b02be7368c01ca60c4d4c17bb1d -85d44adb6e132e95c4c436f5b9e372c0e250b1c5983788c07695a34d42113a01 -32e9489ea4328813f65b9ebb38edeef937602e261e075453b7092bca6362e3b8 -eb339e8e35775162776e9f868c12ba9850c9156252d993a5f6e63503d9212a10 -e691da5739a820058bc241b4ff4f58484a58770d482a8874201cf6799c7f2160 -22b13555ded0a62281cd1d9bed0035300937c9250511d9cc8c6b7cfb23f6f9b3 -5ca8d28de83ca90cfd0ff6e0baac58f9ef4e9c3e300660f5b3fb18d21e9db88a -c57e683568d75f5066fc038492d12ea97d6d859bce8a501fc0fdabedf3d2d588 -88c7010eb8e04d42e15e1d5ed07d3915db57ceb76fb29b82cb28a2a3301c6dcb -e1f4c88b1b35ab004b60765a11a75f7091639f25855cede1f25c84f6eaa421f6 -541babfe6245c968fbc0a1bfb47a9ac505a61921303de75bb363b20d4583c697 -e8e2b4d794c4c001dc7afb32088d25e171b4285c3479770c42166a80261b1b5a -aa541d243aba802f5658a0cb1fe47cd9b2cd639f34d18d7f6a78f8d71d5eaf0b -3242fd0b8d48a9e48ddfb8876a733b08d43f125e8474b5eaeeb87184f4c2ded4 -5442650f8526e4eecdca18cdc17a5daf47ffe5173fc262d4ee8d9fb84269a7f0 -3f822964edf3b137c5a18f7bb2539cfd85f588d7a6184dce96d612a3bf501c36 -5106688ef5bc6ff4e2c7b58e20aecf5cb8408e46b55cc43e12db102d3687bbc8 -3b34fbc7c3a54167203fb14c9adfe753760be9ff6ff271ebda14efff1377f90b -96295f18000ae61aa6dbc049d07394ed4672ffca51b555915086dd47c4605296 -1de1de272549957c6f39c4e489a461acdea46ce17deeffff61a4962165c28413 -5617f94dc9f373ddb22c5e4ffd99835f9fab9b2f5e71f98408e5076b9ada54a9 -dfcfa2e09b928e3fb702e3bf5d832e04d9fb98587fc5aa4f181ded3b099b4f9b -28ef84175e9dca4ca5031c50984786395e160d5fff8fd4dc4de2bd25054a27d0 -4fda708e30e98cb7c9d36c2f3fcd7e2cf942544f8a14cc5d518252ad91c27970 -b9502b6cc2d59e792b457a74990b83752a1cf9109ba4dc0930209bab0cd64dbc -1089143bbe362fcf2fb92e0d234c25bf3772551fbb6bd27a0dfda22413859b0c -0665406732eb25526ea5f10fdbe9df6044452926065fabc1d3e58e90e3cf9de4 -096d2a50276ec1d18e1c298138ef82d50fbcebba19ae5efcd0842cfb4a48cd42 -551170577b770ecaf2fbf6bcf8bf6ab5801a17af3419362f734c70b9fa488e0a -30f88191307e06c3d3e33b67b1530f4ac77731b78bba898798a5ea59c42a85a5 -5bae034cdd233623da6da71c5fd8eff03a4212ec110da3d68a089c27fdad8c20 -53f8742bf2fe396c1950940e24f9bfb3cf16e570453b7d7156312e856e6479b0 -468308c962dac0c431dc96227ab8530f85fa7571af53e9fdffc392dc85e53f74 -1e9e140f2238429112f4468c5fe54094250b6c95bd0e7c322efba20110503e52 -9c8b4ba20760ae1bc6f8f4cfe1a228a402c996303873ee886f467006e240dfaf -2b992d3887758920d3312d8a8248198118522cde09f04c1dec17a1cc98d26356 -f2143e3062fdceeee1177e679af6ab47bdf3249510a22e77f4900764e0b844f7 -7cfaf076eeb1c87b0465410847aadef37fc73cb89b1cc750da1987cde4d3fec5 -555ba4a8d00cdf0e893a25f8b5199818463230b126b172c89036e3c645a49cfc -27f7f1e40ed9e1ecae2d88c5dec27716ada18822c73957dd2b3cc3941bc27ea2 -7c66881f5493d5d31f775ce74ec1179419616587b41aacdddef33a519a106e0f -731da2dd8bb50b0f7969f9edcb23afce0dbbae1394b064389004bddfee9afce2 -0ffaeaf9ad784e4238b0efb4b0380a03909f22f6925a6abf78874384f761358d -ffce53f8dc86c9b4ff70e459181cd79ece94e9ce440c92e656f09afd7cc88614 -37ef9db156a6be47696afd50dffd265427857ccd50ccb9f3452a2d457e099ac0 -70177d562de5994d0dd108033ad7d97a6cbaa9dd3cf74fb5d7387daf1f53f3a2 -38830309769cb241821e4900d5dd7dc5f8dbcc4bef4dc0d0e37270a42b06a257 -6d8660ea36ae7e6a5d587af682f970210832d13b642bedbc47f36a3941dc22bb -1d3f8f7b5f0940ae167b23889a45bbb55116c63979c90596faf0e51a4ac6b9e6 -4c2d804d8764447ad90eb455e1bac72451bec9fe86e965154a8d9f7cd38bd715 -e853a75f0f39a5915034751122252bb1c8a12a4ca45066337d6b120c4ea5374e -150e50d91e7e75e213d371d60951fffe247b4e378142259e304e933e37e7f936 -9266c06c662940d37f262f36140153175c4dcec0c2e31ce25e90303f015b74ee -1897aea82c6ca45b53699414eda24f69ab4d31a38b0b17d8195da52fe028a733 -81bdb255dcf5cab0188990ece92965453d8613b43b55926caefc600bb1c7c50c -db8fada385b071fa503544887df646e713e1d00e46fba3432dfe5c30700ac7b6 -4f850ba1ac0c92da935c281e972864efc076339a1706956e9dbc68a77e9389db -3448ac9bb7ba62a23af0f1e4c3bb475dbdb94648240a93cb27f8d1f14109e051 -accb1e825d09fa52e8a2f30441f8118b58a3cdab4ea928b6bc0a021ac71d7661 -4c2032d0a2d1a47f6ba3e265b174fcb778d39a405e578adb2317505e90502d19 -14f5663ccf2f1c051979604d211dfe14062c7697282e68f354af2a5e4d3cbbf8 -0b04f154878f5c8de54832818b901f6cccffb1c0fe0baed6e7a05dbcd75c4040 -e46aaf5afd332be6f537fe18028409f28d17230cce3acdb6aa7f15dcc961b752 -cbec087cefdd0f7d8624df8edf0d1e543b04fdc67d766d706ee5ac04a7a4a76f -b737e42a26d9e8eda5d7eacb2fc548ae518b97b65868cc64259d42f2ee53461f -b724ee7792cae1b9c414487ed4a831b3a4fa3fb473da3be1831c4b36a5ed5f51 -39e7e55e209fc866fd6e40c0a789eca967694127229eeae86c4af07c94e80fd0 -cff5be3c221891ba0ec7732e29b823842166d86877924ad6356afae0c46be218 -aada002873f547af22280d1fc9f2d3d00c8bb76699dd7fa1f433196bd28a420b -48ba86b9cf487d0fc044179f714a625cf1db80186fac6e64324ebdd968a793bc -acd94fa3dd50a01e70a4d6d23618ced513a87c52dbe0298051bdd67f5bfc5cfd -19c7c208525ac2ab168fe224ffc3031c4702c2c70568840613cf29468e976bfc -c7de1304fe2e283df8f659ac17d67e88c50035d89f0c72f32b5517fa8ec0de41 -63308d915c55abcc886c930d169c4afdf34f285d5ca3765b540fe763cffe8511 -31863641dcb2e9c61a5a33e32c9b314f9436ed3515d08ec5501d87e3ebcdaf36 -c59361ab166016ccde20d98e5309f9cb9c62d7f10a779c0bf253c3055364c51b -fb3f6e13d859167bb944577d1cb43c4d546bb628f770a662f198331f42da282f -c1b215b2cbe88393827dfb7926c72bc6bd208266e9a39416fe9f4e09143dd1ba -a33f059fe1b61d8a25a1e4f1a2a28f8331eac861725b3cc1e2eb2b5de86b74b2 -e88d627bd133a37a8ed95c83705fcc7711182e88d0e035a7cf26c2fd8dffaa09 -e4a9234182543c75e3c4b23969c0e1f819648dfe2692c515313c89d85b026967 -eaf45329e50d5bfbb288c57f9ab12f4fe8fd8999d10addd340bad1bd693bcfbd -efac25200b409372b60e4b47e2ac3031da824dfda6c643b93a51c7c8abe2a77b -ef6d28d9586bf93d4b3a74af0aef053fb37897cbcbf482d493c1d519c7f2191b -6ac428e166d32063f0a92807323584ecee946f8a645d7df209f2c09a62966d20 -bb75357e5c739006645b74313eed38f2e6d499147abf46d30c21516156a9d9d0 -2116019c7d9e07ee3932719c7d45213e98e0cc49f188741aaa7c1bd9ef7f6592 -8e5a99adff59006b4293da4b306b098957cad2754e6b1642d487c27b679ea9bb -9fb0118dacaa0de6edbcf6f4b71261a0b2d47da0f407d94dd0e115b73a4c4221 -45d6678b9d05f0d7b28ccd311bd7f8ba260d261fe13b5bccef59947977b94bff -60ed8dd3ab8a7c6800aaa122a2695d792af44709cba296003eb5209398e476ad -0b90935e5bf10288f21b212318ae23785a293dec8dfd40808219fa0cacdad9da -801c7fd353e51d73747e015b10ec10646e91390c71d2ddb7992c537cbd23f81c -f8901f4b5ba4b7245437b4379cc961f09cb219663c6e7810af63223a4173733a -db410430d45b08d6f9cd80c61415a6f8f7472b875d5ab9692b6798bed058d03b -320890d10792e117d84be83c3f7eb4ca2f7dc402dd7e09f3d63efd2e49ef94d3 -8b7b86c992c3442f8fbae5dcd5f0c279633570f1fafdb597029f22356f7f8d49 -e5ea02b7768fe080095d78b45fc18066b4537c90e42808ba9a89705b579920f4 -7bdbfe3fdd2654487ceb626d2a84fe28253f587473c3f606710549e0df5eee28 -5864fa29ccc5c999d6f3d8a81a91ef4d18708c3abf11337aa82686ec03fc0fe6 -2b9c1509b9f6fccdd17703065edd20adf6831f525af53c0d80bc5fbbdc6bc611 -0a4969e5db739f9fdd60598f72207d05f2db772ba6d486cf85a5bc540851c4cf -164722d77d21dbe10eea214357dfc37fb43eb7554f1c0ce2b453b90004e0cdf7 -952a606b1615fa5740939c0cc908b132a3c5c56dad8aa99539f5fa336ba7dcb0 -2ab914ba3bc33a20ec4b12e1568250e896ed2df2991a438d1cfcdc2474761963 -0112d8c56912adabfd294853d7b760e961f9bb883ea8b6e367d12641d1344157 -f1a29a26411aaf5270ac50ba890cc577d5443ebeaf9b1041c197219386eea692 -6e00bea3fcec9613895cb9dcf4c1bf319a357ffb138d06b06e782413f685837d -623bedc8db948e5be1693c9086233f96d6ea0b1fc11a114fc4b4c671141ba6d6 -65f2fc8a9b5187f178ddfd1a1e052f18a7cf5f8475ac01c67695a9f252f1517f -3addb068983a8ef10767776132370ad38e5beb1775491024a52ddd23d741b73e -54c1a8b7a42cff14287f49ca6e33b7b0550caab3fe91372d9654ce4d0a3bb018 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -9780c7bd1c7d3c11e0ef32d53180bb7ae9a4de9674145817c261938599437586 -2834a29ca944807d3434126f4071b6b30a5b310975a5fbe647f4d0b44f54ddbc -49f78c31968607fdfe5c75466faee89d73863bbc4765183d2ac7508b63b8f416 -c98e6273d498e44af1532453c267089c847b2f90c9f7b3b658db40f1547c751c -6961c69c8ef3a50c486b806327d85bee40c7fb5323a172cb10c4f3f921047711 -44928f062d660bfc8be6c4fdc119ae236feb8e0b2b07d11519e54fa2c7ce39ca -28e0de1a0989b0c40d73a46c8b6ca12087825281022719107079edb41242afb5 -5a38fad9436700ed15a904e8734af07ea42ba87b1860e8bdac5041c8e0ddd6bf -e56e15ef6397de032df1006d55350cc94fcae22568cbe8b87b8aa1695bf5f24c -ce58a5d73ad60f9375f90220f6062504dd097db07a82f4defe35956323a63198 -b58bb55a14e7c7df2abce75fbbde38319f87d5491650aa52568235d354aa5d6f -ea39157febb1976f66cdb2b848e515d815c8c030856e002eb8a39d7f14f63aab -5804ed3fb2807cde26b7586cf3c88792b31c5dde85d7d4014e75377764c35efd -17e47a4564aa278f0e26dda942ee39136930126bbabdb5778a699888d4ffa7a5 -102f551a4979e00289220e8e5f86a4a0d3cdeddf897e451a07c246b94ce6f4d2 -6dc7e694daa7e2e092ee1af5f0dcd95f80e72b10c099cb618e3bc1dc687e551c -12931ebc68e08f1dd870ea1299cc0a122829ac438575225ce30bb790e89d011b -389fa094f22ad827b17a27c2727a01a719a0255f1d332c126bef8c1def5de472 -75276396f507c614a048590ed82dcc3b58592760e4ddb3cb3555337011964ee9 -d0d5f117b5888f7c7066b773f86c1e715cf5bc357f9c012c4cee82477bdd8bde -1e81bfa9331b64b29103a278aebfadf59fc0271bc1f089f73ac5d016358340b2 -5631a6f33513685e281572c11e1ab604befb99df6fd4ed12eab6a07e6349727a -57070ac362f20cc20902a9228e64847e7b1bc7dc1d8a88d8fc87e003d8c7ef1b -5de55859ddb9d3cfe9b7d487fc2721fe219ab4953042d1da9165e0d61ed31adc -49e97b647ef5ff90797b1339dd1b3d67701332272503e0a9aab1c69310d35c82 -16725bbf0c952a7bb41596efba970164dc4a50b32f5c0c063ea78d7450b9285b -a54b483e7de9edf90e0df131d4a45b60ece2df744093c9496fca2044b4b03b76 -c2a9c7dfc6a9044b9b6210aaaa25a5b8bdd5ff428d489f111d439faf01bac138 -88092656b0b1ab00e6ce2ab3451a23d8ad1795c941d510daaad5d90b3f337298 -3bd65283a7d898af4b82b55017136f44e9d5ab30a55f8a944a2f865d920779df -561eab51e59ba290a89df77583b483f885924d643ea19aee677d13c5ce768239 -51807ab36aaa704dab5ca31413a2f05019da9cf042ec49666223f50db88df38e -175e9d6e489ed20c77e884880938f03ed57e851e6fdad2b2502be5a3680770f0 -fb545e963f30a302011651759be908a7fe1660f963eb8bbc9ae8bbcda11ffddd -6aa425f22b2c02d82496fa02de5c04e4ea46829df685797eaf7e822ddfebb29b -af52c0b93119354bdce85f8b92818409e62365765fd20461547dc01b26961330 -c62174cb60e3b4daaec9c97c4909b18d8f6409c9fadfc1f1335e45ae45fc41f0 -6673d2ed548130fd98ff4b3791794858ab2a0a76a517ffe420d9cb5ca8640dce -27c16c2c3c4dcaec432004079d51df6117f30303da71296ccb20ca4fddd5971f -74afde498126667a2e5e1692cfad71dc622e461cf8878750b1f07adc1225edd5 -ce6060e76fb9edfa7f158f7bce83cfe3cfddfee88bda8141e85bc2d403bc6143 -a98b52642e4ca7b97db1d0c90bdf16000f023efc422b1efa8dcb366bac67dfe3 -5ed226afc5879adfd947511b8aaa9e740097310596d9134536e1cda60f9eed23 -b77d630469c87c8c8fd7d6db263b17740fd27fef91c31a8bc3314c8359f01904 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -fdf3c9c978f322be24ab4d3e51f5795d79714da3a5e0654999d34521cdd39032 -2f7af77d5ec45177e34edbbff847ccdf0a9fa02b7c4db737fbe4058ca2ef7440 -32d846dd3d42169a46d361fa58345d531fc0be9f99b4e1783211e36e6cd94386 -1f21a3d3733742cec89dc91af7a307c34d8f3de701b3cbd0aa002976b9f3f8b0 -075bf1dc2ffba065ff8e38ac2e66c707c872fa39244cd037b711a87c23570002 -cebc8d27d9b4db1b15a1d0e299938f5ebc2607a5f15ad042652e8c964a79ee87 -be6b8a5c4e1b6ca8f9cfc6d841851ddb084587e2ce48d2d08897024ef23af14d -7ab3a4a61ef31246b73461c346bbe74ab025f93378265fbd45c2e5edcd31484c -e2af52192612f2f89aaecd8b46257158b2670fdeb8ee05ec947b9ae04ead3bf2 -09fcd45fa5e7b5dc8fc5b078ef94ae832b20be10c29518a90667587a6c216436 -fc786b16ba06b0c8cfcb2bb136cb360f4716661ea79be754c7f343cb8da655a5 -ed791ecc9f6dc0a87c904314d51a2a3b31666ee377bb93675d6c4584ca42da96 -fd87fb29977cc52f1be62dd121b760bff8f9e30ef76cdb94053079023780def9 -ed86449dcd2a983b26e289707e85d5dc4c43c6eaa95c8dd55a8681bab39ea87d -43931ccd7ce0d5be3f856879199d4072c15a87cb661117c358c849937eb4f7b0 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -d4f5d61b044328b20999b3d3005c38e46a85a933a96c7c3fc585e36892cc0acc -d5fadb58ceeba9b8790b50189534c63fd0e5cb4d83d1160606b5d333f88982aa -b228b22a2d29dab7d14992fa6a02fa7b42a93f2d6f9a75e53a2d4bcb7f85231b -d270ea59b21dd1c1144a42ebd6538429f2119b747b5db20b12f4468650d17206 -3225e05a82eabcddafdc7d7a7592ddf9dfee7d1027b18d5a94c38a8b764f2028 -726caa1da978bb8c8e9884dabe6b71e50d39721467f9d7e87569f83fc9a5266b -f60e579711d068e272146df8adb45205f35f1ca20028c74f3b93778dfeee8f34 -40fe9a18cd8a6aaa2acbf6cb4682b2b468faf4e950c52069e2d7d0162037e051 -01a4abb09b87d598fe250290338a8df0b945eb0e97d6540ec5b3508221717739 -73efa17d53a867ceda4dbae5efc5616fa42194a7fbd43e1aa8afcfa32980599c -488e2eacba535b863de872bfc41020bc515b0b114fe7544dbf2dd15630e9be18 -1057dc6472ab27877d40bd644f56ad45dd3510bd3de8fdb31cb23a837a9e9762 -2aa3165f0f000a6259e3e681d76d10d39df5a1c8ff0f605c7b0d919e53a9ff95 -0123361d3be73b342fcd4c5197830dfa13b24ddaa6f2287101fc245fe86a375d -5d05c7edeac8199c89f9e10eeffc253bf5e1d0c62c2fb15e47f530c308a99df8 -6b5a913221d87fa7b396c8bfe135f7e98c1493b5d349a6855184d51e1d14cfdc -36db074e9f1fc7d5d02c1348fbe51472e58e1836a69990d18527ab60a4638263 -9c63a3c62e1f6409e64891501443ac3239f721f78a01157c697aeff5ee482dd3 -6b5aa767debd4f6cda904c41adb905b23bc718bae02557385e50b8ffd60ebc88 -762b5811b2420b6fa490902e1f4239561bdc708df02bf2bc7c1f2fbd88ce2217 -e690adcc394a993d49f4725dc222fe07038ff64e5f1dd916e1c6a053b2a7188f -c5dd6919a3fda35b72db6718899c0ac6e5f4ebb7d2e7bb3c20f58939d23bed43 -048d8bab4b7276ce411ce5f4ae2401361d1df16c07666d3dd3c3aa65da4bfbbd -cc245eeb25c3c40b1784d10354beafb1f4496896e39b25ca450a01ae2f5c204c -b36bd8df7404c5b0306b2d96ea289406776445d0889f16ce71dbf3f969c17610 -06abf80d7914e9f8e5c85c84bf927b3d65734e02af265e6103a4e63fb313221e -43f880e5b3166102e2cb77fbe84d3878ade8b6e9c6e6037a27d04ae8324fcb6d -84124034cdfb53a93e27ec248dec1b64f79b00a566d4954eb8d50a2670af04e8 -d55c5be4a7a7ff49a025a88877d18ffb6c4a9472ed68a6ed13ed8b795f8009cf -0bb3f42d9d0cff89444efcef8a12d0f716b4fb1195ea8730c042a8065303c8f4 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -86e5815cb813f81e9389fea22855e1abe8b43d93d847ed46958a93e2b2ac3294 -d50885ac0cfa1828556cc93da4d07abcddd9ed90e4da64c25596d4a2bda683e2 -af138ea3231cd9b4f60f0ebd206a3f91307582de1feb5f1056405082f1324a65 -7c2b5562684e12df85d7b933b0a1e0af5dd39f18bef76f109cf5f98deff17c8b -3351569be77169ed0b6a975759c00d8d59441db1042deaa14482c79dbd7b18f1 -7fa4b3001827003d9d87c74938785437762f2f119bf774902c508d2c8931f6ca -8a21fdb0b9865be1104857abf32b9f18f0b5cef1f635e68ac30baa4fd9b37d98 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -cc41eb493d6891fc55e61e15538017a3d4fc95c7a57d6b96b04a58f393f20e49 -6f94eb086317181eb7cc017e83636977251a99c2275b1e06c2795ec7bd539e5b -0f39e980afffa3251110bdc276df38f7585771487adcddba3917c8ef3291d633 -8e3eb71d1146366947fea0800cca9f13ddb8d4cff1abd55044b81041cbd07dc7 -685491688b47cb566692fd10eb9fc36a661c591054b5c26c76f8114ab3591db3 -68394170b8e863ac2ae2a82f76621065b174b11f270f26b5478225c911feb70c -8686bb17dab65564dfb539cf67c5fb84d265194319c7adc5dbe6f5eef230dcb9 -933864330b7b66b91fb1df417e4122e623545b3979a5c17b8d9d107cf491c0e8 -de7a177a3c7f26d49f8c7243b390ad2d8310148af600a18e4b24226d0fe5e724 -772a6c7d8a18be1371ed14489c98c96b8745c95b17374603639c425034e6eb9d -01eae27df5aa50be0a346e96c6e9e45f7d4df2fe3427491456475c06f96ba151 -3c63c02b7bbfa846f02f3744a5d0ce2cc0a9a3351e6300672e5f86d2c7eb6345 -d348918f2f601718b384f910d73edfdde701d414dccd0854127d3929ccb49fe1 -6df07cc450b088e55c04e498bdad23fcec606305a47667281bda215ce6daa067 -004c02ca87074d7a899fed9d9d18f22f015e3f2caad6c9713dfedc93f059784a -65524c44087234a6d41ff5ed85fbd8d65ab6f0c89cc9d577644b53ec95fc237e -b5549e23c4be5c0c4c244d69c63e15e02e8b119a32ac169f30aef556a8d3456e -6eeb555930e025e25d216a584472e21058931bbe2d7cca9c2d753fedfb4a7f76 -157ba9d8bcda75e8fd9434c4f87eed3ff5c2f704997ba61c1e4df8e1507be7c0 -37db26e04a1b6ae58f51923c021764187f62f6c92cba571a51d69ac882d315e5 -b16d67e96bd4fb57894085ec8c723feaa9eb58e45e8775d38c8ed02e8f576c59 -c2917b58d14210058f94d5385734c8ea366a479cc9b998c59f482c4f0a37ba24 -37246f58092a59cdf4d46711e59f01e7e4f5d9e47a2fee9944383ccd2bc35f4a -a68855811cb0845f568ccd91b51190ef3af0fcb4b6be428e83f1ef5ce7e9ccd1 -eb43d7d765e63ed066ba37526fbe0414c60f82bac703d41362c05e58065442fa -e4394301eddf79b1e14b1a7c91b7dce77b4733d321ee81b34c988b6ac57f1dc7 -ff97569fe2cb8983ffa2b7b63439ac46a5d7f3d8cd39ec6fdcf517e0bc8d5e62 -7e66f042c7b7c73ca8488328f3cd7cfd56902f6bf7b8122a386a643c4d9b8a23 -56e4b93e7210ff38b5443ebbe7a22b4d762e0ef60cd1f0c602c365bafb839bb1 -2a975acdfbfba7e560310b1aff3f4c9f022d0bb7c63132ed0849eeebd385b728 -0e534a82f4d7f352640c95b118c219a5580cf8c5a9244f9fc61950e55aa85dcf -e7edd36b44d98087a8a0d8e75c4506e3ef9039b7cf6a4e5f7f892d23d89b6f98 -74503440f8908dde0cfd036b0a52d08a7ec6aef37504ba6b29b1ee6b978e9590 -5690042a456cb924039e92d149cee1016081b460478038eeaa3465338a697f78 -9e8b811bfedc9e71320f85a7980dfd4471721482577d157be3d9924e73aaeb1e -8004410bc83a8db7d00ad3b63c2a18f28dbb2a8fbcbbcbe0aa86d8f3cc1dcee4 -0e1f10e34de6e86f86e20db2f34023c61282e89853651e86df7e287780d5d8ee -b2fb88509731c29da9444ed39935ff27da6f476638a0045e4f8d31fd58d76234 -70966fda4dbd52afdcae830a07b56ba5a836471ec2d0cd28deb35f656a15372f -a9c70fc569174f279deb231f57eb42fda82bf004d76bd70de066d81c5b4ad33c -4b693b259396496351ebd172e12a67f2e25ac001a0aeeea39a1087171a439d8c -d396dd5104fea4e04dc0a5aca71d446565d74acfa34dd74f5ddf57f89eeb8924 -992af518eda3aaffb3c2e6ee198b2868914fdfe337ca8e4d3935ca9fdaa03f38 -e9ea6a4a207ec04007325bad04be8686f5756f515746cb36fd86b2e4b392f9cf -f66349f7169c29804d984108b04bd0a38dfa811d401f17159c76edde32b15066 -e0acda787222b4d8751138138e58d43d8dfc921e8a66bf6ae2e8e74b6a127d21 -7ffc03e5c794c099e9a6f3bec56aaa7e89c6d439c07d9c4f765172449f9647ac -07e3821150ba8fae3195219d482f71d8b7425e0adc7f9f2dfb7cf2293a8e759b -7e3dfe7782f3cf01d04b86740bb5277205826dd8b8ebc6884135f8f85852c463 -87e00f9f4a830b29324e7a8526af392d30dc3ce37b4e8b9f5969f40463fcd885 -bd8b2d90528eda0152c79274454f09a110424309a7273769984422bf3ba2d634 -e21602c976a25846314b163b0b13bc092d4b45bc76140a4aa38d8078e4cafcd8 -355e4e0473eba86d6777592be4b843402afd114383cd62d20e67983edb237aaf -9b756668b04654b93635847ec574b0baceeca7a2cd497053c8a2cb2e3ddf485b -3cc8160e2a6646cc9edb9f355ef3c5e705db666ad943b201fc13a2209177bdf8 -ad37e5abbeea8686c9e8f1ff399841b04addc2b075c80532c294958b62d3b906 -280a0cc44e85587cdee88b425af3cb2fef355adc8aea08d7416340d95264eda5 -2063b8bef8b67b3438dad443d19b3a42a3023dfb31a82f73aac8b0262cb09bba -f923e2a42cb4b9a4e3811d8e8cceac8aea0cc93726ab1c44e41d8fbdced31c36 -523b3d85189612fff4d107ba4d6a592565187085d9c6e5c9fd6d25babba249a2 -03311210142052ce00543d224f46458abcd328d6c9b5526c44bbcba08fef3bf5 -fe41da9f58b0a777bcd434510f7e9d2e45d2d0e0620ca05a3480a43ac07cf743 -ff0a227c5c60a49bdd05585416320f5dc48f46e9fd84f0f60645e10f4ecca8ed -945d9a8d585cce841fd7c917ba220b7a8113c7761ca727e16f914f0b7b23622d -abadb83c367f3c5806508311bd15da2d61e6726838720217e3f110ea5b96a72f -084a499d63c5b9b6fdf79a4b4601d0f9885a514782959d8ee63a1fc1fe34c700 -d0518cb1f7a772c8f9a49c27b93437fced38ae4837e7e8715c22ccd450a1e5e9 -b50a110f32fe15cf278f099bdb99b50c78b3dcc16d9dd6ff5a992206c6866704 -720053802d8eb8b4d0b2bb930622ff158e29d960d841251421e5ad6995c43e41 -6dd4801339a44bb264232835d3cff15628afd0715f9a40753516478777477ddd -96935649c3ee8621051d090a495ea8938b34fc7b70fa3b00ba9b1d7386748a17 -66d2f7a478ae6437f787b62d00b8fa4606350fab79dff2c936d4cd6d2b70e385 -88e469be133de0153e20a03126504f1467edbeb5c0dab7553fb10562726b2138 -3ead11f53e83c1e9e864ee7cd1b78866862c5c05b3cd9ca19a9d3d1d6231bd05 -2f49795a02ae9665652256a7c82be09e54a0fc052ae42581110d23515596b514 -9d3e38e140fbb93723c8a1be469342f679cf50853de6c55fe461665c0922544c -54200312670f7fb34f700f27b1031656a22ea902385dc6ed9ce714ba84bc9ffe -e116c13894081ed1e522f80439891c8d662a9ed829060282c2bfb169df77f6d6 -bf053036f1f2c30227dabd359185b6d2ec1b1a0a53a120f1394e7e78b56d67ef -792eb8e7d92062f7ada80df7fe6645e245a19ee0781442f5f367ff8ce1b58a5b -43ab7ddf93aad18cb936c3c9f8a97f074ab8b1087468d9f818d232a9ac0d557f -d47588b6f51915c563d51fb431b0e2097647db38081e3bb118a7b55cc44d0c86 -5d2fc01e11f8e7bbd5594679b74e97fb82b6511eac7d3eee1915133eadf99b23 -fe22c1972905d2b7ab8dbb77caf63216f18b9b283f75c7e4e905571e3171e91c -a56736b326bc8c5155ce9ab6bf9c46f73608dee6df52e1645ba91a576d327d3e -071925865a2bd1e9d6461d119547c073dc11689613d4dc59548dc0eff7536d8a -b77a45450dfaf3261db9031321cfb9b770e582bcaf1ff4fb1099a93329e955d7 -cc073c8137cae690990e63b265fe496576da0cd87714d6c408c9cdf9b7ba5260 -628aee322dcf9e6b43fd29fd68693e01c81706cb74cdf4f76c6770577ab9e0cb -5546ede2fb4beaa75fc45d75c1139faf238145df20ef28fe2b9b226d1ea37f86 -1574a5b57b8a0e05c33f07d0c1de892db44d6f357ed3c97217ea2a41dd558e56 -aeb00d5b586ef6409cceeaf7ce8d259c4116f1822808f0b7570cb1c1339aad03 -ac97483ce47c9eb6a47c13dc74edf8be435707f05079334d0a15f08923ff3916 -88a23913f56d7e87188a947afbc0367897aa3bd90be0d80bb0a5f6d6e640fe89 -47a6c3543c335c802520bd3dba94259f79f5849ea795c2f5698b0cfbab50760a -c96e39a0cb1d1483a5c2030f7dfd57a0213594c4f5c4f8e893c4ef6a0d861846 -0dd629adee01c258dec09f6bb65988aa83f21ec58363f96706a5a07bce26cda4 -593f2415e727efa9b4638477d1008c40ad48666bb02a2971ccd1cec8e15c573f -714d0a5527faa332c095fd80711c14e93b5fda9867cb841d36c84f74c91c23cc -cadea372bb6881cb1a40419de58be1d87a291d7bee0c6d90c50c7da6a3697c6c -d0a6e68c00c2bf69c3ea4c9e080c990a555f3e1a2698cd2890425f58c6219b24 -07331b43a439894d79063ef6cffd76c90935b81223f1516d200da8b5e8e03f27 -7f03dad5a2d8c3944f2a56d22e84eb161f6ff21e55f50b88627ef9afbae93dc5 -56ae77a5fa454dc400f922fd660d17d61e9e764cbf5a1852f25630609a1c05d5 -5eda3e44c9e9afd27cbe7d064882a09640cc3a3a5cda3aeda54674038f9e2cb1 -58ad83afad0421eb14cac18e07f3ac257a2762eceb9a2a417c2b02c339910c95 -a016cf175bbc95897141e9eb064e7170b866050eb359976eec99ccf9b94c8aa8 -6ea014d6d0e9c5aec7ad725541c3f3c4fdbda6afe4ed4055dc089630cd77c2b0 -70e9262d186ea9f8566a4df5a1b37044854e8a15aeef8d524de51fea514946f5 -9180644db341f8c6bc4e5d98c8494dd01440fc74c997087789bdbd358b1dbbe8 -964c49175ad57b3c65a11b24c0d14c9c5c65e25d04f119c6e37e660f8665fff8 -f474b6dbe8eca765f50ce9d51a7294bc6c6800efd39e0349d64220295f61b682 -88d24e2d800404df9cb048e7cffe4f909b0b5a96b60edece0bc64ff04c10b2b6 -abae650b5d08ec37a61debb5d9c3168379ae57b5b3e22119c58592e59de6e47e -81ca4b9f6801e04c937ba50fc4559b7707099e7d65274a6a5073c2275947e95b -a619530f7616b12a10928b619dacb9ab639673196680224e51f0263cdd0b8083 -4547379addaa2aa976556a4a4ed9097e71ed9f6abee548dda7b9034aa3bddbc5 -d6046a0e680b12a78942709c682cd96d5c7881fdfb074ab327132323cf771e59 -c5d3ef0fa986a697784e8a9470b6a8cbf11ba4e3aa67ec9b198f826156adca3a -3499b11a20e01c7d91be088a8f2f2420aa2bf50f394a89a03fa86cbc6d94fd14 -0ee519b3dd19f20678dea5650f3171cfddffb282bd7ead8f454b4b4353ca4636 -5bfacf7a1e33b663db9f246aa7059f605f5cf43bcb84b07be3a3defb775395f8 -745310529dd092dd6fa351ace76a3a103b4a09eac8746600fdf47e0a0d1ff92c -8fcf8edb72fc7db253c930914a2560843c3da0e6d85374a88693f61ce08a1184 -9ad6459572a2a45c7f4d65ec11ba4756a83ebe4c60d1b418c5fa271187e3aaba -aea40d45efce91820216d33739fe993cc7b60cfd16f278e0015edaf659017aee -592b3b69ffd3ec2b4df60c0f3c64ba414240edb3c64ee917adfad09b15d5484f -6e9f184655f02568b5a03b97b44747a33c066b1bd9cd57d1f628a0efec18c450 -bcdf129b14fdd4c3741ed9335de42b1603732a67ac972097374e3b22aebfcbad -599e596907085dd0df5d8e6623f7ee23692db5f756f4d706939913d1bc780505 -2a9665507ca97862594523b27e3726b31f3166e35302e5000316a94dafed622b -87761b1fb66fd03699a44ac170cd0e2955aa285b50edd10b3b63c8c1162c0ef3 -0acd4cda9af18b529710f7ec6144269f1129386cc90dfadde076751651701e4f -2b9d33d70d69f88e148f019e90594822a60f5f66159acccb9a2fefb672179db8 -b2e1b59ce362cc60167f8403032d9f97beb4ba40f29cc6babe690dfbb6dab172 -560f9c82c8d9bbbbaf137583887bce60c4fc92650265b566d33cbc999d1147c3 -76324ca6dab4baef5eb7defa3a823a12a5cd6fa7124ae0f3e3f13c4451d8b6e3 -1ab1620747f679aab6fbfcf29f05a41747d1ac878c8d536dbdaa6d24c026f88e -e13cb2765c848cba065c97aca2f7bc04fdd97288b0292b49ff8604149f5bf43a -1a4b4c83259efacccf0292610d2812346698ea8d524d3c55dd38249a7b61ea5f -13e1a571f78907e11f866ba55afe381d4974d308d88693a5b12450b4e3d4c55f -aa9db47a5cdf78b627aa327cd7a2260943da40c869921ceb26f91fc1aec845f5 -0a19da2558d628ca3d69aa3f0b4d50cd1b8707c0f3043707d9a293c8ee675f6f -535f2a5d22d592ebf7459cda6d8371b3b66be804ea10c4f40ad1b71c969a8c68 -b35a3132476953dbfaf4648dd630d834fd280923b68c4e0ec2f39d655c09e0a6 -dfeb96d8a965aeb4999c88e594a0ad6c3e1a00f906954b9d5008c44a35e6e85a -fe3932cd4d9cc8783cf0eebb99037ae524110349e31c769166b93278140fe330 -61fc0ab4a948d2a56804775cc278d67fb46ba33d278ccba281e16efaade3e06a -655420fa28125309eb917b137c710248012821c1c9878770e9ba5fa8ec2bce0d -0d208f028f7f8692f06c798b71be22fcf304e8d090f8c6d6e2cba7b57880e1a0 -cb12c482008563a57ed79da0652fcb62b71373a56fbe07ca1b4cbf7ff63a4d3b -6edd4242d773cdd288e00fdabda95d4541fa2c8022b4ca084b0e2d62849b74a2 -28cffe48ab99e7bb885410a47652f9d3759869cfb24301674b565155e3e31bfa -4470c073805e75345b0429d792bf5f5bffe6cb8eb18773ea37657061359e5e42 -0e093d2caf07adf8f3606c07b53d8e6dbe798532b645b72ab476a38f8afbc392 -d0a7e99772c5ba5b528a48eb65e99daa790bb46d051927575ed1d91f1ca29075 -7016cc7675a4ac1185059250bf4f5de9967dd10a3ba8dddd86b1038c01899813 -0653fe2ef5e589fad419c1d9d327ab595703d26350e4139e3651a8f0a191b96b -d35488c3ba08c5ce24ffe4ff988c0b62a9454b9d1620b32a6867815b0062dc66 -8f19bbeac5026dd171ef3a492d40acaed8aa1c4533b7da3888824e86a609a387 -1e47729f9f92772a796f1a6b6ba3370b6f7fa14b0870d5d46d185973a4a14bce -d1ae66cb173ec89af1bd6e1fbe3dffa617eb359cb5ed3b4d8adf3055aaa23213 -fb7e54e2a43cc6fe2a81a28f5e2157cc767072875b8c145a605132401dfe7970 -c33ec18cc584ef9a87231704c1c38d3b4937f75bf94e4a9040b81adee0d48d3e -b9a85bae7c9b959d3424dc549ab3c0b8e140b25b38f584e2e9f4ec595be076f0 -119c1f64042fd333ad6c5f3e7701b8bcc45bb3fad42f4f1f09c09ae4ab95eab8 -a4d028a3635ec0ff4efb3f0e69b84642ec1dd7ae47601c074bfe69a39f50adf1 -e35c68a33956dcf45b1823d6b3ccd37980972a8895fa38663a24f559aafa56fd -02c8e3d4a9ffa5789867c2f035dd3145cb67aad433843b7559fff89800b43cf7 -4d58490bcdb3faf5a2f03e22769188fcc1d924bdc7b9b9904f18c08c0687aaa7 -e6caf55c3b1fb3cf2f6d4678b46f243d74fb1ae2c4e8ea76d780d8b10bf601eb -bb9fe5f2b4257bd6455bf8e00f7ec8033da5663ff8b9f205c0afe41fc6a2bf55 -df39439a59bfe3d1a66b01d6f241cefc5fe9dc39a95f007a538ac939cf29fd6a -aa6ed543e3b98aedd1dfe2da331575fe2ea3803585c317926603643d0a50c406 -682a119c82c64494bf8e23c1763ef76702c73950e51b56625ce79b9263316ef0 -a04f8458473892cbf65162983aaead8a60b6db6e9d4515e2d1253e9ccae66ac3 -6d3b1fb692a1ad444170105373b1bdfb66c2f07cc398e2ded737301f87cb5fc4 -581b4b1f2827df0f647e442091e64fea01890197cbe404607379783da4fd697f -0a9a48f220954e4d6339f3588f21f2dfdfe18eb79911cfd00d96023ee62215e5 -6b445bc1fab37a302be8c0cb39405bf2394c06ffb4f2fa073d987f73f3ebcbc2 -81aac8dcf8386424a621b8ce0f845fca0ca63b78098754e669de567a59327e62 -8d88c638066985f549eff3252d7489543c7583cdddbf0a2fcc1027503a54c2f5 -1f2339b149a9238f73382171e638a7064e7a48afadf808a6c126d6fd40cd232b -ca6dbc3c5a24fcbe550201902d44c1d9ac5329e2cca38808ea462559ad89a295 -3e9942052eb861420189eb90065b582444a0e6987ca93612a41fdd9fd8608a02 -7b7b312e0c1bf137d92bd654d880cb7ee15b83d363b2900921fe1bd6b11e5f25 -a91586a96454ce970851960c1cdeaec4dd0e88e42ca0812757e77fabada021fc -f80216749d537c345b4bb0dd35829a068bb32601a6a2d64e0adfcd3072f73393 -795573a7fb055f0d7d081a582d07e25a9c1e6cbde659ee0fcd5a55462db6a552 -163e04f36139595c8379cd305e771b6aae8e357d9a6318602b027c3c91aad760 -10cdb587488653cd22f6eb97f85a65749c454195bd006683e40bd6496f9a26fa -a7da19ac37bac3554837feb4e7e2bf19cf7b38750d4ba7f6d8dac1a828009dab -3dbc3154fb81bb109cc14b02510a3b4062be49588f6335c4bd86013e1c9b8a51 -0e4293edcf2dfcc2deeaae390f5079ceb687e73b6e4792be0b1bdaadb0593a9f -0aae980e608ceae5b10ab6a534c168238fd6876f48d1a1bd836300ab05bec228 -2cb68d41653fc08a1adfb4c694c9b492f50c183d661712658af52400e044ccf5 -a00cccceb7a964fbdb6c85f8b54f12616cbd3cb23fc872a495593a41a5d21615 -69c7cca4ea6c0d63050f01da34d8e733295540d87c8d18a4742abc0df04261eb -2d09bd36cfcceaea02f62580f8f41488faa8e6d85667c8c6896c5b34c7b8feda -bb96ef5c0b8b454385c84af943b2e00277373a10f247278b3c7b7bc794547038 -a890abedff75d8ee115806dc3b3232a64b8c43dbb01078a693c97b40d0503cdd -72fe92d376728693b0e4490d403822d716d4fcd0698f457a7d6ad512de73b5ca -054ca205af8c231835d0bc020e508faa72cfc0688e5463a4c51c76bf820f237a -bb20bde88dca269bf004791f5d5797c2d0a4eeb1179e878f53e559c1256a59a1 -6a03e485522796811130d491ed35484a36fb1f8c58297b1c83b1543365398d76 -f99cd419a67b7c588d874167f45629c01b25b9a998caf541b5908ae91b3d0884 -23bdab370b671a1c47076457169822765333716f4a40cf2e09352faa1f095695 -88ab28d71b0dfc8c3a9091196d764bd821c82091cf31d10d661dbcbe79baea95 -20f5750405060f5a721f4fc16709e073e63d8f8bc54021633a81b9901e9486a6 -dd0b839317eff4b52927c025d5f2abe0b2df8bc054f1f0bd6b72a5895008abb6 -d782138bb4a3f9d01b74e7e4717cd48a58f478a0d9a59d5f32f0294a53b506d7 -d0b71f2b803e6f88744ec26ef1b001966e6291ea99e8669b9b16f63c8945e4c5 -f057040ff1807ff2fe4d836796b4639d179e0b8c25bba142cf62e157ebaba3a7 -3c503966e49508ff13b9b8881e5ff5efb55d716d5d8b37426de555d22a6d7131 -726af6f568732aad5106a2fff0d197a631b35670dc44663cae78828908b0d4ad -d34454f89f541d43c9ef0e11245e65b3446d01eb00187dd8f2853fba2491aab1 -01e91dc23eee608510ee4c36b936cc3d9001e6ec671428a066e3291a598fff27 -5ad2a3dc82a8ba11515e031ce1d97f3855ab670bcd7466ca9254120df7fcf3e8 -18136e36cb31789d96a7f1c53edb6705a88a3edc385583433aad541cd03c2f8a -425f16dfb84be98b9d20bf6de8cc77ed3e17d169f9ee661ce70e54fdb471fc34 -b7a05280d629dd15d24f1dbda5ca63d5c5fe382b8079fa5a276ca813da7f876f -0e2af80d1d3c88b7d74697fbeedb2e605e5e2415b0c36766faa10f8053a8ff45 -7496dec653649fee932461ec824fc2d33065102537342e13a571d80487355a71 -de467800eb1b11052ee6771cabc943177a9ad53210fa5d60f9628a8f8d97eaac -35f070d6b361061e2760c4c60b616010977b9f035698ef0e41cd98beff2fa6b5 -0ef7a66154aa7687349943cb7a26b749e2aa0fd50cfbee449dacc32b6cde83eb -e6bbcf9c711a7faf77a93ee551a246c19da0cc9b261a44aa4f0554b688d107db -a531d969bddb37fa8d6377999981f88b5015477b0c46391d31f2c2f44f0a28d1 -362dd65b6bc2787a8b1a5bf664a1274d46789f9ce45b939be46f228f5b048ec1 -b21b2e58646cf2ae56f974ad85a457496266595a03372986575fb37091fa741a -58148c8ff4d0f8b06f8ff0d6d024e99573c2a8ba09b0266095c3b96a1209d284 -1ddeb748a44f2014f041732710c70e224b698e79530705d68aa000675b03c6ac -88992ea2f7cb3655365875100d95bd2e053bab89dc84d6ce9e5128356a9fe11c -ee9f6a76766dc2c8cf702ae03497f6164eefed6b63467f223b80d4288d4684c3 -b18a7984db8928592dc5eb9b399e0695eaf04eb66eee475953a78867273b645f -d7e14031a2edfc6dc22935625effc7a258dc83fcdef9a9acc0ecabaf18b391ba -b1ddade0ceffeb8f5d0f17bb87f197a62e117fe8398278f8493f84999ad33d93 -2ec71f0e409341b792da1f0d267559af455f7e8f2912962abbe6949654734ac0 -705eb01968925bc9a77a5d9683451242f3c0b0b1916a6450dfee7ee7b5d33797 -0bd16fd4ee0529f4d4bd1f4c2fe14bbb63861bbe817ebba9575bb6521c7027ef -6dfe9f9150df760976dc82eb7f256e31144845031075a5478194780f9c5e4d9f -768a65e4ecbd127436e67ae233b871aae80d678d4f9ef24a5a4222f3c05ddaab -ebce58c5e8f1eacc3ce82533b995e6652cdd65487f9ac469035d8a10677d1313 -32c1cd1e4d3ae9cd7dbe39420c299e6a4cb7c294e841b60921129a5be09a8b89 -b761f1dabc32be7c5f78f1a011e134aaecb790842b150b3761d2bc600a232f24 -ffcb635d8e59588594762482a7479b7f58e913ece3c69dd859d9c392359d5779 -fcb792ea2fa33414d80e42541591eabe1c206d52d2b0c002e9a7a1e2d9bda4ae -f889732dc52cdd4213a193d042805e68d4742b011f0a2eba58abe7b0ed262899 -2c3d06ecbe312486e053e3facfbda3b81f3dc26dcdedbbfe1e9f2d69a7aa8af0 -e8274b147519bc7f6697a8d07db7e47516aad5fbad8a40fecd03f9cf48b59479 -202c51f8a178db374de8db9a0e11a9552af0c83ad2335c68b3aaeea487100f1d -d8b282eaf722885dc46aa340dc6e18671d6ea94d801b67f0f243718e41481db2 -b920c5e3d6b5285b68d5558c610cff0e0dc57b784b3c2330c18c5355f5e8e111 -b9d24a223feb2fc7a6e09bd2c11a7a89540c3dba22b086afc885576554d4174d -f3c5bc98141a932d12ec951e44fe58219bb6fe61e05e0ee7a4838e9a5d4487b2 -5112fa93f6ca2a33cb29365d4dfe79e193c547f6c4fba633a0464dee88b70a70 -1bebb417f11621d3ccc8a9d5259c34b534bcb5830cfc11b102cd03eba6073685 -e11091a1044e8be7f08ac6284b05af2399c1dee1a2d9e96c44998bc08ba21516 -ac734d490b4ae8ef9c0722630623bc8089cc187191ba627f15f5bbda5a9da32d -0d48915856612fec53a4569a5e73db6161354604f36b547cb681f27fbc886cf9 -e17b44717b07c58446302bd7864586fac0c2afb6ef0343c17d3e1e5af12f6bb4 -a5ce72fa0115264a319e682e92b76a0056096df79dcc16a3158fa8edb0390e77 -20f28745a91b792b3a79fa6ef0221c5bd8072e9fc9bcb6aca393fc2900965f69 -1fdc0d10b341d25f7612ee0d4d06a5b9a0727189efe20c6115d6a816a3d6ba36 -d6f56e593ca0ee16763907b203f0cc45cf91a1b32e8e58ca9282a1a695df52fa -5c7501462822fea1c7e20a70a384d0a0bf3eed779d6d220600f0618208b9827e -c7dd74bc52ad6cbd6eccb7fc362cc587a9b8d5c768d1d4a6ac43bf18e4f4fff9 -a1993e6d257ac5ec0f714d8a6892620e6706ed5a3ad1efbbf1dac1d3e6110dad -f6bf542e8761c1dfec00c9ca7a70ba170733e6169fc8504f4733c8c14222e3c3 -6a03d51ad0835f0482f39330dcf1d24d365c69adc5b61f35f6d72e437b2a1084 -1c70200f7ab47d3d41cf1ba070e94503f1ebaf8e300e325911332d8a506cd102 -d31a3596c0e83df6337bf4dab37a661178b0b8155da504a37f956206f01e4502 -2db5af1457e29691ac6b671bc2fb243b0aadc947654d0cc321a45307865957c7 -a1ffe5011a4501a9387dd01a0a2eb2b06bc840585909258fd0a7aa42963d494c -cbe04cba17a9ccbf693be2b73f5866bcd59f8e3f3e55e111542e8b5ac374ebdc -02d11f457fc212de7810cb9135aeabb585b7085f64abf2ff3bcbb5fd1d6eea2f -09a588be0973758614f0787a3a6f9e457336b47ab9d3fe93216b2a98fd311a2e -7b2fe78b224a0e7eca3d49e661924847f5bd1ce418db230b9b9a6695c91fbeb1 -b771f20b4808020c3a51259e9843b21ac38d6e89ed59d52bbeb5851fa80bea68 -dbbc23d5d091292e7066dc3b305afb6b1a2e665d23943eaefa00dcd39eebffe2 -1cef2fb978cd0550de6a536570bffddfdaa2895ea7d70535e02fc70214a8a9f6 -4cbdc30952eee88113c3e08e7099503e25a9debd8cc3bb64f3120fc9350a8442 -9e1a00131746fd58b51d7f090a320c7664f82b8acfebd2cf80d899006c23ce10 -39c85e747e1508d64318c3f724e645531dbc887323496894f6e560bff62dc622 -c2da3c9355a048f1fa02c32318a55241c07791ff8e740727ecf959505e81c603 -f19f9924ed8db231e5eabfb9bbc7e048059615bd37fd5b95b90f0496a52f87b5 -647d6dea18e3f5944f71ef4006957d8740889c1bb6edea51aba0686b3fbcc344 -eaab9b088e038cdfe4f0e2e2ba42c49c52c83cd60f36a3dfe3bf34a555f78004 -239b9789a4025fb0370f6d7d605db4c1d6828e0a2254bd7b0802f819677a5c9f -c8b7bd9737d9a053d87cbdbdd0bd6e08c7ec0bd5b7f5866aa1bc51d596e80dfa -c3d5da6c7df0972227506fc87cb889ec731c66e25e3cbc20ea1117f2b6f4b5aa -54f2936023d982b2cee435223b6718eed5f61ab1ab7e0e661ed944473c0074da -db45e2cfa0dc2b3d6a10a555bd6530e8155f94051ded4ffe821b0336d6a83c69 -38b0fd07c8c7524df2ce28614b584ff9870cc59b5308cb20e614e4bcda869743 -7096cd9a67b09f8f4b5068f0900e7898d002822bd47699d2c713b3568e883c40 -af5b64d43f355812ea9c6eb4186b80ef06f6a09b15d9dd78aacd8d2e513e40b5 -f88b3f869a01f91bf0ce1640a359f8f78f7815fb1148dc19667445c02ede3eb3 -34dd5cd9a8cb1f57df0d17201abfaf87045728d7e4c37abc6c643933f9af3c9f -cbe080ae89dbdbdb0d535104d1eacc61cabf2b30c3168aa359fa264ed9196062 -d8ed5fd1143eab2748cf46bbbf31f5200ab71db18d172b169b460757a5e6d7a0 -32b528716163928e9f088b6064869226c8cc9a2029deada6a9fa27974a658787 -bd5a78a37c73b9e30392eb9c92247e45591298c25b9c8ecc49a3024fa48bc219 -5c34b6de81220d7644d26c58a0a8a6fcf5a8b1c004c8030eee544f44f2cbdfb6 -469880d72f39091764d0543d7df15e6ea9924a4436fa18866a5210a43404d51e -ea307b1b3aa42141d20ec9c8ad3253c1aa6a11db84ab6d1b667c644414d49279 -e2c0d14375b97eb7bf2012b72b7fc5fd3635cf04a9f071e01cfb9940b2f5ba42 -e8b31bf778a7d79f8a1135d9641a65b6bb144f96ba99440b9c2efce50acfd279 -108161892d7cce3294f2cf22c984d0a569f42da0538c7878315b0fde9aef7c20 -dee06f68368128ef0a3abc5d76022bea5ff6319f323454714b01fa97b9fc3931 -99d2eab2107c65d575330072f169cd31c3f9af438399ee9f381d3dd4133dbe9f -e378d8bdf8349b9e3639addde00fb517e9112fd6a115446bc63408267e7f90c0 -baff97531d852397428081b4a45b31060ed32ac53bc13bd56b8a20fb53cd7e59 -8a3ba5f6919a3af234242a66d7b167b2078c8789f3c4af09166873517d3892af -64e282578b45c9852b31b37ba87c5399f88c2ef8faee47db69b0f37790a56e5c -0d82f64f9c5053181427b607c02d2c31ba8cfdf6f9e790c05fa53c2e67599362 -360651b63e140c562dd6c9e7a1f43c720f0d194d6fd70cd7331cb76a114bb066 -3be89d34ffb3a037c48df69105dc91d16bba57d07072b38ac9f5af2d5e7a654d -2f4a084b42fb996a56b83ac9b8c7f336aeed2455476680ffc5a20f0696217393 -8355ed42114ce20402b0de026fa6c01c5cf5d7d3d780a7cdd0c3ca53fe4a2637 -28e7a11653ac0e251685d512f4108a64f6ce5f7c333e58f7a398a2a8246fc77a -3a49d4e9c5942c4588b0337d5c0524ac89cff23193cd2af2e33f31a9050e1311 -4933981b36f92d41ea41b3d3b467f2a3e400df20f60a53a25f3fb13448dcffc3 -2e05e814a7e05b2eae1d31886f10c9c7ee530dfcbbea8af20cdda9d360d075fa -7e08faa4f4a362dc894fe88330b890157d45d85c048d83fee7cd06a81f57753a -77758e9fe5cc0c5f7b3befb794ed217f09e9e8a4bcebcdfe1e0de2fc7c7d1ca9 -7c01849c77d1e88360a66c74d2750e20a0d06c70e61ad689d65f94460a69a853 -78d0c5f74df4b08343b8acfd6643859c14ed8e97c4a0fa9e6fe871c43c8cd535 -fa0adea01138857e6371d57192a435d8915dc530e11d10e7eb00e03fbd90c37e -0c60a3f1a5fb64c740e21471381a4daacfb9a7acb33e76d3176377f625ed91d1 -d913f2a72ca7685e53870fdc7a94e3c613972ddce1f2e4802fb590dbeb19df08 -703a30bd7dbc6184ca85e394404d0c166379e987663ba637cffa2e53d74ea235 -de006bfc6e5e3171fc5bfaf7938ede144adc81ae20ba55aca3d4c8e663c342ad -7f14cc53745c0748f8d3d17c24952b0b435dc50a555b731700f0ee21e4528a02 -a3426fea3cd3d3f4726f382a8b8b64d4cb3f38a76999a0147ad0612a385ae264 -83d5add9aa7814c8e156b412894ec142c05261e9b9e8f8cfa1f0981bfc66be40 -2b1feb498727b4e25864617315589f791a631932904f0098c6ad3e59a441583c -df510528f0d4e5b8ca56ec2c8be53e2b271030daaae4b972fc0503d86cc8555b -565bd08d869deb7f3ba776e3458b0a1742c9357599e1c59211884bb76ba4a958 -c26179a807f5b24a21e890c4b766d5604e0b88b76a05d730beae5c3b03c8062d -cb05028dc036ca705e83ba202fdfe3c93fc5d47d12be319b143abee976f3066a -a52500a21e890f4be485a6fd2d00fe4c67920768f80fdc5016157aa766239ba6 -ba26fdf35cdd04ed2d351a8ceddab926cf51ecbd1db7e28b9c5e290587063ca4 -ebd60640e82b225d22d5b8329fe53ae10d6cb395f259374d00e77422b1278b41 -dced288fc7338009ec90f120a4e6f1a8a3d34692de4b610e5279d8e293b17fce -6927573c961280965629584e0778b168db09cf9740186b88496cfe19208099fb -730f1563b9991f445e8f86b6abc959116cf6d3dffcb7aed05c30391d0eb64141 -f5a3cfdb349b23deca495938654719bbef720c907ffb4460989a084a02ec0fb3 -a53cccc0f85da1eb8627624d5f4862b3d161322633b672ff2af782173c303897 -c1f381e26eaa3110a92396a06f951d8141595128381cc44946dba08dbb0225f9 -0f44ae2a691e9dcbe82be7ee792099a59452a6a3ab25fdab20504d9c98b68798 -cec1b037a98418c51a23eb44844b85922efd5aa55b155e1baf616b097a1c2884 -00f92e2319fe59dabef855312c81714bc0fbf7a1353b13711ff963d75382de81 -a86949c0263efb4cddb1cdb7527f6095829cc89f53158ec146f20bb77d83e84d -8c579d6d395ee05c4e24e94dec2530fdd95e854aae33586258141a959ef7da2e -58cb312edd660bb02e8a1a8d67b59f63f8537743fd101fa05d48b0af248a8794 -cb868f53a077a9714fbba007234b0847c7c12cc22aaf859c97212c34e543b141 -8e47dfcf5fda77d059a6a554798c1270bd9acd6b3804b3625aff79e1582a0155 -92e55217ee54c392b0699f051bc3420de97ab33d1959fae2cef6bfc19aa6ad2d -167ebcd68e013b0960673e943039fdf234243315337139afe5d7ed92c8a7f27f -2b2df38fef79d549fbdf4d3edafc553c9e28d86d9d160760fd8aff6db31b3868 -8c27ef69460b97fbc3412710f6b49e591615014f804f57cccad3b60f1082d6f7 -cb045d41915718921ce01ab3b733fee1df348176403c1dddfdfc67e74dcae022 -732375db9d2f83e89fb6cd2a952be43c112e89eb16368063942cb44de904f4ef -a2e2823d4077d137b0ff231cf53540ae502dcf091e4ed8b280f940ef394108be -20ace8e155ef2641626ee2d6f7793536d3205d0c56cfbe3d02ebcea6db74d6c4 -4e9e8cd0a0b52bcb0e7732a1e188aee10f6e7e2c9e4408146b68263faa536696 -4e14f5b18581a0b64b112147eb0a15cffc14cf172a00628bac3f4bae52224850 -fc19e7da12cf37bcfc5e91e38530f48b7e075c23457eb6cf3ac14cb6a9c2f93e -8b35a78e94d67065cc4dcf9cf7f02aea2eccabbd21df965bc009f768ab1dd16c -73ec9db77eb527c7a96a6c87faae098454432fd9f9c4bc49d7ead7d1d7c28e50 -715ae0e4fe8059c588ae51c9b29357e7d58eb4c0c03e52330ba593b44e3d91af -35d51345a8c3cf1a57751b59a1707bdf4d3a495bfcc50d2b241f264794c9b8f7 -6933b9ea1650a7b5ab611d1079254bf6a9121d5bf85c76ac442159a1831873fb -06337787868224352816edb59a33496a742281c8585aca7744a85712ddad7f3d -70e6f2f7cd51c372e763e3ec517ee5c53256b73a1bd3a0719bbac6da274ce005 -c46915f75083478738679d2e478bc36b77b08fd299c537cc739da2078ef23c5b -8fe90f11ed854b324be04f34a0fb70a26dc365f616cbea576f30bbf4646fe06d -1e5984d694a1a8af3da06ab405fa3b51dca86eed16f1afff5cfce7b78e0d236d -c6247858f79d9a52bdcf9760177779c1e19ca164e18f3209efeffbb91fa82876 -fe2eeea3016276eed9dd0f7964a7840100781f9f9620b109441f69d5510ec47c -e456612fbf8c7f1a1916bbf266de174bb47ada2de8aeb21f85c7ffe5abcf2a14 -92cb11682408d17ac8f9d47392dea82d04a1f6772f47b667abacec6adaf1f97c -b3a86c07533163a33c7dc47f425e6ab0ff14e5276a8f53e98b879e89a6f0f6a7 -4c379c45681c41020a3464cfe03c3329469177b62b97d05ca9911133dd5acf24 -7548d285807d35fc31ca3e66ec4c001005108b14190c6d77c4c5eceef000d077 -94cce29c86db20d67fffc8a252163c1455f813d0d5f5cde4aae0e4fd6bb9fff2 -b0058dd5e4ea54831247edee8ec59c0d187941861b59d2ee2f2a731f16d18b5a -a4f4ffa4a746b8c8e40634d1cacdbc9a81e1de2772a32f976e744416545e9117 -a712890c6a00842a5d3c83e69640a14cad52ee5b230663d2c2fb1cbfcf9e5f78 -f8594b2ef00028bce17585c49c72991c0e8a76ed5b8b7a15ab8a5edc9546eff6 -bde1bb3b1246fa8fcc9cc5bd8db6979642fc4c6a391059edf28d667e996dd9c5 -ce34b71b2ba16ddf1a9ee9c5f90ed2ebe911dd5c679e5ac58a1f5120b8d07bf4 -9ae04327367db7ed4f5cd35f51df529a340652eba0ffad3ef500148b6169c8dd -cd82c0b093a0acecf6a11b8759dea35507826950a1ca47a4d8c276be3922592f -f48a304d9f7a52f31e452e54454c8e22f33c6434bf9270cd241c98f5b05e2941 -c2b1eab57035c4c2a7440a8e432ae7e9867bcf6b74f4e360299f345de1afe748 -129d01ecddb4af2de940e19302a3bc7fb650d32906813bb282d52e44bd81fa99 -148bb9a5b3019fa84d4a550472c9db1309dc371f460bc99d02070d5bfad786e2 -3a0bbe6488b033519407d774e6acb418ea6d7beb376cbc234b51e6485ee8baae -fe11b71645b225293954f1d0e131ac20bf54b13389ed1639316a58f4cacb0fb6 -dd2767a6eac889cd54bb2dbe267486c57304a6e9e03eb231367caae531409133 -d25d91369be76e2ecfdd151a41d9a87791bf5e2e200b48c9519d90c1a03b8378 -70d9fa50b6664f1efee2c69a2aca53e2cdeb279721b9892f9b300c0aac91ad60 -39863202bbba2b4da7e89f9d0f49dc3a1e5c84ea2ea977eab41099baafd9cf1e -cb9be0129d78973ed407397ca91e0695758d80502dd0fbf2096c92e8634bd6c0 -1aaf65d1a34c5da0c3c0f38fde49985768b73721470328fbfeac3d1a166437b6 -2854c376ef62b3f1fc318c69ad6e321d6ed0272b66b8438ee53a2318be567bde -e9cbd0ec41da938ac7b423ca87422b168c7a40e89af49102dcea64f3627b0c07 -3a004fdd60d97e9b72a8524209dfc1eca25838a293f314ff1bd68e77583d1325 -59907d3723b5bc07c64c80aceee830a943f82df462c5f87e5ceb2f4ada4f07ed -275a7479ef53444610e3e67b33c49d1890fa07a425f76efabd699ce953a1dcde -d5f422a0e32e43cb4e0bfd665b9ecc327d1a9c2e62930dc3ee549bff0fdba8e1 -56137ee9bbfe28cecc489ac9a390760dc98d189f7f546622d5258d642b6fb62c -9004f9d5eae1422b069c7a2f98b37d7bf8a670467612addd360f22bb639cbdaf -9a793434d24bedb1f90a1dd3bf2ee9c4345acfec767fc63b185fa5a50d7a4093 -0ea080567e0e49bf49e894e430754aef7f63324e99d65201be3da5e13d98a5ec -91df886dfce875cfc5621cef85f5c458314adbef424268d65a4ccda6c055f942 -527a15ab4cb7e454e0d56e6f36af4070b24761f827b9949eb5aa1d10b1da7057 -bcc1c88ec8a5d5d77c87b05404c23e6b3a2b9ebd4c43fdb607553a03d75498e3 -fa9cd8368877bd4486161e83a0017887a39bf78b1cff99b62992d64d6124eb18 -e8f3fca8063b668b48bfb35588438acc866497a8871a4155abbc0e2f76b86740 -321edc78e6707969c53182561f990e131196292f6de7ab6c1221fcda7f8e8acd -13a0155acfdc43fc9d9fefdf10f70727489cd2b44a266aad23ed6db35e9ede3b -25b6dec15841fc8ea22fffd1c73b9c5b2937955b6a7fc952c139e3230f477d19 -51aa8903aeabf309a0ce51d0f08feb12ad7d9153e6db9d8a21cd4efb45faf4fe -e3783ab03d59370d6a88e4b081f16ea35db7c7879b3126b847a667deb29bbec8 -c5fda1eaf8b908e1258fdd57e2d4324e341cbef755975671dfe89bfe0b18aea5 -18d16e014e75242a17c7d4ae3aed9067cd1eae5779acac81c68543e5a6122083 -1896bd5ed3e1bb444b324521790b7721d478a412e222e0a10be52ad4bbde7347 -f5ecdbc61d00099da1eba46776650c54a2882fad6dd3032e2c0804586a6a6562 -f9a0e025092f1a368dcdd2b806633dccf03f9bc7f540a5a34a70856a253869fa -2aaa3786a7225232a60aee3cc8a48a56c7055e52d9143dc695a054c62481634b -c09ab8ddab896277f772a696e23fef5f50c612307f046a1b4b545a2e62df89bd -eceb419a8f5f40d37a9f95660eaba3a66ebbe448bb5ee7fad363f35d4dea5ff7 -01d1d976bec74558ba85561db975a71ced117133b713e2e61979627ce0cce51b -6ef437a61689cab30d62380aca758009194d996a16f0a8c47595db25c9a7f89e -fc95bf1dec4db6bff7b575053bff5e797704c0ffa71b5519e06fc814dd4fa9d1 -2c8496f47832724afdcc958f5d5b75c7382a1bdd76da99b5c149135abf0743d1 -a15263feccf69557f56c2ac99645d8a47d2e81493459b0f2df0bd4414610200a -5c6a2c208f887243dc04d01e648832cfb63557bc6c31503ad67404ccc6db2409 -1fc0d4fce6394c20617f254cf9067411b1c7d1b64f7ea6333683733f98052f28 -3c196120d8163d84722b41ddd1f4e04ae4970aa9e404c25a8f7a15c9b674d441 -2f60ff5e902d03e58f91257c2d4c248dcc9e26ed2833f81ce6cc58207dd06ca2 -b24671cfd99a826fde65ae6b242c85cfdcad37d02a8e316d8b2e584557b66a01 -6fa724886b4d143d930851c2c92254a3b2bfccc2536e20bc2b88c20b3ae1dcef -0196f20cc7e28568323d360dfcef66497e90a76b37fc8b265a0e465d1b881631 -625ae0bb9f392b2a32c212b6428e47f31f385a59ad32500efe8b1f7a0b14a0b6 -f9416fcf8e4c88c8355b153afb875bf55d19a0ae312e4e5931b9edaee6d7900e -0b839158c90681ac40a063c0364677d65865cb38a5d818ce117ac2d78373d5ea -df7d3d03cbe2d69402797a5da08764f500412ce58d5db22281287586f46e4ea0 -f515473677e1ff5365cada72203717ea91bc7e6f06263b6395e52f79fa725230 -efe5041d6dbfe1d91fd179bcbb7ba10a641bda60199957f8ffaa88d5ed67082d -dbee2959cdeec7f827c965474de5a76ce9394f544ec7569a3eca40377a4f105d -254cabc25b369d3f218a2a5461cf57d6f7d7a3e65e3e1e6c65cd888efc6e14ee -d0c4e76cd071b1a86ca85aab66510d93a0dab609c3b56b0c0f5fd22debb041c8 -0c9026e781f9a66c20c7b22c472707a534b97e7229a6556db2dc81fd765592c8 -1157b609b3c215f07ff963a175ecf7fdaa5930a3ddda798e92541ead871bdb21 -587bbdb52745c2ba44d06111dbbad856b3aa71c2dc51c71b3d7368267f787fef -25bfec835a8399441e54b3464871e7f21e6681204e4f253abe621017b12ed434 -468de35e6c06800d7ea191e10a7a3ebaf8e2fb41043cfcd14ab3ec8871c55176 -7950d966102196bccaf4be7c0290bcfeafdab1b9f35a1f0150cd239553787ffa -3c883280bb9e3e8c4f96770c0e22fc08dd1e65fb2590130b440c1ebacc5a6b56 -2a6d5b2d6ec254fd802f1cc484562b001fc98df9b789f575e7d0271ab5523330 -bd3c34a9d90585263394f8d67c3c1857feb7620ad36d8a0f9036092310841a02 -aa7de08ec562bc2e62224d43510ff70a69ed77454660f3fbe3414960a302affe -a28ff27693dcf1d3ff4c3c20747d4a091290706cdb25cbdca6af3652584a9d3f -5a6061dbaeeee9c47a5915773548a74ee23b8c73675acc8917aaf4d9082dc4ad -a49505d1ab6a3ebbe151d9f78b1e7cca18f2c77f6634c4a410b3172557fecaba -5dfd32ed9ad24fd7dcf3151b55cc0d673e32202d26124798d9fa4e5984136a03 -26b1ac7679ad36356bd124e428e66adf021aa0eafae3295f1a27b7d461f52c1c -1e49c9132009c02f2e936ff2338c9c6833ea89d1beb163a76ee20da1635af2bd -3a315c6b8f34ecd06205030fdb026cf1aed42fadc1d6d4f7635d58888158de55 -2a81f808352f8f91a9749368bf2905da5aedb0be5f8fae76707cd4bb245af6d2 -0a484dde7ad7dfcaaeb26db8ec09b7446b369b5e22e9cd8a5c1954aa52c1888f -d1cfafd3a0101bd0d87e654cceba138d39e7b420e9bedf08d17592ec552e5bca -f3ae95db5c7bc27c7fe93527c464a22c3cd25c3eae55a83fc87607f3eb83dce7 -4b6aea60d4c093596d43f930024efdd5290b1d1f84e0936e24ffaa6bc08ff8cb -d5c5ee1c8b0472ed88b1bc33a59bc46e76262a9e2bbb09b1ed8bfa57c49d6e92 -d8040830f7af3eb09e1d81a51524d3bcb30a55ff61ef409ca2055c2858b46ac6 -5f8e9b43b88c522aadd5777861bb69da2c2b8ca33a40b51530b2cd60cd3e4c1d -f644e76fb0ef1b114e70002abb606fbe8d98574ec52d8ba3b098408356a2d39e -51db09b3e2a498c80ecde573df253cad6364de6545081661ab10cb16b1ec5e59 -3ac441597b29929c8b96ca066d909e3ea925651dc7ed2ba9551cd276b62c831b -668c0cbfc28e1bc122b88cf77c997292cc42de0dae2c950e759e926defa8760e -af7d54ddd168430d077df565243677745b103b105523290b3cff222773bd0715 -1eb0429142c7c003f85310d191f690f2e7fcfa41cecedb224b89d5c4420dcffd -c875ed085cda42343199f4d953c59007a55b8b9aeda71ddf411d26ab31932853 -f08f843b4fc8cd4eb62d7602f5e290338717afa515790c6af76465f06e9985c0 -1676cf513f35b83a5a578050147a287f6cb702284dda2c11772dc27b24fbfb82 -087923945e4bd649587b6bb4ee99d10bd0646eff51e641bfc80451cbd7265be2 -eba006b47759222bb2aadf9260885a03bd6db4a6c5b9e8ef22a080ac348eaed6 -e2d1278f0cc02800c77200a164b03f2535e1f676c3647914634643a7065f0023 -c3667475e33106ae9b8fb1a7f261b1755009f63004820941076743f8aacd114d -09316cb4e85b41349426061ed99c5e11e4da0ea3bddf03c82a14983a523e54c1 -7c2b2d9b290d41510107a24d82abf8d9a877ab37df3d336a7db6bc47fff2884e -79ec7cc9dd02b5e72b0f3a962e07a042b6d086b33883b21bb671c26da4f113c4 -cbefde6d7a1b810ae27ab1c472e7055e51cf755b8fb1cc64b5e7de396a301d3a -33fa2d518fb4fd0aea54e57315eea0bff6018cefa48dd97f1f1b1fe7da94bece -0e16ea8e8a27e784d14bc7515bf01db7b35f67426a8dfcbe459944ff7fe54b8f -0a44c511def1a5c17e14b26a676ae060ad291acaf9820abf64eae0848f45642a -14dd03a56af9cfe4ca1f8e1a94e816dedc969bbc4bc4920383909839950bdd63 -b3fa857e34c2d90a343e8614c7afe07a53b41773eefc7b73ca874bf4b3cc593b -9c1c916f0c34ea84aa9d08b863453e39302bf89b46e2adb954a825ff748e7ad0 -2057da52514b1834020b424fbe13c161201c7a1ba75127f33785e1004fa8f57e -118c146c4930e51e9c45fc522324675f428b58e25d8813cbf7beb57510e699af -cd61a21bc563c9b7675f9dba8c9976a8d9cb069771a788fc48705bbc094499d8 -8565e84bb7f4877b07861075cd763f01011cbbf31c4db20bd53673394179d391 -efad69f554432452b0383c8ddff3a31193660f8ddab986943a5076fee04b3c51 -1f4c6954ded0d45c1e9728d563381a45b3fe84b4ffb660dbf6ccc5149f250563 -e1aa4df97dbbb453d7748b4e3ebf6a9bbad1017c77c5b0b19e357928accb0c31 -15dc82d2b9434494206a3c3bb57af2a633013382ee81d83b71d0fb1de3e38953 -f15aa48f377475060d80375c75d96fa20097a1032abe5e1672a2e143d12dbd52 -bc5ee680ba36681e94e151e32c5f83ff08a4274262213fed43a6b5bb1e1cb83a -e9d845ed34697a0b4f2fe93d832d35d968f21bb9f9c205948ab1f3caf98f9f09 -d4736277d7ff10de6ae14c084cb6c6680831122a836fd273fdd2091ee13f3c97 -af6380ecb48078fdc40b4a6091fd474fee7686bee008930ad505d0dc7a57ba9c -6cccab1955d552dac4cb163ec549bdf525f2a1e7cd9b078e8902611233f48a9b -ad5050a3c4b75fd463fa331c152c011a37af39926be595e1348bb3c375ff7b54 -18eb24713b9b1de1ee3ec4987ed5bc0ec3adb1a49ff04a1608da29cdf5dfcdb5 -adda5e76da7c03bb6d55114e9ee23c4c3cb35fe8ca436a02522eb0935fbefa96 -fca5a2ba189f29077d802fb6b3c7737a4f4b7e840dd7cd92eacc9368975abba3 -cc4cc98421e50a5a24a9c91dba7af862816365789f621d99af0c4010a5c63230 -253d5fefcdb5d0196bdda6e2e9e221cff9ce18e90cef2d96636aab43e3f5018a -6273483f3de3bcb2606608358a7031efb31eebb86a88540c387c3dece9321786 -e4ed20c3825ce5ee4615d5cd080101ed6537966563e86cbd3791233a4a3e0905 -7fadf02be99618b2f2ee8f969ce5e9962b644431f3ca86a1bc7c3cf4d487a84f -95e79bd75e013a81c2a4a7c153043a13a334cfbf87298574346cf136f055c7c5 -636bf0d7259ef1cf08a85e5167a5b430a892b9dba8f041bfbfaba67c991cde74 -caa50ad2699cc1d45404aa479d887248528bdb76861cc3b489fd1dc16b09af92 -e11367ea62e2542128a15ad7f18c417f6a238a75917b5d814edecaffdf0a244d -91845b032edfbc373b038ec2749481917ac69fd45cdc9dff1dbc19990eaf4b23 -3a37b9df51d449c7bb50cc8214593f5e3e08dbb007bab46db6306e5036ae0a77 -4201320032ed2ad43ee2f45de7a06a29f988dbee2ca306350875e2f1fb9d05a2 -221d9c56d46184268a3ef3ef66d622e2033cd1812abbc6025fc9338489613779 -aa00f1bfbc124826eed2536f59d7d90eb5e56eab6ee41007824af211d4240ee2 -a1c2e6e5aee45fef8f594c52dfc9254864d83455c75120eb3bc1777e7911b3b7 -15da86c3b69d4baffb98f755040a83ebff399f5645aedb16f1773b631dbd3e58 -90157cac3716f2b90725255633db35aa3de0d7e67a1f9b03c3369476ebe9a7a5 -1096c9aec71f96844071e97e36877102e84a16b2f0362aba5f5517fb66f86d5f -ef882dac03d608f582913034d9e29913d30d50fc3f357a50e3bf2eecf75481c0 -2d37582963775f23d127bdc655fd03388cd3405b8833cd463b0d5724207cdf72 -fde25ca6fde38c2836cb3c0088c34d2a5c267cdbbd5d11f34761fa410650289c -4613dcb225814ab22a459b0a80eaec61afa57317e9e7eabee8b0fe7ec8f92d92 -03eb8d92e88ef319b410ba3f07808184a3ab366aa293886294a6f69683dc1ed4 -d269e57d95bbe88f03329fb4443c6a64447740b4781bcd0df4789e0853ec90fd -432faa0396baf4b4ee22815d8c1e33c547a81ddf09275d0a5835fd068bbb0827 -37cc4a990146bbd0147bba0c6f1cd26369c1e56951e3c163e0ed8b5027acf25b -7c6212dfedc12d5715294530932cd73b0f7b0dce6197965f01db74f059887133 -df8428ef3e690a7ba5aea39bdf1af10fc41e43767485f45b251e0ee576607d62 -b252d18aee5dffc655f5e93bcdb81ff29068f9b1dd299aa2a2810aa6b41275f3 -4e872c81cf4f3965fc1e863df67037a26bdab391c96bfb9508f5ebbc61b6d757 -e433fe8b7dbcd70dfc5b84da1e83ebb3b7aa2458729ea49eda4ba52f825dd8f4 -3d8c5c8ce01358580968a3f19d91d64a5ef6611ac5626a906e78b4ad6794d048 -5c96b987669e91c77b2c60635cc891d1478dcf0daf140247c1de7f44a1a6809c -450c1aaa3b4a4babdd642576ac182e30a9e4bc5ff2fe2b7b294c299d7076adc8 -b127d5b8111879efd3c93ece1df1164c94862d432178c85448d5bb57b6048bcc -49b1d1f52868b79b5694df9b4b12df45c930b3b9d9162c0302b1f368e67a14c0 -9283b27fa2ee493b16f8b1c6a53de6b357a90e0ac91db2409f7bc64a912c3945 -7d2097583bf817320bdd540640192cbdf7dcd7b5bd8bbdfd08f406814fffb228 -9ddca4c32f74cc0c538d4287e1cbab17c1a8e940b9476d5b2a799d46fe25f8ee -3467ba488108760df489b6293a1653b57461d5b6a2e1d388fff2d9e2f7d4dfb4 -098db64f07fb8af3e48f4c8ed068bc7faeabe010b4632dee2fb6e1182e62fef9 -14b0243081e277deb0d4a73ac16a1d8589b8b450c408ad81e5007f37694edb71 -9f9d7369971bc01cda604bf7b79da1b39c05c48e9c5dbe237999df84a5374e72 -3c65e04386665dba518ea43f33a0e8f0c4339f18e49016333c1da107436a2222 -13cb25ea5719249a9ad36f31424a4a78cda9d868dd58475ff3a70236e83627a8 -efcdaf9f4e9c1298aa4ab4bd3130a77e4fcfca54c685f1b8500b2d19e028e9f4 -8b278bd41bca63b818e71d11beac4574e8ad842b0bb8ac6c9d242c7ea58f7a0d -7b15e9fdaaa79762a1d9e62a3c187fa89b14c5b18274aaf60acd7ade09ab7d7a -4e1275524a52dcfa4165b688dd9079412af629280e09c79d9a3ea97643d63108 -a2e8aad34bbfab30f199ed390224ab66bf2201f75a10d355065730deec18dafe -312267ee61412d34ec7915a3ea7277bec37d4616aa2875e9caa356090cd2ce2a -0e714de051eca75218bd445d025b52ab7cd63c6e2de597a64b0ddc61ed2e811f -0251986444cf8481610c749798f7a56acf5d7e6cbd52205534d5a94a691910e5 -7f95c70e078f5580384f09f69466fa94be4a6fff49775756c0dac39d5e3df3f6 -ebd1bcfa8b8e057dee0b2e77991d928655b85c166139c5197bc42bb18f093042 -2f3fb7acb990958541cdc27e19523cddec01153ca994508162aafdf047fcde73 -30045a01c46394b77a1ddf2b8adabaa0de7a50e48d8dd0b9eeb15d24ecb59c49 -3b3ebc52259f7cfcb8d572de6b328653bea7ac1b86e4480f6db4877c1cf9bac0 -9b47771198f19b201b6d3ec2c1ba501d3d3a966ec7eee9dabc481f6ea1cf9c58 -d7e22db5ee0d6c03e5cf22debf463d3ca1540aaca67f0b6a585a44e9145e6dd4 -62b4d3fc3766502a5cc470c189536adc6711461b6687681da63f60afff76b083 -6ba21fa4588c2957879d4b1e6c682f6249ccf1117523082cb67ee829c4064578 -eeae5f5c45c64baddb526beb0b4c5960630eef6870f39a1f3cf87ce55d398acc -17520367f422a077ce4d75e5db85e60d68fd5eb31fe4dc4de79a95c2a93bf043 -16bb25a2a35b8eafc5ec2588431012bc7d538d4aa367f05755830bc5b6c7ad24 -2060409254b2c46e708ed195d1deed36a5b9e1ab4e49d47242fc672fa169e9be -e0be3397e92132cb1e3d7c61c24c05f4102200e4c43eb148d6fe80538081b87b -de8257e8aadfae9d2db64554b7e19d671a3f0c97e9a33c055aede112c3968115 -d5cb544ed68daa21c4eb0737189754a25868d3965c126f5762c09c5499cea1e9 -56f74cecd8d1db6b591562d58393f9c3dd5cb827b30a224991478a6c935db6ab -becce61f1a37091074ffc6ef151140a9c86a676e08ceef148a38811efe835ff9 -d17b57ec7c5efd9319bf4189f95f789f446f3e706f9abe13b61aa5fee9fb3327 -a5ea286c34c87c8f119870a3824f3f158393fc5223f7ec36efc3b0d106269b98 -5c3fcad3b3d308bce30bee19ae63646e9c7bdac89b707232789f9f2c24957d49 -3afdfb3465799f23a25a3df47ceb0f83baf59801b25186f2a3d7df74e51a872e -85bca2fe8cd135a2ed9b0e6a9d5ac502ab98aa2aa1eafe4f25e37144bf530e33 -e875bb08b8ece0998d2d71274ab0c6abfee0c4fd34a4e19f9730d28bd3b3f9c0 -a348ec93623f136a6bff5442789251eae0db57ad5d3758956c375e1eef0be9a1 -7f187e263aa58091e7a488bcca0f17944e9fdd6ecc961c10195443d6a4f78b8c -e76e92a74790376da992503c7cafe7f68406cf7d16b025c0015c534eb74f27fa -bf838732e3f398cc24ad62cab99a75abb11f10205773c41525cf76420f358143 -4087a046a2f9f48eddf66a194104d6873b126b82a0661b60f3fa0d02595df850 -8aee5dcd73e4d4217e816926a2d59e03e165e99ed3d803f9cb2c0d797d2e650a -6ba54a8ecd178f8e762d7ee85b67d95254b43ee00dd16afeceec7697d1e2c149 -f964cdc4bdd178f7c42c57c191eaafeee1ea2e630f679c66c568326abcca0f32 -a063b57833581dfdde2d40ccba4369adab4b1fb4bfaece9255dfa3a78720a24e -79893c41edfbf723d4a0432cc1d1b6ca61663032223c3b11e3233ccd45bd403e -113a8ece17b879f90f2ca88000ff15450deed1ed71005d127c93a36babe5e184 -4ce4bed035078720631cf17bcecc6bc5ef22db67b8790cda3a7241d903987bd1 -4d0f89488eb2c1bd662a1c18423093f7443ed0ce3818d5616e8871e14f598c05 -ff4170f9175285d540ee2f9ab8541765afb8280f1b7f0fa60ac4547ca2451327 -82bf7f56353277dd374100fe1598841b7ffb560c250b8a6deed6994fc6603d34 -3165f893aac350c9ff3a9161088f835570e6a5ca7d0e5b8efb42517cf0facbd6 -a352ecfa3a8ca5a00d2a07c24a87a31ddbaa2797b47fe2d27ffe21b3eade546b -3c547d5bc8483a5e58e3a5f145a18f4ec739119f90eb92f92c0a7cd54189c54b -235fcdf4e4348f837e07a428105bf1e07ada50b09c7102b2ed92a8f86a5448d4 -ac75326ec56f4d4103d20bd0ff76676a6781ea3b5ae0e037f214650b8239a6a2 -53260d162667c47acb56b15158deceb256734b510506f891fab32fc0a4c6a45d -a474302d01b72c4d88595e42391292090df766786344804a28c7c5aeafb70a8f -edc7b025cb32d05663b0048d04d6ba7d33c5a94e4cd5611f8f4cbc2b9dee92b1 -c36ed463b0ed676837f5bfdc44f0c54f631eba32fa554fc9ad9178b156e0f8ec -10e269f59d30e10563797ee5937c1d846c7396898df34a09490d1d95958e4cd7 -bd479ae9d5fb5fa9faa2a6374e90cfb2d4057fd9f5dbff804d0e91214e8ce183 -0345da804a8046ba55e5500c6b8f4c78f62eea46c6c2d7092a4567d409f21852 -162430b8b5773a3b911f9d3bd6347bdae80c231970d38d47de1354cdff3065e4 -2ab8e79f1c8908525ecf1741f13c8dd9b68a54284fcd38d6d3ecc43e525657f6 -86107a95e4147fdf790bf4d46e041cb1367cc036a406f6af9719ea2af596a07b -8e45e15b4dd9b89a3d70a550320be544d11011c7c29f7cb05fbed5ac7b32b773 -3fe3b912ce57fc4a4aff6a5faa344dd52941bc9863ec4f70f8548a7d946adde0 -a0c8586f0010a07718364e012fb75698860bd22f07a644d32cd7dfeb9264bca5 -cdb3e66203cf6ce24b76bb4797703579e5d9fc564864b0d89cfc79d2a4b99c3f -6ab489f85c32236c5c58d9320f6cc156db8e7b8e021bb5b1efc6478a8e0228c9 -5158b1add4152f9452c1306489586f03f54ac07962f7c8500988e47f27977ee4 -615787261cd28c39534187d6dc342873a94acca64dfc87e700a7dc52821b6841 -cee0412e8dc4fb4cac40e39e0e2d429646b545f12be48d2cfd2244f23a52c831 -ae2599b96c59e4da9f9b38450c121ee9e918cf86c147b4d554b8b5709dc77aa3 -42fbb8dd2b0f1f7124bf23e1a899dc9d326bf21c356ce68766f93489aa645c03 -d40678ba17c817fbfa13f3f866bd2f9a2141d4dae1c26e085a317de391e6f8b7 -de10115772b05f75559f008b28aa268a2095185c568c12d1285e2d7d609a3976 -93b39b1b02ebf3f4217e92cb7d51416d95ac2953177b96bef79098b8843f7422 -1d5aae840c89f9f6116a86781d661ee118613783309eac0541da3e9ab844b0c7 -b0234e5de8e9d3c81412bd305e1dbdff84ddd36f0a509344d1207f584814cc15 -b39aa1a3de0e86f3e5252870fdd2f3960d6752cb2ef47a2be96c9c896459fcb9 -fd5fe164949f59d44f63a6963c45a38133ccc48f334e48ed205fd17e7abb6d45 -6fc7866d838f52c8c7ef02dd464918cfe2d5bab370fd7d50999b3fcd0aa31564 -b715eb25d18d3acec85f28afa8aa6d6b7cd96a49f6dbee5647a7dab84d429d40 -695b1adcbfa23d843d10b97f58f9a194d421d5022f21a74f1e17370b8aa25af8 -d6f937d5766a0f4382dec6897e3bc555e4cd77290e8dafe9814c6d49644b7043 -7132bfd42cfb4b803fad8dbe41f9646ba5e6f3cdddcfde2ff60b2ef0f93e3334 -0b8a29652ee6284a0aa89218cf0fbfc9cbc0215119d2a19db07b3fc3eef9bb77 -3bc96fa5dbfe4e213bd2c99d820241f4a6925ce7585a2619c87b8687e08e06b5 -c91e727f934e9ef850df3f35e2ff07b5106f3e2c9aac817a2771ef728c2df988 -0e45d80e93e39fc389c971db5a76c3271c4989476d69bd869c0ee03f5b65bd99 -620d1c3cc71e41c139186aeae9017116659dbff5f8f096afdcfae4ff1b61a6b9 -8280c720858053b0c6042ea862495c9f37f1c10fad1e3f55d3f73228797bd5b8 -ccf675ca2d067cf9f15f91149126f7c645320a063a98817090128be6e7e5a1c3 -eeb5e1bc8f02be1463d3dc8a07d3577709aa121ff4d148d29e43f9776d707227 -79a8eb0dd259553feed652c1eeefcd153e8825d30b0241bd2dcb5837eb16954e -0d1fc47d1e327645cd9b803738ab69f20d7c774dbedf8f8dad4b4f96c4049bf7 -3a4c30120ccdd8d99a454317397fce11e7c8c7e54d7639e2fbda27b8b9e10226 -e0afaf3a6e83fb4cab769a1665c078b9b036070848d7d9175dac3f65aa329e13 -08c60155d55fb3d94325a5dd3e50bf86feaa5fe632195005bee4343c5d4569b8 -8112712cbf7c8176bca3d21685bfcac054e5859ad2c6423ea9bfe7dec95dbf35 -75b7457f588d1d0877408c35be4fd6394d4ffdbc318f0a690bbd2d9460dd7fd6 -8368e6929aaf23247b1a50ee409692082f2e1c47cfef636e985e86a5324ebaa2 -0adde48c898382e828b0580ce4c5458d2f6fcd716fe9314205ec8d3f88beeb08 -2132455e88282fa05a0e616a6b30f5097f9b41a7467c5865da5a06d8b4689007 -64ba50a20d29d240ee5a033901ba4a48f632b37bddc80a8ed9224915791ed367 -94fd3fe8cc8ade7091414a56d677dfd4e0862d07f21a33d7ebd52d5c57c58ee9 -0e865b3ca15c776a612af07108fa990b6ccd55bce5781f94a1509a13af28e8ab -e7a97e3c5ca2f844faebbd0e0dae04eb4a6453ece643fe10ccfd012afe8209a8 -d463d82951a01e3b1b832f602e82ebf2b654417195233dd2d877ab104147455d -ac292bff043cd666468db727ea6e33ad121219a3cddac1dc5f5442e88aeb035f -47a62ba58d3c9ba998431ce697dae9d908fb6a324e5872ded899e01e8e612c39 -129f2ca836fdef15110f7f814bc60a515242e6e44846043f21dd871b5599f6bd -9a321bcf552bf1635d85333866676a9fc4535e5c65b37218a5616b0312c4f306 -5ae590e3d06f3dc8dffb2241039c49ef3e5553efd781e852570b2c3c663c9def -01704cb52425c10460e284249f34d6b705b2c06760be12897b47f3225d41af0c -622e698d7be57e9ad307e5af9e8d75cb675ca26a7018484040f7ec98a28edd99 -2f3619a804cdd743c3639e26ea4b3cc3701a93e61cdea0c7b60bfe5b26da9684 -1e60d4117b4497b2dc65c6b498e971ab6b15b36353cee6a7ff70c53e37981d71 -3bef05966bcb20de75e0feb66ae29f0dc67f897fc61eb0bd87ea6690a815857d -4ca6dd7ed4d1364e4873e03df8503e0de0bcfd99bce7edf936d0ff7ba706c2ac -c06316344b14ac2615af485b9ac8dca30bfff414b1a86def502eb73b204e9706 -99e485ba75383b524ca7044fb75e73a401b7615f77931f863dee8c5141dcf69c -6a30682d8f220f0cccae15a2d071c9b87cde781d3a56387d8d76cacf458067a4 -c8e6bcabf441f1d231bd23bf5563145056ac5ea2203c0e5a6a88f4b17d83226d -c05698a173671af892449d1895ac9a50620a0fe91dd1028ee644189b94c28003 -11736342f56363ba1d810219855bec4f18328f3d2b6bc1cf8bcadf89d0ba292f -12c2d95efac604c7f1b08b0fa4f91a303659f0dad1b3fe8177120c6674ef2dc5 -59159fe6ba2fc46ba9afb9980b85b0f769819351be020bb335688bd106e4dc08 -ab8d8a32d548d4bc2f31a580e7117808258c9b201e43f1a6c1b1f46e1556122d -72a1cf0ec5a904654d21e59593ec79ae26b2305bc3484b03ec8f48a988abbbf0 -ee38bb5390ab3087de605b3951ecf89dc2e63c09415127dd2481534e04654189 -008f4975a6a7b38cb6739f6b43fa4fc516075200795878a12c9c9921b7322fdb -f5d067269693cfdaf6cd0526c647fa7d852f0e41bb0b5e172a36e6450cce9c73 -67e0457a49efeaf3b3f96bf352d06c5d64e2834fabb80ae60cb5e17ec0c61d2a -bee1959253dc383d24c704e5e3c1eecea9d867507d8dafdd7cf770066ec96fe4 -60ae6898aed838cc557239a33a43fed523982feea5d18058a87c831bc7eed95e -e68dd3e2fdba6b8683075463bc2ffec3bfe8fa114eea157fcfffb7d0b1548859 -54496f30096ce3e8d6259862cbfbee80cc4423413337051d7a8ee6deaa94d112 -029615055685e0090ae6ec5fd5131410fce485418b37c028e802121edf88f047 -e4b0b2e6c9190f99be10a5c03e9e31797678cb347fd9517ad441c42fe513807d -91eefe8e408566611b473a95f0c3977c1230c3acf93546a0a22dee3afc23dfae -9c48b4850b6239935b2c115ce23045100bbf5aeb80dd0024b5daf11df762b5f3 -2170f310f38d730727100357b604b79c03302d6c1dda8d9649a4bdfccd99df1b -a964f71875a91a36516e1a531d4a4035bb32ba45e4ad9f2f55bd4514f089a389 -b2e5e0e8fcff1fc0452807cb3a55022285f9806eeef555fe3c4a89324368fb0f -0a0b959e0656a837d2c4e6e0be3f115b8c63f99378ee1c3361c2e3ed0eaecd16 -75b9abaeb24fd2b44b748fe95f4d3eb9c5c2663033263bafb0ef934328850244 -e49a64c9c92ebf6d72b912036dc2e2c4eece81b99869e0ab18d6c3ca686c7388 -f89577d2d8d6ff132b93cae6895620fa33ffe3d17b7e942017cbfceddf7881c5 -523c8d74338898aa3bf06c14838adb5a84380d6b78288c9a36951351d168b2a3 -d17f9ef945baf8ff085bf71a6050d4a362623143e8382fb67bf13d83e103b46c -d581625c4677548aaf7836ff6985e7c7c9515610ec092321bad6e29c3ef1f421 -8fc2f583c7f772169b95c91215658e34b12c58df5a611f5a9f496876bc780d91 -3b23773ed6d8a8077bab593a922bbaf550c5d6413c13437da4549a19119af37b -e873757424fa3729cb1bf977729d535d1eddeb1ed6915fa7f3451c42f91e0d6d -03a51dd3f6b328b0e994069e91163e4c58c0e148dd0bc8b7d437d9566fd45448 -8bba42dd89543091cb35f9518ed83ed26a8148acd521af47dc6afd3666f509ed -cd8bcf042d5e454e95000484b12fd60976ce8919184b0b93dcd9aba875d4f9c7 -516561e02ab0b249f70ca747a99ea76eb507a3acff7776ea223eac0b2c0de672 -58fb296e7e1de48f233c0425a04eb042c3dc76b21770d469bfb5b8fb0eeb7447 -724f26230110a2f1f0c126361f03e82efef2df8b06c7dc2913d2bf05ed94e9e8 -54f067f46a4bca1689e069ca7c1c60818056d51d040c2dd4d61691c46933931b -47af9808d23d65ccabee17052990546e1449bfa8416079ffa44d4994b97ee847 -8d1de72d990a107e476fd421d2770765c882e03bc06112cd2167969720e67abb -cc9d46af5c0dfd3c30747dc8b06ae28b1d0987136b10607e87770393ee640127 -3f81aa212cf59f672dda422a322462931335948a8c90414e7241dd08ecbee968 -3b0655c1145b6c9185fea3b71e4e497de8c07f83dad9df8d8abc526f20a62a10 -c835dedcf597a535aae4c15352be60edda3fadd340cc8669e7cc75064651e207 -d968b3bd303d2280659aa1e13c154146408893577dcf0e42cf54cee337eabf2b -15d0e8744482218b759efec8efab4e5566486012f945050a4a3c8ca4b350011e -ee7c6fd8c0631490b689c870452d5c3a095bab901df3a30759913e117922faf0 -c8421b22c9e4c6b57c2b6f152320004d05c107f9b8077872f5d237dfc3983855 -507b5faf5d3b45c352b40a8fd710beb78dedf57386e313549d647d7673c18903 -05aac3ba7099f411e41eedfff813c84b32e1bb440a053c7f9d0d50b6f340d88c -a77e728487e2c1d546b4f77d20f1cfbdd3618ac306ab1ccadb6d4edf25b20ba2 -0442bf616c5cefe78f92c4f23d5940a48e48e22254371108b0df29350b2bfa6c -0244b59513fbc3ddeeb462f74d7d729b24494cd2a04c682d7f6344b35bce2320 -4f10c39aa0689e2cf52898ae222afcd7fb71ce4af07ce06ab1ee17d787b541df -65fdf090f8ccdf2fda3ccf39143ffe173d3630bfc917eca1f5334bd64b64d8ee -aa7bf7fac688375543c676f26cf86c4b409db2179a0871df6760d6fcbb7f3695 -af6dbedbc81e7dfe75c79c24cdd183691101413da9ee334f8a2557c7230bf7fe -155082e8f10e284d46f7507af4aaf6e630e98c37a06133e14410f60d87bdff61 -c9389dd771062b90b448f84f5722f0af41afb79ad93ad5204503c82c1f9ea224 -899b361ccfa5fea9692ad515ffa82d342d18cbe6ba2191e97459487238e02043 -4a3c1a413ff175ae878ec1f39c11ef176552bd883944e0c9165bb4e952114913 -4e0d85f3a2ffdfa448cb3cde8ed7e8de27234d18f66d2a560d26e0148cb884ff -4e227dd5b771a1cccb71aa79467f9f8b7b0138569f53fe57a3c3c65c8c7a1e0f -864d2af904a8db4d64299797a31b9f71aeca8349f30dcf8122ea3ea634698d26 -f0595c8ffe6794d47b9129007a89cd9f29471f60eb78c4a8e68b86d66da54c51 -f6e354f345f5c5a679008dfab5d671d7c7196abc9c845e94246b39b21fcfe093 -4fdffcfa99837c5dcda1083ae0a09b8b11090a2d6b7e4ae2334601522011870c -df1b3ac3a4bdb9e300b06000c1db2754e1c33af8b7bfe966f31465f89683c387 -abd9c4dd001fd35cd3eadd5e691ba2920a468361e0da78591a8303afdb145124 -746d5e3c7d68b0661f0674de77c4e44324e33ecac28fa1908a67409d425a9f83 -69f9c5c3e36eb2406ad729ce566b38a012bf1c8f4c6a7c28a54ed264172ae60d -eddcaebd2ec4b29aaa2890314d4d18ddea9098658022a6b92b8d6943ebc6cb5c -4f70311241b1e7535210742e2fc4711ec0c6de3f69990148b99c17d1788d7c94 -e1adbd0f836980d956c3074f435954a74f94258724d7d5b358286a4deb0f2832 -1d41e7b50810af3defe02a9c135409cd542b91703da6fb11c62de54e34e5963c -e17c62349f167e79ad3cdf39d13d7130798fa7d297da1d282711b8d7667e69d3 -8de7e414eb4eeeffcd788d9d9a8f674f7b1ac9ba37d7453ff2c32b5053ee2634 -76add593e543947c63c947424e903c029c2ef1ff1e96e0827fb762bd56c285aa -88b477594d8cedcb5704125d11a7d52f1c8c35d22fc9ca1367d6822c7a9ae614 -4daab6df34d28a9da19783baa9571f5aaaeaef69ea07404e4c6095f2d9944be0 -b7b30284602981a01232f16a8d81aa11df2bcfcb0934a1c6449af83034819df1 -bc306fcf71e71eb299c4018ae770b02a9f2a16a2a3c7b73ec3205f154ef84737 -c8fd404833c07bef3c9d34ec7eacd09b71fce2bcc4b11a2be1ae73e1928bdf49 -ecbe16c6529a98f2df846ea3481772cc48657991cf921a0fdee0959d61e70111 -df55409dc8aad9530d03425610a236d4909b280805cc595ec9362bc87912dbd2 -0b7f01c424133130b1a565920c10a0a9fc415a63d2286b4eeed700b1ae3089eb -1956ad2e09013a666ffb5a1c7bf731f5ff3199a45ef52f83aad301e3a388b617 -bf3fc45fd91cee282671a20d96a979ce62180ebd3eb97c35ec6d8c0d4c912947 -e8ae429b86f0e085d52441e1856a2c27f0a06ff6713547d80e88628d8b836d85 -0ca4e80be40ae44aa0aa688b6f76c13589927599f0d987242d03d6c610b2ed4b -c0d64431fe369e90559e53091830d1d6a3acfba8f9ca79d10865133bd9e6da3e -6bbf78c0178e519d690b262836783b178af9b40f21dc8cf2ffe70a76edcd2323 -8b966ddba1f66b3288b2bab34bffcb84006d55aec616d47cbb11da8f3f532fdd -864c97e380b750a3867764f8a00175b85d256f92c9cbf700c042da566972c1b6 -d5334662fb508ad52a89893f5bd6bcd1621f6c09c3a79564058eead4a847bfa2 -4087a754dfe029311ebfb624010432927945c72c521c91e3d79d4cbd7c611860 -1b116a82b10d1a1f07a05ebb54a1890065277625aa8f4fef175e3e627c7e32b4 -0add4244373c8e90991b94c0ed1b068885d797d8e62b7427ea9f1dc7960e4752 -43db9f6cbf30bc5a3bdb63afa1952c1c9ce4eaa5f7488685d9d498292bbcfcd7 -b5960f127a8711aa20f29d9723139fee2e0b7a2bf5f423402649710f2d3fcbd9 -003900b441c209d4846cce5c02984bc91c0c11a055e2fa9ab339a8bef291fcfa -11acf9c6efac0194a1ef9effa86b61534aea99dbf29f4896508ee4efd36de7f4 -244df2540ba973489f43356d33aef4502eb79973758f93ccada650a71c953db3 -93aeaf5807f2d0e65032e25ac293304c55a6b4afb22b9a6cdf82404ede8d42fb -ad3d5b628d5ef69410ac55f33d2233a4c1ae33a2324c39803e740fd623aa0000 -d8215388dca7ceaefa18461e6ad55dc6dc18a3ca6112eadeaf22a3287c883fa2 -f4cb731bb9d4e2bc83a26671b3a497139c17d3a5aadc58ea01abaafbd766e7fc -141c02ba3085a8934f96a88fac690a620e23529072eebdc5da4b9138e258b498 -d581d6ead55209c1641c498a3e166ad2dbd22869cff92f717e1c702dd48c0d96 -01b4930c636575d662fd63e1e799aba9e068d3f7737ac7b00d03344bc76624da -e317846509356e0727eb4a4bca9a26968962c7900fa69ade14a962e060f225c0 -31b69d3c9d56d69270053374cb5c7c79e8d866f8f736aa5f18a2f932d8088aad -a2d60e90e872ed30bbc358d98f6b705382aa9e087ecbd0dc0e5235f044b0677a -e1eb51be9e923ac5ddd98a201979fb62992420172d90699122cfffa1c2329a3c -c48913f9b4d61cac1655a0f00e6400b2ef0feedabb8326198435d9167044e668 -8a1a73fd640744bb5c382c3f7bc03334a43093ac6fff33651d743398cdfe7e2b -066a4816ac346f39c2c5cab14d2e91833892d0b33a6eb47d95c6df4eabc0834c -b583e32f150d366428a1aa218ab128357c7845f638f0b6d06cdba9b57724bc47 -e2e05338f839bdf8f08f385738bfafab7683738c2396bae966b4d2e2bcbc205f -440c0fc9a2fe123a6eadbe2808572e5bf44fcc03952c9723eeb0c1349fcc989e -67d1dafab7dc6f60d607adbb6523f851b976f20e600d2364c55423d41b9928d1 -79828faa8f7953c5fc693ac20613b9e0c6cc7dde58594085642e1995e79d5caf -78dcc00f24f997d2d892ba6ffe10216628e2ce79e3adee8a1f736d3dbf11c531 -6fdf351441df575d2b6d2e9796123061f5792ccfa57ce6ec5adf25f06d3e4f2f -ca12c458053b7b1d4f0ab91df0f8355fb095cbdf6504b31626653c0ea1fa443a -ff00af97d6502e05313f89b2b2a6be75abe1f84bf10cba4d6ce4d22be919478d -f12fca05a0a78519039b70fdd67f8503ee23eab463f7673c9fc3d464747056d2 -419e9d31d86833acb8dbc0c6aec2c2a002ad139e3ff71947dcb03a2858250aa3 -f391af5ff70fef4ad8c64548639925f966246490c1e1f22133f6d6e7ea7f0118 -33910c48ec8103bcc699fab1914df38672de62c0942c6c3b5ce80adf2226b36a -b18f5b3d985f47e89820dd2c99a600f1627ebaf7fdf6247518468085cf3a8fda -94361d3a8106d99dc1dff3595b38ec1e995c537c8052d825769ecae24d68e20f -83f3691d19e4b8e35ca03d090a21b34838cbcc9c731ca503f48c02982b9e5d10 -a093344fb173bc1734178cafe439f5effa0886cc29708cc5a5900aa08003bd74 -6592722ffd282a2f0c1fd9b7d12748456e36e642980c359bb1e262f39b61f365 -d3be084415925ff7e28b4710b90e51bd1832bb4ed55ae358fbe973e72131ec73 -235634a8ccd7e3d917264ae19f26a0a1fd992a982e20796162f61b73c4acfb70 -a9371b09c9edadd5249841e53e4ab90b3b26607248b598ef3d00362710e90f5d -8959b92e1672197ef2e36084f92fbf68b95fe38bfe69c0fce6aa394ac54c0c5d -a00661ccf749007f2ad1c869a944e7160ad31c04e4c357ed312d9e67e7435f80 -ccdac64694fca0fd849d1eb71ebd2af367eaedd043d589f2afdc8dec99d96918 -40a6b36b87f444b338f013bd13dfb185edd0bb386ac5d9880720438503ec09e6 -a8193e8e57192c0a83e3b42703b61cf7e624117d124d1a1abab1aa441cf75a2a -3820e691456f4e588dd2cd227b24570e54a6a809669219739681fe0657d02df3 -d5173cea9b4eaf8f4600ff96c6ab14e5ae0f2abb2d428cb9576a38c81b4eb084 -3f70b0af5f50fe8b346aa2fd4b1f7aeb114f45c6c49f991813093b4d4f1d01dc -c472663230311f9662359afbdb49cc98c7b23cbfcb753ecc5aa83e9af33735c1 -a40e69216f465723c53bdd3f691b7f35a893b0750cbc01ad321f525338ffd260 -3003894c177d2a72396878762f9056d7d65090bf15a27fa1370a2ec963a70869 -17c1618966175a14e54fc3afe9587d00a4356b98c42e92db658874004c3793dd -d4a075dd2c82506e84e9fa74f32bf5337a9a5f5609d024e754032df6d73464ed -75c7ec086dd9c3ed006070a59fb4bb9b460f6bc99611806f49cfffc5f738f8e6 -587bc19ce5e808fb9ecbd7b0804a11a2bb7feb2dd3f1c2e75cda6495f0115b38 -f7b2d1a8e016753342bb141bb469e398da1d49076f0cf5b27222b7d7bbbe4dc6 -fd128938de784ee73e01b8b3a5a5bb9aa5dfbaba61f1c294f8f33721e18c1dd5 -93720d88eaec019e4b94fe592aff31b97cac68a51522ed828c54bd63dfb01690 -bb0bc0d036faf2807cea61fc4de67ffdb7e353d4f6892968874012303da379c1 -9f8ca5e57eeab034c4a6b465770999f42141754b3acee626d302ddf3571d1061 -314c240fb980d3efcd3a8af635d4d61b6a5e670238180b308e74d567a6134828 -87d861aa76b031a221baa83e2479d6ccc4111cedabb075a7f1a5dbc8d5dc977b -2caad52e5b220f87d518e4c58360053125f954c2e47b220472a0683162614c4f -253a0d795938bc905e8a909cb71d7e87b251561997bd6b9842bafd1eb7044850 -a0be3aa098ae43f712816d918cb144e4f13137244f4e607bef688bbe1620af61 -73804df3753c4b931db8f67a5ed3ba974e26efc293a17a0ee3df8973515690be -433c07cc3d6df25b2ecb78f0446d21ab7111e80f770899a2f7f7275ff07426c5 -b5fa3864cf12e62a7cadeeddf1b42aa0b8c7871010c31c07726ed156ceefa233 -7504f37424ac8949d64a56847f0aebf0152ea8e14ab401d19ccec61be704ab93 -cfc591e021c576a16bd403ae6f696f8546f7b173700fb2c14141b7106a4a5d7e -e62c0110d9c69d3980cc8792d4aea33d9d6c11215e13f39d86835fbf3bb5c64d -ebdfdbee34600a088c6af2ee5d0c8e91923ca927347670157898ad7bc494a346 -2e2683a9202344e5feec0add07807652a567abfe70c79cfd470aa9c4f3f31fc9 -177a73d08df5fbe27b260aeae4b48fd8cf3f1c1634d360acd0b676990aebc4f7 -b6ae204c94b9a45e8a0f48c20de163f98b1c7b6a2277fd390aa591e5925c5d73 -84d7cee3e635da74f954022a7d66dd2290d32238c58e523ee61c575e9442bb77 -cf938b213fd8c3e8246a581b1de0786c75ff4449337dbe7fdbea762fd520818b -b534d1d377f0f876ee7d1942565faac707a2930f059e62a0eb609166b6a048d2 -94b6ad58247b65271f8e248712559d82b137216eabb6a0690d0bd5da519782d0 -8de2c9cb67232950b08af18b6c7a030de179c250678ab125f391d91c58b9eeaa -27b58128107ec4d3ea2062ed788318f34a7a4861be1f109c3377dfcfd5182c0f -71fa354a9e52dd80ac3ce3db81619d3d5fa34c898e09f47595ec10ac3f4dda2e -6fd6ff1b21dd50a9a53b89b4acd332ada3c96d7abe1cd49db74a8cbce4fc9ee8 -7196260bcae61b44c748cad2e77e68a862a251c617087e8972355ad8247c6038 -2bc57ea0ca2417efe1bc0e010fbda0d2c7f410fbdeb780b667c76d3f51819e1d -298929d39121cbce7d2d2fbb3a7f03097e5b68bdbd186e82fa333a405881129c -870cdfa7fe710b97d8055860f4c0f7cb7b8341c7e68f58fe68077f143b1c153c -d3684eff3bdab4593932f429ca7e3477d1287799a76f674556bf29d5e2476b34 -9e1a1da17baee1f33988142a4935f91291aff3c34af247f50ff4093a0418a049 -9849f67e2d4f0c49040c5d0a55d6a3b286643c94f3ab29911a1e3a8c0a98a9d8 -50675db3aaeaa65c8ba0c6babb1bb07469acf70c170341f3202557f3c4c0b956 -566008dcc83471c08bcc17a7450f97468f5591a552c5f67b6fb445f0f311d3ff -d05a15de3bbf04a5ccdce6ab12ef532c9c52a58f69be8047c27cbbc863e42e65 -93941cdc57764a6a42dd59e03f508074c87735ecd8cc33c48b39f0a3a61e3f99 -1338d35804b70c7667c9daddc463a443c78582e0074ea3062f83f6f038ac3c6c -fff84f048a1f2a4f7a91d6f556a7a8667ff31258e9ce7777033b8324472b723a -a8a982dc355c43f6c949fa4d5434cfc9a29a34806ff1f39426ba39910e618d1b -0d2359161717edc9084534eba69ebbb8ed9cae7ede0b9e59f6faea5b837156a4 -75baaba22b5a63c6cc56685f6c85e11e40e80b39c16a38ce60a39fd5d0e31a8f -987bc78a6b9dcb4832ac27fc0768aeca984a27cce0c6c6479ba20d1f20b53a9d -acfb74a674d52e7a2c9b1c321afe2f406b4f8f188c6884378cefc56ca470b6e9 -abe2a9b869f07fddad9fc0d4448663ff746c587a5045e207030b54ee970293fd -102027cbc998f2d6e5fa36afa0e27a2e8736eccde982941f1c27193b23cfa282 -60ecb46f1c3e2561631ba48da1072c41abc716631619af6d37d5ba55f598e889 -515fd13902356b71c43374575efaa3f5a638d615bb44ab50415e96f59246a2a8 -05ef00c3cbe9e8fb352430ca4b4ded78fb68c08ad5f64d1473c40d86041f4188 -31ff25370a0cf0b433b14ecfaae6d6a383361680ac9a9d88bb5142f57e7bdebd -cfd42f85c8b02668b3cd7313f5b2105bd3461a8849a9f2e81fcc8bccf9e0578a -4cdcff3a22d58863df55ff0fea6750548c9c7de1f0e6d3737363f0fc5964c16e -9b929db0a3933773cd49d6cb7c804491c8506f5b56969054e8f0f2e49077b01c -1a7a2391bcdd2ea92c2ad1e3a6ca7b0d93f61a17f50bfc31a76d26a152818c28 -fb1cc9486c20458a572a855d4957bce958b10e1b8786d8f0acd3fc730887aecf -78304e350aceed92cd52841b0781bb642c3fe28066600d8dab4584387165e11f -c7316d4c88d24e6c1c5ebec97a31f5a1002333d6ffb8b843cd7979ee87b7b614 -0cc742d5ebc63064f1aec8e795f37b793cd011751af908d9e2f3b41745ff5905 -51e8497fd7f9d9593a679ba184798d6ea6d565adffc7a9d27be9cae4ebad4318 -4ccfb4fc9180163d29dab98db13f7bbccb4ef47b395ad27c6449b935b1caf6c8 -f19e9eba0f71db59248989e89eb0a8b389463d29845f96d87c3a5d44baaa8276 -0c87961fe91b21b632d16758e152def763adc2c8f2a694b0c9bda0b9b4e91fc2 -ae533b530b722715ac3c94cf31bc34f507f4b122021be4f302cbed32b1bb1556 -e973214585306557f73a52e01c233ec74c2cea00580b143968c10c3030eb32ea -04258f952ccd7b72ed8fabb54d8d697edcd1e1593889e8ff047b516251e64dc7 -bf1f794e2d98a3ae71ac8dfbf26d6fbe2d02aac17f7c22f0b2f93844179cfbbe -3ebf72c67e33dcbd5ba61b81fa52932e14bca5458830f4d8a226015100016910 -09cee0f131eacf199616234e9f6f9c6b670e4862a5a642f961f395af1b00086f -623fe2a8397460c0428ba38add163be9ceb002d5fec71c120cc90b429085b661 -f2f77f810df1c48abc77ae291a70ed513b2592134a451c7e4ace69744c4d77c5 -903a197b1dbcbf24e71c9bf7c839e2b0a2fbd3c80771348c9a13ee77bc26efbf -e48d199dbfd4c501c35845e7abd04795f8f56d339e02c488043b48e0f0a085c6 -1649f9db63d29ecb2d00d8e25f5dc7b5795bea0cc2d03e49a1785fec1b67741a -f8866d811db4646c6a8240018b407fe5ddf9aa478a961b12c9709b3a8f2e1e6c -341440401429f6806f47621ecd4760b9dccc43b3be729b787ad67022b88e95e3 -273f155a1977ff25b8e7a01bf918933c79d653e4faeccdc73d064f6977c20053 -943fc7e2d1756fd26e96aedbad003ffc7d1f51840dc186d341f619dc99daf00b -71dc3237e980022e05ee502c9969ed294ca42b80f930884e42cc1d46156444bf -d77187835762a9c249c9f97758922099157204cc578c6951eabc236a1f8c9ca7 -6cf97a1d3f648914839d0e1baca2b5c44349f69659600dea63c1cb1c58120ad9 -8b339495ebd237b407d4263ef93b6f84cfe70abeb3f70bd9c72cf55be742443b -e637331258b73618b1be411c13fc9b4a4664b6e8b49938861b11c45d54f81615 -78ddaf95dfa06b6dec253f812a44c7d910460c2e6ee1c9dbb7e038ffe2804a0e -63c1d125d00b469a35a5de55196cd62dda71b6e34cb26439f8139b0b274b4587 -421d93f066f2af4e44752b42d87b9ede93d5d3ea4b57f8d1c5889a6ff4854b1e -63767146bcaa3f26b20bf307e4370a4d16b43bddcecdeab12d835c2651b9c1fa -9000a488145d16df1fbd0d86312716fcdd4d98275d051230c37a882ef64ef54d -bdf22049704cd5cb1566a482026770928b3d7885af3b91c7bcbd36ddd93df9f7 -58dc06b92c2f00238d86bf844412f7dfbd5cacdd2e06636a2595abd6aa804fc9 -5d3b8ba8f6ea187ddf37b925e4b450515ee4996d4e2e962ae5184a3c875fd80c -7305b65c0dce36300166baab5321a296852d14e99f1913a590a7c9bbd0119dac -a2c0bfc22bee8ec1d36e514e2dad6edafa24a27c40a07b652103f257a88b71a9 -e887c6494c3492401a956bd6b4fa309af59e820ca44a854012e67990eac49126 -2eb3ea0d0e9e90c0ae6e97ec5ce0f1fdd8cfaf9e0ae56ceb2ad794506d72fc79 -2108c143e49fb4b25b599b15eae0b51aab35865d2a068bd658c2cc05ed52dc01 -411d87da7d11013006fa4aff52cecf0593a2fce2c6f257eae51b8a8f660cccd6 -d8640270d5ea16c994433c340f16ef49f3e9043c60eb96321086ca78d6894573 -15582edf53003e2dca565edfba3f96a4c64f278e127b565f9b179e3353481fe7 -bc32058f7607cec3bf2875e065c959d7c4f15bd74e23b6da7274a0b23e682aff -f52db820dcfa2529f64821bb4a7ec19f1c9ed6ae3243ec055da2e57ef632f18e -90cef26fd694c143ab5186649a1dc595d06f64558065dc88b06be2ff7895aad8 -247f4d7c634657d92f490d7af12619c057c21b6d1eb2670d8e5290658e61ca7d -c72d34682575e3fa24c6b3a2302a2e393a80571c5bd7886bf6aaf6861f7f08c6 -af0f074aaa4e94e17814ea5bef893853c74aece56946c4d8e2bacf3fdb8570e7 -e66255906e641014ad4695cc80738ce37581cc7b9f96186aba07b71c90eaf971 -8b4b9faeea0636a1369c91ff5aa2b3fdf84b1a26236ebf4e8124030734d96e9c -2f8c994f4c133084215af3e7b056fe319846a6362540824caf647895dab57ddb -391bdea6ce008d66556fb5559d77db23db2b2cf6ce007fe41349b205400c3a7d -cc75f866844cd35b79e9f6698b025dccbab71fddf949afeff3bc0ef03d508c82 -686ae5fb9437400a0a7b1cae3b20b2a89b48efbe4cdf693ae0ad4b35a00b3abd -a3d0824cc227a3d50b695b1f849e43af96bed2073b16e2c39be9f878437b14b3 -fe7abf8d049cddf68c8a94dbf561db313de69ab12d21434b09c55e14c1d6389b -4d4f3fca7076af70184bcbb52df12f77e6908f5e7a73f6f3a4df826aec0a4a37 -63fbadb4c0827dfcb85b3a894ed0eaa4b2764c94d3a09408f65f89f2b927ed8c -64d11f822d040fefab05d35d6b9d3cda3682eac0970e944a8a48833098e64445 -0275c417be667776d2f132b88dab518c85bb94b34c651ed0f07db8b80c084543 -6cbca3a5e225289a01ee3983db0abf6f53af6abcbeb3880645a3be6d43eb77b4 -4ee7cdc1b80ba30aa84da7ccf7084d0507483464f667f77f438c0f256db5e7d7 -83b635efd63d6685cf0b17aaad912ed99353ed440a1cbb54b7b1af9807b5957e -ad2e86b8b25ad57d4af26d6c8444d9e1af5f23f195263f776c97b96a4d130bfc -d4daa8e611b750c665348a94aec9c97e9ea2dfefec054d6cc1de52079ea0de70 -03dcc972430e24bc332f05f515b6700be5b8e64f8aee673b54ecc99eb49dc7de -5e1c356cdcae5cec64b5110c51f2f560baac89d44c0fd083adfa4c99731147af -ce83123b386361134d494dd7b57b32ced48c5068756063d7b16aaf965258a0a1 -6ec95b46fbcbd9932c1111577eaa4b89ecb5663778a16c815b239c3e01b487ee -263a0a8880285393f3263d231da8214ae55a6147d663a5b49553a0f2603501cf -5e70124bd3c391f8f30f3b07d2c0d9e3f1a55128d1e7b9d26b54b27af89228af -a02f0acc85cedb2db5da29fa8e2dab1bb8f5861e10d463b17d208bb341c8d7a6 -b790174402f863d6f096a984fe6bc438c955b698bf572d2d6158cdfb051a5cfd -f631a79d18a99a556a93a504795fc39f8027542a1aecc048e3b980b585f08874 -56b773469da9f8bcf314bca8988a17635b05e6e6e16ec9c7696876996de00b42 -5c3fa3155787aeb47273db58a25a27ff98955c77d2699737dbd05d29dd400d8f -b8bf24dbef5680b3cd31c4f09e8078d6ac48ebbfdb8391e8cd6aaf741bb6781a -6758fa5eefdb82d8f0c628aae6a1e9b2c0a5bfd138b41d084bca3457c610c8ec -aea9848f846e3ff4d2d786b9351b14460ee089b7c4aa2651f8c5ef33b7d7f9e2 -7bfca753cae27b75c1b95c59adbfab31ac6373627a7fcae4b506640907c72b7f -e6626ed34135d216c60dd22b886f8015fc65640bc301d064b6f0c7d4f1868e15 -7431f3edfe0cdbeb1e8d9c8dc69fc8ccecdf697ac9d38e93c24265512fc4c4f3 -f5d5828562f3711656097500f294d125f411c30a8862ccf458498df67a772b4e -35799239f474881b449816a22a59c88ab9768708621cc66370c3a63acff9b869 -d5797895dbfd962e5575496fa55556d9547f2b6c71a5b157f64ddca6a05eac26 -71c862fbdc9fca61745e4cf6a2c2f177d0b372bff3ad3aacea51cdb1f5f77879 -6ca0993c89de61eec96d10d499a0ddb8ce7fb5dfbd9afd1efa83a2bd7936a7e3 -25ff236f80cf077a07fad9bc2cab0eee94eb55edcbb335f017dfdf6e39f7015e -a2ef2e6022cd8a7ccae98bc4dfc5f61ba3abe3b3d3e33127351fed9d052e216a -132bfe442203f88c1f6adddc3591a750d57000e00049af0f079c24059fdd9ac1 -8e0b967e7e4a64c3c39fd0968c3052e26383431e0882f6e72edac878f0450755 -f402daf3329bb6450da9d61622578c03b9bff572730db063cf262445284535bb -533713a2186d2b054cc102b806b1511200ae7bd72ffa24356666815436cb893f -f73ffe338516c6aced39026c85a0a29a74b5fbaa72e959c9d08361cf6706f516 -828819b6da4546818e3c51c73a49406e4f7e474e0c0ebf6fd8b4417d43a352f2 -127c85d7782219a7ce314c5b740688b2c577d1fb8df29801ed39df9e0c0d4f0e -004792fef973b5f4cceecc9de6e8fe114320953bfe027f1b2da4a4c63d87086b -7be27261fcba75f865a1702fd02f1b3ad3ac838481a656d680e7cd7567cd89fa -97caf24edccb6a9a9ac844ab7c53ceeeb649fa1926246badc08da706d10daba6 -08058488d29f4bcde7c3e0bfa0dc3e538e59f77c33df294e3cb78d8ec883e450 -6574135ad1e430ba735302bb224d5478e72c0664bc0aa1cd2bfb628d1750a19f -731238fddf3ae476126cf061e206c0d6c560b17a303d679ecf39da4908bcf88d -881e285db0479d59590be3559241f2e8aca46aa90bab19c2055c052dccc1ecfe -9e4ebd99343ad5ca3f39632682caeae32cce38164100223e91074d7717e66f4d -c5cfa9d3b916082266d7ad35d5b2c6a915494bf5808a0b1e5740450b0ffcb4dd -489dce6658ee49f8f91ee608437aa0b8cdbdcdf5e7e8d419ffe61e62c6c77f7b -abddf7eaabb9a9cb12cb1240ec2a563895b777dded8c360a391c3d6b322cceae -a75bc543299951394252ac218415205b1e799b38c6ed8013762d6bad186001b5 -94d9db790b51efd507afc785aa0e1f8530710521b131045eeb967c2068594002 -5c28a1ab70a17ae15002328ffcff2a20851ad24ebf59d28b6a43d71eb95503cd -6a96b1410658c8f5e9a351eec91d37921cf34b7091ccaba1f5f6e70bd589b479 -a9fefb01baf7290ce4542d292a5af4e41d2dae0da7e7fe8db798fc571b167972 -7595500ca6d092ef97722525abcdc91e22f7f8b0cf7d70a6e4a5ce2f372dee3b -1bc3080db6d5c7e84c22774140caf8beaf265f723d0a682cf2c49268932c6a47 -2f1847c48b23d287e566fcea7308a93e58b588ce0af0b67f7b38be05f6723ebc -aa64fb866f004d3cc0b0afbe99cc6f1794e6b87b87870f426971ff1ea206d91f -01b10c96af3ae976988f8751fedfeda2cdf51253c45827e8ef8e301d6d2a3310 -2f1c0ad078e0875d5b12aa2d441113246c73f03dab1f5f6ba9bda8a462958afe -c265c65c842c4c68647c2cc62605d1dc35c8d43352c39bbca54583403adae299 -1f94fad6c25254158e771065b03a281a7142f90a04e55ac2a5a5a7807c6c34ca -a56f7e02c4fdd3b6db2407509c7ed9ee02e7f4682f403a3a8ab315149921e97d -ee39f670e3cb9c06be2adb18fb64c9f93c632d887d4d39602b9d9e78e47ef23b -a7a8694eb28b423f950e9dde3249c346c5c7e3e3d01fdc00afe6327f52c8bb04 -1ad015ad3afdba9c728af9560dbc91ac1df31939d18c87d4f590b404f42246ea -4378959ec3133529a9db834392279289c0aaf8d20e4b726a0db44c023b1fd8f6 -6dbc606b202d4f5fd24f6e0f7d72a011ae3e48494fb833d6dcad6527dafa2dd2 -e26583e985986d934bcea18534b21731567e6ac6c3cb863410c18714b31b894a -11bcad7f22af25dda9cf17e66603cfc4d52f7a90fd39ecae9eebc5cb396fb5f4 -26892e05d1d9c923555770a0a5f063363a8b51d7c4af19f9008e417eb6731c3e -83d2ea07a7cf7261f47adf674e405cacd7e23b21846aadb7e56481bd21e1233e -28c6fe67e5257a3f778aff9004c72890db614215d86b6f6083b0be8cbe72904a -9ca178ae142c139e763b6cf832c29f87bc1f72a35b3a8ce3e9f24e2d02ed7f5d -08f1c2531c80046e6b61545a89c069164b571f505b937f97614fed8c898ed5f1 -4428c47e1a24b481a26a5b8a6da16a3ac32adf2770bcea47c9df125f3ccc3820 -d9ea996988c03a74511c0fc48842eeaed4f46ff92f954df3a97fabdaae47170a -261004871f7569bf73f2aa7f22c03b9a05433c8c2f5d0192a595084339e79443 -de5d394c15050b636a9d2bda012147d3a9dda39170867472903995a8b7b2af1f -27b0aaffbd58d60a59e3c3aac5b961dd6fcb3ca9a73a1409bf2797eef39cf9ab -0d9e59ae6d7ccb4470d66091662b98a777573ccfb1a35b2369b0d50a9e5a519d -68f498bfe450041e4de194cc1abeb812c41797b7145e367922c8e03472bc557c -dc3eaaf9949419e3b40b85e6841a27e4a19a25aaf6caa139d0502d17b613c46f -df5d375ebc4032ea28403b23dbe178dceb09e404f191dbaf59c8867c95116baf -8736fa4c7b7d838633d76f9af7f1779751c54f5abe97707a8a0ff3b05cc8c8ff -23d96dcfcadfbfbaaab3b27d652a757f5ccfc30f00b122b1ad010f23c6683a04 -c5a53f9099d25f55c2aa5144887d6a89d5d6c3201e5edbf8e71b33adea7673a5 -a7f48504fe270a0b133b32a7f2c167ae61bd9805a7a9c4140e36345c3d1e3176 -91bd38beffea3445fc1861c7118445d075f1021bf44950e2f2eece2f0342ed54 -34531c7e9d53bc2307add9f64097751d162c4531bd991db9c7c8c71a8eb74bd5 -a9e1b19ea58cff83e2d25c13166ffda04024202fd568a32600b4e0c81f5ad684 -528be94e00741a8c3b14357bf93ebb43c7afbeff8800d80fe6676dc742c3ac11 -d51c9e1f97512dc239783b9275416d2158322f535896174204627af74f363c96 -5efd8dd1ddbc710923eae44f44fa69e274e8b84c67d42212a189c51d7b51f829 -b742016dcae77fb24440e416c58085baea55adfeea589a3c58db273b6fd395fa -092b27b44c408d7d8eb773310754c9597c77394b32b4268b9a02cc5e4b8ec06f -bc7e099141bf3ab12ef032e9b6e022e13a7555559940e8339160f8e6760646c5 -5402617fd925888c639fae96a05d94a94b34ae5e8f8f4c88690813f2d68498bf -cdc9328d523ea7e6df94c343a4f6cf3a44e977b6b64778de0b71bd116e43991b -6292760dc7ae25de194bf35598761e74c5629eb7e1b196ba087c88ed23ccac07 -a50bef7592aa928aed2778726a499103c4daadeb65515d170a840eb562e41fda -cbeba6f51c2bb1ca1420aa9ba7dc079c7e5accaf8fb64ca62b31552e57bb34a9 -74c799b98540f249232fa2b6ad01b4b8ec6364ed53b164e179c76cfd09a6e0a6 -245f78d0fcd392bcb68a9fd37e2b68d7f07dc031c7d466e5019c43d7e2a1cabf -4407e522d32e8e67ac25c146ec09a5fee1ce83f84bd06b0d92421b75709aab1f -8c8748e902a45c6500d6994fed6c097cac3a60267dd9d4303cd3dd5883c33369 -a9e57e68c2d59c758e1b8715e36e186534ce904a061bb649e7d086bd10d11cb0 -ef811357711b303389b678c9923ed408e38e74c4fd39511d91c96ee5d6cdca8d -d6dc14cf8146ae3b83620bf7a56f5f62bf80034edc1a7306c859acc6da4b0e69 -3622ac8c774569e1fbd40359c0037d9fa7bdb6d59b3da01a7e2c5bf7a6970979 -9032ba9e5ff72aeaf8ff576d04d05aff0d3b82627005941244299ea42023e8e7 -74c5223b1cf4845f7614219f13c1bf0100789b2fe56cb9471a4148885742657c -6528fbbdb80c1568001dd2608e76835bfba17e613fd28467341b79661ea85684 -521e9d6d436ec08d4fc523660779eaa82e7ee2ac862341f48cd7ba04e51ed6ae -bcc6306e08ad8d8689ca7d8294ebd8a014ce383cd0c7a58144281380ed6341f0 -34e733c110bdbd72302d00c5004005399f4ed454574e4db6fe37593e0c427d0f -7eade39ae4d2ff83177574ea2f98625837ec46af3834cdfd5e21b92bc5e7ce68 -5c2fa7c99a9b84c1c84e26ace6d4d620a437503ddca52403f7e3bf7404114bd6 -0c13a91335848d08c162340d86f2cd3aa87a273aa31582b52ea8cfdb4fe57f38 -a1072b84b6b1d43772135481e010cb1249676005394d13ce1ba344f291304496 -a2cd7041cabe75d149fd123c6cbc8592ee8777f909f9cb65582f204d18a11d44 -1b56f6c1c2e7dd82a261c9ca391c81d672ed404f1a21f48b08c1c83f1a2825ce -a02f8e98974883fabc4b98f30ffcf44a83e665fce77986a82e431e2b17852d19 -f6758ea3565f643506f0fa8ee4636d8d5861e079599992c1b3fafc9ebfbd98b0 -aa56a89571d79f3679cf2d9e76ac0ee7993b1d8a1b8f2f082bd0e04e59a3d1f3 -05eff532823cbacd76d7f5e0a8e062befc338de93b859f8c909a685e1d437e0c -5004046087253dac6502c0b973638fb3edd95e9cda5204faa8511d66f15e1519 -8e18f1afd93b9d7ccc31e8fc9fb37617cf6dd5cb632b8f2a5a31a257196d9835 -2584cb4bb6f3cf6967e0672df090badc3a2690b5da1f2f0f4da1ffb7cf8aab6a -ea5ae9cd0c5bcbc480be92124772f5f7883822ca05170ec2e49e9e922f2af79e -64c496496767ac665d5a6095c023897fb4566edd79a543a2a992ba74010cc614 -80888d8f70d0e39b2b4267a5dd2510e9de401534092107d343591c4047f04c56 -a0c60b34d8fda26f9138ebd6b28394fbbfe6870c1cc8782c30427f3973536844 -8f16f032c1e895a5cbaad7c6b97a305e92c303d51f5479ecaaecd417dbe27d53 -0095209a7ad4fb9626236c5f8ed4da9b2d7ecae54bec567c4f8e752531929919 -06abc7a3a43c59ad783044ba2173974a132916675d6adf87ecbf7f8002c0156c -6995e29f3ed4d35793132bd016ec07d383ffed0061026686fab542bcf66a3d49 -49a671a8c33374802f3b0a709adfa03dbc68e099dc003704ba1ff3afee1f7685 -59df4a2e78612ddc8c1fe96833bb041ebf58ff3327f564a8fd8ba56e046fed80 -3c8524cc550094d97ff6936fc62b30ee230fbe01d01a8cc18cc282123ba674b1 -9a4f38a32953bb93e6f90a0f0448c5e1702c062cc533018661e6f8a648511182 -c13e6e909f3cb76940e6ea127f472e3065829c61a0bd411cfd0c0f846afd1fb6 -9faa3313e9f6dafaab1a1bcc14532e829a2534733cf194618224bbd371659f62 -c2916b87fad62bf3f5601a056353196f1111f5c09bb6b0cb1f77831591cbfa7f -5791221e028bb133440796901dfed41d916644cc331e315c9a15325cff29721f -90f45344f0733220c0ab2b931ede4eeb4c680b1684561033b0ed6802c30da326 -aec3cc58d57458e57847c59c4929507a9de6b349dc0349123e7e11bd57f87d53 -245a69e071ac177eb1f65a6c8c6deb80eb025356b5d7d279ff0f0d415770d79c -c1877dc086028e857f8b21ca42bc4b45a7ed930b6101088bfe80e59d3cea364d -e969dd1074c46234150c70a6afadc2cea3a56f55e0d7de971acce64f8de2ce76 -86770678f99f221bc8b970a68a68ac0d06336b2d55636d379005725b10d08795 -a6532b3514da7a024e85509ffa64993a90795a0f6317ff2a4f65783c716b347a -0548464a2521fb5387940107f1315bcb244fa4ca67e136f5569d15fba2c53221 -e56604313e65892a674e724c33ce66ea501c8c51129faf95a6d419278d3d7b5f -637c5dde1ce7a54edc62039db4a59a955477451600a5eff73fa51da41ca7fbc0 -0e37e888242b92c94adfca36d958ad7db4bb03de11c4448dcf76c6e3947dc9fe -4b99459817b8a6f1e64eb879e3925fdad24b2e0cc3d4a267d65bab8e6725221a -fc29966b5c914d1ea25de480951c62fba783de240339486eae4ad1857d3e5981 -6e3acd432da618d68f8a8a066883bad457c976152e21d6e268cc4cd8b996dc2f -c86b300874a9302a9f0b1dba5227f0fa96339e58c4f4effe4fd5e1917fa897d6 -5a3415e251fa9cf81a9bb469b8bb32251779f1732e41c167462892d517f1458f -783d745076c7773e577d654053bebfd540465b07e4e51bcf1d83ba87c4268ecf -2ed50eed378a0be8ae49539495c23cdefadde5e2d19c46350c44f4cb5bc88660 -e32fbf87072b3b667768ad04564a35e2c22e8e79a35bf3bd4f53b91644ca1d8e -fc5a0406a984290d906711c90373d668a2eb25c2b974a2831aa01cfe3c27df7f -d0d193cd5bcb2d49388e656f32fc4d1d0690701bd6c0ade60076098cd04d3b03 -91159f2d17e43966565608c02dee1089d86bdc611dcb5d6884c25e0e709d45f7 -eb98f9dee60ba38b05396808082b2f20970b73e3375e6ee941ee3f2256239089 -75744167f3fc0b372189898cded856278168d8272b6ddf711067a8c69a66692a -21813a6fdebb43533bb33793b10f70be6a36060b78df6f3e3cc5b871a92edb85 -806d8686fc587aff4e4f939b819c88b4896cd70a08d453b9f7a681dd861f8cef -65af91ed90a7794f90d9ca7afcc9c833a04a3d64f487017cac3d604cc7502992 -5e520caef7efb02f1cd208abd2b5f9b735c5c6d743a81ea1317ba72df2a200e7 -02dc7867d79600334f74bfb97c896c46eafc8d27a0ffdf4d005ceb4335b172b5 -45903a927eae2ad46f61a11ef6fbd60f10892d44508769041ec0b97744070335 -cbb1d95f9c5117668f15e093b87359fea8f44ad2285a496182fdfe50f9874b3c -2e933f980a45738d042c54386d52a1e18b2634d234aaef4463ecd24d66acd338 -e2e809d3d5048532fbc14da378a1c88250c6b16dfde5e0a6b4a44f38d40ccaeb -c02b381e8bde7e479dbff3ba2d7c3fad2de9ef5978cb2cc01c060c6035a5e0ca -ef32997a36e49b1d9dbd5b53f5e80951e4a8a9985c2dbb68d84d3342c176aca8 -0024b21131a97918a06b92c10fbc19c6c026c1267ee5fe00bb4c57cad1198e15 -39acd0b62e0ff0ad1402a534e9bc14ff41855ccfb35981b6fdfbc3cf04bcc4f1 -ed691532a920284e5154b8a0bc9eef4f52b679eb8ac4e42256e7e4cf7145e151 -e0110241386ec32523ed555b95c77f7802682b675e8d0360120dbd2ac3dd9ab8 -27ea52aeb3a2cc4a85fd9578db79e358497916f564879da4dfc327ff638c84d5 -ed34c06755faf71305aebfe027a6062297b50c1f3aea03fa2aa0718a7ffc830c -f2801ff35722afdeeeb70552924a964a87e47619403e10f812faf030e4e269c5 -235cb6138969427473785f34e51a8fe86b0d7868d9cade51511e19e975fd6155 -9a5ecb133146b98dd3df10fe0e821b58ed0481d7bdbe4eaea67531d24ab1d684 -23ad14c3b8dbf1cc00e19bf1ba116f7944995b61e2524daec92b41eefaa8ecbb -2d8d53e185a989d64b7ea9cdf2f22d77dee8b8a1ae7cc6a13822f782ac67a90a -253e7f0356a511356f4bf5b1b0cdd5344165d88d51831b639dcb17158812cfb3 -2175dcd1d87403404881f4c6aa7a87d395f752bbd2f93ee45470299732a2373e -cb8b0d79c85093eae9349237700937a2e9ae3236b38749c097edd66ed5eab99a -c938174a37fb3ccee4244c9df8cff6c83906a4a452a2f2428ace663fde9a4b31 -2a0cd10fdfc3dabe91b01082a2932163e8007af5b12674e01014695a4e6d52bd -d58ca788a4a3c77f3afac76959a417dc44306ea2684ce9b1f009202080c6d3a6 -6f614f7c75bdcef9bc925c2a93d921448e4aa2f25c137b1417996a0824b854ce -0d43c9d9f8e676e940f619b85346528d337e4452255f38bbaf001f45fab93b54 -f1cad03a38b367ee500a290fc6ec5495e9bb131f05ebf4d38f269d02738668f8 -0bade67eb9d16daac6ec3dbfaee65f4a443ac5cb6a669089abd86bc36c089f13 -6f736b062959c2ef136bbbc0863ef1098f395c89f888e3016434158a6738f884 -4cbd70e9ee34f37e48c56541958fce7ce2d3e1b89c22e991934407391328916d -aa2547b078630733d777c4237f7c1ffb65a023d037692840200a396afa40c67e -6b8f938a762389a2e81638da72e03e67fd70c8759db5565f67250ea4204f48e1 -2eed71bfbb4d6a36932bd650b507e611925a902e7e794391b2066179182b500d -d91cadc29e2168d0c981fbda6be8a7cccab5c310e93c6af5be24864e3e14aa57 -d44e6e3fbd9ecbc2ed8b27d6ec04d8867fa9ec2a4dfd1c0b238094a83c657cfe -71c2c3e7d6cd118497984127afad20053c41d29a7ba9909e17994a48acbecf44 -3cd4713017418357e26818ed99acee5ae9abf06279986e4e8f7dc31be83acd71 -dd14e522e4907e8d9594c4591b72c50096acd5f18f584a613004f0c99b3d2a4b -5cea9eeaf0754d499a8ece3dd4587d2202f064fdde4beefbd212d697ef053125 -ad790187306f26c63558f5aefba0edeea36c7f5a66517b2379f494818c79e027 -57099ced32fc6eca9445634f19eab79c56033e08d463cfddf692f0d249ed7342 -4d474b2b47eb4ae7e1092490295f7c4aef9a04b2c388b6e331cf68d210c2e923 -e31f53bae8b88f933be2e12d6c729466e761d51bc7125483357bcc71136264bf -f5c836d8cd676af3581b9cc63b7edb0e143168ac6311aac90e7acf73d0d0dbb4 -75f673b2dbe72538ce4b11c25b68a5c0684ff5da1e73cdda2dc46352d005661e -7e510ab89af0ef03049db9c96da50369aecb765d99ad9d08a27dc17fa9a49b4c -838bd34df3afe9c3cbc876660263a38545599130e625a513e5a10cca38e67787 -c2d09e8e1186dbfdc952b02de01e2b24293ea15a9820da7cf3c8f5f02c0d6b8b -89af16f031c58b22bfac7ca177cd29156a0a66c8191470535c9945f92f1b4fad -1606d4fbcb4cb9457a31b77a35187cf69bb2dd18fd416a28a2f761913bc1f041 -8319e4dee21aad948d6d6a698dc7be9cadf12592326341dbfe78ce5551ec25ae -b08a262ee11fecdc0f027d41bd422279d49fe1f21d2fe5e92b2f2406fb337796 -072d2cc55edbc5389b3a9307b72a40e0441eef66d425ee42fc886e673efbcd78 -29e56d00b14a28a5d41fc8f550c0f10d0c7b7e348b4e2a3d45aaaa0e3042d522 -f0ed4080bede6afe9f6edcb797864a1cbba50057bc134a437eebab64a370697e -547819a98b67e1e815e04dc4a830453b5630a33b30b27e0f74b7791fa4de5f2d -db62d1e9ce01b0aceff871ad301a7f0116b1b871d5a31031dcb71c7b9510166a -32e575b64e549e5a846818cbab62d4de6fc07cbf373557e0f620863a2975c848 -48d0ee27715721fca724493d580818b6e53468eac5ddafd9434eb2a44f6ccc0a -0a54d4b01a6eaeb7e05e28ac090e305013ccf7bc120c0c9471a5eba6d84342c5 -cccc01f035d2ad7fa6c4e81a76f9b6c0dfd13ce59b3ed2dd41f74a2bb20c4540 -a042e91a0c970d22d59d9ca98883578d9bdae3e8c4b1949e06c24b7a05fdbd49 -ef1adbdba6397c864d75061e5ef55a6d4926f65323de2547764080d9c7f38de1 -dcd434de74e06194e857c9a1d782e484e1070225ca40c7a30ed4cb9d1491d9d6 -ff5eef2323a3572f4dc8fbc817c8a0eb456257aed7f5358be44b3a817c28abf5 -a83e296e3b016ce9a768f14c9eff546cb3da35b72afc33a1405e39be33df153e -f82cddc67eb04904e016c3c75e80b73eb3a1d7218ed19d1f8c331f6bb6797627 -096b5760b85896ddc61c4b4a33727cf796f5917b426ae5f0ae4e0cdbe6751f3b -b9a0c42c1104b2bc7d45ef93e1575fc34ed4e42ca864b7604668cb5e72d9a402 -60e85f0938124c7a4440d9e6b1c0392ac953dad574652f1feadbd2adc4e46fb9 -c867699f8a4e4aaa584acab394bc24b80a600beddb5b28a977b222ffb497e577 -98660d3019806955daa68b400a3b779e6a998e58ccc64736f178678d7036752e -2996ac63099ce40755685c87df162fec86724a7946d0ff00a5dcfbb7280070bf -4b83b15b75e14245870208f04580dcab0ba7365973dedee104ffd28b800e9aad -c6eaaf798384fb1119d5423131bce97e2e6ca3ed1b9ff8c77064dd3abd0ecfe5 -cfb01c6cd5229fb360d6426abf60ee470999720cb96f25ae03698b670e042e92 -d6886bbca9c6a2a2cc9a5d22f5eb5dcff54a66dfe5d8b5324987e69f3b93ca92 -850e51fbb43fa1699f9a7eca215870db2f3075c8bee1ded30a061b9d7a3cdb2a -1d1133c942ec089461bd05c164bfdb4fed92a151b2b3ed0e577dd0242da623bd -c4b7d5bf74e3297ae8c39a27d9a0607ee4a7946decabbf11d4afde517dcdeaea -d53f94087a93927dda4696b5d57ba551d3db0b1ae356b58d80bd5aa85be1c3f0 -907d9bcaaf200478d9f3179ac93826a969af53105dad469caf4221cae5652f4f -3ca8d13e2e5ed4fc7867450823899c05426073b850e900ae1cd0b3c81f3b27f1 -a537726923d4c724c4b363013d305a9782d5eb14e73125c2aae3645da28787fe -5055a3477c8638680e2d08bf9503c23be5551f3782b59506fe5ed3abd5eedb60 -3ef9293bb3f795e6c7353d53fe05d25612bea17a3359223fc41b16d3b068a8b1 -b2736e61c04ff4723c3a8a5a2f19fe762fcd905e3621ac18e6fa388acad8d71f -ca75815a0000a6eceb38091c83c74a6b8f7ddd641e33ed757e5ebb8825c3bcc8 -9468f311e40c732cade916c69b078b9caa675de89da4578e0b970667e3de7fbf -977398692c79e40ee55f01a6d66c8ac14bf36dc3215c2dd446e3de4ade55f94c -10d4eb3e7da36eb3ed5471cd02453f5eacc6439f4bd4bbb815f097e452a50545 -816c75fb2607b4bc8088cff32e6cbc98612d0c3cb588f4032afe851a9110a09b -5706702c8bd83b9c28ced5a584dc915501a36b4e55b5e8592593c1f0bd7b4fbb -15246446af236f4f202882f809935d3e9d94529566f09d7052862d36fedb583a -8e68938e450afff9d89ae7dc4ac6f996efa6435dcee69289b4291bc038104062 -e41b2651237972563cba8f5cd2465393a6c3375f9b9d64719ddf4a4101d7717c -a84efebe10d766d072578dba7aaa67ff652c3580f5f2549a939959dfa928b68a -0df843853c4a1c1ed3667076a8b288ff3ce1ebe740a52688d809f5b2d5960803 -64d3b1629724dc170faa44a4e656676b9d8627b6b4d25cc46deacf1d9a64efb0 -4fd8d77ff4121cb1e510866f3a0762d1b41b45888cfda3564e35349f0fe6f55b -709e466a79ff7e923e861c1e7850eb50e9ef2b8a116d66440c83a843332042e9 -da32e41a1b38a5a1a2193b111b762a1efc596530731c73c8f06f50c7eb386a8a -aefd424d2707430aabe649589b8adeb73ad9a955a65cee44bf1a2659e0f5a21d -85b470e491f3a487c631cf99b2ab9b6ae6b56d81f53e69390520b282c516249a -ae64844e1c164554425486fcf34f83051c035122e3ed72ba6044fb0828ad9304 -abb0d38e7b13d1f09d4eaacb4f42e8e5389f3c16478422171c09fd63a67df3eb -74795426e07c565bed22fadfb64d84e2fe35534d2d2ba0e5d563fcd512cc110b -fdce8a10266d2a50aa57ab30d60590f0af9bdd950190a53ad24e6b3267ea0ae6 -550ffaeb26145b73516cec7f62c550637546d4dd626014c8121281741ddd8f4f -e4ff6496f8069134fbdaed74f72a5e945c41cceff2ca7c052bcb764ebc8c9c3b -bdd84fe5cef11d470d229a966e5f67122b78ef4dfc900b97d5543d1200eecefd -b7ce8c7c49c6c25eab9c6ce375f8b1975d52839e30b370a5de1f4e50cfbb9e9d -155b3554401c40ab1a0d0b7500d88d4c4dcbd7864b5b3158d75952fb9b719dc2 -e6e6871f8d53599a3819e048eaa54d6b99422f5aa93423103c2f0e01b0da316a -ee3a8b70fecaf01c9553168752419161e9c5c39056607614c32437e2d724a5cb -0c417eaa7e129ef51d705fcd087d86fec0dea41e3e79a5a12ffdf183c52c251e -03c8704b27eca423c2804d5fcbc082c12f2e91bea00d18f286ed5265d892047a -e426e53794d9655829c09d0078d501ead4088de8b71b69de903b416fd4d8cbb9 -35e00c72d3ba6d5eaf1f61378171f581e34f7e0d3b6171194e258b09ee3bc4d7 -d236cfa72cddfc5f3049c99d002b93c3ebccdf4b4ffdd210933e827a8c74b823 -a0ad225ab6183d498ffe04317b56a9912596f0c54e951c1fdfce2d90bd3771a9 -6cead69c98b1d8d30617c80a704a85b7662364ce97b0322b98447a97fc827584 -f607106492b23165a0fabdf846ba4ca2c43a61dcf2b4b8587965b5aee46d9216 -ebf16e18d7e06cae263d160e231fe24a5a750eae53ba9996247d5bea1f1d2b91 -3dff420ad33da68222852c7225850778bc04d7193ca5bf188f9de98c052a27f0 -734ba510fffad2bec8cbd0674925250add6d27aa81a64bf04d3a71a0f31f4a16 -88b05bb31287501da54f4916ffc2debe02ed12fa169c34fbdc268c6054123e9a -d280d8ea1c5bf83577c35d3995b3a51f076b4db9729cd2207ccd51c84c8478d2 -09081529d97b31e96c423f7e22e71b64f2c3f50c0572fc30848112478f643e25 -36a5e513cb564136e121d795a08d54181402bf96ef158c4943861cfeb7fc57fa -91ab500281186248a34dd75fc0369b6b1ed694de67a4ab236911ab7a81a2d9d9 -985fd71259787802bd490d4fe2f8cc883ad063371978b6f73fd00288a8b1d508 -6c9e379f472b3d90407e11368b1c2d69333a03e4e473d9974f571761c8803862 -9d628fb8df815a4cd7ef443faa73cc22b0c8ef1bed922b7665651140d509ba1e -f20357614fad55d940b521f0d58197231be5122c3f9b584f9de040bc966da17e -65929187796a493d683d8c004bd6c6c4ae39127d5ccd37ed8038eb4b6bc135e4 -c4babf07e3a8173824369001a5e8c34dcd7985e5f72527d560c90bbe1651d0fa -258006d1e2c146c301bf5741217f0ba5ba5598b65d9d54cc7d77d662e9b46001 -d1b64d00f93b705bfabf0b0ebdfac68684e5b4f6b99472e0054465f0569e4509 -04819c350a6696b622e8d40c2f19b8a85ec206203f1d6a5e23fd2015ed1a6f8f -822cd41c389d61373e3c76bbf4c633bbb837276dad6b798e78eeb8fbcba6ccfe -59060283c4e3e70c2aed0fd9b82d1a39f5272b5f163426d8bbdaeab88b2e5ce9 -78dce79019a8063a227bdb91b52a3c13081db63a21f1b3036fe663f97bc87f5a -aeda4aa3d044fcb0df254fcefa524a1da78cb24f73767caae7acb059398b1687 -5eeac36f9d721397aaa8aa93ac392e94ee3f2ffc8adcf5d0975e4c98fc85d754 -eedd6ab4302ab58623cdbcbe337563193c22612cf425793718e2ea61bbb1b115 -6f3b4bc21ce8ceea5d69a35f0d02827c90fc6087c6502b6a465fde79fdbd890d -d3fb8a99282decccb3780fb6c82448aa192b7bb09c3a922912a7654830e93bb3 -6c4e2e2465e382e630007d43f9dce2d114fe13cfa3e09e99061ea41ed89bde4f -b57f88dc525f256a2685eb92ceba55cce8015cb1f03ddaf16d1bd8d7a96df9c5 -d6018207164f6b554d4d8ee556a923d831a96ddd89a8d4205693e9d8b97befd5 -ce3f62a3cc399b9f8570693ca6cf5e87756bc154f96a0eccb69fcdfc0133142b -ba6f5ef8b37636fc2313fcef7cc1d0275b5268e4d5cedaa394eebad68059fe3c -c8a1ec659be58bde3f4e75dfae037d7cec8a5ebb211d899e31ff4918e89e75b0 -b9679669cd8d2e522e9cba190d91ed8a2b9dc56e92ec9cc08fe1ff58b96a3a0a -763083300db6ada58e5d05a64b56a174d2301844d54298815d9288dfacdc5aa2 -39e22b20f7de218a1513a6b068b78925c083c12d9c1d964392b095823312ba8e -246853f6cc7bcc5907742550ee41ccb009028ac5e80c9b5824faecb7c4eb4b90 -5a4451605f89d7b5ec2733458381b91097f0cb5660bc8f2aa679941c9b24cff1 -0a8f0b6740afb9fb97cc6eacd7cf39f70f7aa717590eee87e83b6e04a67af211 -bc0e8e1beaf8210f03edbba8af900da0166bb7d9bf9df91d63f1ba936cc15d59 -1d487be4c7cce1096d3dffab5fb95b310b9e500d9b8013dcdf8d7dc1b2458c60 -df6816cfb618c3d305f3174a6e0ccf46b554aebdc8c4ff31f13f51900770bfd5 -5e29b39fc6cf46f6a6f30491076b1ca18743eae590ba762f13c9f83c4a12ca29 -cef754b0ae5b76ecc29a56f500d81b77b767a7e45cf85b73fd75af3f50cd66ab -6cba72617f6206dd6aabe1d70eb909653972bacca73f40390f03ac61161c2f38 -6274f484fcfb99a62832c535ba8a2dbc5ec415e570011e07ae6d2acad0304109 -11a0c24c71639e49cf2e859d02495b3bbf3edbfc7ff82979d1819cc132bb1b88 -24a561c53f3e98b5306bd8d9596889e1ae5e5f99ffa86974a3d98ea7ca6207de -198b87a93216c4a7f601cc780b4bed59eb54f4af717e8e9d007c23817966732a -4a24f5a7c92694989291acca0b33861172c5104f142dc5c0297914c917cd487d -e1dc42d4cd6011486cf129352240d2419b7336c54bb578f33a6728e3f4ed5ade -265bec7fab902d50e568a755529b1da96f4bae7d16773fe9e652412c94fe62a4 -9b90a9dfcbf1b0466a1b89d3abd532a026a2a45330d90890c27cccd422dbd9af -633af44187ba2560811b297cb3c720373afff729d55cc873e87936fe72475143 -336c6bf027b71c5f24fc8ad2bb7aaa3779b4a346fcd60929f42b2ead0d38a14e -4653e3b92ce14dde30e901312da82b38d61b08eec80cdf22901ad41093788a0f -c61a8990eda88ff813f3f0866909ac7c56c5dc0160abc9e70ce864e859763b54 -a423f34287249f20ab24a62602c5164b1622ba42c28febf97a5021378c2c30a3 -b5e5a73ea570721ce916ac4682cb679342a177657ace0e890f1249bcf5fe3519 -bfad392fb4a7a59a33fdf00ad6f3c58131f2c82554c6281a903e19e2d2d5d49a -793489bc2a9560ac738439660b4bd6e535776c1766897feb2be25d1a7e6a8f22 -e37da2cfe7ad779b1655cb970ce1a5a92717a400388e316d000337d4848ff6bb -17c7b703fdf39539fe3c468c79cf23b70d10f75ac34a55035d8ad5839dd9466b -79b69c08146ab3621614e641cb83c7ae915cc5ddf518c9188ab4b124769e9bdd -55c2cdc550d10dc2410b49a5ca1a4928e1f830fff20c24268b3208727cbc1df7 -b550ba7d05269f4cad9c14b86b18ba920e80158445d07564a1a6ceb77df17593 -50c7fa23fb9eb18976c2ac82ac67e2b8faea4949a53b1e2a263ba8f2d2bb1525 -78938b515736367b3dda6cce6923628e3a4ac7052892364f0d0053caed5667fb -ff2a7a0b1f15f61fc6e2c39754f99857d6ca9a4cd848faf7558e55c3175e386e -5bb7f42d77019ec0583bdd58781e6b7e205f686b27ea79926e471e0d73660b63 -09e2fb3244100dd5f7e6c873974888d77e3f9f2b989996c4236c83b8f2bc843e -560e4a07d45296158ee3a164bc49b47b37c2617f2f26c1ad5fea0c6d50b1015d -0aeccbc4bc1b62d814f5e3ed87bf17057fc2c437d6ab9a716a7e4845275112c9 -de9d5450d79ec87c68ad22eedad4e14615b135912dc9c51b55f0def2a2ea85bc -d7880beeb30e02c476a5200810da5c61e914e110c46504ee97ffad58958c133e -af2f7274f7c8866a5c0cce5952861ec271121c3517964500a9c312559c2a0b32 -7b51a3984d51d75fd0548f146df90849bc5a565d9fe12b181de4e5f7f6f5293a -f25bf7c82d21c044f07df30ece184cc1b7c954a368377a8676fbf3439e3ce2f5 -75f35e694648e040108824be5dc7d3ee70c4ac9f724f93d68827183b8346d46d -75e854243b6585eb6e78be218b44368c2696bbec8dda7f7b6bd2cd0e87ad5594 -28195afd178533d57dee4d2e89897e9db709247dfccfa4df88adbc1a9b5ddbc7 -ad17691314c7f7f5b988e29d355747200b5a385d8e34511b9de70cc0bad8d759 -3009048cbd5cec2a24df414b098157adace9f132d62ab9a4c38f84a3831cee5a -7f017bdc3affce0244f8b7e17e67778e84df6befe3fa6fce7c0a2c1725d1f3ff -190edd33f307bd472b45bd0b99df6843785d2ddbbe96e23cd8b831b52223fafb -069a39c4ad99b436d0cfc37dfcdee9e84b8757b253294a5d52e137f4ee653b56 -e1fac965e280d0e9aca00f054e1fa218c8d9527b81ccdfd686dbc7981718f321 -ba00e1abb7366f70b7401870dbc84d64df270f31d45b59fe621b0144efa27e02 -79f9bcbc567fc07786840d767a72e35da495a5178df401eee6a07fa3a8d60f8a -abee6895d11402793687d27a4d2cd035291f76a4db595907a65e5b2db5c51737 -f2a3cb61df8b9d24c21a4a323eea8cadfaedfe9f3eb72f79bfc1286a72fc9f6f -8288e0e47d572f3c43cdec4b660c769102649621ca67886b4a754f33a065908f -08ac4ff44bea04402ca0f932d47526e674cd42e3db9cd5b51530190ac8b65c62 -bf68e2136cce0640c22c218c623071b5e8fe843ac3b033dd21021b254693de46 -c672f66512bf73a58d96399a35e8e315e9bd1b7720882b1a7cb257db11b68cc6 -0417b60ac36f82570bd28d47f52e91eae2b8caeb67cb921ec3bf77510487953f -bfd4dfc5791225c5b1d25bc77bba59a1a4ca2c6d06bc66f35c38f7c983dacca4 -ce4154f6c5932141eca8bab3e216e151445ab70a430cfa4baca7519464e5f8c1 -684ef5532067ab3ae32ad25175e6e6d74e058d9300fad78a6e7c32738d8e7e23 -c2e5a701459f76dd9e002864503c3692305d1618550d0c1132e5aaecb3a59ef3 -ec1c57dd4a443a99acda7cca08b82bf436865a315767c1bfa404f6a17b975e95 -11e08b40fa5b11cc3e375fefb04c1f81f05dfe85dc1d860ae1057ad0622aeab1 -036a09dd71964a944206c2c88c888c96004f2a29121dc298c38ac352bcea84c4 -1810dd09f6e2fb7be9bda31363cc245d4a614bf47d1ccc872f4e2ef7d07d06ca -54a3a5ddf5de96b224c03b65f1b924fd2affba7aa7b43e6c9e0a2011cb6a4050 -96200a4e50cf62bc2f405034ba359570213ba82d0d779f4433269a42e39a422d -21dd5806a4fd43143659aa223180d6633522d82bf563966eb97b2e298537610a -c3a501906615784fb6286d961035a397294244df1b6c10d794c3b3058d2db76a -78a5d81888ed75d9292f3e8679e28c08c4672e454f525a71143aaefeb4af50c4 -b7bc4ffe4fbabec4e460a8f3441eee53103ff98ee35b6c6f25b90217b0c5003a -c37514bb6138f1108962672f00685f10ebfe26347c9e4c80fec60ac46b64faee -32e2c3b82bf4882260146ee10e2af198d6046c4007bebdab12bd7652e6c14d82 -8c9dd030ee4f785c5f5fa16d2747f8b3202c91068f4607c72c9ea2f934a09322 -504bd3567bba36b1fc211cab06005f981db3587e7a9500599080c0733b063887 -34db6025916e3d71c23236f851508b8c0e04207cdbb87578d46040f814c505ce -5cb9af671c0cada35b750a81bd67f06a52651a4d4ddee09b944b4fa1167ce934 -0855aa27c3dbf11338e0d016ffa14049e7b932f1c907fb1e452db60d34c019ff -c4ee2d7ab8c2bd78215bae5618d3010e94b82686d918928686512abbd2bdc336 -daae9b8e344562641f9b3ef78747b1154fd7ffd265ead2bf8be75aa52a0b7716 -f09bd982aee6be75020d774a5a2d45f03e11aab7ee12d8d248417b65cb3398ee -46cdfa99d6b43ae536998aab64b2425f2c0709f6efe66c3f5d376989e30ebca0 -59497ae04804576cae98fb8b1c0ef2ee8d36fd4280ac6e08332bc6f64e4af3fc -432a757ed3c9e95559ed187a3a12595e0abd95e1177935f867ae5e5ef11af919 -5d60d7c2baec5c3c9ca1ac22a2acc77f35066122ddcfe65d0321b70025ea1330 -a7e0e2b8ef9dd4e2123244f7b071cf669f342157e978eda41fa176932f99b914 -ebdc6711df3f917d4483ea709170843ba7b0a7a5ab8db6f0437152b43d253bbb -b123bcd27552369cef3c2104a01b5658ed965e16f353ee70a0edde24729127d0 -4a3b8082fe128d972e657db200bbe368e0a90006049255c3792b5f2b6bf023df -548ddd41d3d3d82d7faa5944068d0e1e661b52f8e8b698ba1d2fb8d90806bdad -2cdf1e4ce36eb8b775be5680d9bb043929debf5a1b50fcb82cc39a5ce2e6ec78 -380bf8f398f74d022acf75f4d0c9197ec8efa91bc3d7c7758e1951c1ae8a7f5a -93f6d13a50fd23285c58688f20972cc2e7cc1a3fc5f4012d280337aa92cb387c -19a7d447a1a76401e377b3b0b54f877d982c849844d5e9bfd60ead10347c53cd -ed804d709189f7c7280e665cf13353ccc96bf6bfc78b1488c07def5ffc76dd3f -d24e2d4390bd99356ac58dbc46a919ad8721c37b7fdcff3c8e70853bfe3716db -8bb7efdf2bd5144e8fb101ddbffda33a49264071c8395817ec2b396fba5f09a2 -dfcb29ea9b5cc166fb6a8f37bdcfe8d92b776c5e142772e048d6ab35856a289a -cd05ad840b2b776ebaa2e8ddfb578695236a4ff74b936f74adb65d5eda696a0f -0c33dd11682be84bf3be77cb3a46936703f2ab56240fea5c29766a97def91f0c -b44ca4d5a128fa1bce6ea7468550a877e1256479370e0bc3dd9ae33f7e2b4907 -e33001717fbd5dc620e3b59d7635ab53eda7e69af3f84f50077258a2c1cce4a5 -92a2afa1ab5e92d9024b70804b4b6cdcde23d11592926c84c8f4bb0f2ecdf0fb -2c5c1a717c1542a662c358578c4eb9cd9846a15846d9b9c12afe4fcff88ffca3 -ec09c97913f59a331e873dd334e5d917d59633276aa83c51dc1bb1c12609416a -6fe867723baa10ad68b88a9fea5afa6c45cc3908660bb13d10aeb7d98102beec -552a904793730ddd5a3a1c05645ea490971bde1fe1def881f57e7224cbebb335 -329994e1d630e5ef915c36022c4d9c0ef3f36d6afb97fdbdfa21921e926b98ca -669c0384466bbcf1359c48980074ecf292ca4efed8c425c038149710d51de95c -ebf1bb9246ab57a7a5338236a1d6da751e95363fd6f96c24c6be45a153cde7e9 -1a0a48f3b681d51242b6f5c16346e279901d58e17b5f420033ebbeac11798ad1 -1f61627eb3e2fe20b03d8c457f343e9e66bf3ada20dd44e6e9614f00cb81e82e -632f3ce092cafff676f1073d43616b020b7524c2af9a0f2fa8a38da653a83adb -54f3d091055c6ecbcffbdc2464ce17978397391ac5449957826e0e3597b9fd2d -427ab9f60657e0cf61428be224868f380f43b87e4896690e2e28f5a33255fe7f -3103fdfb6b0a1a3056fa920a4d3b05a89a033a457b82a4930df7e78246b65f30 -0ba800ac3ed4a554b5137c20d47f9394db07686e33f28b679caf7aaa9e94cd4f -245ca89c359415fc084cf2fd9dfa050273f67ebb58745ab59a683232c8113b51 -d1d93d7e4132c21dc8250c7f58c40e9ecf6bde312812357377b562e1221d6e42 -4e902bfc149ce19d981d869c1e985220616cf7ce6f06677e6f92d923b11b6a09 -eb8428c28f16e348e671b2f8829f32a4e2d3dfa07a4fb82e09f99e38c3f514f7 -15914a1d3f1193e4699d35c3a38624288dcf1dc133a14b3092820907c22a0f70 -ffd15c37f50003103010bcbd08164f572d739bb5623cba3b3300e34bfbf716b7 -f4851b5604318461fc8ef6b04873801d745f51e9fb3796391c29bd89932acbb4 -a0215292dd73b8c7500af82cbd0114923e6a5d971f454a5587922cdf21f6ee10 -7cc299a84b5dcc435768eb2b31adbc7a9ff06e1ca3171a72a0612154cef005bc -eb9704b140f3ea6f46886a15129b5f97cdb950a01b6f2928407c8429a43672ac -e5e6da99927c3d53d86702484a1c8345d156086b8dccd6ff33b730508ea52c08 -6090985d26a46349a9d7dd0053c48aaaccbcaf21c2582564aeab5bf87dcb2f06 -6107db6d62734edfb5697e1d228963e447878f9b17ca5462970f1e329ce91a05 -46867b6a913549e92162231ad7066d9684557154b55af80f60cebd53d731a9a8 -599be015c13a2c217923d757b1a2ee2b73f428b13b3e7c3724790e6e73494cb5 -e8987f60f13783dbed0290759f042c9ef3ff34a80542b4afeb732256ccc4ee23 -b7b28483d564b5b283c1accd2a336426442074d5c3fa193534e15681e3ed4f25 -2d505ae434ae415e34933d6b0861cd784cd794c2aeb54e9717098e1a0c4019e5 -6e7a885b8599c162f4fa1c25d8f0ea5feaab7cd0d6f4c1ad4ad4a0becb5dab79 -4c05416d0a20da217dab9b00afa9a566bab7321de3b999a00ca5bdbfc0bc62d3 -8e910d817cecfca886f14c36a2f478efcab9d11624b61de5476373886a002492 -5504d49df4ce1bccf2fa4bdb0c5e150b41e1af1b4ea5e5e91f862aa012e8fff8 -8a20e8fc845c4330d9ea33e84c5b0b77bd5f997d6704a19849d7353c2bede9a3 -738bbe76d61f452d59232c8d990a02eb2b79173494566425bb2925bfbebbf4f9 -4b92c77aa56406cdc3eaaded0edd9a189d149a929a9f3b01d86a8480aaea7baa -f6bdae10bf0dd59da643b29e9b9d7e3531ae819ed99d42e5701678c6125c2b79 -8859cbf8750c0e2c36b59c12eb693a9d0a245be59c577b42312fb335eeadf439 -64d7401d56da0b54e506994b5e217198b53dae5152622c792e25d056f81eaa3a -86653158299bb3945f267baefac55be57f0c83bd6154a3808f4d61bae5e9511c -928ef00cd9b9db903285006fb3158a4672ce2d58163f6ed6694aab602d9b4282 -8063286b7b911e0291a94eb1fc1dd1e57edb16472b2157ba97a6f00e7fc69177 -f2db6eaa0a7fe2d8250c600c3cc61cbeb3be19c1ecdf7595cd9d17745922e05b -840760d8750284daae7089d5401e0d46712fc0fc05b43c7c923e04aacd6e7e8c -f2dc04b9c6b3277e29849ecc8e702093f8213eb61170ae0e9b80867d682ceae5 -6103c6015e910a0f805d74f3bd826cdfe1ab1dcf38f5ad68dd830b5baab91609 -cdd6d409a84ef803e6fc7186dc044323e1f336bde6adb85b8743181ac0356ae6 -8ae872743205dda0a301143a23ba1a8ffb459930267354426cb328ab365dea54 -0fce3782828745432773eb366a948bf0bd9fbc1d44ad7016bb8d7c0328572b97 -defda7c8eeb1415cd15361cb9fe5dedad3c7ed3c34486f6655a8be7f5a882965 -3595f9af65f6778bd8275ad001b208d12d954c243450a30239ce490624ca1c95 -0136b8eb77c70d9da2636c0ae65767084d30ae9ed8ad7c2ae114740d6d967543 -143b1ca5c4e4acd3ccbe3dcff1be71edd051ec76b1e66cf437b44d1a78245152 -e6cbf550307d159aa009a85dd6acda2db4bedaa07325747b14f8cd1ca2443d31 -ef50c85324075a18c96c5e4949d689f6652301919b7b4a6cc760c2c1b435c923 -639ccfe9e1a7b48f62cba709a7e4ab0b726b1961b265e93bb143ff5a15b226e5 -75a5b73fd54a7cda553ea63a256c17eae8ae71c662afb07bc45508f8145dea2c -1a4af3eabc396bf4f7a28875306661274d33ae9d2027f1809122e178618bcafe -2d7a0174818bcc2431286de124e09b53b3d5d5dd181f0b6abd42dc4330de51a8 -7640e632adc9a302c06f8d416fec2d6fd8e604c322a21bf5a45af1d6365a5a67 -9b1810e4cbd19ea381af0492ba7f698d56e8fe97308e0329ce094a8bc19fe824 -16eeffc010e29f6d596f644366e96ea56eac030cc0728c03e3bc70073d907dd1 -2d20810d1f93dfff04756c9808891ed510ad9a3ee6508f49a49159cb5442876c -03aa8d839aa93159a9715572283782030954ecb010f2aa0a0c646e2074badccc -b0fd5c863b872a4fafe454907e5e13f6e09268b175becd5da0a72a457db1aae3 -78b159fb2f5d481ed918eacde3cea66a7a67c91cd99aa9c69815604b03c9f672 -20a108ce6da614beae32725bcb925cf410f84fa586305bc0bdb512f2f0c703be -76384b556b38f9185f77954c40734b78d589ac990c29777a90dc965d98d0e851 -b333e806fdfe35b8119f4e0d2f4ae5b2dded1b5897e78cfc6b08d45e7a71b791 -2d24b0923e4aaa7fd616d37a89a471379cc372611980895bb605a919628c3b15 -a41b902d6ee9ce4f5b3ccb39f8e03ae0ca3f54a09fc7f9f19b668b70ac9ec7e6 -b663848941f28decf6d480426c8e52259e024209ed37d007d37a831577f1cf4e -19caf4cb20e1eb534419b8af81abb654660d25c76f4c4ba1ec516e2c1154cb1e -81952bcfbaf3e2e8745b7f785eeb623163f1507bb691585f4aefee40fcb5c907 -72d375163c1d3aa41e69ab8131680bd6ca22a4bf9d1e00ce2d4c7360569b6800 -5f28b7facc9746a18bb74bac5b3694f3a66e1c56b5d7d789686b81a53c9631f6 -e48d478d856cc9dd9508b93de57fe932d3ecb8646aaa7490be8166a2653f37f9 -67e2f58b3ec332dbf806b248534b63150075ebd1a9a929cf01a8d9d7fe93a1b2 -23de35674b6119485f361bb86f075276da15acd538fd884dde074d9fc65b17d0 -8ed18a2a3adc48a1a7c1eecd3c2c8a694f2d9c0f19bb177da48b6ed69664e203 -b356000fb1daee9d1f2d9b20313b53db1a991068f2f482982448d543b11ee3df -686c3043a3667f0d64c055b125ac3da66f8d9eae9b6408fdd94daa824a764d0f -d67a02440a19280c4025960adeab8d4de07eaa1a52880aed95f42eb9fce5603b -d4dcd1abdab582c26379883b15c7561d9d7487bf5ffa07da45a858e6ddea3c90 -cd3c32206bb1d6ae9d988e1fb406d64fb95f2f869eeabbf736ea9b5217b2a8c1 -c099e8b075487c092ec832ce7139722c5e021921aa2f4aeb97c7498972aa7e86 -10601a2aa8707e305a060cb0f6198c0bf4ea59174a0be5b0af4be99b24a05f42 -ac07d4f756cac2b475b04807310810204c54bd1543c211f976e168033d917394 -c067bf4b5a4797731e4c33ebdf1cad4f7b8064d88c106e9a42b9990963035941 -fec61df103df8a8f1c1d41ba1e8ae1060e50da522792df96c03cdfd46e4c62a0 -13d396d291f534b9d586f03d3aa08102b247c2f7dc05672354b9ee2e82b3eb03 -48c9aee0aa650deed166e145019329e0025f80fda0ddc0b7bc7a91a33e2b0de8 -90285f7931fe5ce58e2c90bea8b30f457ae9955d1f175a281416f8f093982234 -be899e8628e1be7390ee6681cd1ead8b3d1fa49394d628fe9709c66b40b44600 -4ceb1bea7a0c5ccb5cf7656ab7909e47d3c5de126888d8d74c500d2bdfbca532 -c645f5a273f1a83ff72b77ff98e90e0c40599530a7953fe3277cd04289efab4d -61ba6749d5274a6fa9880d2f13a16519760c077042bd8cdb04e6a6021f8a2d60 -e282d89ca0d3b0c18cf8485992c3f9c8d8d6f4bc00d4dd80b0bd0939d975f020 -ab03046dbd71dd81269ceba8efc3a5fa819f1ee38f39d2c17e01f270ca97f933 -09c5c3ae0987ded1eea51970d7bc38ceb018a71dc9f7637ab2937fc635c2d977 -28c3d8629c1e0f191bfb5ed9314ad6e75021d22eb8fbebadc9ee3848c2cb4627 -b483c61166cc8333a7c9edc522e1af78746c63650b4ef2fc35d68af8d67ec0a2 -9868001eba2099a234c6968f173e7b324fb5b97d67a87bf976fb53de5e8b7000 -14f35b0990016f7eb933377781fb530d6d2ca72882827327b73f088aa6290529 -2b0fe237427f81dc7706150991003bb3735a9b5ad2c744d650167d80525b3cd4 -1b4f342a9bb873b2e1864f4980ea35dfe3377f98577c91c1156a3d309f2ec63a -495b6f4ad7f8b8099aa7f7f5f768dff11cdc34269bb2cec7e3a952db857c46fb -e238190a8beb0c051a08cf40f72fe6c496c7336fc68f9044f16b06a091bbf49b -76621b67503f6cdfe4d64da89008f158b9888d604cc0c421435d478fbb7b6616 -5d6e76047a3733b8f1cbd24834c429c283ab9b1e1b6100c9fe7c26006746e21c -e148673b057b745f0f51eb3765a2eb794c8c33751d77b8b6c5f2fa4ddebd67eb -b867eb45c7a96b9ddadc95cdb7739f1ccc2f8ed19f3b9973a7014adeeb718d29 -823e15c7f9108627cc608c69a32dc821c7c6973fa65691904877cb3dc5fd6b4b -20abd578a0e0fcccaed769e926ff327d1466bd72f0c92dec654c3d5701848da8 -bbc54017d7a4f48585770830fc636f98d288f48b2af5f8880a887d0dfc2dc5b3 -f503674394df1f5020bf9972f5f872f6a1360a1d859373d05264e51850cedc74 -4fe81fa7ee47c3427f29bc4e29e546e8c0959d9ee70731fdf7b8aa38f76e518a -455bcec4f67b117ad18d46416fac48b9b8f859b0b891fe2c4188a10610671220 -865385cdf8f33a5f68b77536f393e59d74f177207e8dd27084f0f0c1c3d0c679 -0b04632b11bb7770841b13317435e0d2fdb11a9943eca60bf460a9030bdfb105 -afae3a07525f75c3e2f738361c91ba9c7071ab58fff925bf792044596239d81c -46704c4a04892ec0a77e2351b4c9e52e1fb94032c55210b41f45443b380cc768 -5af57c7be35243a3d0719099836df53a496085d7d5e5219eba80bfdc3878077a -f50b22c222cee5571a6201d3e70113f0fc379a0470ca270d5c6e4082a4a3b974 -8f8bf09a1e843dccf1c0cee5e39ed85f30c3615d1ca530df55b3a3ea5cf70f2d -fa2fba3e942b34138ac99fd8dc33afcba36d95219d901136e4cad0273ca895cb -25b6d69353e557e4b5257c64ac262f38b92b3bbca1d4f2357f25949b94a217e9 -786fcf3d715a8647f6276265f79de72725d2ab56a85db21e2565fb64ca111dfc -3e2237d8d5888a749f2e6952163de439b2e0ae3779ef541972d248f1898ea3d5 -5acfb3f14091e42af2386b12eb414d480eb676295f2276071dc7e443b6050c9f -3786e7707ef77f07e1f7f120a6544291d2b3c84d1e6c05dd21900ab923af8a1c -5ae32200760fbc4823eaf9de690b9fe359835685f82f36d4644d3a91c39d3d6f -1d188d6edbad9253e561bae3f87130939979cba8b6ab2716e86d1d1d35390257 -3f8b795a8a6493e504065f07a8304a6cbcbf92cb8e6993b65133db100a5a1e12 -962a1cf4c295702a9a0c898f3a9129d46abafb2916af572bffe168ce88cc1e82 -3448bd62ab0fa1affa0c669f90c5636fee4df33f139a267fc9492fab613599a1 -cb64dfb9a4cfdbba40b33afb235a60d4a666d8178d2b174412f872a8f8198df1 -8b3768ea06e73f4f1d56b953d36471843d4e02eded01fea728d131b4651b6576 -a74601f2d57bdc6c07381587cd935e481f16bfd199159bc24efd088564084012 -86a9153d64ee621bdd503328ea9357444d174b0117084d46d9214f2a1adaeb09 -9db5451873391c9520d209e9b9cd350dd8e121785348f2b5d76f7741d8e5ce56 -b42ba82deb64bd20585646edaeae5f4be5061cb3dadc21a551f8d02a2a6587b6 -d7e674e6b88613a75ec0f8a80e5e18b53bccb86ba8413241fe15b29459dd788f -3b46017696ce1583e3d633218c36f2385ef559f687b9953be2369ae171736522 -d92f549ef58f003ae84c25f1824ba12912ce1bed9a4bf9caec2afa03ab06a7ea -bee845c6bcdb03ef6abd07c65b949e7564318d26af7426037ba8b751dc58e580 -cdffd068316a1a6cdd8158ef59cb404fb156467f50aa010a59ce15ce69a3f45c -60f4876a88e4f773a92627a68d0fe4505cffab9aa6afbbbbe2c6ca6531f5ce3f -1024b4e217d66ec6c67de62c37e44bee0e95b98f11b8c673062e2af995851613 -8e9de7c3363267d054f37a527f4defab8a6a714ff865e41c8f9a0c1cb3d9251d -5d2b1bf7acb24ff2290be376343157f7704bea10214b701a08455db5331a3a16 -435363440998bb9d8de1cb15165ea7e8183c9f49700485300872294cbd399425 -e31b558627568bc248d7565a87acb9c197c0934a4c554780f87188081adef86e -924f837411932322cfe7bdff98ab098cb022fdfeeb4646e9902848b587e0ebc2 -a54c5bfe91c944b8878af276be6fbc08866778d944ffe7ab86dd0064fccaf25f -6f523966926f107eaa85b12182c29bdd0991fb8c9fd2c6df567a3b78efdf6b1d -b695b8917b75e4ff802310a90c679b48e7c14aa48a2725c3b86320c84b8363ba -e888f033497eefc22105b7062c84a568e58434f7e43f0f5beb8ab00e6bd09b8c -5bd1ffc0bb85ef249957fb803738c2ea7fccd1ec349c123d442e43ffbe9070b4 -9565281636387621d854bf9816e88561183274fd022d7916fc95ac4ec74b74a1 -a2eef38dd7dfd4c3f2c040d91c20f637fbe05aa2d59b561360a1a643d59e238b -58b53a52a6d5dd6f270ebecab33fba821d5bf09dcfe432bf52c3082abb1b2b45 -7f0c4865f9140b7145cfe477259ee0c9ba5ef8961ffe1438e4504b24fa539bbd -a710c26629eaa04103dc7077b06b823ebb8bf8cbaa9a308b4a3c780f2091fcee -54ea943146b33fd2ff9a1181d1fcf6d7ffe8654015ad2b6360280146f77c79d1 -25242707d7ab3fa55aa4c7d3c18a6590f5815758fd66053d18bc68e6e149db9f -6b7bb1f7870aaabbf127d8d419f00be7bb1e039c31f600268b7b60f06498bd8c -0524559c858b993fa1cc94311d0d75bf21565e9a288ca18d9f334e14cf1bd2ec -90e4b3a02f6d3a30d02001b271ec47d2dd96c728772e8e410f4f084ce7264c13 -c677f577ec54fc31b58291142ed1f89df5516bf55d99a5666f3de6240ca45e4a -4b9b5342d48a722a4a2e5ec959931216e9ff349ee2efa03f0a36be06394ea0d1 -62a708c7eb181f3a424ccd9e6e8f001765cf4c3b3556fec13a88f5634607ea13 -97501850153ad0b901695e3f1b35b7ed8bcde3a9f194cb73a3b21b06f70df73a -735f8e1ba5304b6f88b2386725d9b251a702a2acdbc6f26764392a94511e9958 -1aac07c221e1d90dfade5e55ef77e6af76cc2efdbe70a456bfc4af12a2be9c4d -0675d938bba4a8f2e8861e3ac086aa54acfa4b58e7328ac5ab9cd71034958b88 -78d5a818e44acba9cb4db92ba87e47799c49fa415bcff011cae3725477c40bc9 -e8ed54a7fb3e6afa07b52d37f912a8fb6ace71ab1a8ccb9b77ecb3a046cc4191 -78fe33967c4747d2230a83338ea3351162f948bd1fb4a02a53f3439a2b994771 -a0a3f4ce21346fb2e4ca0940332ee9b46a272f739e3c13f32d0938ad7c858790 -0cf8c6a8bf6fb592b8114901e126e7c52556482784993b4d528cf87db5e7112e -1d0dcaa5e98b2f12ed5cf6a98af066fa67914987a8c2849a4f404471d8c042c9 -70ab5655e68c9eccaa33758b66a84677a6b21357ede896ce86be1569dff2d99a -8be0849a5e0d5ecbf26384a5d2af27acbbeecf78c165a022144f1fab586c7c46 -89d82caf949c5f76c22ffd5f6e32a60ae3319fbd9e6219cf029db80a084e9142 -79ef07873fb9d496552df20578331017e35760cceeb7aff3b4fd170cc5bc8098 -f5a7322402f06deafea01409cb10a5d990b316ef2a089c78cb3012d56dc16519 -1e49cf592e1da681c3c230d0adc35143fd300d5bef2d02900501948bb0ee411f -39e33eef9f98547f6b12188f47a22ceafc6e2e92b9d60e3dd8e9f99f70fb35ef -073f67591bc0674479680b469a5d0adaf213875cfa870c4e0e5bd953dd0ff242 -95f91794a396d90f0f167231b8c184418a9a481cc34c4fa5fadf95afc3c01aaa -aecd644e3441c8449507e97eb5b00a4bb538f2b355f0d074a8965b376907d5ba -030186e458c62efd856f36552853f500f5acbb6ed7a75e61ae6274fc94572189 -c3a7f20633bb5cc239ae2f7d8f1820bbf56fbb19c8f83a378b69afaf7ac0858c -b63dd627a3cc329e4eae14d3d3738d690b3d0f6d9f0db46d36cf726535ce3ade -ac9accbb7ae3a921421b236ffdab5a32c8714b0b67c719c58c685f3505adf085 -c3164d352c2e5df7b083a22b5c4a90b1b6860fe406448cc7d1465835dcbd0a59 -dada128944737ba23df6e90cc754f78ad4e4186e01db8533430926d1fab3b33e -34a808a0148a9a1e3ac259a26fd3c866a53e60f514003d33b9e451bc90d77a0a -5903ca17155dc3a8f7986e10eceabe3d0f152b9e3f77007c44af13d814fbb40d -062b554d27f393d28f20391a294d8fedde506417f276f2a4442d1c5c20c2522b -ea02f519802a3b3c01ec806d156fd5c40c71321d978d160a004e90781c523ce9 -bef7582cc802fa2a0a2b4fe491fbeb0725ce595dac549286b609855e6b16f727 -4d78a20fe5bfb086051fa99a1886878446574190bbe1ac3827602ccb9b78a73a -f16ad542486cf65edf006912797b4a387d8152c13bcc767b90f0ec98609f438d -6b92bfd30f6cdc2ebce3027067e817bdd0567352fc61846d9a7762f37ca620cf -2c37e082d50d27b33e8ffcc90896e058454d5299d2c8d5c90b9d82a32a866cfa -49a7cf5b89cbcde3e20da1cf6228a40fd975a1dd0a4b69494f28ff890aded139 -4712fbaa86482eccf81e7d84d7b7f08e26f455a2f01c585d483d73fdfef5ffe7 -4f7fb185b42b699bb9b08338d4165912bef88b097279f568abb6a5b713c1d905 -e4bab47cbd740ea0984f75dd5fc99a56ce239d23a9f41cf84f6417fecd5b405b -901dbf10523cff1691fc5b59689067a7a752e7a957dda181ef21f23935d62ada -f7d34c1199cfbdd1194be84740afa23c2a63c254475f1955682b145e47462dcb -4af3e9ceb98362461e8bf9a6f2114c7cb1e0c360eeb3d7a38445195044346d5d -e1e2e954bff5fe038eb3f7dcb815c1267dcfe58b0655a3052a12d714c92b4735 -07fb27c82b695146b75c9c1121dbf9b84e3cf46fb5cca0c4e7ac6a814e13f1db -7cc0c8afa4532fe98b2b14bb8780c88a50c7cc2f62eec7554dff4c9bb2032e9f -a400e6ca315a09a21d12789d163ec7d36089dcf61bb8060301f7e8ce85b89e76 -d36648f43926089fe8d997abfa48520d872b53ddacab6d12922dd9fe311fac17 -34d34507537194c1ae913db7c585674886dd70433a043c57fd3d4e29d4ffd186 -d835b5ee1ceedefa48a2e6fd7c9cae2dddd20a3a986f4a1e9dde20e62efbd2d3 -6fbb6b2ef1f314c2d5ce0ef74336bcd30af358770ad3964911faa77ea7103981 -5e7b80ab8f720f6a4f494db1045950ddaa2c6ee71ad530ed987bc6a39cdaf1de -6d6e819e821c289ffdd8f333286b9aee5dc948c24bd24935d42466ffcb7a37dd -d8d075bc80cd608aa283ddcc361fe96ec323d902f290c472d91388d64ccf2efe -5c029efbcf4fe890839f654551d9f7697c65b3afa5a7a131ba09ab6b8fa518f0 -84b7600134e741a7bf642ed6a89a6e643fc5e4f298a9a51c27d4c4abeb49043f -008b27aa816cc9f01be008d6658e44bf4876eabdb31551f6f037afec6aa9a18e -0d36b89511f90306d091adf9be86805eccc6ef2bf98ec664a74ab31e40e1faa4 -aba56b6e64b245cde40e603aafab777d3664f2ce98ae1a4ba3437e2d185824de -b5a98d4caf05675a4131bb34276488e70e0f97dcec92073b24ce900a23484e5a -f6fd0fd78da41892d263a5931bfaed9d9be1d1f9b49cc175ed59a688ad9808cd -c4c9596ca8b41a3457e811cb360af508c42c6ab285315f17b06a223bab6931a4 -5870616857cfb3e128c8b4ae53afb6f57f16e7b5773a0c864544e9448dede0d6 -9d7286187ea81b24f6333ac43f9c8fb60a893d49acb382afd8b0dcf12dbcfafd -525c635a2c82f19da6242ec5b29424ca53ffaf82381a0f04f676d4e07beadfbf -fc6f1ff324837605a31328b911ba3076f052883f75dcbb7bf96cf6b43af1e4a2 -2b302493f6d6404f8d127ecfe3faa4219fc5ca9e70f70928e979c3043c572be8 -9a2264cbbe28f89b955aaae5c8a7b85de2123cb230ee2e14245be7f457c81ad7 -d689a317f198f820cc9654bae52bb37e0a5080fe8b5486c00933c70ba9f8825b -f67d6188791794cd02da3e49f6313b7e7525b9a37f90c865fc07ed4f76f55f0a -a31f5a74292717ee0097b503e4ce2c9ba6aed45ba7ace14c7a8ef81506224415 -1cc2f5d608156ad32b9ba3e491a832becb7835b2d143f162574bdacc4aeb70c9 -a83843b7ebe41088482876ff20a0dedfa6d689e6ee8605c5be8f7c657fb0fd6d -b398293a6893adad17fbd10054b69e4fceb583f07e17b3ea4f643c8257905210 -ebbcc47e546398aa072d42661b4645c6dffbc22209aded7dbb5ce72fb0cee9a8 -f559bf7ebe803c9aa312020495e6bb98ad5deff86c27fb0debe0bc6e03dc0885 -b9f9fca800fe03905b5257f10231cc4a1144dacc145a1885f118c7f118b32b38 -77808529c10f5b17a3d36862fe2d3f0f663bea8d8cb74d2668a52c20afc7a9cc -2c6813e17dfe1ae0ed3ebfe82bd172a03cca6a9fe7a5036798b7f5f90b87ee27 -f8c00e98faa115345c1b1d0a22a4e7b434dd0c86cc9c5ae12762dca74c939c92 -f8588efc81d26e4325ba6165e099482a117371e0c75406984e085382102106c9 -acfdbc79d9129d2495fad67d125a8505024d70d612cf0a3532558d9cf2ff749d -4fafcbe251e02ca193a8601c95d875f906dcc440abd7468d0c0a8994ec07369a -bfa91f6ec942a60579fc23c52fa0960564348cfe0b56b49bde8e7027b8862b56 -29f5b3454f5a4c7b35df8de8a47a15a37f3a47aad8149489e18589f48efbdef8 -79778f8c2366f7e1866c3918668221e06821bffad087077787ba6a5a437fef03 -1aeb546ad045a52a9a06c83c13eac6410b23f4f562bf29c8a814766f37dd53af -a51218545f5f64d6bf3808babe703bee2ffe03afea3684d12e9de0c530beca08 -b613d5eca676bfddc6d3a7ec85fd73043800cdd2fce153584ea8572bd210e072 -c9a0f25b9ded9ec9d808eeb97bffca0abfe67492eb3b56c7db983f630839dfc0 -1f7d671554523af2810b3ec9900b12e95b502f52af60747b1494e2d9bf2ab4a7 -89e94edc102385c66387512bab50ea5495f98b4d72355ddeb70f5f1114f7eaae -c3d85482c7bcdfc059165614237131737f0518e439bccb6a13ede9267cf845be -4c16fba55df487b98ef2a7af2c6e3588cf684ddaf3adc88615dabb73dbccd0fe -ab06f1efafc4e7b3f077f02a23c7d05c3b5766cab64b72f5da62ee996af0afe3 -73e59cf9aa0346c008ebd3a503b0452ae49c6f3801bafb98a398702559ac194b -37fce3b71e2ee7eab8e32fbd65ec56c538757a596548cae6115d3e2762cdad07 -3183f6772435aff3c82573d091ee4aa933c35d0ba2f3fc8c0b9f51db198ef8cd -293bcf237e98238eeff5850172d4f42a345375c7e57b57ea98a244c61d55fb7e -3e4438c9b41ee433f6ac93d90f9e2ff4dafa0c1940954b4fb9259e9809f65578 -dea1499fea5a22148c07050469a40d40d1894e0423710995eff8b543f1d26f3d -1dd39a42db94d54898a9bdfb22f4e95bfaccfbb72d0dc4e06598fb67d62d6559 -cc8e01993ff19aabeaf412c8e0fc8fe45d50c9dd0050b139a7d392c3482cf7db -37ee242bdb05663bfd694b47efcaa86126bc477a8ff218b40668e17b1d9c9db1 -3bd80041a2bd34c789bc36b69690245b882d78509b98fdba395cf5375c19010f -c2e26dc7329cf9a3ddcf27d445d390ca8367306d17b7766277a546219b465563 -a0a77c008d9e97372c8ed2e0db751ca8ce19abf83a84efa748e461def39f8ee2 -44c43a7d28f1384b671fd75cac5fa28fee078f88d3ea92c17ad88c75f0de0643 -49ef3c204aba345d4b87e7f43392de1e46b514b4b77178e4926c6b1d6c0b60d3 -198447d592a2bc47b5dee02aa901d9b8a3bc711530455e3691500172a9135b27 -e449aa505ff90d8b2f5d5b6100adb2e9e6d9a77f4b2676ac0c158a88d3056a97 -db1844240c2a645435a4b35b1192fb884102802d790b15b15add25d53deb8a57 -2d587422a9ad68eebe6cbc7302dd43c9b6012cfa7d1aaddad41341168ef329e5 -f929c9b57b5cfc107f7d2245c983d98ce9cc8eab759f09ea3300cd38084a617b -6f76aae4001e47662f1c8814601decaddd2f86fd932e54cccd36ae960b8c5451 -a36645500f83223a4f886e5e819ec1f5c20b3d99057b8f0873c2f88bdf9b0e0b -69bf1287ecf4e17c61500bd12d1b7b223082fb89d4a9259985a82b5e0a501a37 -850dd987d093b6bbda1bcbf65a37d899a3e70468e736ce74e84124089dd36069 -74f0ee7ac48306a996b8cf06c00bd8f15cb1a38febe8f06b45eef081d475dd63 -07cb14dd5d173697a9cf78b93b65c16e18e0f81fbd3fac2f0f9e6cac4a6b87c0 -60a6fef4e8e6a661347d36b4266e98dadf246c647339e234bfabdfa8617d73bd -f43196c91d85897807d58baabaefa6f3facf8da61d587de9fc0e7577a46d6610 -5ca0f56123b30ce2cc6e2f23fa31ecc218634c42bfbbcd840f8771b894188bba -527f85ed8f74e5dc5b2ad3abf771132a14d2e62e1f2bc479ae8b1106180c51ab -21d7a34137aa8a0acecf32c5bed3aff8066c34904abbbfa88352d71d102de986 -3372ae7d34bf45633fdd4358f3badcf0b00f3a81e49183a3aa5bdaaef9ccd647 -d43320e2aa493f5f55287f92b516b35911e167a4e16efd6806096496b91262c5 -2174b723cce81a1438318d9d2e2c0dd50cf6ff37d2745c79ad28bf1dfcef1a70 -437615dc18cdf189b509577cb368b19602dcb315515852c2595b3ba98d5bb973 -825a15b0a4de19c481c5fbb164bdb0e12a0cb702ae1245ae1759ca08dbdc470a -bc7f1d9efb4e480dd04d2c17e41261c9cc20ab6a00a41737df413a18c102db14 -4ecdb090f633bb71c3179810e05b0714c2b8621d40208064b3af499077c2c9d0 -ee6705bfc2bde6ff60a5936f2b242b9f588c184b97a3e788295f33bedffe89cd -fea8cd99bafe51d8432175e342dfe8a2c533fe76c49ccd42c1b3872d9924d760 -8f1878932441515d33631b996b5f9116a51ede40393eabf7e9e4208512ea03bd -967e1033e8fa9dd0dca782b1c7565342c2d9edfbc7e6a6e2e4f73c8350b49599 -ff391902ff40466c1e04ca213bbe8077b147da9c3b975468aeb3ead4492e96be -8f6af0dd78fbbf4d8258d61ce40b94c42a2250e4df3a5f0e7feada93cf613462 -8aaa997fb0a1f6e508ba62c97b4ecd68513dcb0be409609663f881c87a04a23f -b58eedfc7530d54644ca56a1d72588511b2c101019fa4842576e567f387d0a0b -96c54526d6491603b3f85e861df91126eb25d7b7aecefc114afdd1c294447f49 -56f29357d85aa10149d8b1534bd52d404127258df79dbef01b6e05ef7e20b957 -50e4f3c5eea0c53cf0e613a3324a0511fb89715d091f61f24f0981eac0486e52 -0a9587fad67b27215e17e9774c509adafce3f41b6684964101e6f721ed1f1feb -e76101b4d399aeff534f42adf6e0ee6b22c782e0aff2941b0c2a2dfdf8fccd66 -3aa8ab54379ef174093116519e3ab6eb68c898b9ff166be6b8780d782ad5f05e -c99a3ecbc85d8898f5e804029e4226669c4b569921b163fd1b3cb07a986d6e3e -39ca2da295749c737bf0d3854bedc4696ee08d9e5ee43441708b1ae616b081cb -92595420b64abc959dfd57bf3ba7934db1fbf7c964511018a64a585bc7f45097 -bd09e683206e71e5d05fa3b09e9b56fe13ba592107b2d8daee9c96663e5b1587 -aa377957fdf7db3879812c346ff677948a98a53a8983eac09bf961af60304541 -0d2a2d9e841edd3989af39bd3a1a1743dde31b472bfd80e188c2f65687ffa11a -bbf4b1fcbe850bad7e61f82aa17d0f6f5f96104985cd430d2d3b6c844220e0d6 -4a3690cdf3b92fdc59205482ae6b8a9f7063693b8e4647517bb3d594f0dc950e -a5ba321957bc740867def7f90d45dc09d99ab4c633f4a65cf3fa3632a5c9ab29 -a7385b07bca075df39941ecc2f2a8bdb321a14de98e49d13be0a3c8af7ec63cf -e27c451413016267da7b685fb3abd2b41ad6d0cb972c6c14762c74a953be35da -f0d170bb348786ccc74c7ecb1720ae766cc5738942127df9af338ac00a8574ec -e7cba7cf2998ca21a8eb7fd80318bb64a8947cc4e3512c6ccc8c313f46ba37f8 -f677651f64e6fcff360ca85daa19732f7374b7d25519ab76ba61b484cb89ea0b -0f57768b483a04c136084bbd10d36fa4a5914f2f0bb7446766977b738be07917 -9569ac6e6d33c5fa7ef2f1d019042728adaeab1d0e2c929ebd280c065d01d2f2 -d6441fc74b41d7e3cea04ae9c38d86e36d2c6b8df0cc4027eef45f56819735b6 -b2022dbfb8b536224d3d2192bf923957ecbd6e3a7edbbf54a58224ee694bde8d -633126cf38e0d2810ac24ec8176851d7a59a193b83e52016ebd3e55a79046c2c -eb24ea8d6b7c67854b53eed744ae787fd7866f5cc54a1b704535b94a0fcb81d6 -85e32529116b325ee3693e28d6e75f6f317b728698c688f699039dea6a70a100 -2d2bcabdb6009f16178681c5d7f49e1fa6d9c33a7b6538054efaa1ba8241aa23 -91f3a1eb0df1b826ff60c61ca5584f2fbb98622ef90649c8cc8a1305d755a861 -52683efc368184d6fc3c3c5d4cc46021625f12a1a3af82ac498bb2509ec7b0fe -7c065a70c0b4897a1e2d8d341c4aed77bf88c8ff0bf576c0ee8485f8cc533e7c -00a6fe77dbc49e3726aed6d665661dc493fd2668d6bb6c1f543b0dce7ebce7b8 -c8ad6f35e315da333b13206e35b4755139731b093aa38999929f8e6c005580f0 -231c3b4e9c17f4e367b7a171fe4e490e900a21bb7e18b844ce82b435508ed381 -e4d5abe386c8a70ebfdbd8d575eff5f121009385dec649b6335d973335ff904f -a09738a878cb4ffee65279ad8ed29792c614651c45bb89a3b53d1e0a8a3becb1 -b25fd839ba086e1d050974c97fa42a327450e0f2be7438e4c5fcf782913400c1 -21f473fd74062b858745f0a8434cfa76cb89289eced88be61db5343e4678ebdb -91fd931d6299603da5c097e8f4223062ccdc52d89ae03a3d1a68e660d7f101fc -6825666962013119de9fa6aa5af265b4bac3b1063e8fd922b545fc9f5197ef86 -a9242214ff1a4b01b5e68e6a8ce8a767e1153cadf648010ee70dba79fdc6967d -42e705a83251315ec553769efa6f7c3cd88379d5847cdc1fd0878e1498492140 -8486dd8c5f353b02f967df7cffe3b44c8808ad92610009a7adde4c5411c1f396 -c2b717b66753e00320ebcb43280c6287676c2f9db2c598aa2a4d5fcf4d983a1e -1e1a3011a6d6c3e30ce2de607f5a2480c74bb2f379503e3ae4b058901ebdd8db -4c83a2b44af8e1c2f7d89f34b608ec49062e05f0fce81633d513186b46bcd311 -5ccdd2173b246b2ef877243dd06a599db76c927b6f99e539a5fa0b5829f60040 -f4de1ca4b6b78f78b5d56208823cb35b1bda9e77da247b470d3b3b5e29c5f472 -2121951b99aa5cd88f56312e5fb95ad3cbd3c43e18ad80da42d300ba840086d5 -17806d75166c779716a525f31f22336504866abab855d23265b81327a7a0c051 -e94934236eab04ee0f37f9e54c9e9ce3566b25b4cbb18a9ed57acb4564dfdaa0 -44f65273273158b97c198dbeabd454609e95f1e80268830434ca0d9e125c83ad -2ceda508d21be3b61a25e2c7415e6dfecbf192fe8754ea9fdd3db7310e2f40a2 -61b537fab243ac8b856f1c21cc53e0b67250c08abf50487542916728ba200f3b -2aee33b929931d05e2ee91dfef3e88a2e0615c8f264dd3fc1a79f71c1c5cb12b -f53551f6cabada8e9622aad5e6a6650196b5844b6169a8b1f4abed6f47e407dd -47656dcc771c48ae7a9d863ff1b3164e1bb47c5bbe8ce7e42f0609db1ddd2623 -896ddd1d56cd19fae182fb66fd9c7b57e3078a4acefea37a77c5d496d4c2bbd6 -e98e03090be36ee31d6e03ede1737d5724ba7c88369dba7654aa22abb1ada2cb -f1604069461c31a8fad7ebd44ac1a1d89e33d492a919b5238e4801998c86ffc5 -0c6cc1a56d40cce60f6495ec8653bee33ca6fb04af0bd01b1b42252db17aec95 -d155e09df2dd6fec1ccceb37ad47db867ebb5278bec97314ddab5eaa1eb5b833 -03e0189dd86f0e86fdaca9381cad3f9212885a372d3137bdd69de912aef854f3 -582a25993b3527822336f831c9873cb991a12bc05c26986398fd48255a144616 -7155bdb599a91d4ee8202efa5e7246ea6c438d7d235d382d3fad7d74b5cde5a0 -a151218629b5fe76ce8019403cf18dedbdb210310c0fa202627f2a16b61e252d -91631c7c2d644ee16774f41261b67faca3c0c202c4d96eef57d1111b07999ad1 -7ed9ae36707fbcfbfad323b48b110dd251f2c575396fca0393015172e20818da -a21155c8a32546eb6d588a54e3c08264e865e3a2bb6876632a4a4028dfb9f42b -47a20966623a67a13f32ed3eb38c43f410e06e6fb27c1a50727844dda47e6fa8 -cf0cb5ba1f471f8e004aa677968e49a1f6987905e350ac24cd3c0c2f37698538 -603d6bb979b04a3fb78da19e41831521130406741a94aaf35a561255f5c02cc0 -82f4d8550822193038028cd1a8aad66365dd347c97f43cef2c0b777c7ab3f6ea -788045447603134515c65a28d39aafcff578befb030bb18df6c1d7c176d055dd -81607c6096053a8c913e8f3b2e10c64a4557c6f27c75601dff6cb7a47c4cff70 -63076160e5afb24e88d07939fef281aa7abebb9593da52c937ff6052dded6e36 -1a74070fb2499d52905e6ee91bf82ac61846462a171bbd0ea6563397f52b8bd9 -e670bb83eb98987231d6930dbe406270f6200fd126b1fc931e9d2cb17cfd0e0d -37261b8094d868de7717b5066c8e9a5caaa68c21eb7f43ce5b92056dce98dc1d -0faed0956ca1c9ef57e6de499d575accfa857c8ba92c67d02338bae6be911e0d -a8ead476647a76db404793eccbe877a21c04f8e3dd455a4ec06d89aae473f0cb -4ae627995730c5b15c24de761914b181d7f7b4095ce096aa6ec14aef349e09f6 -537574e3fb5696b0ec7e4c442ff441dfe299096852ca82a90dc65d3f9e2f7923 -b30cafc2bf623f464f8d9f094e53271d885a6e50125c1f7cea72cccd3dcbae2c -38ac6d5bd1149a4ba73c3f2260c6404679c56fbbfdc2797e7725ed63cbc1d0fa -951587c7a42519588f0116344c13e80acec98e58194037b70be00452a915947a -b76f04f0cf4bb9b957d29896d5e9697c2b0f82634bb92de78b04d0c4a87ea8cb -417b562f9e1465703145130d29e610b7361dbd65d6614d4b6d4542ff89d6e22c -c6b1da26e30b9f3bef4919cb75a9334245a2f9527df4565c43c2cd05e4bef841 -49795f869e895528272beff1f39ebd63668064d3778ddfef6fe4a4be0b8ff414 -150dc74cfb7bbb19ff4acd5fe75658cb5748feea63c602c383f8f48535cefbc7 -808a8c07261ee15295a2e52506e849737d58d022b187d2c1863c82d11df1dd6a -eccef89ccc25b63808cafeecbe4766faafa497e976ee6bc7ecbec52c12571e45 -bf80879592195c692e58876cfc5e9eebb2177e6d5b95e18bf1f6b105928cc8d7 -5ed19827a1d4b1e3592f87c46a717200bcac48627cfd4674e41d90dc4e19744b -4c07f0a43b1ae90258a4cac371085a09089ef9a125f17a69bf338c00a1f5491f -5f7336ffb469909af6de8496e6c7461c9314e4f6cbed6ea0e0c38be220e4aafd -4965a3466fc716bdfb59d1d2f0722efc42a46f125a72318d8ec43da52aa8ebb4 -cfbb11d2c6fea7765fabded4895d838881f1c5929d07a73f8a2851826de7a227 -7d485cd6cb4133da20b62df6b19e810cd52859796542c279e091be2442fe3b60 -7d05cc5e2cf4d37f82ae6ef720faa0ea22ddee0ac3a5e7bd9b7226998eb5d8d8 -471f60e887866d73417a0902c4fc38bbdab3170a0e6973626d4fea8aef166708 -481659ff17da79b56f3a7da7357a9b4d5982e189649cae8cf166a818cce1d03b -1cfca035562a73225cf981e918fabf08b0d423741a5526ff804a77482a9d94ef -891d7993ab84fdb850462e6fe90e0f504557a5c5b840b855404432ce18f8a4c3 -ddb2ced91676e648dcd7773b576360c3c88386bb2cd3de88185d7425771ea4dd -257a6a54e9f7c377658e0adc70f0caecba96d1fd1e376e91554d0edb392e4f60 -913a7392601efb15cadad9bbf5b6c53cbeb5fb73825ac9e0b30cab99d658e09c -d21d4f7b76115f79e612f1cdaa2f7abcf565334d3a013ecd76d09774d0130174 -d21f0f27ae72b695a11458d20f0393635af8a5e92d6b42c32984b4282ac9b9f2 -0427943bffa0501ff24b66b7aa584e9fcdeb7afdd830c01504058755c530650e -7404d8f4f19034f642c3d9c50b4ebd52e579d09d24300d7834d4398b955f914b -2ae913b3900166b07096026cdf61347c37261029bffd3c02b646fba3285761e3 -8475426979a524dd7a9dfd4fe64303572b9daace4573384f5e9230561ea481d2 -d79528189a40780c3b99df297cdd8d2a68f088a1dd864636a0e82a0906a876e1 -a3b970d8838604ea0a3d536664357430ecac2708b44ed30d05a0d453d21de014 -cc5866d3c36b9f6bb2649879f3cefd467d038a9e4d006118069b7126b2030539 -5ce0ab36d08b39ea2879de1d5d34b39f67fec99a91c1163e8317e0510f553686 -b62402519dd2c8e289cdd01a97286c0f827d94b2b586ccec630a223b0134b47d -a16716a4c6023271ce49faa415ee79ed6448f1d944cb9bce3f336cf286aa4698 -5fef2da869535e77b75411ffa3950dc8ad6ce1970305a6900761ac52cff47d03 -1b3b8cfabf2aba556607ab906eb7d61e54627bef4462c7f114d8cd0fc6d09b61 -9119ea9e986c01fecce81c64dd74f58883721dd7600cc467296da6639bc6f9cc -53f82ac7ff876d67324264e7576d99a6bb83612b92398dace911cb1e0d280984 -b99a5a5bdc07847e400172ce09592a1a9c2d84f4dc87042036b8e3464ffb5f1f -46acb004e29328e1ba85a33e51ec73d7dfc4f2e1a7ca921e21e2e934220584f8 -ac9e32e41ba662957c311baf98d51d6d120217340982ecbadbbd5a9d7c3f527a -38b1677d0322b6f4cc28b583288558f7413ca78d1acf9ddb5dd8d2530c62ccf7 -71f7359565ade21c8dea4fd08ec24cdf4ca7ed3e16e7b4df0b4abd161d077068 -12935409196a7c0798bbb101e7588abb618a4e4739c13e154234340e36d8f2e4 -26eba891942302729d8c55d38567434c4ef57072f4c859653679b94c8378bedc -49a345f557495b60dcc46eced3d7c1b0b9883edf8bc79a8599efec98e763ffe3 -6274a25d433778f425eb942dc8037b9b985af3205f0504ddc28997604bc72082 -18456cce9f8e426a5dac090d91473365a2901d509d335ea5bf1c5b564565a8ce -f027607052ef823638b900ce497890dc351866d55e39a6d26e3b505b7e5a3f9f -a3e28bca583cca9402647093a9ad751e2390681e99dac2d3d0f36384b35325bf -4ad65ef847102fa2b47598d64ccccf4fb2656d16e0218e4a5c2ff69582d09639 -cf8d83c13470d525be935f69b129ecbca6b56b10aa220e18515be5760971c5a3 -55d19d7d9cc38292ac5c58a507e5a35b0a3bd5d1f221a6c461fcb4b9cedb4103 -e1068bb154b57757559a2ae96030baad73841a232f529cf9b93470d9a5f18f81 -22e4c8e8bfb3e027207785a352e3a6058c6d762e07124bb00411b6ff05adedc1 -440411ba70b4a164173603b235c71ac6a50c566e2e736cb9474d9e94db81a0e2 -69413bf0763027458a70f03a4d4f24ca376235c78397dd343cdd7f98410502bb -52a84ede7d641d5eb2f5fd8f3f1bf743eabd7d262a8bb11ff1875a60555b2994 -8f6dd4932f6852133f4d3801d8bcd703831e166be167eeb613e77b023afb1690 -22eeec004022dbdea0c14697d2ba61dc4f7d3700b31eee4ff21c4c57076e616b -214c03574df173d3d848294c1e061bf1b1302fac02e37f6c9ba0545a3c678e4c -1fac86e0803af2dc80276e71d9637c9d40f53e5736db0c9a3398d7dbda6dc21f -515165ceafcf48d3a0a09578049d380314172af191a6a433405d57333213e64f -361bcccb4c1d5bbc36ba1a628df39af69af05855558fc6d4c1b2f6999df8bdbe -c696d75e283cc6f574cca2c87a5d3e1fb3747193d51bead3902f8a9d21c59204 -7d0d55913db817513c7311fcc743722e0f03e7408c843b698199aa6c3866cdc9 -337eeb45f23fcb017e1c0828130c45a29fae87c258e2739486a9593a7030a054 -95967598e6b299a25d534c2cc5d501ce6163e4a41b9d6eeb5452f4410968848f -9ed131b33cbd3f610a69cb2a1d373a5eab0507e10dd233753503c7460596c067 -0fe5dcaf8d6e2354c380a489d4be4db2cb2a0a5e614acc741db537c41ba06789 -892edac1f1f1695d891ca76a32c4785e229517d11bd05bec4dc3f996f03611b1 -2d2d96684bc4a35ccb9f1cda038420acdf2955753865d7bff68c984fcb3f1f95 -63c211a628129bef2e41c1e63744b0568d005d7d2a62f38dca05ba9459e79cf2 -e9bc91ba50265eb16d2d5965f9425c1c2d5352eb3175082f33507b936b2f0c2f -942643b9437e770af26974669ffb292890e22e936d1ddbbd5d45652e2bde41bc -ca252664a134bc244378f958339cd9bf8b152cf4852437cf4090b4446106b1ae -5c7a828cacbf144dda3d4626b0e9c1e05d8ab9612214f72a263625c7e5ec6f27 -004fe97e740ca9a52da0fba7befdfeffff54cfc4b320dd9ede3174daaeaf2f39 -3f16d144400b3970312e34dc09f4bfa5fe458bb6d27a58f3b0a24d467c24f42e -f7003e0e3637e2dc0fba526d432bd145d653e8df80e89b7b46b626381a5bae7c -aafc87d97963fd383e84d48f6227f9e512649e4f727dbe5e68f98651126e7114 -d6acdd1882dee5ad14a0fc39f166704682ced74bee4277bb07232b009db2a0f0 -5751e74ce72efd52e2756ec32425a7c6df2ca1647432cd1b7b10f265659c5fa6 -9b82a7d55ea1a64bc00621cb41a1fba823e42a5faae90924482dd648f1765f95 -29aa33c24221767a879ef2c4425643da85f208d2088ce1410b53c62717705e27 -c6c44842e260ab3b4fd85bf297e1fae51ea71acf47279f11c3557a0763dc2c55 -939b49e97663b71b9b89ba8028840fc878f899e5b8d74f05bf4dd5de996ddf15 -1658f798ce0ca2391fa34b448549b218c0d4291e12aef2bfd1d3029b140f8e6a -8135be50fde4443c57d7a7df12c2003b44d7ad998bb5bea2477ca30ae3fb8914 -b9badf55bc588d0d1e86c7945f8e9275a71831b291d4b7294fe3bc74eff32b6c -7a8fca04c89ebe9cc98a55362dde3911a0a2f2195af608a6174a9ef38513a4cf -8cfb3bb81069cf1b31cdb481bbec9b167569ae6ed035ef3c87d49b879ede1923 -a2135801917bf934e16fd3c82603d7b9dd900fa66113e53bdff92ad1bfd4a8fd -ca7cd980e3cf6f3e5a5bda9dc5820aaac5ed80dc8765941453e6ce9404db9ad0 -76d9e588a5163bd338ab8e518571c15cc1ab28a1f3d4d7f25ee32785cdb1321f -c2c4739fb869b6dfca5528e55e2057bb17e1c43f172bf7ee629084eda067ed3d -1385baa978f9c2608e4911f90b4bddbdd228f5987a1e49391fdccf9be93cf092 -f1e6c6b0acbc71a831383ff2707c9009aa05d03563a0a228e806ece60ca3a1f9 -2ba3918191254ac421598e707fdcacc9c3f7fb0c752332e30a015c612e8e90ee -db9c08b8fd401c40599917e4ba053a58bc61a4e1352dabd2475ba4869fe84fe5 -a02b690d866a6c26329631768b2ca058fe2f6bbe0874aeb61154bd27252f5255 -64f0825c0014f10c7ec976716f7b23c3e86667cf431352f7dcc58e271842acb0 -da26ec49987c0442a484c3c3c300a69e37d7b3f21e4e50bfa456a312cd877bdf -409806a6f19a3a742a869a1515a1fe2e5c3aeb1db0bec37a824e3b9a4ebb5115 -3c24d79b893556df8c8d0ebf2688a521fbccbb3a7c7930d8587cf3ce8cdfd119 -0a0d1c0261c5aa3040b361138cc7d9baa8d82bb06fdb396557f00387680b18a9 -cf7ebaeacc7a7a0c1052c5f4103ef4e1c4f69ab697b1ac81c4b13e2a107fd1af -97cc941b34344b47eeaffb9693f8181aea6b67e4e5ac71450e49e11a603dd499 -2bd525cce1570e0871903b338d6335b46a31ef20afb6ef502949fc38d68aa8e6 -23b1ac6a18b104d2bef4414b887dc988b281f09d285b4a9df76b122528cd29eb -1fa6a4edbe53c73453abf32c7a50be1157c0b4480c044945916cfbdacb8c0da1 -7e2bcc909f6cc16bb749a1ebd595c377686d1a6e42ee7d5b27f3cf963c69b005 -357f558907b24a9106c8f21eada1e38b286746f04fa18f15291fd3b617c550de -ecd68736f341be85098fae47444e3f20b3cb1b5f168c44b1eee1b10184b3c7aa -ca4480b1c62caf44da2e75b9fa1469c85509eca42e494bf7cff1e83058debf28 -9d2df8273def70fa14f360270dc329ea8969d12091abadbbbbe9e083b7f447c2 -2217cea4a32b9681a5cc6f995f9588e7caf5b7a77876f29d8b9190d9ee9e5eaf -e4dc55a8786d9a351f91c97dc772a007f4519a5230bebbbac9793feec1dcd65f -f1355a2805fe499dd1fb0ab6dc77898f1e4fa0ade063fbda15e7f456c4d96fdf -adf6d4cd1d0d506b5da663c19c793d76d53b14f7f6308feea0ff5a2d02aaf0ac -e47e36157080ef5412f956327a789ab3e05276a16f1433f1b9154251857366b3 -c357c352eedf6f65a6f5a781f2341053341dda8d0456bad5d0663e1162425b95 -6f9b7eace1dd2a98b625043fadc847d051d1d695d8bee1afa9192da3a21af8e2 -822cdf6d4952bc6df010a1e6c4ed232d33276e26a382e65daec9fc7bbea69608 -706b7f5f39d14a69570f4dbcd481700b48c5d4e05737e511b897c96c5c7cb598 -5696ee6320546f235dead3ac692bd38715d38c0c881001e89ee5b9d83aa5da58 -532b905a17bca3b8e867d2da162e7b230df7bf3ab7854bfcd07ab5a4e4a2ec23 -866bf4c6ad0f4c9c75c1d82347cc66da1831bb9c2205cf1563e4c2efef922eae -bfa1808e2381f8dfdb6a634d189d5aa4559b829428a6a92c63b1afdf93e72e6a -34721ed8d0d6123066fcb96dac4c123ae9444a8e826dd9ce9ce381cdc4dac32f -13508b60df68c5229d1495e125044e4b060c2e208f1e433369065369ba1caace -eb2c4a0f8e9493c0c65e7695938146dc32457165cc87311f111aad7cdf97d9cc -2133c6d2c1fe773cadc95a789dc293c387ac6fa594cd43144520be4297a32d33 -720ef94704cba5e0d20b628ffc5489c1c3f5beba061f5d5308fa82fb6bcda1ee -4cf4387a9dfaf1c21ff66fa4939e9f449ddecc0a264406ea45efaed33f76f6ec -e50c367d8ee0fa4a05f8a6d41679b548f0cdf598cf7def0c5e3d9c32ff875d2b -895b23185cfad73a052fa4280996cf5b346c2120334f90dfb3c5a833e5233cc9 -9dc77ff7160b9c1f022290fefa9ef7ecc00c441f591ea1927a0ec1a9575f3099 -4eaef8bc471e8b6f663bb0ceaa7f16c721989a9ff1405c852b04a7291e0a90bd -4c851c5b18276b3e6e324a5f35be0000c7cd1523b6ad59f2a7d5688e2b1f1569 -71f7390ab8ee5f2d8bf456ff5cfd1e17c35469dbfd0426c200c6bae6e4e18159 -fcee66dc423c903c9b9e328e1edf53dfc269fc0e383b75d4a07d530d304979b0 -68be546ff0ec64608dea92b1955e00dcc945a3ac63704df6f48a84afcdd4bb8b -fc9b2c335a566c1e19f7f687c4723232385e344e8b1b73f62d9b0c0cec0d1605 -d5c4d00a9526ac633b8be773f1cf3b80ce855ef826243addc90d8d7bd4a5face -99b61a182e1f34b67f7934aa702f2c93e4a09b71e4625db7a1980cb42d97fc7a -904c658a6ecf863c253ca1e2ac04e38210bab9dbbee0be7f4ba0de4adb5d55c1 -defa92c814fd117bd987c9fe90e85f6133afc41e49983118925490b1c6b65d59 -3167aa093dec0b39bb05e62c34ccc08b8077a2ec8fb9b4bcaec950c5c7998652 -913f6279871f1ff3a2ce1159328a2f918febad3b25e1a9034c7eb54872bbc6d4 -b1439c799a23aaab7f90abaa2a0aa11cedfd5aa583883c29d6b25860210360a6 -3e90e79a13dc92b664cfa9c35819f34a2beecb77e0f24bdf336fb0cee093d34d -9f0f9886dfaf3ca545bde0f820565e2ccb8570794d3b0ecda2f702fea58ed09e -f86cbcf82ee89d4dbee6f9e824c049629b4dcb4b23a57819eb3913753f628eea -786964e48633604c3665822005ca4e9a7a12769e194f58ca7d7da5f954b8146f -8f9a487c3403801a4ad20b5d3fe388ff7b30769be9e43936720ffc98b912d465 -9e8726618cb19a836a81edb2dcb9d1d405ff47bedcc044446644bba2f8cb62f2 -294462e2a4802289a412a72a4ebeb97031d4ba19956916318f8534e798eee975 -3850eedb198a5690d86896eed105364d7e8713dc1cd855cc2562bbc3ff8be663 -dc17c062eb85da6d56fc1d25ad29288df928820958add7b183fdc70da907d41c -686aef26da51e772004ca12147682ddf8f11b4ab508dbb51e13f42990efc5a79 -71551efaf601806e7feda29094d1f4550148b14fedc032ac207bcb8e28862c3c -3a0cf4483580c378f5772eb22cffe2a20b0779e7b948ec3ff3253eb83d221813 -1d4573ea688374be205137ab99db43c6ae686af2bda7cee067373375e8d3a86a -34da137c2eaa157ef698b8236769ee6bcfb44c1f621be3d8899e5a4530fd103b -9e99e4a212e0e7a42527c773a011a922926dd75dd06bbcd3e95c04395ba0e228 -6fc9c9b2d34bea57f85a3f6d09ea928f8347f5946c40266eeb27d2c341e617e4 -19d34cfaaaeb1c5b84e2bef68122625cf8ed23cb9d02b9307b9c220edfbe5d75 -2414177769d0ec55bd6a35123002ef6e7d9f1f54ef9fbe65ccebf9b0181f7a2f -d2bfec7c070a5f869f2cc952ee911503b0fa8945dce8bf9e7df4101462fa0ffa -6ada3241f0fa97c65f5c1077ac5e76f433ecfca896552725d05cde6d573708f4 -1a7bc46e4f72f9179b4ec20ea56d34d3f8d03a1d8a2b4fd51c642c2980639910 -fe39c8ea179d29f0071197c3e0caf45d6a46d2d29a80539da69e2fd70a1cc7f2 -f46dbd99a503179c17da9a352d38f54dbd16c38db19be77c7d80806f3134d1b1 -c63a1a9143bf0438955e5e2d1a3481208fe582c16518af007bfd8ca2f74743fb -a441a5e1cede2337884d7a17c9b384ba2b1530828e28276a956997275fc18684 -21b8728a434d9e2ad305f562dde525a7ecde23a84b14cace97e79c33f1b49093 -1d1e7cb04a68b41b2f22e247e39c2f4f925d5417ce6b1914788cb1dde97a1edd -8744464081051b0c5bb61497111e9e4d1ab13186a2399bf3ceb66a1e52d640ac -22ed5a90a969bc1a56ef44be3c481dd8f06d9a143aeae5f221c314c79d468d37 -25bbf880256da501fb8314e830e4fa56638745cec6e41ccf28de2075da3222b3 -67d0d941d70f6a4202204dc8da38c65e23c09ca67ac7c2a2e361b18c2fb6f9dd -83d071e58b9b93270f977bca2b4c2c51341a362c4cf94503fddf30d0f9f91429 -de76a58df6e3e3cb2b7607a130a32bc3dc19f0e6ac0df3e327fd9db65133c053 -71da987bb5d91c7ab6724468791f3f70dcdf25d1c8e17adae1733ad0fd48693a -036168c6069d2d0234de65bface177d0270e92e1c423465767080374b282b218 -ecc7c21e0bd7147af43616343b36c7449cd2a097baae5c0b84e20b93a434b026 -8ef6292583a1aee2e2acae72a64b70803a4779bf061cfee4ea0c2d76952edcd5 -84ed218515c0758e014fc3aae387f0ece38979c6987d24da93d2fc80346ad0cd -5c0c96865648a74d940b94462f980bc4653971463e0f79f9e53babbcb0a71af8 -f71c91dba14269ef4d4f7828cecaa7df1007129b9d136a66321f1659ac9cd2f1 -54a5a78fe9ceab12b3ef923c0a4437d71950c9a3cfb8e44f2aee896449170791 -52484b8a3d110e69d651b3ce22bfc51d845a2ef0761ccd624132371ed0a3bb4e -9669cd27853cb57122f9ef19933c78f66dc55f3d518df51f74b650e550738b33 -ac33f72b975dbfaa031077baed9602667840ca13e238cde527a8195588da428c -7e18fc2c83851bfd50a706e298f87bef6637384bf7d304919d39352ab6930e07 -9169f4c844f33b1132971f5d13276e7711dca2158c1bbe55490e5e8f98ea14d0 -52881839317717cbfd47596a71d8d4316d35984739089d95fce0a628eddfa0a3 -37685fd04a487dd5f30d7d27b7b68d01417cc30b0e3a1de3585479feede00ab2 -1eda971da147b66e591813c5076878e44ee1fdd2aea1e61d274cdcfa699d09fc -dcf49b13679660842f6043b923f07426d1e8a70656db730d8cdc1ec2dce4d9f9 -64f851feb1f773ea034eec4c20b6af13f71e7eda1c7f9b9da2c0a1fb52d645af -b7b81e65ed919799c38a009950b5e5c92f0818f1eff32701fe5f24207d46a4b4 -b01ef12d0dd6279480b24150328f0460a915981373333ce76015232299454399 -9e38a0db2f499985be3e466ccb59a978a954e271a81057624b24cb4d89e0c804 -9e79c147c56e86a5716f001b3583683eaad287ef2caec437d64de1e006d3d804 -35cd94c8c89e0dd9fbd257cb17b574c0451fb22761734b5e8d941fc037d94517 -8f2a7f2fb4f098147aa1da321cefdaca9d861d5cd383ca1d5794e67916c42e59 -1faad7a45629c48ffa027abf1fc1737b1619d596eb3f415066a2a46ca8833d69 -1461c2d857abd536a64a523c6b9ab331bb019cb3d3391dafdbe4dd8b45d15490 -3638ea44a174f194e6565ac41ea91f6eee60dba8fa8e252a118d52e9debb541b -ac888f5ddd79719613a5293f46f90db7b22d3fecaa4dc3e31b6a5079153c14e4 -526d1c1b1acab303ada0513bf4f739dfff1e8abd772a75208643317353c32ef7 -60ba32e999ecaf1419f395f29ba7afa03c60ca2673aae47bdabaeeca2b758dc9 -e1e4c9ef902025f7d49559c53d7880111ca386a2503e242399f1890f5db9ff32 -ddf70291beb1135734ad64fb16687fe7a7ab0101e85189d9ec112e8faf2e9670 -42779a2433bcbacb86a3db5eb33c88eb17d7282022b2ad07fb4138188fd01cfe -6ee1112dfbdbf3af7317138fd00c22b3adc2ee91b109eeb0a1258b6d2521cc67 -acd872d7838ee120ff8fe7ab5127f2da7fc38b5619b622bdc71a1526a571860a -028be5ecc750a56de6f5b6b2244fc9aa5f8ee7b6dd76d2c44f96ecbf01f82296 -fc43b5dacb0837ca4dd3f7a207687af9198830aaad5cc95259a748912f148665 -cfb52ba801b0874fbb17b0f672949a39a95d01feb64c0b45c06964eee1948dc7 -d2de83c5abf4794404e7ba0b7d55f2fbefe36c683d4cf0160f7c65c10c55de9c -a5f7c67432fead218e890e89baf53e470fbd5f07df90d38f1095acac15360090 -55017bc00f69637e73500d53be9992946c3ee7b0f98733b15bcdd247c9e9a91c -3aae65f8cac14a471b7b86c69fc38a5b9bbbe19eed02de855b3b12ba040f0785 -ec9ea47cb4834d3ed072fde62e941fd067cf9dc83bde4673de59ff2239b7e834 -4012f6629d5af87c944ac39e65b0619b91beb0cec74f261bc14254e4a0b7d97b -dd501eb3cbb472fa337a1be19d3b179fef2b36faa828039bfd0df5602e51efbe -37b67c4db9a69e6ec7095c1c5ed8ea66d9fc29386b43ad4295014e50deed3092 -4d58026b0be817c38e352507fa63e62a3c9b49ddfd99d8d9f74079a9582ed180 -611be43f784fd320cec0f5e4cffc1f36e2eb46d2fd6b416ad59905dcd91c7a8b -0b2c39c5eab9c673e191de0ffcc95c48b37a7591ce7a868183992900d507ac40 -5fb6e9ff1ad0628c3a4977559dfe98cec8d2579fc0211eaca207315338b75fed -e371d4c226637266f39056472e6a439dd30aa00e51484a88be167a8f50ad1d1e -96f6f6954a346ac69a41a8e89e75c0449c2c0e262f56f521d0433b03fb1de267 -cbe3a5923cb22950cfac11099157a0c53a1023250cd1610b02fdf0239d1e4784 -f47de59987d6c893358f46fadea94fb5ecd751c15b84fac3dca22d2f7200b503 -695900d9c70891bab3b50ef295520687521d31e084dd12e2504cfaff5fb63c64 -f4804f3db3cca4294b3404dd42378ab3480ed9df63e9d470427af2c176e462d2 -7e21a6305ef880b9eb97da2c6e03384289d4aac8c88219450c8315e4b64ccb7a -859358ba612e19baf9f51eacaef6b5820662d278668175e6cd70d3ed44aac8df -ae875a8ee5ae6706147135f4de6bb36eac9cdf32842614f3ba707148644b0e37 -ab3b12c7ee88ac4fa05a5f600d485474696e00f4a990da42b504f393badbcd73 -4be3f3b39c0c4f7bb713995a70d7475e374bebc718ecec01088523bb02d62120 -41c2122bb4c059ca40e5dad1aeca84f77068ada0e0c8e13ddf09263fdea45ddc -b5fe620639e25d737051d8bec4de390b441ed9e95df59a31f5ff3156dcd42ab3 -b0d7a9a6a354496321904c60666d9a9a284686abe95ea47d4395ac110b7f43a6 -d400be6345a1389156875a426251aefaff3657e8c26a920aaacafd1cd343d390 -699e8118f8381efe315246449374dbfd551ac967add3681419b8bf02ce1883d0 -4d8e19a6604a6a58451c5ae258a344a5c698c20a18a1324f7d145c5c48ebe457 -f4e4cc1eaa1d51684344785c581c9ac4e1f4bac603f02cfbc8119005ea0d7979 -4a0e99baa717b19a1854eaea9259fd7c1b48657b9e38f64e6cd9ea6115e37c62 -080b5de7c2b5292f31888ed33fdbf3cf85499e4bb019b9691040bfb0dd4f663f -87e8f0ae6ade87928e05dfbefd9e49c047eeae4eee4b824ef854bc0d21754161 -d28282a976152160adcee2d89f43964d0ed1b370f60274a1098d2ee179c57452 -e6f3d687f384f50c4e784ac30cebb363510522a22c0eea340525200432ff191a -2927e0b70e67cbbe3d87fad2435eac9b7b9a7ea1b3458e99493edf7a6a021a2c -e7dae0975b739fd279aff8fd0cb5aac26fcba49fd2c353c2bedf09e2fac1f41f -609082142d76309e5eef468022a431c59f6f407850e730f075de1ff3ae0993b4 -0e2ee19a4df47fa0c380e2080d4e9ff90c498570f802325fda69b1c484954d13 -ee0fff53fa365525447a2243f32533b0375b53cab9caf8f851dbfa5145ac0679 -1dbfe1481cb43a356b892989c4a3e9c9dcf76dc6247279e7d5f30c068fa5e96c -a832db7a5c7f500bc2303bbc50976cfa7771be57a3d3137f6ef54c2123136618 -c8f531188f84641bf06f7751ce35fbc5a5f0124d50f86f57c188b1ac7666cb4e -ae86a50c0319948b149b2eb3e4c117b2b91a2e0ac2fac82633e2f8cb3937043d -aa77c3091e8a47775b0ac55b646e4f72a97382423850bc91aa1b375999c64571 -166673bdb5ebec623088c513be1444b0098c8eef500e5356919a746d701f3e80 -f603373f3708be7031215554414f8e6c915f6d67cd6ea821c82ab09b5e87aa28 -ba1611180892c337ecc2f91165afabf70e6ccb3d1ca4a92b4d40a8271087cee4 -e36c178cf40c6cff985417799370f0751796fcd9b66ab47f33d26395e35a61c9 -e1fa9886e71c996bbf461984718c2a5b848b6b49c4b6a257279c6a5cc79c8f12 -848508bd7f3d983b4635bdc8347bc4fe338207f44dbcb86d88617d8fb1b2653d -0db18f7edc3db6e006648bd836613fc4df456bfed8f341f3e94d407c2b0e64f1 -6c275470744a56d56119782d380b01d768e97fed4942ad1df7887467b51f259d -9f9abacec8648028d13bf31d1922f4be81d75c6daa869f351111661081aa547c -84b40d315baccc019fac8e394ab54c23ebb2c1f2dc2db93dd8ef19592b1623df -3777496a3677c81c9a2333551f1cf1bb3f2f9537aa7deba7160f26770e32fa87 -f5e2719d8071ed7e70692971f1ab61eb41a81fa1d7060a8b99b657dcd0c16c69 -fb7490d97d3c3ec7b80906933e19c056f750eeff9ee4ea9a517af623aa0fde30 -cd84463ebacf3cecb96769ef53aec7e990d729b09eeccb16863b132cb4edc7a1 -3bf982e5502a041d5f6d110146353627b14b3f3bdee6d64ca1631fb32fd8f75e -2c2675c760a7163c30fe9d8352fa603b36925221d8dc1de4cb34dc251691d5e7 -0f5f3f26b5a0ef4abbd897466c8a73188a6a1dce07dc7d985a51395b411086c4 -94f9e515f7b92387bd1239399b3d22dbfdb6470961ae5eb7297838970aeb0bd8 -eb50334d741b694c895a474f4a02c3d34ad188bb35cb9b5d9966ec36dd906669 -ea83488b314c83a76c63b4aa89239de3d257c5e0162c335d08e9c3ec82116557 -4071d3f5ad23e60bb893586390d83593cb7c32ea37ea85cf52029d8cc843fa96 -f3f552427edb5edcd20d85dddc9e9e60774fb267acb46cae0dc22e1413ed1a9b -2dd19d9a663dc8f49456eb9695fb5fe338eebc948977d28ecee486b8970a8cdb -5d07dab163d17216342e3efd02e68db4d2e6b40034e921d868f0fdacfa27c4c5 -2e14c20b047f688aa96da5e17de3912480b5d0f829ad71309e72016f16239c98 -4632f9c8d256ec67b9e59d3a0dcb5a90adee89bd3d5998a8fc0e697b9096bacb -1938cea1c30c8eb8f92adf9abd344ddbc191d1ab87c200ddced2982d41629e94 -a15f8c084c86b0d16b7c2dfc7365e9def82f34b8fc9200d053d74e956aa0882c -70a4811f8a305da56506b1dd87cb7c5c930c0e930039e4e2e769a00357fa512c -cb396fcfaa7d5f4b51fb4c7e90942d0a3b697a3f7b2e350bc5e8b5bf83c663a3 -4d020e9f9b792218c159f3269588a67c82ee511da3576466df579b99576d5571 -332ad8f4c7b82a1db2e993060a3c2e993c0754bc4fc3c5790e12b0606cf143c4 -dd9676332210eb37640616283e9954917efcb63e354f88b70aeb1bb27f4394a6 -38608ff9b5a35d0915599a3ff25c876420fdd2187b0ec21763919af15d9dde35 -2ba08179063c273f5df5c6f1d9b771e974098a3b72c87714de3e858d4cdefdf0 -93415e097c603237729d6c0f0d6f8d0dd83905572e64b1d76145f7ab970bfabd -5e9adbccd21a7a8e42e54f02d3f9cdabe9c44cc49c4ecd81c9c87f10d44e689a -97acc7d2f4b8fff013e6cd124211d5dc04e9b150cc5100977c1a4aeb153d5670 -0fc536d3a57ef3f28d675dcfb81f6e1f64b4b4f5f55401ae7feec1f08ecba350 -83a44088ed2bc42796d67efd3ec8465241574878338e2d908f4defd5634b1246 -379b443f006134e93b2139edc0cb5a9d7621617212d7461d37e1a42e6f9ebe57 -3e0ef1e3b2a556ace936c6c69e1fb533b5bb5f453ca112372284d443b0116c35 -d9fd7bba8769e40475f646275490019c7344d304edf5a32776b52427ca82d596 -0d561bfda6ce9725318442dd0b69fa0fcd737b25579fc17c527c32bd63c12147 -bb2c1e124084a0a4934544c53b54a1f87552077d3929facd95c45b1f3373b14b -689a18dd146a34dde710cedf03843bb29e0405323a8129ff3a978d6b11e19ba8 -0d011772454e1771fa30c1ac4d0d614b59db84e259c10a0aabf890da2418e9ac -5a18265b389976e103a65d0893f84a7128bec31a2b7ac17f190083e5e2fcbf78 -981fabce3afc7925f477d7b3a061173dd23241c08cc9f1e6589cdfc5ad2f48b1 -068d25231b20461492d7247a403a53f5d130fd85913e7b9a08b2c0747fed51e9 -ad5c39388fff3e0e9b0ba6a8428ef684dc96678a36608119daba75bd256e8a6c -e88e7ea83c2b0257d4db4c66a4504a3440e96d7309fc9ca3f24c226b857bc7a7 -a94188df30865b9d69b3e08d0a08b9fa886780d76a73ddc8ef3c8aada5018f13 -7c45715ecb779599b7c94f2f0aac06a33d7424e1174637b6e59741741aaad084 -7cf2832a41ca590e3a60dfa17f73165b3e01cddf404afb50fcbfce4663f4ab6e -f44164317d3eb0595801bac6dd0a8364c28795f00b876fad837c7a49e48dc8a8 -b1ea98a2f18e659cda8f5d9cf21bcef007319134e205b9e7d9be72775ba1bd2d -71434ad560a66d6125c16300a01685aee2c0aa3d4f8f1808a63d348e5f02b42d -025b58441b3709517e7bcdfcdaf8af30f29675833aeb9068994597ca128d5678 -f1bff5c2c9e823b2d45e6922f59cc01668b56cddd5f1c93dd18a151eca0e804a -e88021c738ab04f14a24c2fc37ebafead48c2941440045069bcd1454a57e3c78 -df3d39d5e5f3eebc15ca917b825fd43034e46747e94569e731190d59f8e61d13 -78fcae15e55fb27d8eef3cf5170ae787551b1ee3ee253b80acf45ec3b7dfa02e -4a1e3eb9dbd4be99faad507e7f3a9278c3e1bfb8bce827651a2bcda12fc342c8 -7f9cf3704b192594e29edc342314f91caf872a64c4b988cd589f18e907323eb9 -3c213b948f4a3cbde305ba3dbf6d18ac017a86f3379f0c70f717ed5cb78a8b4b -0f882ad5c553b6e5095cc388783a0e2f06d93fd55c6ee44bca0ba03d6a1b024d -050dc87f3603cbabe887695f5e6728ff102f69b6022637161a0bf2676a687379 -bbe0694e92ccd3fe31d45029fcf3bc2dcea8c38760430999d50dc0d2e346dc83 -ed1023d3632ff142280907cbe4691dc89371a6f18abba3fc6059c6c2751a13c9 -c0385a361c2ced35a06ab97320237ea8dc9d6f64fc5ec869e6c7bd93b13bea09 -2711c2e9a53a9c55ef8b80f7e407393048db97759f9726a6481845633ca6daef -1892254a7f2a4b8790b729e203aaf0a8268698dd9cb57fa1ae43972fe1c51473 -b071cadb77d59a99f0e4d6bb2f60ba353a5f37ba59a57f12e7b1325246351252 -4bf19bd703ba5dc17ed7964c7ea46a3510dee628e375045d0a5fd78ee8db785d -f45f5c2b29e15945d35213073a89c73b85ab5a4baa26a3733efd71f03202a08c -801d62f0adbef4c7428b9306d8faad9e124eaadd5abfdb0de9d504d7bd360ac7 -746c416911686fa5f759c6798f169c55817d54ef77e4e691a1670225ed1d1b30 -2d0cadea00b00267ac98159effa92238ccdc11e8988c58cb174a7c378fb4f951 -e369e64c279e0e52190e2293be5a24e860e0f5807427eb0e2e4ca757305b7903 -c3e18aaa582fbd61c83761fe7581ba385b8da6e75e29b8eb3b4f60a146953a52 -82261e0cb84d4173f1914003e1c956c34ee6865fe92a588b7ba5414570644714 -bb3609074e17e75b9a7a3a0ceebfd75b137025f1bec04e0875894400e75c2be0 -caeabeac218267bcb7dc90e29fcb13450b17c425025e966c1dbf72742dfef330 -452acf51749241a5cef61b90bb92d44ffdc28bd87c362018d1a34e0e6e6395bd -3b297694b2d6c6954798af7570a4724b87430cc23c689a37aad6cda49b618e41 -328e0fa01b251784566f805fec8cdd125c233d17927972ab6a4238e39292432d -ab6ac1098bce32dae21b589e15bb82961740f9371f7de415848c1433f7b1cd9d -38a8503c82dd151338459bfef69f7fd3311649d81022e466c1acdb1e2bea187e -e4d2844876dc5057044b7849b52801ef9bb15d2db56b617e3bbc71a7b7efdf5e -a479308d0444872fba5883098c7b910c67fa9fdca632ca95186f4a282c4557c2 -a78accb9c7cc539b6791c623455d724fb72d53ec1f34057e9852141424093784 -c14a2226d7ddb0949130e8c95d9b91c32c908e6ea386a2563c3afc3a73c3cfda -2083d941e80537e780f8a42f2cec22b9ffbce31b28e834be6330778277e0f959 -972143d934d5f653484ed0a640572e19b1cac1d1c55a891db99651039e528127 -7649224f5ab959fb4376c80b24527cc5c314e8ab9511046d30432546a2494940 -17eb48dbcd9a3beacd1362c68454e00f2530f98319f23765dc9c898c46c953d1 -e16eaf13538d4dc9175e1bb9c9520bf14d6406f3e5518cc781febc998e35f5a5 -ca7fe77aa7dae4088043b9901549ed38d9f6ebc3af35a41c63093f637aa7c4b4 -a0fdf27d3cce78ba17cfdb75232ccb07088e5a710e713cac1fcfb5f36d5e714c -67e0f5c03e9287ea9e67c6dd7fa75d9a26b6671c820a818c2b23c42b581720dc -fcfca08ca5376b591b3d95bd15e4cbe8d797aac02c65a7e11537a4da7f5a5bf9 -d234be43a377d232749083063928cd86885b4c9539e51581ca671364685dea91 -81d27fb43a901b0e4de10310076d378d8db9d1dce16edbf7b87453cce4a80c67 -8f77b001bf36602c730be2f69a37b9456e357b1b8664eb2d1b89cf94e817cbb1 -1a82d9ae60f7aeb42394df3bfdb02aed48f32152a555dde87b5dcc458835e886 -1d82623ee78005c4b6f691156bfd12797ef20ec5e00d53483b1e8c79f8f1f46f -e6faa0cce79f418833add9a67195faeabb73e1e9807a340e783a42b9cf098704 -1efe5a016a90398a8002823e16659da6c913bba04174fdc7df920d2cb19701e4 -e5968eb90c8a62057c97dac75d8ff4f5ce3688e97e0d20436ad16d4b589d986c -77aff1f909083337243c59a1e4ea1fc89103c8389256ba14e1cb1c71ece869e9 -a51e242e59b4bf240d235672d545840f1c83f250b7fc165d09895e7b9f51a729 -2541d062c9c121e46bf145ba961016644e90363811dafbe0992dfacdb8d850a6 -b0f240e549e42687ea2c8bf23032c201f7e5b16f530099097cdfea2f05cfcb3e -53cdb10aa917f4cd94cb53b1e9356118b5e9a1ada4636a4293aa6c7dfa4116d2 -513d25b0d0b546a706a185a7f9309eea5fd53e4969920e11c36fa4b833b3bf4c -0792ba2275c004e9361300a3cb3f03e20ae313263b727ece49d2714b2da3d752 -10f8fe5004effa42d6e6650343b1ab47321cf811e1b51a50d37699155cb8fb75 -193fda32c12ad186cba4f02bc76658bded443634e40969f356a4b3fd878273aa -1d86d487122c7cfb7961fc85c09df390624fa891198eac778eff878cdc920e98 -1c615ac8c425a2727e73e8bd7fc99d82cffe9a9e3e858506cd50d1f41dda8ffe -eb93391c17be92eb6b57bc3e01741aeabe5804f2a7be862fd0d495446818665f -6b8e8d35b7357681a6449ba9a073b6d6d2bc9663f1b1f6c5881d9e1793603c19 -39d4c9f602d7532c0b83bf0719f0b38aa1fb7b587c3dd544a0fbb9965b0a9d5a -849a75245728c3eef61f83e50f969ea729d77841a4b908e173b88edecb82071f -cae18d20f95bb4a3ba384508cc504bc1d65987b4c60e718c02c740545e3b97f0 -dc94730b72c73e81d8eddb5b4eb9dc94f2f7d774ff43daa6f0249ee522e64af3 -c8ed48f50fc412414d3d4d77973ba870b1fb6b397944b4ebac0b3b222343dd4d -da3fa7394d5858375c6b64398eb597c91278f2fc493f010833424b13692d557b -a02e72d5c610488e7d803662ef06c716d1b867049ca9e63842301b2b168fee78 -cccd5b63a332343cefdf18c725e6d6038915e62044caf569600d8674c2a76151 -b9fc26541f79176d796f7f067a30122e165d9010df9aaf43a7dcbf3db2205637 -d086e6ae2ebc2baeeaf434cce88fa6f5a7549b30d4f9ae5b00493b764272d86c -01d0c1518ddeb7c6fb470f05ca78750f31ecc877d88cadf37dac09914ae8d648 -acb01dcfe3d37ab6e8f66425b19908457d62b4ca9c987daedfaca3cfc016800f -9cdf23eb6959ea21e0764d788063d5cd0c5c2f87414b80d219e0c173e078f604 -bf94ca18c33aa9efa6ecb846cfda141ee6c7e01323d387ab63951eeacd50e1a9 -626d0a1319b3111c50f368d538a1c8e0c189bb39e0329a849a754ebba51e5147 -74e2038d468ae8a73c15432cfaed3dc981a6bcdedbcbc1a077dd3f5ffbbd1069 -0700f759e50098e0d3d1bd94331cae2cedf3187557edb2bbc71100c80a9f78ad -800b200a589750227414822f11274a629986e90526e046eda4221a44e72d6663 -9d1bc8bbbcade788d500dcda09d9173bcd96eb2f5ef058996cf4f51c96831f27 -3cb50c8824c15d0a25c253404f0cf93356ce3ac1e3ddf6e35991a54ed6774771 -8c6273e6217b2edfc364a1c179ce66bcd504c0fc371b918442e38510e8bcc272 -949f33c77cdbb14e66292bc78ebcdd18055eb92083cee63b70093726a1f82e7c -e74c6d319de2ef067bc8dd3d6aa04a37391063adb0eeafcfa78fde0bef380b02 -2f4e36e9809ab4bb381de29876e3841a65062cbf0ff44f77aaa103939e1260af -8d6782cf4ebeeef633d467cf5fdadcc3305ba5f4b240d0dd98a36825d87989cb -08cc8278fb7ef17d373e432ea0e436d7d882992d3355378f45c55337c9d861de -85d34f6017e5f89298e08e377c1d55a74bd329223e88681d70675ee8c17051be -e7523bcfb65c0740f1bf32a906bfb305460e09b261c2e606785bc6edff3aaccc -6a998bbe7ca2e0d068081152f965dd117cfdde4486a8f8656962e33c0914fe0d -a14ab03db5161500ac72ba005bf58ac94d86b4184dc7603e3368e30985454c81 -40b6a13923a82f892c680d8beeaad8d8aa34ab324b28bb95ebc4038897a4a037 -ee3f64226b0a370b0ff0e7b1c26e7986def3133168b401bde2b9c04b49830261 -8302c456b106bf23e1a52195458e219173165ff927e0a9ba432dc29fc06f96e4 -fe94183fb9a7f8ceb1270a4857a3114cc942cdc7929b03de23599f1a244133e2 -20b25eb8dcc82322b18e81f3efe56c8668f98258bbf1b36c5f18a7240bf03fae -1b80407007eb3e73e67e8655bfac27b3350ca32f6d0d7c4cbdffd15e1428079c -8c43f42bc50a6d9627c9b6b758cddd00aa0b156f11f197d8b496a3121a5b64e2 -2274d96006037c190a8d848c90d13d7582bf3da7db63b613fcf705afa43de90b -59e77479558ab7a32b5bfc7fad8e7c9a477dd934fbec7622817cd023670a49c0 -a2721ac2447bb87a87f559ec3cecc88321b1d4c65c8d7de54a8def554ddab31f -5a975fdbb7f66c11f76b169e3028f0bb143edabb0474f93234d770e8c4f6e048 -e16aead36eda0b963f6b56c7495fe2165b0e7e65aa3e88881aa8c19cf4634f75 -ee504112398571be0cb87e89d40adfc94026054ce503acb0615c022b2d258ca2 -30c902dfca8d71d6b4004415c0d406135085c5a2d4c36d3eb8a4364853245824 -3a122398990cc801e768b3cfa594ef322f01b43faee5b2dc230874a562de57b3 -6c60507b49fc7b9eca43ce7352fb5686c8e397c81661eca028e55aa9a3b7837f -1cd973493cd7b1eee0187ee5723296b5779fb65c76bae14885392aebbda6e787 -d7a02e9455f1f7b7a2e86e3f17cc5191bbe25be4599a81f2000b28da4625b6ba -8fe91a7044c5d8c0d5f8a3341000be5b1acb18116e450cb820e0078fee03b4c6 -55057696b8ddee72670b632296419dc85d19008904b5bd40d7274146fc7ab747 -4d029cc611833e43abf15ac551dd897bdc76727360da2624c0ac3f3130176460 -8d0220d75b419cda1bb836d5badd14896372fcfc1b83668ac7c78ffe43da2f92 -c28fa45182bad41357ed8b4fe108e7fd938212da3e59bb3c8bd076578f9eb71e -50f29ebd3b3ef3604819707868dee8d8fd0895752a236bb6c91f40b200b43f07 -ca234ee627f6dc1c187a847620823d7c4e622c5512380f908d5f1e9f48b32b95 -8675baf0235aaa0abc1eef97d145b89d9deb758daea4941c4ece9d526c91082f -67a21f58d3d379912572b1c66706b5729a2dd3af1e9430eb73be7eea47d9b1c4 -d290423b38e645ac5bed4f69aa7db56cd970e98bcffd91245d02ff7e524a4727 -af8175f7a6c4aadd9c85947ea3d265e9eff6813b4e8afaad457325cdec5568bd -9f20e6cd6bf06947558d85e079959586cc86b61d829e9605bd0f39d6b277077e -90c14c1d8534bbe1e256f90f2317b5b35db874b58c8b7b2b9783ad7be5996ec7 -eddc96c1922e819fe7a8817a8381afe16939b4ce9172d2b85e9be54aff85f0f8 -b3e3faaf8dbb9f0bdea873353b41e5683ebe43cfaf508c3b939171c70f582234 -2808865bc64670fc950cacc27da66a71cce97d74eb2428d33f14da1370c3c01e -9b7210523ad8b4feede7231d7fa683f4717af6394eedbdb95ec946e6f76c6523 -0e83142348ea23d6596fb7ec87abbec96389b9fbd446162e5f3dee518c187ea1 -f5a9bc65487747b9e75c21e098a9bf1cfe30f38cbdd837c8f21240d3ee72fe35 -8722c1a94045d4b78ac82328b8f2ce10ca875928f8e334e3ab966bb828c96e8b -c5f670efe6a844ab70e1649782710ddf5b4b48d9588c5c779d90a0886afb434a -d4b6f1bc46778e6cd0fcf4b698e7153ccc431054800e3bf54eb01a23ac29da75 -4fe22d1e9ad1ad509fca68ccf3aea9fcccdf3320d68b8041ec6a11242c8b4424 -0807b8d6e8b0c683f16ca4b982215d096bd71403d771f38f409b418eb636851a -6a2ba687069282aa2f81ff2cde7ff2babcafdf4ae1c717472522e92a72a1c267 -7725485a031321e459f45a674b8968ff68bdc1618d59ec30ffbdfe0cb5706fd0 -9f44c47c9ef25f48b2cd05cb0827f6921e23f9d3e3855a79419d4631198ca85f -da165ab60210a306154f94ab5f69d6dcd03ea855f5dd226092cf8650f42f9351 -b270cc011613d57525399e7f660980881f044fa0da7161f5f46f258232fbe34a -5a3277505b82e688a7c3849b794fcd03f33bc5e08c8c02f906571befc53000e9 -b47ecd5567aa52c5c479109946002b522b79e3641d3de5d9c76a4bc8480d46ca -f4d24872bec5d1f057205eb0fee6caff25e83a404bdf0ac978eaca3208d802be -2d3893dd7118383d594640bd7a0ea109793c26f91d6e9e2b610a79522c64d4fc -5ca3ec6865129bfc85e78d8d9b1cd00cccc990047ff0239f62ef8d842257ccd9 -d45682b6fd46f0d8aec91d9abcf7a03cc940dd66f6a0efa4d70520293be09639 -0edbf5d1a8b15d60c45ed5738baffe6cfd17a64085d60b9f683ccee0ba80e4e0 -3f26ba6e0f8ee65842f5c1fda82bdcf790023899b37b0201f806a3815e29881e -ceb764cbd74aa1f425bc15b7a7d3f46c2561c1dce091c5bcb40619269b504c95 -dbc96931727e342d7da904e014dfc4748d59755b6d257644f2015d15a2251bd3 -d31cec5cd51b6ba383009b2da20edbdac440a52affeca3cf90f398e7348691e2 -61c38d6b4baee9bcd2ada86cbdb1c8af4b6f1c06bf554d11c0309f5e0b234035 -893e4fe55552408fcee702cd181df7780bfc37423a4d705be6fe62ad380db1c2 -5f91298cd0e5bf2071f85fc148f20469b9e2417ec34cfb3ce289c844371f6b7c -1ff5e1d2fb809792d48840e7545caf7698fd8ea220dda2162c2f82906c8c4c5c -61fb4825570d7c732a88462494a890fae5949835d52c1a922b1183859ec2269a -387c7eb1e3f084e25575d1f70b0f91d57b22d9e6d3b862fad567988396f9bb22 -a90311a7af4cb6cc7b34221415de25ee9e3641f855105dcb555cc13d9b273884 -1a4ff877ebb3d58f545314882034ea2c49bfbd42d357fde9afc830aada4b5b74 -a1f1a8b9a2e13c17bcfe499db12b702b6092601dac2b71dccbbd0f2f2afbbb91 -75cc4d45172012e742c7bedd20e5ae428037d061e0a96b884928900e2330673b -69d47d47c2cc3dd4f55ca6aec9960596ae578e32dab8230ae12da15be6c6337b -8a4a193da0a7ba2996b3d5361366c80bff8c0ead4e56c5d6b7b1f246b2c40d78 -7dd8da6e968d0585babc814a7ab2b37442d2d96bdafd530ce348e8780dec31fc -46cb1817c0673027ecdbe9c6a619e4836ef44d651ee0d609cd1e83e1e2a0a924 -26c2c8d6b3974856941eaa86fdd1b434f174ef82de79b46b4234289ee2f6e875 -c6bdeee6cbf59a107706366768576915ba28540cd90217c19da7d3236956a330 -faafe830843e199efaf27786b3d151b8f644f0f9b2414657d785440d111649c0 -09a62bd75a8b6bf8640f8d732d158e296363cd2e4e044d6ad57fe6f5d3db0e8c -e4befdea8d8d544ac3830b2a47523d0d73a4611d1747cdd1e45fbd413d06246d -d25dbc337a00a2fdb1f630bba2b01a51e7751d05ea8ce8d14ee9c36fe9693123 -4fd6295263f5572040008b7d9c88afafa5ab5e17dbb290c1aaa33ccf20c02490 -ca82268807cf8d7597302fc030ff0bfd995cdd8aff45434791ca56db740738a6 -59500fb4c1aed556987d9f1aac027940fa240e6798aa49891bbebc1102cb0e55 -2dc0602edad14710e1a675fdc74b46b14a65fb2ec5877919fcdba8498cafb022 -a168a16c5d686e942c916b037f24eaef65d9cd0b9668c10f17cddb8ea132df33 -19cd19e700df79558bcf36eca26637b6300154d294daf66e174421fe45f25e62 -a76c3c48fc96d67234837c658b8588b4b7eed532439c1dcac20d34a96cc6eda9 -e7f07378a77a974e1b713576bd911c0bf4ad1017efad04494479f134647cb05e -6c6a1e0afb3cca8286f0b56a4529f24f4a2d9a4df78cb396a2d775390ca518d6 -31979a7874f016c4d34e09d9b551fc6903ad30631ae94b37b70be9dc7628c9d0 -ce3198321127da76c45405f6555c1c8c60e21427a15d4c0ff6cb590d947588b4 -9a3b6bc77d9dcdbb8ba2d7d07d27508875efeec416d8001ac999135a6be7700e -20912f1b5bbb0133ba5d53b22321be1e18797fcc9a79c1ea32ce9e7180b08239 -7846b35347216ba5cf6550f6e74ef3cc81cac6ef4b01537003c0feaa58b59503 -5541e2a1c6420f9bdee377faee9d8b0c86e94b466b6dcd9a4b3fcf2c35667ccc -93c03ffabc8838919134f5c8e91b5f783ff94fb9e4002dc4a05b82df0ddcb1aa -a899c03027d713a7f2f52f971131c7ac5184d2bfcf1c43432e5ccf28920b4986 -95be9321b3e3563813221c06248e6f4ff01d6bb6217d6baf1a64d9fa0a15e534 -9dcd9bd4e5d784d3272eb11b6febd854c20d4093839e36394e384415e56ed90d -6e30521acab8a4497f70a4e967edee1962505bad1193a398a227143b9dc0ba07 -cc9aa44fd3ead0fb2e4d225ad6a35ba06fd39fe404d67c79954dcd9059f4bf50 -51f521be9ffb4bc24bddef8482e9931249abbaa33a6885f214cfa4b216a58220 -c322d54283299fc2e2c4ab61183086b0e8e650a511cdabcca64c28e735eced9f -38521eb60ea0e5b78d61595fcc0c961de9eb17f36d68854d0747ca19a6424ceb -134940efa3f755a98dee56b78f71bf2809a4848c252d73f1983983d8a37dc19d -34c1e657a8b328abddb3f48277fb532c2ee073ab454c0816751eb66cc8e732ea -da06875d32e6636be0605cd8470c2b893de3623da52cec766f9f30cb51aeca0e -336524809b9132bf9d541995cceb3b9e3f3b93b1d2e403ed94de100322f62e1f -9504a090574a3fcd4d0120dd853b9804efde4cf44a695746e0d3382d69f5e4c8 -689f7fccdf6231dbcfc6d1a3f911e050dca3eb8d6013876d38f79e332fd51333 -1a39edc06f4a3aedf10125efbb9a3b63921955590431a460f659faf91b1dc8ef -14dcfa9ce4d37c7e225685e89c8d33042696d506d84950383190eb2c935f016b -11e9a681a5d1cdeeae1f22b2017c63f18433ff48221efdf4460586d93009317d -b6ba4b2c4f918c53da5631ed2a426ddd96175ae012d463947c822c51cca2c8e1 -4b30bcd6e519c10bf68b36080419d5ad3db7aff3072081a3fede21f7f1ea4701 -48b758a8af3711b4f8c7a427b0d63765971952870fb580deb8538e5bf063d042 -3d0db851d60d4b5e551bdaf9f5d2cff71310dc66fc80e04463ff901f9d450221 -26a8a828e431a4537527bb13fc10804e8aeaa7885e780e8041d1f3ec41162935 -cae07c888ddc77b34db5e859c59bc1529fa7da92c3e61dd7148448da7be5b5f6 -1eb4b4aee23ebfe0acbf8d8139725f870871da3e22b332f5af2ca66d8233ccda -f09025f95dd4b4480b3996ef19f6b9da8c3c696f3feeadb24fe100b22c8f38bb -1da00f1a81425fdd02f3cb957cf39db222043573f3203ce4412d16c123543656 -d1ff361bd22219e15a2f116ba971338b9cccbbb739d554e102bdebffbdcfa66c -afe0821918bdf4ae4861c71ee6961144043def8211bbd06bc1b7a17fb7b49264 -198268534c5f7eb90027a484d2088cdf056c76aff000fee1b66ba855b52cfd3f -063ea1ab303a5e1198143f62e84a808bb861946bf886b8992725157d3a559138 -85cdb15c32a2fa2ef137de0a9b267231f7f1c9e8186859226e85558fb9f53240 -bc1bf559a13c47432178972b3148e5d650f6a9309b3df8d614055fcf94a25eb7 -8b0bb7b74ac62a9019a873450100a102584795b06038ad1c75e69d3b810da852 -80246bd861c0cedea278a8418f53f57b71c765fcc4fbe2beefc5bb23115f27e2 -f205c40cb2b69976f76b7555373b6300a10ece936855b51940ebd489488d0d06 -0e9eea6b4ce423ec6f6de963f8891e3740c8baf572f60c732022250eb2ad1186 -2cf850865eae8c536ea6cbaa21b0e6066bd584493d6d5b577c55fa8e06928b4b -9bb0448bf84e502ba84f6f26c3afe6ca955d975b335888fa3d7c7b5ed0482e02 -e9bd1262a91d2fb7ebd1fccafc7c615f73d343b0188d28dd6d109bd37a902101 -41b2ebd18d43bcd5c52ff32f3a66bdbe2a44a82908d9fe39f223cda9b8822428 -9af7eee175330d8e54b3b725cba75f5a72bc4ea95ae89e023105206726c7ba03 -c88beacf9fe584639162133c01cd2bde282144b3b254055d14736bba3a99e8ab -4783fa3b93a969fef3f49eb7bd688db128e61a5818404cb64e9c255e8d83c751 -0e750b7523d0e90aae154d93b4440427e80f1d048eb8f3c87c3a3c081ae8e5fa -df69ef610ff9aa3fbe01a5f846463f63f3337d3271967dfb7b0697d026c25cd8 -fb74d5d1d5bae0716f19d566274db5f271f723436a7dc02f7f572d6d5a2ade89 -934afadc18b02acc23f6beacecd5f9b7b4a6e65563d326df922a37e85f6b74df -b5c61c03b3f5b357edc5c5e7c1438a59239162aacd623619d7a8c3e015f1197f -c996048106e71c63b429cd5e8ae6a5d99d85327359e4712f96725fdfaddd8027 -03f75e32792ed1a37eaace2f936920c2c3d524fd72e10ebcf99d12a7758b4878 -654de2b7de6b558e0c819368c6e02fc875f7d3069b7b6fd18d24f2f92880a993 -c9358c60991f8a2df33f9aa00626317bfca08bcae5fa795bf210c4c1f42b59b4 -cc5862be719f8f2306b86cb7d73246674c4e8c7a7f0c6468e041a7570e8c40ef -e469ff58fe07bb17428af645581b195181bfa07e56260ac413b4d196d71741e0 -1aa35a498904816b203cf4d5c0f34bee5bd976db1167332eb38bcd5295fd22cc -5159a15aa66dd5f3eaf5701ace24cc00747f2392ffca72d194aaea76b787afb4 -bd273dfeda9ecf6bc479c21a6d81fdaa18e53caafbf54ea2b034c62d1d74579d -1c8ae231ca3ce884e3fe0d04ceff6ef3cd9f10abf98ffd7410a42353636eb6c4 -e67c3f55c389ac0cc0c0af1d2a103536568f69224e114c65aa33814ef223dfff -2438a4ff5fc1a1598dc9146cf68a262c2ab1e41fa1b8edc90cb0410a27a1a419 -db48bbbd5b9c638f4702fb48a2495aa6222d30419bd1c7f3437f3ebac95b1d8c -fd330d6294894070bcb82a779061e4cab91ee255c6e4ed93a90895536fe1bd0d -a3aa357a13e7cb7fcf3f45cdf2bc102ef048150f6b4533b7dc8dd523ec238fe7 -bd48a3d87c10a2cda9289f22f28f73d7625e5d89acfc694f0a86bb81126f40ea -906ba2d01a46f952ac227ecb6bc3c238846d2481efa96c47393a42fb0056957d -10d8574d2e31e46c00c712f0c4dd12d2b7b05918fbdc4007d82a80e5bf55ac51 -baa09a5265dd5e6cac1d6ce1f9327e9da2a8e8dd29dd5a3ed9912f9e9117cb83 -f5ccc9e7491ea168c692b7961ab7a1994d566e9b036443c60bdc1d8e45cd6cb0 -d0ed69a15035764ef718858375f1813f090e70fda588d5e90c8832796c274cdd -6de76ea8ee3b43ac33f6dbce921cd8a9aa55ad7d54fa64145d50b0f62e47a0c3 -060bbcb8bf4527c37a3e19f974b38c9a8e03da5d34b7517887ae3e989142d5dd -74cb1bed7e9c3b36e2ed497cb0f7518a4430fa6ea7dfa2dda6904c9af215ffeb -22b9151192cf2484194d491354e8a5fdbe6489b38ac0a65357dae93f6acf9c09 -fb9dc6e2e8c235a495332f26d7b08f698e5fe97949846e08461b43c2c8ab13ca -bd6a127f02e36237bc8b640007924c3ef0c4aa8758dd76bd6f76aad1d9f32941 -14dd1481e552e5395ed47f107e00a16f5d8f026e66edb63f86d8e6cd54b253a3 -8d8f474ef3928a0568c5f8a7e35ce8042b0eeb136cdd8eae1a2ee8dd432fc6f2 -c6566f4956b9f9ba43703e862ac1bf5e0f23752044e6df337b7f744279cf9c6f -b1ea71e92db5ff2d4384f1d7223d2a34b777d95d0c996e4a02a2ebebe6c92dd4 -41b7b6297a879aecc0bc6c063fbcc1786e9bc73ab053136ba4d4c62ff46932f2 -27f8c2331a759f997f49e4e228093bbc15c679d9fd42f36ad99d215043b9145f -bd3a797c64b2fabbc86fc471553e9810ccbe200fcb0bd6cbd73e144b587c63ab -e4435b6d6a30ad741a86077ba2ccec2fbc2fae5584839ab7d506153da60594d4 -eb1f264b5cfb4f322e4ee161fcb99189c2facd5c8b2d8877c26bab1a06ccba7c -92a540aa371eeb06555386d619fbce8960a8a5d556752944344a5484cfb6404a -75e5f3120022c19cab28134d483f1b1cc485cfa0670ee507884216f016e01e7d -16b7b81fd93f57bdfcf9b66c128a685a8fa7721f3c896ba09822d2267cdb1a5a -94fcedd3a28a95edd6cf1166d85696ab1036bb0c6a8a51b2bb0ead830fff501d -e6e432a8c9f3c8443c13aacac49b09cbfcf6349137872780b89c920eaf14c571 -d55cebb08cea88041faa2fa1ca2657d12838fdd674c2d75385f408d26663760e -e556e20063f21bc9fa40a57a943f1ded897bdccc82172a6b6199246f2cffb670 -f1bfd492f162397a63513a25c8f359bb75db2e73ea2e12b448118f2e884929d1 -92e693926ca8640008eb1bda4ad1dc39640746372d5526aa0601f07baabe41ad -fdf9795afb4a79ddb4a9d3375334445c08c4ca5230cfc29628113c26ec1fbb8b -a72bad4a21d36020b944bdc72724b4681988a9bc7cefbdf8272bfdf4a0f64dc1 -c70bf7fb9c01e4f15ad9c73da8cdd2c063fb3352f6efa0af70653b1a1131ce4d -01319ae71d968feda31c035f779fbcce6286ebf8ff364348445e4e28357b888d -9343ddc0e44c26a43aa755579caa047da07d3a87ea21a8f034a4f5c21173fc8e -5279d60a74af1f399f673a83e4bba9640dc8a39d42df8b7005df423390a92f03 -0a43e5e26ec0dbeec3730d558d5d16f70f711c81753e774a4571ba1b8cbf36f0 -0ac45a9c43fea15ff40c443cb16dff8866885bb83df4f020af493f9706999940 -e822f6228ecbf05d6824f9741aab36db392b8c79f286cf6998172beb7a418ae6 -560a3ef36c700e92d7211da9a5e657bd884b9e5f0c2b24f4172c7a10381cbb40 -aee6e4e7b97a0d2b30009b83951297d4afb8e37ff153882eecdc7b9a142d4142 -15244e6a809fe8adfdac7a7b1e47eeadbde4ddd7fb5a15d315db82f36df1441d -b188347e6d2cf06a289d49a6a4cafb14561f0c98d2590c6b9e4b47625779cc94 -fbffeeeb204854fc3a17f5bbe279c71c4f2f8131496a3961895e6f41df9324fc -3ae5f1ac9b4348a418948ff24334873cae759e7b16abf994cbbdf2b94ba028a6 -0f5bce596012cb484845380c1acd8950207e6ce308709bb731666fa7049e318f -f5d35a7222eb599c8e81803347343162a4e8d34c409152f2e5b3814deabbee95 -358ad55ea0dc1bc6670d20d8f502d246ef4ee46b41e396b8938f3cfeb8ab2893 -0d9c25a13ef723bce2f12e0fa00817596571bd39fbc95e3901d59c3ac16d08cd -ec1854dd3681cf4bf14e661d23d098cb6684da8165c94cab4e46d60a9615cd4c -4a86c6b518a1f6a093bdf55eec7bff798e0bf327db272931f179d128b9ebf7cb -f7545a1b3a46cdaffbba89ae761f428cdc6ef9acf4b60de2c8816c9b6b6fc254 -6bdb421d68f3cf7bc11b8c012a8f3836e081e0c8b182f6623796d5723dfb905c -08812c6e1fe8a116570443545f5f06d546d1adfabfb7bcbe04a20fbe169b6085 -bce5c6ba106e9b4ae054951d72673338713efe3e329f1066639479a973e9ddfe -9b466a8819e319c5066daba8d9c380a9385f9a70710fb0502a523038039d6eaa -b980fd2e33575f2b010a99fea5e2e6aff033fd853c4e31b14f461f3723f64097 -f41c584750d164098a0eeda2589a859d49c83fb6c1e8e753f4eecb5afe1251af -312332d7b4508fe78d9165133fce1730811030b69813f46a3df6298b65a75e17 -142be042e2baabcf43557c7d8162312bc6b47e10fe521b0e013f23d731c287da -1e34ffe32e161b89a78d6bbcc03b454fb6663f0b102675cf377acdb634f94b70 -e99b1ae29a2c27681f8f56e7fbbcfd5bec3e00a98462a1e9979194840e8cf6d5 -7335abaf1174a365cac6b71c7ab15c82cbb6491d3160661b6e83334192c460ab -0d5cd6a26f7add973c2665c705bd1cddfb09ed9e610c45c44fabd9ff2f57d1e6 -8dcaf6ff5492ce58307078dcd0e2bb654fb7f8fa2fdbe8ec0aeeda3886ecc223 -1323c16edab99189cda6f86d8946b5ced3f6763ad8a34e75c9c5dcad3310f176 -986df35ca02bec29cd98ede443343ef0490e3de574da49ea1f9d7158164bcd01 -98099804d3aa0eb5a46ba0503ae60951ba2dce7a1fbf0d963a167d80cc4c97b8 -d1676dce4c4715528e8f981d8b1f57dbbae0f888c5ec8b3aa1ac3954826dd0d2 -9d51174a78258be7e894a4d768bf2cc7e3a7b081403822c57f9cad672acd17fb -f421e31577cc7a837e469007fb25197c0c163b7cd1faec849852f71bc4e597bb -dfda5eb0a79fc0b7aca5018cc59ed9dd101b9615e58dd45b8b931b4638c8ece5 -f7fc3f44dd787bac8d3c4255125733de5e96ea289bb49805738f244d1721ac14 -b0ce3bea7259d06d132e2dadf6ad6359d5063e55bba136ddc3e7c5549d678429 -1d9dabe9f1c1edd8f6e8b5c69e947088640312d912d7ee6ffd6856ee61f6d7fa -5992eec603bd2cd4a1c1fdb3f334c2e0605c551e09c018146312b3bb315b2807 -06ad9b05541d0f4cfed68b3afbb204cec85abcc17297bc98e1e5af676f17a3b3 -24f6c205f50daad12194fda7694a0e1d2a9fcd9af126f13a0dc4949aa24c7a8a -3bdcb44ae0835d346026d2e81c4fd311594ba5d2fd5dab23e17ce667f175cc29 -822fdddecc12c86a916e5bc67e9d344f33d5ec32244ee094fe3e21c5e248fa31 -d81149f7af4052a1e7cdd1dde063626b9ffc2be1afab01ffb4583a124592938a -cfed4467630585e57ca96dfe6f2f7b9117dc19c27252c8b269c445035891b334 -0f69462fa2596a49af4c9141afbe915660f7ca8740f816de8335051be4c396e8 -4b98ed635ccda08ea93cc8235d05597ec5f205766da2ec8ea272add76479368d -81375a60110111006a2543a6b86218eb1869363f52329ce456adc08f7b661681 -949bf38dac90e23736e45fbb39c2accdd21602cf380ce1d6cd26d4fca08cc0d3 -c1d903cd594e86067c0510d09d445abfd10116a9f39d67e3d68e145f9c8b4f37 -aaa4ffaa7ec3e866a17594efe52483ef7bf6cea1b999281df9047286b89f4d54 -6d27c5715f542d5fcb95b1b2d781c2a54a363bb05f4e9dcf5b9c949eb6c2465b -2d605a87a4d5f1b74676a19107df7f33288a5c5e2516f57eecca5d24b9396678 -35e8c7ce0c6a821ec58015d172cf919dd5d798d699e95745a577e971e6097916 -8a39291208dcc3b8d907aa149f6a8aeb3239fa5fa9b7aa28dab14931c8dd7ee4 -1f305e30d1e40282cded6e8b454457c3c5e3fd02b2b2db855a8123545e91a1f8 -9442a1671ebfffbed85cb7386f05cf1a7d1979c22ecec55edbd4c3bbfd4e68a4 -fd3040399fd44a643116d0d4dbda423dbc24fbf47a5c8809e885db76d61e6d10 -575df1e143af5d1a8f3bff852aaa8f440316d3f5c6357b54382ee4a83bb2a1d3 -e4b41884edd5827b46601df9ba4953d0cc202110568a6a14c18b5130ad25d6bc -060b1aaa44d7475a2c9911409ed784a63cee43baed684fc5775aa9def3df72e9 -0fee32486fefa8dbfb0dc8378ca798d23716e71c7e06035df322f6ea07a802f1 -91884e8ca2ce73f9c669a088e2f54e4870a7e3c3f5ede346838376cb43c865ae -c317a6a8fb1d57e881c810ca8bd63a0368132953d3fcde1e5ec2088681cfc12d -e9873223272535cf7b28444f14f9955c92618dfdb12ef9f1ddc76af16bbbed51 -3625f3a5ea219193007687af3d509f0166d80b9af3353a68d587f10f850544e5 -80615dca53fefc354b94c588dde972968e21903d4dc4362996d75c16a8e53b43 -dce8241eb743fc0ea4f1b99baa23ae73fd53b8eac56646089f56d3e7ecbfa3c6 -ca3243b28890c6cb9596ac97f9f3f22788b32a2e5c765c9339e499d0844a61c3 -51174c30e638c31ee18ba86c3d7677449b09ff201653c2d070882a00e13dfda9 -57e33df83850e15a22e1a691b2aa794d192dd64feaaa8cb91b5272a86cfe2e17 -d066eea1aa0000c0e6e36fc78d0685ed00d0cc9c618388922a72733fb24b506b -ce9b076dc27e8c76915621f855e3a0b921555cb24adbae5b664e2e0352a3d6be -10580d9f73b7843294b6e36a1c61b5c63f5d63871e4ac29bda479b8c8e6f51c8 -0b51463a1a2ff98dd2e92f30b04d7bc4a1e6d2c100fa4bf2a1bf41851ea8b1b4 -9d17598349c1788eb1936e7844df0af5fdcd21a4edd1b5b5fb931217795dea07 -70f6fe0670eb97b9e8a1b0eeb1c743b783f53e17dcd84558e27ba64dae7f8467 -016c5712a58edf87ca69e1953cb22cc66036c4a500caac0aa491d4ce26a40f4b -5683185f9b824fc2b4d5b6bb0d211f32b1a895e1ed6ad7858cca24c4f1ea2b74 -1bd3a3c93e10400da358eea545c188d1d7d575cbdcddc324eb09c382159ceb5c -a9ebb4b8ef2beff670e9e66dcf82d3c931a5f561969573baf05f65526dd4c708 -5424add9b9e02caddbd6de219eec64440e2c24b0c01642c9bd91836e3e81b1ab -03d859436938beeefdbdfa2f7e1ab4beb9f0266714094b9fd2cf95dffd149ae8 -af1140dd0c3759011b71677d8130cc9d1b2b61d74c2cef58416ffe20c93be780 -028fffc223417dc98b14e2137d15eb85684af916fbd8200b9cc71188652b3df3 -fb9f51bded5adcd375dd2f7932fd0782f23ec2ebb71407f225e7b4601e625bcd -508a0f3668c5f2254d677ea3ce36ed1d89148f065877b39e3edcbcf7bc849c35 -e1db16a69977070cb9ed217a9d601f339b1f943a4e596517a47bc239a291e454 -7296b590060eca428f604b7ac852138a5b593cfb95e417ae980d0b52c8353295 -6fab35d520ec6700160e80185915996eda97f53f97f1928b67cdd369b7e3cb0b -cde35f2ea974e3d9b398cf3fa044de37aae15479b4ad19a2a88c9e0ca0579285 -8552b1817457a2ad05a8bd394de54a7c1060cec6e9e95bbfa3922bdb5f1d53a9 -3c177f9c3612bb8beec2c42e129ad09c14d52acbbbb0ab3590c7cf259d154840 -83aff8fce7c5dfd5a3e28ad4d3777fbe0bb595db0ae673d7d86e4803dada37d8 -8ecb99bc8c525c1ee931cfe7004c361ed7f417be1f4ff7e92c636c7abdef0f92 -994cac90c900b6421582731b501eeb68ffef1beba128daaa668adc4225100d83 -c55f2b0ded6d9afce03fe581da3f1c955b7270c178347c885b0b4af97c852843 -1dcbe4bc5136c8255ff89a5d9c1a60b45efb940fa8b1efc8877d5ec3b8af027f -ead2db50d1239406bcb22b403f000d75af7cfc8120b81d7dfdc8e1deeb7bf39f -730c24d3c25795e6cc074d328526f78e2f84a4a0ba908c24377c344a957b2d72 -b5c88d59035df55ac115aaa16d852ede9fcdf9ebd963941f2979cb5616b000de -c7c768dc91ab6c8f23d6da7b41d80ac211f6da66a69abe273a24f94f8f5e5271 -28715d914cf1f8de04bc825337168c789817ab21f70d49da38fd54de9b8b4750 -d6ea45a57e25d615ca086439306f5f89bccc61254c95fae90368220cf5acffb5 -0f3c24bc9479ccf1ea9e0a9b2e2f64372417c44695f43b9975fcee1328075471 -9c32d5bc60bedee497488866881f8a5091f4026eb04c4d92984daae3554c9bf8 -04c3612798180ef599821e5f5668c280a40625c1bcd53f6987a4bc2502a2a362 -54f080d704dc71a1927f573c67476bde1263c99178f4f817c4477c1daf1f685a -53aabdb6b3b2fe769d36d262b4fd1d4d5aa7f8523805d45565b476dbd12f27b1 -3f310ae2a7f75dc33f10fb33c618504753db5721fb503c9f3b20f3804e22fc82 -ba2e42b9f336f242b543fd69c14be16d636bc49b79477485b3a3b9ea80010ca9 -e929ba1402f0c4284cc17cdc2c04193f6050356dc71d4f21844ce46f64d90284 -4a0a6c6e53a7c8ea0f87ecc694fef89c398a6f27b66724390fe8884e2c58b5cd -7d51099d7fdf251c73410009eac66f505137bfbf155170858fbf4e1f04307d36 -853da4868e31f32a3d52714b617e74114df0a02116b1f7ec7ce77d302cd2303b -421b022a85acbfd1a46f04c8da3526e5af6749c8395b1f6d63aae3d2d8a565fd -991db80296d60c895fea3daf637586cbf074e06002576aa35ec234edc2836e79 -e6dc1c3e3f8a6153506575e6c532e32039a97fd0d3491b2cd856e874af3e8742 -0be1daea756f7cb4ed2da886a7c8794227034bc7e3ba2e1d90f067fdd541e6bf -2da8afc4701e05653b1f8d1bbf87aa82bf6a186d2a910081b9be9aa3e6acbe77 -9b9233d70393787b4e9497a7f9cfe7f8ecbb181795ebec11353ebcf0f3f9bcce -be6ce24434c54af9039a9eb93771ac617e0193d7c8c1ff12b707f909b391b569 -279d783c20f50eb9d6219f1c9054c6ce5d0bce09ea407c126c8c16c6349c12a8 -f399f125d4b8def3b2bda369557751df58099b38c8e7e5edbe73699d6ab9c5ee -ac56052304c2c0337ed830c1fd09bcdcd6f2abb17d069cfcac6efec24e399be7 -b3ee5d0cb814f37aeb0f4bd173ad0be251722ee41ba04a103682e5ea2792ea86 -e933a8c15d085edff08b7868ce67cda93888e0b31b97e0729627f6039ec27f96 -502512384d58ed44883715439ae4f7a83bb33112036a065f63606a267b4d89cd -7b46d7f1d2e9c6df0a497359a3092a2569f2a46ac77a2e341c46971051f24579 -57ebe9c382bc8d165132c3072acef21e861bda77e1097f819001729a743cd02a -d644688d24b4078c2e75a1bd434d3710dc44e87f679e431001fbe8954c03d85c -f4da29154b9b9d5d89392e87c50ce1528fc0d4523dd3260fe1aeac8f9f12da31 -0703c9f1cf85a6d2c43ac51026c7684fdfc4e8a5fced726f9e83e25312247c9e -a30bce2c93a4538b01899e51cd3a90bf2241cd5676a1c7591fd1942f9c30d7ed -3b520b31d17baa14675f14e855c73af0ecf5c37627e75410ec7f6dff0d49d966 -0ec5708687d2e4f98f1c6c2e9ca9876a1136739bac3ddc34935f3001d6ed03c8 -00244a688f21d05b24da020c8a237b77140cee264227542bce90abae597c9b6d -69ff0db628f48fa1d1f41849461c934b4a552b7757d1ce32f0fd1f60fc85f788 -0fffd1e973283a49a2be97f7a9d966f0d83b486e9f72f14b14e7936397b75390 -38b9b11429d2c3bacdf7fe14159ef2d9f8e9bf7099ff7b97c734c17ed380c151 -b7e60ec6bde7c63795bd6b758ae72d66947748af540543945f85a1e6708f2d65 -d6deb82c1c59ad42a53dd65a451815bef27b8e295b391e93f1b3d6a980f47006 -ffcde9a86f3697e969f0f2cc3b2fb2bff35f8f5feb2c3e3ada40157056b550f7 -a0701948006dcc43062f1cd0de1b49157c06e218a67350ecbcbfe1ff847c4f6e -e22499406f3e8a12135ede3a869b5cf327a60b5dcc7a11cf52ef16f6750fb7a4 -825c13105d75f8a74e2e456837b7e6f595c260d372ba475f47d966dbd1cc73fd -a0cf1f406e11dc12baa68e8cd78b8f40abd22c35e363fa469fefaa00d914b5a5 -4095b064bcf62fe9974fa15035f55eca54c92e5bbefeec40b28fef657a54e1b4 -072c00409251fe299a4ed0377dd4199e7b9101f4c86825e7cad1aa177353af45 -ac940e154f9aa8654e4db0ecba0878b9e9b51cebeb0acfacf489a12afb611ba5 -8d095a545ef7fe67d9bae6e8ceb04fd83bbc401bef599c2fb5dbe80ab92e98f7 -de01052f2994bbbd41b3019de65647decf630c05d3bec04d72f857ab9ddf0cfa -49b747d6563d4198227c76745b4625e515006d7e40fd109d9694acf7bce35e03 -b8e544300215fef36442dd9ed7c7c892f2130e65764c745497ff723c72fb4e1a -ffd51b26ae752c148bf3d6df2897e6fb46ba6b68ffd766714a58d3aeaee8ac73 -5d749ade73f43f51abf19aee5e5f34a23cf3bd4b7a0a6fcaca2053a9f2660eca -b7ff94e539a827514c1ca1b3d5b02c1d804efbfbc4f9154e54a9c4df6f14590f -08856cea4d0bc4b9532b8ab5ed61fc05b975627fbc45602ab7009d880aa5a6f2 -05c3d0ee506b960a269871dee1afe0633a33b8e82b6df97613b443e9903f0efc -e861ba7246fbb883aee3f50dc694cbbdc42bd985bdb75a265e3b9fe370808327 -bef71875e8fa3000025194304c13d75c9540a531be8b5a6e3c3539d11506f1da -f90a4142a02b4add938f357478eb2ae36215296d2ba15a2860e5e4732af331e4 -2a22f359ad4d223ca013f78d77d195a6067feef9700806f3bd60d69812cebc6b -0e5da028744912bbac819d849ba960f0f6caa311ef914e369ca878c605057832 -737d2ec9bab5f4ada68c1f56bcfeb54f3e75fafd4cbb5bd5661427e8f59c1bb0 -b0121054a554da666f327dc0dfa82f6044f07a18a14623ee53f720fb7d2b9eac -b0c2abd6935db93471355b17460aa07e3e841438344e70261d7dae4286e44743 -8604b4065ddb1748d22806f428d2bbdc68702d094de0624c606ae1d5423f7792 -bf41e769c9d8bed663961aeace9b4bd0466041ebd9a80f0854425b3a9ac95152 -8689a9aedaa917a403f1c4f2494ead904370863ceb3c385bc05a10fa8508fad9 -a0a9db1efdd89cc2ce838b72b8bb249ceae9e129e1a60a9d78dd8465a52da5e8 -ea56f894c35f223485b12d60548e3f3c1b167c005ab1b1eafaf2bab8e23f151b -c6db27876f0b4c6db8538978ec008ca130a162761033346ce7e429ffcd293172 -04febcae32f6349e726ff9c75e8049e24cc20775a844b2047a443fd9439268d7 -10c263ef30ba933da1c2672de7e1ab56c7239399f0ca3040c63e1c31644c8b08 -8ab9c0b31bee84514ff4d735bc2f7afcc43ea4ca18a4e5d734b2a28ebe7e849b -e5968617769f7f079b687dc77d81071eb5bb05a62eb5c50d8fece49409be7baa -0883389789b265f0a032e7a0d3060114d5969b2b114f330eb0ccb2e12c4e2497 -f47f36f7229a598f8018ab9901a6b10b64958bffc8b681b20949a9576f9503ce -069f32f6f3ce23421cd142bf633bd402ece7771cc70e6e840828a88329cff4e7 -6802bf11aa4decd69e81ae8eec511c3c190525a193d73e925d737de5313e0c52 -f55d1f6c34fb2c7c95a643d90fb7dac64fecda7734f2e517910822ef98d42432 -435681892841ca4c379f77ba51f1681711e2eb76d22e1fdf3568017c8c6bb5d0 -cb5ae6602109292ac180dc75f2eaa25f4c3e6d62cfb30020f0535fd43ffdd0a9 -33f3e6d3e63d43f6c223e8c345cee5642a3d5540596717d3fd0f287d2205aa4b -50b282e7102dbb2913f1781c5f2d0790a8876d1bb686e5070274aa58608d16e8 -c9b4ab78186b4cf232abac26b8a26e1c2c12b0671055cc5f9fe4aca92d60e2b1 -83718c968ec2bba1c53c805525cb5f084f6e5c3c71dd487e40f5a101111ee42e -aa2df73ec0b480dc82f11015b6a3d358b0b3c3214397e97c53c65215416780cb -57784eb0f988a0dc54f1871a6e7fd15f8b9f169b3d918c676b61a61955bd5358 -baa7e7565a8c1ffc0aefa031182c4b23811b9dad9e08b74a55b2aca752b1240d -cf0c0b729571540f0a4866632ae74321e3b2ab41d26d0aa1fce7f03f217ee451 -2b213b0bdf3d8a2148feb5d35e1f8a6da2e13658f139304205db38b510a57429 -2d7abb567b3086db63d2c0ade45d73b30684080d57d6b6b25f612c40eaa81fac -55cd578f958a13f7cd0e2fcb34a660f5106d91971ee729bb090ab8c37bb67953 -c1ea9192644717a218b2b37b03d97fdd4963dd1186b9d7347e7c856527c1fc7b -6e55e247e383b0445323845609b35585e37f383e820682979c3d1a78373364f9 -3c31324f698cd6ea07c91ad288dd751a04fe29540515d056e08ac7e4b381b1c6 -cb2bbed1322d9095972ad368031e05b6176897934584bbbf34706b5f0acb3b9d -eb8b8cb8eba22d236327592e27d4b0830b4e4a7284d2c1896b5ef98a15cad5c6 -7412b8ce2d95134f53ba2395c2e397ea1b4e54cf49589e83be2d86654c849e41 -68a42bac0e6a6aafcce3c8f585c1f381f51b45abb58ae1aa4794caa2dba420fd -affc83fe437866b1aecc1d910643f0f9d70b0da41212f9714d1b1a3f43e5e725 -1267c59a1017f8bccb6cb813845d7ae92796ae6395e5d17f8aeb3f7b733d6c29 -856cf66e370edd3e1162307b39916b89c371e0c930a8f7a8072925d211fc3ee4 -e94dac824598611ab5546a9f98e475460058ad14d5bf507145b6e70377ff092c -2c96df0115b97563c3d8ad3e765180639dafc9240078a9bdc4d05c38d760c3e0 -940b3ecfbb6f12c3e72ba953ee6736b671ead09555820cf7a2ead9fa6cd063b6 -6e1f93a17d8d7ef5a33407b115bf86677b254d78ca23ccda6d38b77c343c3149 -bd2a1ffc2c173841797cbae994e7fb0a0ea95fc1666cbf26740ca2d87800912c -b6ad51767474ac0c1a9d2661b25663dd2e0e5a8f0a3357f9098c02ce4be52a92 -d65bd68a775d0ff3c8e4038f4e263832a3753f12097957e2dbed99297106e612 -aa46399c0ed52941ac0f468ad788d06a901912c7015453577db8a30c2415b172 -a291150a270139013a994817dfdf5946b9b9c41d115b2335ddca74f9e05fc546 -3c1b1eca6615b3be14b6349bf9432377219c3c7c35b2adef1d8544c47af2af13 -b71fe636a47d878c753d23c0fcd6fe0bbefd26642a4cf5cf6dec4791a31f0729 -3930fd1aedb30471b68bb4cca888315b3ec51e1e1211115d363ff503fe9c337f -87be8655c8f7e7c382f4715e8442f797954ddc7e3c40654a39c01a4e3bd91c62 -c0ea25a24f3480e721f8002ff0d8057cff5a972ec0d3d8464882f6b27271e208 -6f0f9c1b371bab4bd14fc34c9e798521049a37cbf299302230ac20131f9818e1 -cb970c0844028b18db324ce2c491384c519ec0bee4ca16bbd5b5da8729da1e61 -79f548f38b42cebcaa3c2f95768034006f3004375a008a2dcc4c6b695f191168 -c5b994a8d65e199bb2ca5b76235bf794bb325c1314cf0610b85d38a5aa679552 -1c503dffefd736407a71a0dd79bfc59050d7654e18063285e53c71ddfd527bbc -792ff5628a05cb9cc0aa40f7c0d3f31f391fcb0a59fbc7b1e5bf32a173057a89 -d92b24773bb9d14d3d1a5d42dd1824d7dd7ec7604adb960cc85c0dc76ee7f8e7 -cd521005fb367c642882ef4ddbb1cc7e18882c067a628c5f78cfa23624324628 -f3769f5e4ddad6c4e91f29c9c4f4dd03ee48ec5a580b507bd028407f2356b218 -c5c5cb5681abe3c28502f2a7d5aa899a7b255ae639ade27d2d06d3bcdb63584b -80d0468b5b7ce8276851cc83060ca40f181fec9648401cc153ab9283431a3785 -f2c189fd0b94d0119f97e211a9594a26b6c452322da798f7965e51a5f781dbff -9763afbdcb07a202d5bd494bbe893db7e2ad917bf224b8e6543cd315e16881cb -7feea2a370720d8d35237f4e4bda5eb2eb750364b7ea0c6f51a4806290f06012 -f552ca1c79890732d5582cf29eca1a0e58211bc4a5141a19161e435206963a75 -69d2e42f5cb18a2d93eeb84cece026ef20682eb8a0671c7c241f1a0ebaf725be -9587029eef3468db9cdd8afd0e2be464d69b5ea6e69cfb069ff2196fb93a64ce -05e2af1aaefec63a5ed47eb28f290f90a3c6b145fe9e86e6c2c79c4e28382471 -e79f15b3e650fe7e072c81d1f0816bcbd314317da14ced23981d7edd9823f96f -2d7768a0683ea097aa66e1388f7afa30788a5e801eb4fb77b60558b870f970ab -8645a60652efeb100083a15848b11ab8a660766a8e0bb1f27d56024ebda2c62b -1573a2b40ac6beb9f7e853e0bf1920d1f2666bb7ea87cc937efa80d213ac530f -3e01be49c70d9cdcb99e10f378d16772a75a515822329c22e3f8c6fb5942b1c5 -5ec6007f497494388b1690b72cedf322a8e3579fd9595a9db44f2cb947b5bd2a -e9080411ae2da507d98c8dbe8bc15d8c49e378a1a08aa327fef6001ea1077312 -006e03454f592bf328b5f8217a90bff7efd38a4db8d12d8ab0f3e36ff9b5e4b0 -11a89cbe302786e8b3589346f325111a2ab7cf68d13187de0714a38236b532f9 -18565f33a363da30925eff4330aa9f79afa84f16cf22d7a2e488db4599338a93 -e656a15a0e6f61c1d6ed6cfd11d0148922d2cefd4e21f70bfb3034d1fe55d16a -447e765a5ff0daeeb2e308028eb57a6ebe6a9c2703e6b326f1a34880f9fec857 -7823a64c0ff70dfda36a5b9174627889522862c765cc2633e67aa7ea78dfa5e1 -e403301d63ed3d154bd27739fdc23278588bd5e27184d91fa1ea41db9e9aa1ac -c324e067003018f10fe44ef3d7bfa1f38257edb617a7e2cf59816a65ecacf17b -15a7e41319fffa5c1f6b92a4c7d4c78928433ba7b9df24904ae2c2a4b707cda6 -16c1f00b5b521ed8a2d6a0dac25f4c22719ef0dc9adfda4d241d32202c88e337 -74794d0b19993f4de1f5af6a16f0fc95d96829ced11c7d5d548fcf46c222a856 -4b0bd3c2af890f84345f6f60cc06e7cdcb91d7eb79956d6b7d70e862fc2fa79c -12029fb27a650bf011fcf75146b7dc3c7f093be97d53c6c720df3874f0141fc8 -783bc69f5499b61aae6d7cbb5669bc51620bff7d1900d3e526c6521012ee1218 -9f5ea225c5c7c0547151f5305b20a3b70e25c30a50125fbb3793e94921d6dcda -998307dbb029fa75b418c6a6d850f4a1b4bfa955693645a79d8958713a4888fd -9530c5720a5705bf8b758d494f28c735b37e134d57318938790f1d64f69c703c -c214a8fb2ae2fe87d991074cc8b5935cc2933d87d3f7919f99507fa196d6fa88 -efd536b33c10218a852c135c503b4efd1392815caa07f92b3bc5fed375142407 -a66ffe12416ec6c1dd499f32987476b56ae1148a717295158d0e640f929e136c -d0cc9ee13398466ac34bf3c36ab46afe809fbde418aec5f3452b8e7f5334e834 -b6a140d8c674a9ed043ed3d5898d337dcf8f99843cad5f398846b5ec54c7bfcd -f445d959c497ff85d7049552c4800eb823b56d04fad8d3eda431a4596b3d7fbd -e831c5ad2668b46180847f8be5dc94949c5d9c10125cd7656a8aa5adb9b014da -39b2413bed1b5d5f94517f84f6404be1c3785d674470966d8398a02a46355244 -15948e9fd8629317506820e0aef35cf8725995a27b72c148765c6fa2236292ae -ed1c13c1a32d60671eb3f33048047b771ee037c3e174dfb50dcfb05196591e22 -4632e22e8ec8d17ddf8674c2fbf821244530bff0b30bb4b6348608a38ea138ce -b30712eecb5cbbb9efd6314f6e00e659fb0fc4357fb8001aa97cd94880ddbc7e -a3820277584f2fd9c209619a5eecf1cfc523303363db73f254c3d0533896d5ae -b25e014af2b5699e69b07309895a54d0ed020f03081303933fcc22fcdb87b732 -f285c81075f2bf18da495d19a56bc4af731d5b47e09746074d5c3f531fad7a31 -243cc9af83ca4246b4f31dc9508bb9eac2fca186185db75ebfb47ee97dcbc0e3 -9feeaa85accd73dbe4be16d5bd744b30a604ee76910cc8f335c2080b248c1246 -5b98afb156408bf778edb1be82acbc91cbe77df94628402f41bf2f89b5f434ac -25038664dd20d72c7272d9421e26d84a5ba58cc10904e3f399adb52c583b8f27 -455a16eaeba39c17699647617b48b094a0e0c6d91bda7d986bb9d1ac9fe73f41 -5bbf94ff781faa841e9aed24cea0a2f3bf17517395a48cb52e98c37bd6024e53 -bd6fce272346c172e137e53478418be67aa5f26e007199e3910e1ad86a4d70b7 -73de64abb72fc5dee50290bd6930089d9b7602ece3282ae05c4e74cf35c7c28a -6659d794355b46a75dc1310d3e326bc4e2069351df82bb301e6ec56a0ccb96eb -79803c1cf1c791348794b0e418ceda6dc11063a83660874130b97adae889d954 -a3b93a11be9ee60eb86e5c3601f510b01a002740a1c1022ce6df49947361a831 -9cd8a7b2c7363d5734ba08779b5dec8673acfdecb5839bd46522de38699d1fb5 -e65699eb5f65784b0bde3ffe885fbab4917e0ea82fd98948f3f575e0f6421f90 -edd14262741ef80169c2b3dda090e8514f823616493d2608ddedb28dd5729c37 -a7367b06d6255bc11563d879e66e16a89d4dc5dd01c9f4288cb29d409e5df969 -4de4ab73a45ea936be8b612f084722243511b7938b1be6e869477c4580d4b390 -bab509dc1ddba9ccbf7e209a9cb95f1d6dddfcfcc2aacbde558709e1350b1e56 -b2d913089491df85e7af642c4e361421e34746f9d4d436082cbb432278451294 -fa7050306d05be7165776e2f0338dd41498bd3a3610d842935215ebd0b1862f9 -add9a0ead6bba4b43ed5e5754975711a077133ff09f0e6c91cb4477190444717 -e0cc0b692ef5294bb093f4a5b82f3b77614082cda745cd968cc7185b7ccfbef0 -c5985479ba1c47d22e3ecfd57f3d3c7ac8d9673bab7335865412bc35b8296b55 -4123d736187e2217dc9a6a89e361a0d3376e617dc113b0c077ec0f6dd1ef51e7 -7731f8564de93c2c8c6c840dea927464613a58d237e510fb85b4c584791d86ac -f7913d79521d555e34f1269e2f0f1f3f98676e34af54e3a923bb90b861d97f25 -a4d3f2e1220e2bfa2c4b90dcda31c1a887bb4d1576092386155900cd8d3c1365 -b7248d1ec6390847f39d6d6c50c87f46e097a41109ebe39ef4713a1597d189af -7d1a8c27337839aebe4181a8bc3af998fb1303b7faf9b880c5be5f11282ae941 -69ba505008d09c8ef69783661bf08621fc66fd8ac23aaa7e86828a00f6c3c350 -e300c66d8b9a934a03b643527b0ec23abf84a00125c6795640c53d65984055e8 -af1cca1ef6e73ff690555fdaeaa5bd9f7e8b03dd64434aa9b788248d9bf477fb -1539184830ea251a4c567762209740dc3c16172f0e73155468005c4a1fa6611b -743fbfda993f79c9814d90289f2167a0e675135944076d702c4e9c44c89a2f62 -53a41c53bbd7a41667fbf3bb86c342d02d50a7fd7bfca40c2ef9931f6b5bc25b -4a9241f32146c06f0aaff87552388a9520d1de7d9511ee4b02c0a9011bd6758d -9065d3a9f8ca2d5897be7ad3e0c13383133be215ac55ecb29bd97302823a54a9 -88c686b7e979289f0fd215389bde389222185827fe82a912438f1d78fde1264e -7b2fed78f67022ef5ca27bf1b449537abcfbc3004ab0845a969c52d3f4d8b2a2 -e618925923f70bfcfef1cde6157a03ba86396ca1156b98f5a91883d821781ad7 -0caf360940cede3c2a4c29536d8e18a41e196fefb191d27e26a4a0a141a4737e -237c99d4fe3710e0c7bba050db3dfeef6554ca5802dbcd60b5669cb6763920f8 -b49957341b36b96123f446bbed7f71a35b40808968f2d5696a2f2dcc1221d119 -00af15c01257ac5653e3153a8f110052e579a068f98c7f9c8fd54f66ac7d47be -2bed6fb56f39841b3ca67228050321b37ffc792ed2273a8e2b75275f58ccbe7f -eeeab27311db961b53ec231b361fee284ff549cbb71330c7505725e564472e4e -9853bbbd643d99a4f9404f5453ef07063f69c881fbe5b6df70f4884fd11e40a1 -813800fd655704119f7374320689b8388682069b9115164e70df68b8b8efd30a -fca84d981402d9caab679308dd00f3d515d157ee1254f73c9b66ebe7d90a2a7f -9c0b94f3aff2639eca6327778bd0bfd1b4a822e626f92f8010d0f8ba3c8034d4 -e9a710546382d0f4069a1bca6858600c4077aebbe651dbb1e5669de252407674 -56017d11f1ff1a76a4313e6032eebdd96819757d1e9a7efa2ae562712087891b -c88daa8cfc4dd031fc2124a685e7792e5c9ca300fb99883cd40fbc76af131064 -6a06e8112083af1ed41f0929832bd0880dfabd4d3c5627189a02512121ab67f8 -f326d30070d6338a1b28478c65f167c2b83ecb40305c6c5f685265c3ed756377 -efd4a405a16bf53401f1f42d623ecca0316895b64352c261b5fefe05e681fcb4 -d0f9db17a4d8e68ee7be1bc69ea9deca02f35412c58614945a2a1b3409b34ff4 -f79bcd5b7598063e6ac27fbb6e9cc457f69a5036b0aebac608204384716dc5e2 -183a8e1a6c62aa1bfc21a0b1bf7f098f6e81adcca0e50e4d17d3d2f3adcf34cb -18fdbf18183865fa8f8bf66ae921175f1c623bc7798bb6fe30325591c03eed1a -84c2305a4b9a077d82429136a2fae3f601b52a16e83b1976322cdb5f8f0d6450 -924f4add3c9a87afef2005e6f905683cc623a01e961c089739e19a8ebd4938f2 -47defd754f64649f987759f2b8d0e7575d656b872231f1bea04b83d725e06384 -b2d125f4b875e43620ca11721977e2e0400d09a639567872c5a040354fba6269 -2f326941acdcedf088b1747e5aa67864ce0746c09e820f9c8e33ab0a771a3733 -d9cd1fbba2d0c9738a447886c211a1ef67f3db36b178b150de4c27551dc69611 -2fbb7f2431caaec56994380f234eeb0ecf32517ac8ea7ef41bc26986868a8cb2 -8a7c75bc343855518ccb36c9aa50dc9162d8c9e2c82a9b6b41dce1d83a96a1fe -b15b3bb6428068abc99d384e8d5f4501851a0b1939892b342cb70c0b14e802ff -54f67d1d9fb8476ac633862adbedb832bf471b4a82dcfde3c79023f619f496fe -12949b529c62e4f5171ac81d93ce9f908ee812a9a9363d1857ed0fbc77eb416e -c0693997f4cc74e97965859135c1e20b2162717c7ed8c024be6b8227333dbfb5 -23e123e2ff34fae177b534e368d9101ff1bc212b2fd80d6ccb95b7090792984b -443f79c06d2b2f5403000f9023adf34a3901314f5b882d877428a95025bfc957 -acb6a095f654f95f42c7108f70b87b7141eafb01d8baf5622727e2de4776ac4a -7bffa09baf1c487157aa90c1ab4dc8b318670ae756ff3bf453acde40888fae0c -b65652d226b1b0d50d9957268a2dc7d3e556130cdfba08a0c59c5582ab16732b -99e4752e8a4ccada72e97bcd16dbe80f6a3cd6460696a3cc84dea297f385943a -8f97ff600ab5bb95c7ec6e1043e9d6033cc98c97e43c0cb13c3ae02581f14004 -a68b54084cc731ba2d323afeb3c521fc04bfcf679f123dc66b472f9780fb1b7e -b1e9c7022369c2747c9741c25482801241e6e9d1815cffebd0f21c3c2d8e8556 -14fb7ae4e67a769e9d98502adc9c2ee00068cd804bbd8e0f13dc940b135d8bd4 -4a33139756ea0032033a38b30a19d5951813eb06408b4f1282c832231313b25a -a14e27b380b47d9f4eff1507c81240622045a698529c1fe7ae6bc32097d4074f -ac7248120aa0532c3f54a9b274733b8d8910a9a359e6e3c0259324a6b50a0624 -53d8ae995b734e9c82b9ac9c6b49e34b6f76447012b3c045e8054cfe2e283f8b -8a95b58e3af998f01a21c5c8e84d38e33f407268dd08265d7b41322f45df50b3 -ddd115d289688a7b264d0fbc0d3f57b4bc45595d02e25e816d08c989abfe27f3 -119c400941971d6f45d935cd56bf47c6df416d39d0ffeed57c4d504420688d68 -dd41ff7bbc5dc0047f23e68ebe0cdc6e25914c50ab5b036abc2cab5f7a1458e9 -a2bc4b8e0b88f21a7e0a8f0174ddcbc9329957ab8706186036653f24d6ceafab -55191214435ddb7de0aba134b86e69124a04e5c9626d8d74ca6c789642a7bf1a -3d574bccf87add70e2233e3bf4913a7de27471d107345f0a579807177c085b0e -84e767a95e92fff5090efad57048a458a67a09be7abf4cd2fd9488e5550bc504 -052f8cb37c9d925cd6b88088220d7876669fa7caf95926f3e6095a29c18d3a7e -a9888b3b138b70dc3ec317eb03d51c00bb2ad496f38402c30d9048f1fcfcedbf -731028659716fc0236bb86268179beca5daaefa2b12e9dcb4325125fe25f4058 -ae7d324fabca69558b8a93de15c0069022feada2d89082d83e559772dfcd6d05 -8b5ae536245c0728af1be6d5723c549ae9c473703265111ed45da33cd1c81be9 -4322573f0d93294d7681c009b0a2c37a4ea7c4e7800c5ffe08deefa18c8bb8bd -12dc9bdc19601ae6d7aab209f3ddd700f9fdbe7cf53a46870fd0c0dcd64089d8 -031bf4a8e0e4b19d50945008b7b05a2513d93b25d37fb905ba90bed1821507ce -a4774ee190eb8a47df7a034b4e1fba9f099e82570ea967562b86af62eeb0c754 -07bb1a9bc4ac831d8494abc10bbf8b94b6e80bdc189a1e787199687508595176 -20d191dff0426fcd7c04cfbc454322a94f2f3d618301aa5fd81a3b851c0d92e3 -a3ea488199f5108f78d16436a18ba5501497aad36bd99aae29f6a598ab25f928 -1f5d08cc177f790a32ec9457bcfa67e3cc4369204c5af61708f4dde15db9a6cd -c761687bb893639fac890fb6c62f75078d007d2cec77a5980398d079aefaf540 -f6434b0a3c7408e976035a87e52f163dd4094bb59cecca8f831602fbbb215ffd -08a3c50b1d384511875b1e2b7eb91378d3c00ba5339a0ef031a07d7811f5f8d5 -739873ab88cad6ebfdfdd37329968fa1db2d5975990e936fcae7d3da9959345c -bd6d78399f6ae1ea9d7c0d843ba166ea7e4e7ae5101fd064c019206617ab2379 -72d932f03c8ee191a68f8e569c85caf46cd7d4c14e036d3643211434eca67863 -ef5ec95088ba47d3e6c2744f3fd6570ef8793b71fc976f4ad35e4fb571d1c856 -992e18bb3618dd6af584bdc69358522357751dfbe21666c34fec8f491702c88f -5196ef6a92e29cab4b9afae6e60ff3c84487786320f0f6170e221abe12e1c073 -d29dd1e83a0d0fe4c5d3db7ff949aa602950ae14acbf1bacfde7c2ddc56f1311 -e33ec4c6be2044d6fd04d18106766d44495f73ac441d68922c3e9bdf0e954009 -6c0fb6fef686ac7c59664e255cfbf8d7958f398501367dedf0e99cc0542220ac -8a6152de632136f6d0b3e3b8e9c8eef921768f3d2db09cdf1c7e0a2872d3b130 -624879487969a34403206b96ed7bfa9f4889557010c9be37c3592993c0f44dd1 -7fd5c57bd93b563686047193d5f14d9203da916e22fc83668301bf756c628df8 -5016403e57a7d8f0d441091b5f8672f1d2bd4faa42182c5c087afa483f76cb5b -2bd61b1d129102018f85400a1d36feb45ab10c9cb2da5f370d6a8e07538e1ae9 -58bff59d144f54439c8d58498debfbaa37af934083677fe4c505c6397f47cffd -620fdb2a7bd35da2bc9a8510ac2acdc13e6f5cf7569c726a3dc3bcda959d3663 -b4a0010ddcb796e74b2e25bf52fa0e04bc813ab2553cad5b21f86cf69a043f9a -eb9cda04a2fa6cda34b055d85574ec9bd28dcfd76ba3e1962f35a8833275bf86 -9bd81923c06cb58f47c86eaa415303e912e0b9356824963fead43d7e95e5a6f7 -293aed17a670cb4f23277631f4c76ed9e83cc3a98d63a1475966f2e5c42bc0ea -111da2c3c83cae833b0d129ff3d0f43a44066f87e15b0a34a822b5b7efcd48ea -a0f59844e9d629bf566c159ba930576898cbc990601a6cdbe8c76781a0e7b6e8 -1152618dc695436262a5f6faa4cde7c38d1cf2581d9ea6f2cdfed603a841d1a9 -07b42284d1f883a85869c9cc511444d72466ceffac5c877183881c104be411ce -dc086ee454155a7fa2fe549e34a9503145e06dc953874643c1e026fb030f98e6 -f95a97c730f6967b020e030025294d7f7981dbc9f1cbd023c187490c4576b8a4 -0bb3dfedae11018b5409e107e420926619b054c57260c4e241a56cd1ea97f696 -c7c74baedce348b36d804e25eb0cffa5dae794148fb0f1a534d216cc886afaf7 -e0e1680e0f5824af3620625ebb28e34906489436c41c480fb716cb7150600893 -af244d1fc244076d444a3a276a9f784a7ec8bfb5e664dee91fcf72d67539ebb1 -699db0e4cf51a0df881e621a2d518607acb69029994f17bb498371c6b55bd57a -bce6ab9491eae706336bc41519addc0e0c3ec14feb5b6b4793ab1edb7af98cdf -653e1631d7cdccb2542d9d5b3e2ab35e9b433bc4adfef3a61c29b51f703a0f18 -0537394bbef86f952b2296c37c9b4a3981cc1ab667dbc9d8101664ebf685b406 -d10acdf0f0f6f6d7414c88d4bdd47226495893ed6e278236b823f9b53b7e9606 -f9c77d67f32ca3011a0f3f9d925da5d7d3684e23585424f1d2c5749917ccd585 -f46f0e537cdd69d2ca901b40550d1f66f4eb5a277d5e0f35c6c511e8fec1a8b3 -5465d97f3e6fa0ef92d9fccde9cf3322ef4cae69c45e1a632f82e7af9e53b304 -b4161cab520fdfeef04325674aa98a5bc60633e1dcad4a8254007fffbef90ef4 -52c3273f506a46c78c45341e557f6ebfa502ab8c0255e8594b1ff5e6aac2a6b4 -ce0a979c6527a95917297730c83b8641576d886bb38514e1905f0cbe86e3cab9 -4108f6ca3e8872d1a72107a4ed1a4f4719ff2b13ec51d5b2e2d6c5923ba77acb -aab7dbaf75c3a906181a0538a5928e6e1759911969bca395616cc416c4274a8f -50f4bebb60da583dc3aaef9dc772a6c395fc750cd43b6e4d83b8ebdf0537041c -21bc1e19ed4b3657a9ec8d030966b40266b83094d1c0d13e2d7d0ce0f6736360 -9e37567ee9b74ee0a9d9daf699b25a37c45cdaf9fc6f620947fa0c9309899d93 -b88bdf7393aa676d1bbcb47da0003423d0df204e9271a5df1af3a11458f1ed8b -dbd7e77e5476eb4f751c5239c98003344c82d6f332163d238e93d32557333742 -52ba9c3d1326f008bf93ee2778f57c11c0ec83c355d84f26542122471ff2a37d -ed92b9928ca95dad3d622877b860d80bd2db29208bd32442e8aab6fde632833a -7d01f641b0d56b73ba3e7bdf365e401810ac785d68e69e9df94d26cea3f1c323 -9aabd70ddb04cd3afc4e561c0b88a907dbefe63de2ee3ce592ce8feac071a3b2 -bde3b8541c378367a4963ab7ff7a4fd8b02443336d981b169a4facc4d8ed6c95 -2069d1eabe7aa05e5e152f3754264802350b4e9a6f0234743ff404dc9fcd46a5 -3ae8a0ea707e53b86351389f35bfca0d7d57f47a1bedde1b70f815cf1fef0e24 -8c9144562f56b73183ddb8597e5d4cf8c7cb089dac0af7a9896c9a2971eba344 -b858a81a210fb080316e60fe88ee3fa382a74f5f00512f2016159c274f41f67d -fcd9b3d0de01ba4c74f677e03b945b491b6fc9bfc183ef081b829828faa2abaa -35f29d1316ed09fa67217849d417942234c09b08c990ede511ea03b1299d680c -1dfb99da9c2a1df3aca243f017f89d640639dd26c1937635a4c29bd2d99ed639 -53db076362ce94830ad1a590980819edf991bb8d17242dd65da07288b6159af7 -2af093d4c2f0c71c813df498600b99a14d7c0e21c6079f31c57cb5d0e464573b -ac89c640798be879da0e6cda00d4644060e69eab9dbf1ecf6e356cfe4f47fea7 -608a81a7067908dba67ba8c23b9402668de33d90dad15d1d7dd5dcc20fe58e27 -03645549ffadf8f1e2d37607b84bb297f91fb72ea1141fc337ce7836ba53294b -e642f4c9bad340c712c3bc8c12a3ecf4e7c685a1f692a51f46e406b73d1c766a -c5ecb3e64cc6ba408c52c664820c40d8b727140752623ba0ffd152d58ffa4893 -70e39aa85a65317e379c0dc18c474cfa171c294d0d8a7c8e6f7f25ca30adeed4 -22da01b39929db9099b3ee2ba69851b01ade4c03c60a5a9af94a0a6985123e20 -2e457acabb88545d524a1e878be5ce0a6194ea9fecad8704c6ef3ed08d0b058f -2575bab149ccb05c6235ea748bcdfb0c21f3b0824aa3c26a5cfbd6905eab7838 -03d41b42420ec96db3cbcd59a37b9856efcd3dbf247c1075c1bfd82fefa84b08 -4f0a369c1b66f6af318794f8d8fc9980232117447617b51a3d81d1e09c780ca4 -02f2338c8adb4bfe1f21122235f7f82cd20f569f26c5a824e9c6ca93df89e56d -f0880511e5d652b1c69b0466cf45a670607391094ff35fac107515a3f57d8a22 -67d27d618073a18b4efca6bc4ef09fa889a000406677a1c9690b11044e483a33 -7093ab67b43ca73c16033ff16081c693559bec99e76ab5fe98c6c52239439ffc -c0f5e6f59300454df1af0a5069537fcb84037db4fa75b99d5f540a064cfe05a2 -bc9056038f48c8bbf0c45a38a56fa2e8fd87c3ba7bda19ee89b4c137e27404e8 -6b7d9632d64ab0abd7d55c7c3cd92191b9c942aab58f4108f00820f44bf0b4b4 -87022ecb04303456d7c5395a7e47edb94366810260a4b0e29ad43b31858253e8 -60fbe01a3947218eeabcd198bbf33e01fbad8066b12c31dd8187db3a1a4108b8 -44668de8caa9ba9e4a93fbe115a3a13d95d3ed0a69337dd09cc5af5dcd05703b -d9b81380a311c368c3f8a03888492e2c8217c07812c0f450a70c5a9f35a041e8 -198eea2c046b8817e331b93d3d1435c6e32f36031bad1060713db956db3abfb8 -7cc350a5a1e260bfb4d8808c1d9a6514e3bc764cec31d6a1c76f11c24b1a9683 -948b82ed945132f5f6ac84cabde365b7c35e8abcd5ebd8f1056c013f07ef20ab -8e3be119374be52c34ce41d7b53e6a637fd3311172b2d076b7347e4ac1c665f7 -8672193386f0fa918c531886b266305a76a034e98143d4b59c6f6477740656e0 -87a2b7149d0fbdb907dff5bf17a4a3ae04cd9a22a8a2343960fede26e90e201f -293dfc94031fa976a5c48d05ba792baa8ac2fdc639238601b490a4a2021c4390 -f4eb8cdf25ad41ab3c9fcb10c580b85b4aa8cadb0ded02390e05c130e1328ef9 -4c39c6f17f3e9da3896593f0ec5d99ddede197d2bf2042d2fe45535a5e12bb56 -6e15664a93abea4a69ef5dd3bffab98dc3622922a964da37b0f6e4b7cd1e2ba6 -c642426df1f8a714d49b78497c467c64e07aea394504decc5ed7166330e0914d -37f4d3cc91e589678428a6439ef68f1c85f3417cb48231b422215821673475b2 -5bf66c5f385fcdd2f839e7ba624a0202da091259bee81d337125c0fb5e5aef1e -546ef32c50c3718d8ed84f52c052f0e20bcb99845893606b98288dc5942d5f3a -0298d66a8f0038d9a53cbe7fe9d59d6dff482b75386cf470b97c31b306d37952 -92c60aeaeba33c45937e6a2b0e95a3f76303949983444d2de617ec7643ba0f08 -c720a0860aa8fa45da3452db23c8d5fca7a5ffa3eebc8b8ba7083ec75123156a -615652fb9d241756de3bfd5124b938627720583f901e4989de5f8f7862f94db4 -c19d6d0d3445e3612f74a480a6c48cae649d508de54e106cd7e73a14fbd37bda -ad81f673ac72835f34d7b56816e0ff406e07086ec3b676085c4e3b8e19375714 -de37729d23eb0f55306e88751a636770834207f0252cbdce23f4c8e1ee9e0cf3 -79a88288766355da37367a6364c2fb0c31cf954e8a683779f6adc43c56e2ddac -1329048891ad199059c41f623472a20cd7a16f24e87bbaab069278e61bfb290f -ba081e1e921b37c1f3414f3675836dffc269f29d23538ba0b6b6aca888c6908f -ae354dfbdbabbfb74e39a81fb3e460e7703fe3a53a52b308b7ed196e401e0f26 -cea7df80444876997b5f5c99eb2b28639fecb536f827ab93e0f1c48e40acd51d -841b11fc086d0758c72fb91a5ea65ca66225373143ed0077cd61917f4dc44a5c -916b82cc4b714dfa3fb533b091618a04d7d860c051fdaaaaf4990418a65e1f8e -989a0b0ea936ccfa8b9c767ba20c976499fb52157949a9068192213278e8df37 -4417e1c386e4ae3f59b1b700e49d2e35b752614b04dd884b061e345462770d0f -9d829a7def9f2e6f82b89f36172d9cfce19851ed506e06c496a6a23fd7548c43 -b4a14faaddfcf52c754f3a35dc854a55e0051636c266a4d934897ee3af1236d9 -eb20f374f96c252ce5e4a7934db596023afd0fd420df3365169ed7a4048b1e84 -81702d31972ef546aeed2700e88824e12601fe41ec5253e8d7bc088b874a71a7 -a12827956cb63d4f2ac6d800e78b213c324fd385a83707d62dca6c351e78d18c -9cdd0af2bcc498fdf31d27b5e387efaf2cdbed236b343ea9179c5e99e7a34a76 -15f2e3065cf561ba81520f188ee44aa6549de66b8c6898cc63c32393fd360741 -9e7326dbb42cd38eff7aeea50f6b939c305582db6f772308ec1e5dbc1060f50b -9e2ce61356256b91dcd7ffb970b2fcbaf33f700950247f29f5035144a55aa13e -2190a24ce359e284d4d69c500db7fbf31fe129678e2d72883311f165ccb909b1 -dcbf4dcc325036356290d2e3af9052db9cbe684cb50e86e962abe46dfc691f0f -c08fd6fdb19091eb0f3439effda71d3d2df07b171de8adb64e334edaf149acd3 -76336eef29b5745dd10aee7acad93dcd62c590df2c88b1783f595797238c928f -598b922e0ab9fdf5b9edbd44b35b1d41e309325e34d7b1525da510cec5d7d291 -93ecc002e4fd541b3be2bb49cd741854615603c93afc734f1442b11a6780fcf7 -b7e7b75837dffb8ed245fe85cae4106603b7697f379c6067737c618b70ad472d -73f4f5ce2602d60d723521fa84d12183222b00a139e144f2d403c3b22a253a36 -01bb1bbe3c676bd04628119f7ac8c2b93d02e3cb864a6ddce16618d725216823 -3134a298c911b4d80ab931524968e516ee1632c42256da451143beae6c2ec113 -e691be5f54b06d4558aea1158f9d5053e36ab2eef6ea7e06995141eec9434b99 -76981d7abae3d5753afe5589149c28fb9705c82838e9c3a1acf8dbef47e03227 -20e514daea8fde9f3d7718dcfb24abf266f2c112c1a9904d595bd7de7bd2362f -89701ce44d935e39920bf19a11d8eec055c5bdc70e62c6ecb36762d4b7d225e0 -a61bd51405281c20bc997647e69d51451225d0c24356af318be3ee10c5ad7dec -02fb48853ee708489bf2ec57116824a54176ba85d6168d08a619c862b878dc3f -467f7fcce0751cb433bf323ba10816ed10d8db8d6832d6818ffcd5069147f652 -8e7b44b5ff2ef169ee7c9c0ced05340813e4b4ed6a1ffede2bb66b3fe26a86a4 -ee6c83d862656551f13a56b3c58ef1fd0114bd6a76d09184405a75549e87e4e3 -3b9c6d419a60ceac5de1349b704628a715ac6987e1c7491388beffe039c53ac5 -a9eeb526932f1bd0d57b5b21e2a02bbd40f911b5da88a5ff8b9eb2e4c119e342 -19834c4b2378b5031c4cc7f7e3eef6d4d1a041e26c4f95e6b9a9bd0193ee3854 -8c092d746ca2cf1122f85dae645beb75e2d53e5905d94df8f4b3cf6b416e4f0d -ded9ef543b1503e003a875e0e67924974e20377810ea231d444f848e8aa8d8b1 -c8932ace417c78b3ad0b4ca4ab38b18cbb08ce8bc08c0d3b7aa0b9c308163f8a -7e1969fccc3092f6ce687c19ff401a52510c52a9c5453586fc78b1b1b1b64abe -779d7756b5a3d1a9f1b6d2b12409efc24c20b2062a1d31881bdb3ca8c5425132 -8607404e532a58d30096a7f934c58b93cadcaf93a73aff333d3df0a77b98c00c -02e93be0af063c9195fde065fbac95d92a03ca5ebdf55ad5f76c559232db9cb5 -a4b08d5c34a72fdbeb1ab6f86661b100f8e4f8d0c9512e51bd0746060ea82eb3 -b592fff49bceada8cbdd60fd669d947482068d54d9923fab26847d7656835bc6 -42ec15e8557a0bb79994ad670e2d45d240c5e80f0d42d46b83b7c233299cbed0 -33b126f5b1a424ff16807975b273e540c5678cab5e01f6ea5561f87cf2119ea2 -41ba4397f9e47ebd9878e97ea2a8f86e0d8a84daab594385e7b64f4730cb24f8 -9d04af4d6f362f6be2fd1133d416dde82b2b7b12eed3f8952ce56b94d225fb20 -457b8b765385173c7e5247048a2c28ee49ea561964787c88a36b2efb1f6b469c -3e6122273c8d8a67ecd79c9105c9db6e5fdb5755b5d1764876273d2265f1cd21 -2d3ef1d1238255ce131884e6177ceda204e3614a0c834b79674bf0537e811a3d -9a64fd4fb998414b988a4b5d3ffef13252e4cc0d760e4921f6881fe0a8995bbe -3531a62cc3572d25c2bb9d81a5d87d6afd659ca644e99355fdca71acbd5f0895 -8925af5784129704383696510304f31ba41ca819882d6dedc9e22fc2d0aed84d -5e655a26ffc4d09a915de591d23b003e4443885e9b30d51e9ed28a7355ebcae9 -8b448a211736401c49adf53fc09114d66dfe4714c902252da31b8d67004ef79a -630585673786622a2c7bdabc347685861d7a9c269105dbce7278d9e08cf5b701 -538e4d3eb30c2f32f92f505a96a946425fd88fc3fda68048dc42f9b4c1954ffb -3bab24852a266652ab4498c77eb0ab83d1d30463f91acea571974b67001dcc1f -418886d5ae650f328cd3cbab750c4bcfe46d4e5ee8de5c1bad9b81d5f9e628c1 -7a42e517aaa4622b0c9faa2812bd93d0255b5da46483a3e5649e9866f4d98162 -95225d3ba2ed93ca7dd83e808300c51ca5f94ea47b424bc81d64dc87fba6fa67 -ee21b51a255298402beaedb508f9aff077bda0ca161dc8dea6cccd5b7d038901 -cc1c16283ed4b80541ace9909fbddc869687a2f9b7ff10e9fb8e29403178cc86 -c4de3177a319d2729485f37ffb01fdf5abfed2db975fa5285e780b76fc41eebe -b675ee8949ab6bf9e52e8bcc14fca3188e87727e24450031af0ae66e0b7eb450 -022e2e36a028f28dc2eb256844b42f70bf1508de041e93f215ad3d4fdead1e48 -3ebe29f125adb652ae9a6d5d44237c2e3a97f6ed45eda51b2d8cdb856dd521f6 -9cb87df4bae78a82ebd9b276f4d866c89e254dac840e90ee808dc1dff180f434 -aeb656be8f3de7279f731b333ef5407ca4ac98bbc120fb9ac3dedb795b3f3428 -a51e0a7d2bea5b46912472b761a21544911922097ba38c02a36db7dc4a9dcdec diff --git a/src/REVS.txids0 b/src/REVS.txids0 deleted file mode 100644 index 9e71726b1..000000000 --- a/src/REVS.txids0 +++ /dev/null @@ -1,5650 +0,0 @@ -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -error: {"code":-4,"message":"Transaction amount too small"} -4cc92748f84e1bcd6595910560318c740af74225ef99fa2fdde8f49848abde1f -4eda2204a28181d1d403b60f219b71b2970613a394119493dda994481b8d49c3 -979dc550d9872079747a383d632f71068bf6126fa2c0857357c342318e92527b -ea202f6bf0e4407369365c767bb4b5b0e50cf9080694631c0c0db2e8c3b3754f -4ba4ab3ed6ea2d5be3301b1451cfc9bcf758ed3092a7ece135ee08fd52bdde2d -ddd06b3711d31587543ae62560ff38807f9051cc5f09dd5eb01770aca6a11bf3 -923b6283ebb97e89b0d707a1f736784ede13a1ea26d7e13243bb842cc7687518 -26fa2b01b3aadec075583c6f933f7b2e74c2d1aade8fc2d27e75773a6fd88a6e -3a912f51a0d2a868c3f61fb533d5d073d28c5047a13365c1c7765fc079d49afb -b5492f647b1ba36ff1c349e94f64e09fc868dc78a249121c5a6875e6338bb30b -6e73503c82fb12fe27d15504d1e06ffc0c638b60aa4122477d0ef28bde25d897 -38dd556c3edb4e387a566e9e2e78e49dc29e5147775674bfb0c48f7cbb83b1e7 -cc7c91175d5638b76b9b9d0295c9d005788482b64d7ca0354e6077baafced3b9 -77cdfc003cbe52c7ce6a3986885e3d9d1ff5c85fa75a527b5201f2490c9c9fa3 -8e7da93230856257101cd83571ad34553731d38a42063b0292fdc492c3118223 -4477c422acc562989e40a33fcbb3ab011e9a0642c0485a57c24913e8984cfd7a -a48d02869d904e73bf06f31c94dd7cad49244d6d2de5debc386886558908334b -78573e96723403f9baff40938aee6c7350ddc2ce71ff9416450eb93cc046b9cd -93728c457a6095d01ad863549dafbc9ceb89fe01fd7dc05c7743b2e2bb1b7f5e -2852bdc6102d2e04f82edac3a2f1dffae18d07d2451124f5790bb92f194dce06 -f686a7a442230ad7498dc491efc4e3cea04f43017005d3c19fafb5ae9ddb7719 -db6c19fa9af8da476f1ca1d8762e50d40cb2f5ff3a2b1eb3ef5fed159cb4f78a -f6a90c866ab4f91eb8a0d923ecefb409b0703cb4f55297ec4cc2142be2d38881 -fbb28af14b7fa464573ee647cfca984c81555583c7dd24cfe31910442aa58a7b -58d2e61c7045a7e1da665c40c6cbc52f8e498be3e0eda557448e481d637098a6 -a1276cd899b1b749a196fdc6d2bd88a9f2ab7c3ef06fc031a37be00b64e06841 -e9b40cfb9e62d7b6ef21802d167944f18bc315bcf71700b6ae853e76067c418f -d87e9208874f6a155b3cdeb25e744be3014ceee4cf8857d84f86acfff746149f -623a12af447de9e0f78fadee21c133def6e1a87a2b16b922b20a5085a6056eda -85c65a36f2e5fe4168eaf3338e35afa05d1d0676f576328ce077099ad3940c38 -1759b5793997ab1c04129d925fb7b015705d9962b106fa7ecadf063b233b371c -49e48b394eecce1250e5d8958543f45f1409f4885f3c251b6aa8c0a282f712a1 -dae5fae73e5cced5915711aa774467cc05425ff3be4c8b569eb77fbfa6fdcfcc -c8e9dd1c40adcae8ae8fb1800017a76847973bab37f4a9bff52f236ec245201d -8234408128e3153876c6f96d90a03128ee5fbfed0d266d9d07b308cffbf0fa3d -205d8b1df65bcade1a4fd3861e9ea7f43c36559c0cce6e1f8d79528803f5510c -7fd3a0c5a94fe5d6c7980881c18afbf585611da41a21acf25bb71cd1598e58b7 -86a04100492cf20b97f6e1e9856342fa88191e783d8fbd88ad523ca0d9faf4f4 -ab5fe28417383d3c91921d6e786133c2da84d04d1eee69b18707bafa783672f8 -5291eca18b8ec58550f3d4657f208ceff71b46a46de76ffecff845d40f08871e -76fde957ecfe58274cd166f6f0adc851237866ba7bec89a1d8fa533a67ea50a4 -99f92c7f42c4ceb81e3f81b7b9f7f63b97701f6d161a04e8be2b9006f37905ef -2aedf6dcb191df30bedda717c42305c921dce284bd3c907948d774b14e249d48 -6621dcb301a32460ec1e34068adf13cdc86d26605bb877099dc2bc375eb7b972 -824bab3e6b0a372edd0877e50ee688aa7e8f543ff6b60ee0039b9c74951d7e1e -28480c9a19cc974fd70e56b81af6f77f414f7d7ed7da4c44bb9dd6fe966adc55 -4b31921194e7cbc7fd4acfb99e42c0662c3dde7bfd5649ae4e67307464211a60 -6ac3b3a98feeba90187b5337c84e88ec41407331d7eb5be0cc115d6e01a916fc -ff8dc276f9d7540b9c50c2e665f374f1037d9e75d0b6bfc64a633c1950b403cd -b2751e58d6fcf7c368d391d31af59c1f2ba6779d164948b3b2f80cf6c5d77765 -03cdbf0b2bbdffdbd0e313892df1112fbd24d8b3dbd2fb5c6630d300ac9cb12f -ad340c0fde59c893d6a46f5abf79e8fa13fe79f444a55e211e7a43e884e36e4c -d1d4ccec85553bdaf2dcb5872b373fd7cdcbd83909956f9d06acc0435b802492 -c8649f21b65aa3f2e5ac8c769ab1f2367d87f7dd9398dec4a870fde0fa675f8a -4524fa98c46a77c43b2cf49ba4fa0a4d3d1b1b23cbac916ca31451bb09bf73fd -f4271d05a33b66d79873bb05c3a7a63ac7a8d1ea82ef95aff90d1ebb1437bf79 -4c6ab27cec7dbf87e0f6a40d6135faba120da5f4199637799edeb018d596a078 -79722fe42f9be6e6765a4ab8d66a0af7c628638062a7b0bafc9e3b3974261022 -04de7f0748987eb12702dd7ff3e70ccb5275405c2c08a1bf3f12d3d9cbbaa68a -20632a7a713bc0aab0beb808cfe8de431c10e0868b8c1e6d501a9c2d642e7959 -a336594b992b6678bd0b486b31631198775038eb1d8d741306d397e1cbec25a8 -7a3ad41459171acbcbca28f50b97037c72633db9ed9f68aa50b87e564d5e2609 -9d22daa2fe23446fb7e9fc2f27dee693dfbe95c94a15450547a5cce040b0874c -c1c791ef93ca830a3257478dadd4c47a514ceaf90b9cbf6124d370591d45867a -9a3f0cadd6e34f7b9000e30bd1baf5f7ab34c6bb1aa2925858cddca962ef7502 -30ebeafb1bde4a2bfea0917291f2a682848ada035954f3d9e8951321055f7643 -02b098de7521d0081ca026cfc3be28ee016fef648cb1a1c89dee87a70f3098ac -2c34dec34d09c97745370a7b6dfc997086e43f9338887140476569a1d052f6ad -a500b3c5d176d54974d3707e387b7bf135249676ce63a52f37f228b81a6673c8 -7df8d6754faf027a40de3b538ef33acc1d2094df5b98e4d2d57deaca121d4f9e -8fe7df1b51b3155a16e1f094fa16869c4719be49cf99f285df6a15f8ebeac124 -61d34c3c9962a5b82aa0d4ba477c9f8eb301551e742aebd60bd5a018c0449b36 -e9de516a6c19187283f248f740a9115b3b71755ac8988c82f2c8080bb8b77a0b -64ee052342aa4608236bbe6838c897b0e82706fc0e4e7cfcdf3a5bb0a4926090 -7841fdfe6186619408e04f00f9015ee984eabc59b66f0866416b9a1a577f8c5b -0aa62789892e87492dcee1def311b9cd736a2c4d21b2fef21770640a329fb836 -8225bb6417973331875d816c1747e9c73badc403f121a7145fe9e41a85b20f04 -ed00945b5042e8181037c8ad36d6a79fc28975b810c5e3b6203d4f4e4b33ec04 -1192b61ac2cf0fa71e9f27ed2ccf9736aefc98ee72c330c57dafc0eda3bcf8b8 -d42c921f9e8627e18c7a80f8f3b1932123ee7759542310757bd66c11c32f9e59 -02ed12185bc5f1e6aceed33ecca4e5914bf7dd9c8a737566c4aa792e7ab4b3eb -2c5a56a262b8f68e6c46e10b1597c35bcef1e937ee361fc297bb05cdb3245682 -f48b211cfedf7d995e6cc786ea78f29e16f24f5e690859e55a964541054405a2 -beb4c7e28b5e53a397b27fe13a3f5c58db0adeddaa799628464812572ce68dce -87c8b10d79385395510ea818accb1619eec7792e95e8d0af95c73d219d8c5b06 -68e6c181203e58b68ae81710f5033e4170d43d9f16afc1d60b74de9daaaed2e8 -fb7b3d27692b5418a9dc67fbf3e3e851389e6b6bc653472e14658dafe1d607c6 -96b6b808155e21eda9850abcc734221ae46e5d8011effa9f00795b8e6ac22c49 -505651d7aad349ab025e818437a820ee5561200b6b3fefc3a7127c4bcf034762 -2721db3061d1628fc52f253a6b483504cc7a81d9e95a8f8474ad244b9444a681 -672a2285562b91461ff05c879fd6b124ccc7bcb74e5afad9528dad810ea856be -a47cdf9110e6329912edd793c96f07eed7e17f5b64b40b9fabe306f4a17a06d5 -d06db9e13361e4126edc0d470c18ccd63c81251c37c987c1a2359d5ab6ed79c7 -7c133dc6e24b5b99603d56028c0257664705dba6fe7e5a38a27230fe6e4ecbb1 -2a696dc1059a79a6cda15c86f5ea5e0f304e46a2490565a92381c699e6d8e23a -7f06b90fc4dc50591450b32501b0a5bb191ed4bd4d9c716836ed6538fa8f2da9 -66735fdea51df6945afba0288e432a6706c4c56f4004331b36e616356a8bf9a1 -c79f0945085e1aea74ae82be75a194527325d8823d33d7bbe39c3b6ee46c6edd -44e922c1f849f357df249c2d86d60f6637b55123dae704d9759d79a35c29d7cf -efa85576133815eb6da1985e2dadd9db55c40f5c76a14238d8ef2b49ce12dfb0 -f747dc539fe67f4c7eaca254ba607b4500c55dfe6e87c5011b2fc4349c507621 -56bf4a4f6a5a842abef5175d14aac44a7b9c06771a408a76ffbb7c43a8109e67 -18eaaf95543947f3643d6a00e4512971fa49f1ae7093b8493c568c60e4d14d7f -3b521c0fa0a3272fe2554504a0547c43ad11dde520c3bdaadaabd333139da5cf -900d4c56eb105f4f5a4397110bc6a3d18e6aaef8c6a5c651de03d527004c1dd9 -26da28ce293fa3854d09d7bac99e6da823dd5ec64d9f10646aaaf7f81b3a4ae4 -b29795bd7a1da397c47da30d26bac83e196ed126d4a04cf94b0d48cf75ac306b -d7927af75fdc0379282166a8f6dae1352d80d58b9dff24cb4ace3778d14d6f17 -b9a629b34962bf64a3ab1b5a1b10b44461feae90c55606b936b30427b3c751d2 -45eb14c4cf3398edbd031d6ea19bdecf77d699c40d1d5fa7c24bb7aa92c1c4f3 -28674ab5c8d595238000a6b2872240f513151b02be7368c01ca60c4d4c17bb1d -85d44adb6e132e95c4c436f5b9e372c0e250b1c5983788c07695a34d42113a01 -32e9489ea4328813f65b9ebb38edeef937602e261e075453b7092bca6362e3b8 -eb339e8e35775162776e9f868c12ba9850c9156252d993a5f6e63503d9212a10 -e691da5739a820058bc241b4ff4f58484a58770d482a8874201cf6799c7f2160 -22b13555ded0a62281cd1d9bed0035300937c9250511d9cc8c6b7cfb23f6f9b3 -5ca8d28de83ca90cfd0ff6e0baac58f9ef4e9c3e300660f5b3fb18d21e9db88a -c57e683568d75f5066fc038492d12ea97d6d859bce8a501fc0fdabedf3d2d588 -88c7010eb8e04d42e15e1d5ed07d3915db57ceb76fb29b82cb28a2a3301c6dcb -e1f4c88b1b35ab004b60765a11a75f7091639f25855cede1f25c84f6eaa421f6 -541babfe6245c968fbc0a1bfb47a9ac505a61921303de75bb363b20d4583c697 -e8e2b4d794c4c001dc7afb32088d25e171b4285c3479770c42166a80261b1b5a -aa541d243aba802f5658a0cb1fe47cd9b2cd639f34d18d7f6a78f8d71d5eaf0b -3242fd0b8d48a9e48ddfb8876a733b08d43f125e8474b5eaeeb87184f4c2ded4 -5442650f8526e4eecdca18cdc17a5daf47ffe5173fc262d4ee8d9fb84269a7f0 -3f822964edf3b137c5a18f7bb2539cfd85f588d7a6184dce96d612a3bf501c36 -5106688ef5bc6ff4e2c7b58e20aecf5cb8408e46b55cc43e12db102d3687bbc8 -3b34fbc7c3a54167203fb14c9adfe753760be9ff6ff271ebda14efff1377f90b -96295f18000ae61aa6dbc049d07394ed4672ffca51b555915086dd47c4605296 -1de1de272549957c6f39c4e489a461acdea46ce17deeffff61a4962165c28413 -5617f94dc9f373ddb22c5e4ffd99835f9fab9b2f5e71f98408e5076b9ada54a9 -dfcfa2e09b928e3fb702e3bf5d832e04d9fb98587fc5aa4f181ded3b099b4f9b -28ef84175e9dca4ca5031c50984786395e160d5fff8fd4dc4de2bd25054a27d0 -4fda708e30e98cb7c9d36c2f3fcd7e2cf942544f8a14cc5d518252ad91c27970 -b9502b6cc2d59e792b457a74990b83752a1cf9109ba4dc0930209bab0cd64dbc -1089143bbe362fcf2fb92e0d234c25bf3772551fbb6bd27a0dfda22413859b0c -0665406732eb25526ea5f10fdbe9df6044452926065fabc1d3e58e90e3cf9de4 -096d2a50276ec1d18e1c298138ef82d50fbcebba19ae5efcd0842cfb4a48cd42 -551170577b770ecaf2fbf6bcf8bf6ab5801a17af3419362f734c70b9fa488e0a -30f88191307e06c3d3e33b67b1530f4ac77731b78bba898798a5ea59c42a85a5 -5bae034cdd233623da6da71c5fd8eff03a4212ec110da3d68a089c27fdad8c20 -53f8742bf2fe396c1950940e24f9bfb3cf16e570453b7d7156312e856e6479b0 -468308c962dac0c431dc96227ab8530f85fa7571af53e9fdffc392dc85e53f74 -1e9e140f2238429112f4468c5fe54094250b6c95bd0e7c322efba20110503e52 -9c8b4ba20760ae1bc6f8f4cfe1a228a402c996303873ee886f467006e240dfaf -2b992d3887758920d3312d8a8248198118522cde09f04c1dec17a1cc98d26356 -f2143e3062fdceeee1177e679af6ab47bdf3249510a22e77f4900764e0b844f7 -7cfaf076eeb1c87b0465410847aadef37fc73cb89b1cc750da1987cde4d3fec5 -555ba4a8d00cdf0e893a25f8b5199818463230b126b172c89036e3c645a49cfc -27f7f1e40ed9e1ecae2d88c5dec27716ada18822c73957dd2b3cc3941bc27ea2 -7c66881f5493d5d31f775ce74ec1179419616587b41aacdddef33a519a106e0f -731da2dd8bb50b0f7969f9edcb23afce0dbbae1394b064389004bddfee9afce2 -0ffaeaf9ad784e4238b0efb4b0380a03909f22f6925a6abf78874384f761358d -ffce53f8dc86c9b4ff70e459181cd79ece94e9ce440c92e656f09afd7cc88614 -37ef9db156a6be47696afd50dffd265427857ccd50ccb9f3452a2d457e099ac0 -70177d562de5994d0dd108033ad7d97a6cbaa9dd3cf74fb5d7387daf1f53f3a2 -38830309769cb241821e4900d5dd7dc5f8dbcc4bef4dc0d0e37270a42b06a257 -6d8660ea36ae7e6a5d587af682f970210832d13b642bedbc47f36a3941dc22bb -1d3f8f7b5f0940ae167b23889a45bbb55116c63979c90596faf0e51a4ac6b9e6 -4c2d804d8764447ad90eb455e1bac72451bec9fe86e965154a8d9f7cd38bd715 -e853a75f0f39a5915034751122252bb1c8a12a4ca45066337d6b120c4ea5374e -150e50d91e7e75e213d371d60951fffe247b4e378142259e304e933e37e7f936 -9266c06c662940d37f262f36140153175c4dcec0c2e31ce25e90303f015b74ee -1897aea82c6ca45b53699414eda24f69ab4d31a38b0b17d8195da52fe028a733 -81bdb255dcf5cab0188990ece92965453d8613b43b55926caefc600bb1c7c50c -db8fada385b071fa503544887df646e713e1d00e46fba3432dfe5c30700ac7b6 -4f850ba1ac0c92da935c281e972864efc076339a1706956e9dbc68a77e9389db -3448ac9bb7ba62a23af0f1e4c3bb475dbdb94648240a93cb27f8d1f14109e051 -accb1e825d09fa52e8a2f30441f8118b58a3cdab4ea928b6bc0a021ac71d7661 -4c2032d0a2d1a47f6ba3e265b174fcb778d39a405e578adb2317505e90502d19 -14f5663ccf2f1c051979604d211dfe14062c7697282e68f354af2a5e4d3cbbf8 -0b04f154878f5c8de54832818b901f6cccffb1c0fe0baed6e7a05dbcd75c4040 -e46aaf5afd332be6f537fe18028409f28d17230cce3acdb6aa7f15dcc961b752 -cbec087cefdd0f7d8624df8edf0d1e543b04fdc67d766d706ee5ac04a7a4a76f -b737e42a26d9e8eda5d7eacb2fc548ae518b97b65868cc64259d42f2ee53461f -b724ee7792cae1b9c414487ed4a831b3a4fa3fb473da3be1831c4b36a5ed5f51 -39e7e55e209fc866fd6e40c0a789eca967694127229eeae86c4af07c94e80fd0 -cff5be3c221891ba0ec7732e29b823842166d86877924ad6356afae0c46be218 -aada002873f547af22280d1fc9f2d3d00c8bb76699dd7fa1f433196bd28a420b -48ba86b9cf487d0fc044179f714a625cf1db80186fac6e64324ebdd968a793bc -acd94fa3dd50a01e70a4d6d23618ced513a87c52dbe0298051bdd67f5bfc5cfd -19c7c208525ac2ab168fe224ffc3031c4702c2c70568840613cf29468e976bfc -c7de1304fe2e283df8f659ac17d67e88c50035d89f0c72f32b5517fa8ec0de41 -63308d915c55abcc886c930d169c4afdf34f285d5ca3765b540fe763cffe8511 -31863641dcb2e9c61a5a33e32c9b314f9436ed3515d08ec5501d87e3ebcdaf36 -c59361ab166016ccde20d98e5309f9cb9c62d7f10a779c0bf253c3055364c51b -fb3f6e13d859167bb944577d1cb43c4d546bb628f770a662f198331f42da282f -c1b215b2cbe88393827dfb7926c72bc6bd208266e9a39416fe9f4e09143dd1ba -a33f059fe1b61d8a25a1e4f1a2a28f8331eac861725b3cc1e2eb2b5de86b74b2 -e88d627bd133a37a8ed95c83705fcc7711182e88d0e035a7cf26c2fd8dffaa09 -e4a9234182543c75e3c4b23969c0e1f819648dfe2692c515313c89d85b026967 -eaf45329e50d5bfbb288c57f9ab12f4fe8fd8999d10addd340bad1bd693bcfbd -efac25200b409372b60e4b47e2ac3031da824dfda6c643b93a51c7c8abe2a77b -ef6d28d9586bf93d4b3a74af0aef053fb37897cbcbf482d493c1d519c7f2191b -6ac428e166d32063f0a92807323584ecee946f8a645d7df209f2c09a62966d20 -bb75357e5c739006645b74313eed38f2e6d499147abf46d30c21516156a9d9d0 -2116019c7d9e07ee3932719c7d45213e98e0cc49f188741aaa7c1bd9ef7f6592 -8e5a99adff59006b4293da4b306b098957cad2754e6b1642d487c27b679ea9bb -9fb0118dacaa0de6edbcf6f4b71261a0b2d47da0f407d94dd0e115b73a4c4221 -45d6678b9d05f0d7b28ccd311bd7f8ba260d261fe13b5bccef59947977b94bff -60ed8dd3ab8a7c6800aaa122a2695d792af44709cba296003eb5209398e476ad -0b90935e5bf10288f21b212318ae23785a293dec8dfd40808219fa0cacdad9da -801c7fd353e51d73747e015b10ec10646e91390c71d2ddb7992c537cbd23f81c -f8901f4b5ba4b7245437b4379cc961f09cb219663c6e7810af63223a4173733a -db410430d45b08d6f9cd80c61415a6f8f7472b875d5ab9692b6798bed058d03b -320890d10792e117d84be83c3f7eb4ca2f7dc402dd7e09f3d63efd2e49ef94d3 -8b7b86c992c3442f8fbae5dcd5f0c279633570f1fafdb597029f22356f7f8d49 -e5ea02b7768fe080095d78b45fc18066b4537c90e42808ba9a89705b579920f4 -7bdbfe3fdd2654487ceb626d2a84fe28253f587473c3f606710549e0df5eee28 -5864fa29ccc5c999d6f3d8a81a91ef4d18708c3abf11337aa82686ec03fc0fe6 -2b9c1509b9f6fccdd17703065edd20adf6831f525af53c0d80bc5fbbdc6bc611 -0a4969e5db739f9fdd60598f72207d05f2db772ba6d486cf85a5bc540851c4cf -164722d77d21dbe10eea214357dfc37fb43eb7554f1c0ce2b453b90004e0cdf7 -952a606b1615fa5740939c0cc908b132a3c5c56dad8aa99539f5fa336ba7dcb0 -2ab914ba3bc33a20ec4b12e1568250e896ed2df2991a438d1cfcdc2474761963 -0112d8c56912adabfd294853d7b760e961f9bb883ea8b6e367d12641d1344157 -f1a29a26411aaf5270ac50ba890cc577d5443ebeaf9b1041c197219386eea692 -6e00bea3fcec9613895cb9dcf4c1bf319a357ffb138d06b06e782413f685837d -623bedc8db948e5be1693c9086233f96d6ea0b1fc11a114fc4b4c671141ba6d6 -65f2fc8a9b5187f178ddfd1a1e052f18a7cf5f8475ac01c67695a9f252f1517f -3addb068983a8ef10767776132370ad38e5beb1775491024a52ddd23d741b73e -54c1a8b7a42cff14287f49ca6e33b7b0550caab3fe91372d9654ce4d0a3bb018 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -9780c7bd1c7d3c11e0ef32d53180bb7ae9a4de9674145817c261938599437586 -2834a29ca944807d3434126f4071b6b30a5b310975a5fbe647f4d0b44f54ddbc -49f78c31968607fdfe5c75466faee89d73863bbc4765183d2ac7508b63b8f416 -c98e6273d498e44af1532453c267089c847b2f90c9f7b3b658db40f1547c751c -6961c69c8ef3a50c486b806327d85bee40c7fb5323a172cb10c4f3f921047711 -44928f062d660bfc8be6c4fdc119ae236feb8e0b2b07d11519e54fa2c7ce39ca -28e0de1a0989b0c40d73a46c8b6ca12087825281022719107079edb41242afb5 -5a38fad9436700ed15a904e8734af07ea42ba87b1860e8bdac5041c8e0ddd6bf -e56e15ef6397de032df1006d55350cc94fcae22568cbe8b87b8aa1695bf5f24c -ce58a5d73ad60f9375f90220f6062504dd097db07a82f4defe35956323a63198 -b58bb55a14e7c7df2abce75fbbde38319f87d5491650aa52568235d354aa5d6f -ea39157febb1976f66cdb2b848e515d815c8c030856e002eb8a39d7f14f63aab -5804ed3fb2807cde26b7586cf3c88792b31c5dde85d7d4014e75377764c35efd -17e47a4564aa278f0e26dda942ee39136930126bbabdb5778a699888d4ffa7a5 -102f551a4979e00289220e8e5f86a4a0d3cdeddf897e451a07c246b94ce6f4d2 -6dc7e694daa7e2e092ee1af5f0dcd95f80e72b10c099cb618e3bc1dc687e551c -12931ebc68e08f1dd870ea1299cc0a122829ac438575225ce30bb790e89d011b -389fa094f22ad827b17a27c2727a01a719a0255f1d332c126bef8c1def5de472 -75276396f507c614a048590ed82dcc3b58592760e4ddb3cb3555337011964ee9 -d0d5f117b5888f7c7066b773f86c1e715cf5bc357f9c012c4cee82477bdd8bde -1e81bfa9331b64b29103a278aebfadf59fc0271bc1f089f73ac5d016358340b2 -5631a6f33513685e281572c11e1ab604befb99df6fd4ed12eab6a07e6349727a -57070ac362f20cc20902a9228e64847e7b1bc7dc1d8a88d8fc87e003d8c7ef1b -5de55859ddb9d3cfe9b7d487fc2721fe219ab4953042d1da9165e0d61ed31adc -49e97b647ef5ff90797b1339dd1b3d67701332272503e0a9aab1c69310d35c82 -16725bbf0c952a7bb41596efba970164dc4a50b32f5c0c063ea78d7450b9285b -a54b483e7de9edf90e0df131d4a45b60ece2df744093c9496fca2044b4b03b76 -c2a9c7dfc6a9044b9b6210aaaa25a5b8bdd5ff428d489f111d439faf01bac138 -88092656b0b1ab00e6ce2ab3451a23d8ad1795c941d510daaad5d90b3f337298 -3bd65283a7d898af4b82b55017136f44e9d5ab30a55f8a944a2f865d920779df -561eab51e59ba290a89df77583b483f885924d643ea19aee677d13c5ce768239 -51807ab36aaa704dab5ca31413a2f05019da9cf042ec49666223f50db88df38e -175e9d6e489ed20c77e884880938f03ed57e851e6fdad2b2502be5a3680770f0 -fb545e963f30a302011651759be908a7fe1660f963eb8bbc9ae8bbcda11ffddd -6aa425f22b2c02d82496fa02de5c04e4ea46829df685797eaf7e822ddfebb29b -af52c0b93119354bdce85f8b92818409e62365765fd20461547dc01b26961330 -c62174cb60e3b4daaec9c97c4909b18d8f6409c9fadfc1f1335e45ae45fc41f0 -6673d2ed548130fd98ff4b3791794858ab2a0a76a517ffe420d9cb5ca8640dce -27c16c2c3c4dcaec432004079d51df6117f30303da71296ccb20ca4fddd5971f -74afde498126667a2e5e1692cfad71dc622e461cf8878750b1f07adc1225edd5 -ce6060e76fb9edfa7f158f7bce83cfe3cfddfee88bda8141e85bc2d403bc6143 -a98b52642e4ca7b97db1d0c90bdf16000f023efc422b1efa8dcb366bac67dfe3 -5ed226afc5879adfd947511b8aaa9e740097310596d9134536e1cda60f9eed23 -b77d630469c87c8c8fd7d6db263b17740fd27fef91c31a8bc3314c8359f01904 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -fdf3c9c978f322be24ab4d3e51f5795d79714da3a5e0654999d34521cdd39032 -2f7af77d5ec45177e34edbbff847ccdf0a9fa02b7c4db737fbe4058ca2ef7440 -32d846dd3d42169a46d361fa58345d531fc0be9f99b4e1783211e36e6cd94386 -1f21a3d3733742cec89dc91af7a307c34d8f3de701b3cbd0aa002976b9f3f8b0 -075bf1dc2ffba065ff8e38ac2e66c707c872fa39244cd037b711a87c23570002 -cebc8d27d9b4db1b15a1d0e299938f5ebc2607a5f15ad042652e8c964a79ee87 -be6b8a5c4e1b6ca8f9cfc6d841851ddb084587e2ce48d2d08897024ef23af14d -7ab3a4a61ef31246b73461c346bbe74ab025f93378265fbd45c2e5edcd31484c -e2af52192612f2f89aaecd8b46257158b2670fdeb8ee05ec947b9ae04ead3bf2 -09fcd45fa5e7b5dc8fc5b078ef94ae832b20be10c29518a90667587a6c216436 -fc786b16ba06b0c8cfcb2bb136cb360f4716661ea79be754c7f343cb8da655a5 -ed791ecc9f6dc0a87c904314d51a2a3b31666ee377bb93675d6c4584ca42da96 -fd87fb29977cc52f1be62dd121b760bff8f9e30ef76cdb94053079023780def9 -ed86449dcd2a983b26e289707e85d5dc4c43c6eaa95c8dd55a8681bab39ea87d -43931ccd7ce0d5be3f856879199d4072c15a87cb661117c358c849937eb4f7b0 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -d4f5d61b044328b20999b3d3005c38e46a85a933a96c7c3fc585e36892cc0acc -d5fadb58ceeba9b8790b50189534c63fd0e5cb4d83d1160606b5d333f88982aa -b228b22a2d29dab7d14992fa6a02fa7b42a93f2d6f9a75e53a2d4bcb7f85231b -d270ea59b21dd1c1144a42ebd6538429f2119b747b5db20b12f4468650d17206 -3225e05a82eabcddafdc7d7a7592ddf9dfee7d1027b18d5a94c38a8b764f2028 -726caa1da978bb8c8e9884dabe6b71e50d39721467f9d7e87569f83fc9a5266b -f60e579711d068e272146df8adb45205f35f1ca20028c74f3b93778dfeee8f34 -40fe9a18cd8a6aaa2acbf6cb4682b2b468faf4e950c52069e2d7d0162037e051 -01a4abb09b87d598fe250290338a8df0b945eb0e97d6540ec5b3508221717739 -73efa17d53a867ceda4dbae5efc5616fa42194a7fbd43e1aa8afcfa32980599c -488e2eacba535b863de872bfc41020bc515b0b114fe7544dbf2dd15630e9be18 -1057dc6472ab27877d40bd644f56ad45dd3510bd3de8fdb31cb23a837a9e9762 -2aa3165f0f000a6259e3e681d76d10d39df5a1c8ff0f605c7b0d919e53a9ff95 -0123361d3be73b342fcd4c5197830dfa13b24ddaa6f2287101fc245fe86a375d -5d05c7edeac8199c89f9e10eeffc253bf5e1d0c62c2fb15e47f530c308a99df8 -6b5a913221d87fa7b396c8bfe135f7e98c1493b5d349a6855184d51e1d14cfdc -36db074e9f1fc7d5d02c1348fbe51472e58e1836a69990d18527ab60a4638263 -9c63a3c62e1f6409e64891501443ac3239f721f78a01157c697aeff5ee482dd3 -6b5aa767debd4f6cda904c41adb905b23bc718bae02557385e50b8ffd60ebc88 -762b5811b2420b6fa490902e1f4239561bdc708df02bf2bc7c1f2fbd88ce2217 -e690adcc394a993d49f4725dc222fe07038ff64e5f1dd916e1c6a053b2a7188f -c5dd6919a3fda35b72db6718899c0ac6e5f4ebb7d2e7bb3c20f58939d23bed43 -048d8bab4b7276ce411ce5f4ae2401361d1df16c07666d3dd3c3aa65da4bfbbd -cc245eeb25c3c40b1784d10354beafb1f4496896e39b25ca450a01ae2f5c204c -b36bd8df7404c5b0306b2d96ea289406776445d0889f16ce71dbf3f969c17610 -06abf80d7914e9f8e5c85c84bf927b3d65734e02af265e6103a4e63fb313221e -43f880e5b3166102e2cb77fbe84d3878ade8b6e9c6e6037a27d04ae8324fcb6d -84124034cdfb53a93e27ec248dec1b64f79b00a566d4954eb8d50a2670af04e8 -d55c5be4a7a7ff49a025a88877d18ffb6c4a9472ed68a6ed13ed8b795f8009cf -0bb3f42d9d0cff89444efcef8a12d0f716b4fb1195ea8730c042a8065303c8f4 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -86e5815cb813f81e9389fea22855e1abe8b43d93d847ed46958a93e2b2ac3294 -d50885ac0cfa1828556cc93da4d07abcddd9ed90e4da64c25596d4a2bda683e2 -af138ea3231cd9b4f60f0ebd206a3f91307582de1feb5f1056405082f1324a65 -7c2b5562684e12df85d7b933b0a1e0af5dd39f18bef76f109cf5f98deff17c8b -3351569be77169ed0b6a975759c00d8d59441db1042deaa14482c79dbd7b18f1 -7fa4b3001827003d9d87c74938785437762f2f119bf774902c508d2c8931f6ca -8a21fdb0b9865be1104857abf32b9f18f0b5cef1f635e68ac30baa4fd9b37d98 -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -error: {"code":-6,"message":"Insufficient funds"} -cc41eb493d6891fc55e61e15538017a3d4fc95c7a57d6b96b04a58f393f20e49 -6f94eb086317181eb7cc017e83636977251a99c2275b1e06c2795ec7bd539e5b -0f39e980afffa3251110bdc276df38f7585771487adcddba3917c8ef3291d633 -8e3eb71d1146366947fea0800cca9f13ddb8d4cff1abd55044b81041cbd07dc7 -685491688b47cb566692fd10eb9fc36a661c591054b5c26c76f8114ab3591db3 -68394170b8e863ac2ae2a82f76621065b174b11f270f26b5478225c911feb70c -8686bb17dab65564dfb539cf67c5fb84d265194319c7adc5dbe6f5eef230dcb9 -933864330b7b66b91fb1df417e4122e623545b3979a5c17b8d9d107cf491c0e8 -de7a177a3c7f26d49f8c7243b390ad2d8310148af600a18e4b24226d0fe5e724 -772a6c7d8a18be1371ed14489c98c96b8745c95b17374603639c425034e6eb9d -01eae27df5aa50be0a346e96c6e9e45f7d4df2fe3427491456475c06f96ba151 -3c63c02b7bbfa846f02f3744a5d0ce2cc0a9a3351e6300672e5f86d2c7eb6345 -d348918f2f601718b384f910d73edfdde701d414dccd0854127d3929ccb49fe1 -6df07cc450b088e55c04e498bdad23fcec606305a47667281bda215ce6daa067 -004c02ca87074d7a899fed9d9d18f22f015e3f2caad6c9713dfedc93f059784a -65524c44087234a6d41ff5ed85fbd8d65ab6f0c89cc9d577644b53ec95fc237e -b5549e23c4be5c0c4c244d69c63e15e02e8b119a32ac169f30aef556a8d3456e -6eeb555930e025e25d216a584472e21058931bbe2d7cca9c2d753fedfb4a7f76 -157ba9d8bcda75e8fd9434c4f87eed3ff5c2f704997ba61c1e4df8e1507be7c0 -37db26e04a1b6ae58f51923c021764187f62f6c92cba571a51d69ac882d315e5 -b16d67e96bd4fb57894085ec8c723feaa9eb58e45e8775d38c8ed02e8f576c59 -c2917b58d14210058f94d5385734c8ea366a479cc9b998c59f482c4f0a37ba24 -37246f58092a59cdf4d46711e59f01e7e4f5d9e47a2fee9944383ccd2bc35f4a -a68855811cb0845f568ccd91b51190ef3af0fcb4b6be428e83f1ef5ce7e9ccd1 -eb43d7d765e63ed066ba37526fbe0414c60f82bac703d41362c05e58065442fa -e4394301eddf79b1e14b1a7c91b7dce77b4733d321ee81b34c988b6ac57f1dc7 -ff97569fe2cb8983ffa2b7b63439ac46a5d7f3d8cd39ec6fdcf517e0bc8d5e62 -7e66f042c7b7c73ca8488328f3cd7cfd56902f6bf7b8122a386a643c4d9b8a23 -56e4b93e7210ff38b5443ebbe7a22b4d762e0ef60cd1f0c602c365bafb839bb1 -2a975acdfbfba7e560310b1aff3f4c9f022d0bb7c63132ed0849eeebd385b728 -0e534a82f4d7f352640c95b118c219a5580cf8c5a9244f9fc61950e55aa85dcf -e7edd36b44d98087a8a0d8e75c4506e3ef9039b7cf6a4e5f7f892d23d89b6f98 -74503440f8908dde0cfd036b0a52d08a7ec6aef37504ba6b29b1ee6b978e9590 -5690042a456cb924039e92d149cee1016081b460478038eeaa3465338a697f78 -9e8b811bfedc9e71320f85a7980dfd4471721482577d157be3d9924e73aaeb1e -8004410bc83a8db7d00ad3b63c2a18f28dbb2a8fbcbbcbe0aa86d8f3cc1dcee4 -0e1f10e34de6e86f86e20db2f34023c61282e89853651e86df7e287780d5d8ee -b2fb88509731c29da9444ed39935ff27da6f476638a0045e4f8d31fd58d76234 -70966fda4dbd52afdcae830a07b56ba5a836471ec2d0cd28deb35f656a15372f -a9c70fc569174f279deb231f57eb42fda82bf004d76bd70de066d81c5b4ad33c -4b693b259396496351ebd172e12a67f2e25ac001a0aeeea39a1087171a439d8c -d396dd5104fea4e04dc0a5aca71d446565d74acfa34dd74f5ddf57f89eeb8924 -992af518eda3aaffb3c2e6ee198b2868914fdfe337ca8e4d3935ca9fdaa03f38 -e9ea6a4a207ec04007325bad04be8686f5756f515746cb36fd86b2e4b392f9cf -f66349f7169c29804d984108b04bd0a38dfa811d401f17159c76edde32b15066 -e0acda787222b4d8751138138e58d43d8dfc921e8a66bf6ae2e8e74b6a127d21 -7ffc03e5c794c099e9a6f3bec56aaa7e89c6d439c07d9c4f765172449f9647ac -07e3821150ba8fae3195219d482f71d8b7425e0adc7f9f2dfb7cf2293a8e759b -7e3dfe7782f3cf01d04b86740bb5277205826dd8b8ebc6884135f8f85852c463 -87e00f9f4a830b29324e7a8526af392d30dc3ce37b4e8b9f5969f40463fcd885 -bd8b2d90528eda0152c79274454f09a110424309a7273769984422bf3ba2d634 -e21602c976a25846314b163b0b13bc092d4b45bc76140a4aa38d8078e4cafcd8 -355e4e0473eba86d6777592be4b843402afd114383cd62d20e67983edb237aaf -9b756668b04654b93635847ec574b0baceeca7a2cd497053c8a2cb2e3ddf485b -3cc8160e2a6646cc9edb9f355ef3c5e705db666ad943b201fc13a2209177bdf8 -ad37e5abbeea8686c9e8f1ff399841b04addc2b075c80532c294958b62d3b906 -280a0cc44e85587cdee88b425af3cb2fef355adc8aea08d7416340d95264eda5 -2063b8bef8b67b3438dad443d19b3a42a3023dfb31a82f73aac8b0262cb09bba -f923e2a42cb4b9a4e3811d8e8cceac8aea0cc93726ab1c44e41d8fbdced31c36 -523b3d85189612fff4d107ba4d6a592565187085d9c6e5c9fd6d25babba249a2 -03311210142052ce00543d224f46458abcd328d6c9b5526c44bbcba08fef3bf5 -fe41da9f58b0a777bcd434510f7e9d2e45d2d0e0620ca05a3480a43ac07cf743 -ff0a227c5c60a49bdd05585416320f5dc48f46e9fd84f0f60645e10f4ecca8ed -945d9a8d585cce841fd7c917ba220b7a8113c7761ca727e16f914f0b7b23622d -abadb83c367f3c5806508311bd15da2d61e6726838720217e3f110ea5b96a72f -084a499d63c5b9b6fdf79a4b4601d0f9885a514782959d8ee63a1fc1fe34c700 -d0518cb1f7a772c8f9a49c27b93437fced38ae4837e7e8715c22ccd450a1e5e9 -b50a110f32fe15cf278f099bdb99b50c78b3dcc16d9dd6ff5a992206c6866704 -720053802d8eb8b4d0b2bb930622ff158e29d960d841251421e5ad6995c43e41 -6dd4801339a44bb264232835d3cff15628afd0715f9a40753516478777477ddd -96935649c3ee8621051d090a495ea8938b34fc7b70fa3b00ba9b1d7386748a17 -66d2f7a478ae6437f787b62d00b8fa4606350fab79dff2c936d4cd6d2b70e385 -88e469be133de0153e20a03126504f1467edbeb5c0dab7553fb10562726b2138 -3ead11f53e83c1e9e864ee7cd1b78866862c5c05b3cd9ca19a9d3d1d6231bd05 -2f49795a02ae9665652256a7c82be09e54a0fc052ae42581110d23515596b514 -9d3e38e140fbb93723c8a1be469342f679cf50853de6c55fe461665c0922544c -54200312670f7fb34f700f27b1031656a22ea902385dc6ed9ce714ba84bc9ffe -e116c13894081ed1e522f80439891c8d662a9ed829060282c2bfb169df77f6d6 -bf053036f1f2c30227dabd359185b6d2ec1b1a0a53a120f1394e7e78b56d67ef -792eb8e7d92062f7ada80df7fe6645e245a19ee0781442f5f367ff8ce1b58a5b -43ab7ddf93aad18cb936c3c9f8a97f074ab8b1087468d9f818d232a9ac0d557f -d47588b6f51915c563d51fb431b0e2097647db38081e3bb118a7b55cc44d0c86 -5d2fc01e11f8e7bbd5594679b74e97fb82b6511eac7d3eee1915133eadf99b23 -fe22c1972905d2b7ab8dbb77caf63216f18b9b283f75c7e4e905571e3171e91c -a56736b326bc8c5155ce9ab6bf9c46f73608dee6df52e1645ba91a576d327d3e -071925865a2bd1e9d6461d119547c073dc11689613d4dc59548dc0eff7536d8a -b77a45450dfaf3261db9031321cfb9b770e582bcaf1ff4fb1099a93329e955d7 -cc073c8137cae690990e63b265fe496576da0cd87714d6c408c9cdf9b7ba5260 -628aee322dcf9e6b43fd29fd68693e01c81706cb74cdf4f76c6770577ab9e0cb -5546ede2fb4beaa75fc45d75c1139faf238145df20ef28fe2b9b226d1ea37f86 -1574a5b57b8a0e05c33f07d0c1de892db44d6f357ed3c97217ea2a41dd558e56 -aeb00d5b586ef6409cceeaf7ce8d259c4116f1822808f0b7570cb1c1339aad03 -ac97483ce47c9eb6a47c13dc74edf8be435707f05079334d0a15f08923ff3916 -88a23913f56d7e87188a947afbc0367897aa3bd90be0d80bb0a5f6d6e640fe89 -47a6c3543c335c802520bd3dba94259f79f5849ea795c2f5698b0cfbab50760a -c96e39a0cb1d1483a5c2030f7dfd57a0213594c4f5c4f8e893c4ef6a0d861846 -0dd629adee01c258dec09f6bb65988aa83f21ec58363f96706a5a07bce26cda4 -593f2415e727efa9b4638477d1008c40ad48666bb02a2971ccd1cec8e15c573f -714d0a5527faa332c095fd80711c14e93b5fda9867cb841d36c84f74c91c23cc -cadea372bb6881cb1a40419de58be1d87a291d7bee0c6d90c50c7da6a3697c6c -d0a6e68c00c2bf69c3ea4c9e080c990a555f3e1a2698cd2890425f58c6219b24 -07331b43a439894d79063ef6cffd76c90935b81223f1516d200da8b5e8e03f27 -7f03dad5a2d8c3944f2a56d22e84eb161f6ff21e55f50b88627ef9afbae93dc5 -56ae77a5fa454dc400f922fd660d17d61e9e764cbf5a1852f25630609a1c05d5 -5eda3e44c9e9afd27cbe7d064882a09640cc3a3a5cda3aeda54674038f9e2cb1 -58ad83afad0421eb14cac18e07f3ac257a2762eceb9a2a417c2b02c339910c95 -a016cf175bbc95897141e9eb064e7170b866050eb359976eec99ccf9b94c8aa8 -6ea014d6d0e9c5aec7ad725541c3f3c4fdbda6afe4ed4055dc089630cd77c2b0 -70e9262d186ea9f8566a4df5a1b37044854e8a15aeef8d524de51fea514946f5 -9180644db341f8c6bc4e5d98c8494dd01440fc74c997087789bdbd358b1dbbe8 -964c49175ad57b3c65a11b24c0d14c9c5c65e25d04f119c6e37e660f8665fff8 -f474b6dbe8eca765f50ce9d51a7294bc6c6800efd39e0349d64220295f61b682 -88d24e2d800404df9cb048e7cffe4f909b0b5a96b60edece0bc64ff04c10b2b6 -abae650b5d08ec37a61debb5d9c3168379ae57b5b3e22119c58592e59de6e47e -81ca4b9f6801e04c937ba50fc4559b7707099e7d65274a6a5073c2275947e95b -a619530f7616b12a10928b619dacb9ab639673196680224e51f0263cdd0b8083 -4547379addaa2aa976556a4a4ed9097e71ed9f6abee548dda7b9034aa3bddbc5 -d6046a0e680b12a78942709c682cd96d5c7881fdfb074ab327132323cf771e59 -c5d3ef0fa986a697784e8a9470b6a8cbf11ba4e3aa67ec9b198f826156adca3a -3499b11a20e01c7d91be088a8f2f2420aa2bf50f394a89a03fa86cbc6d94fd14 -0ee519b3dd19f20678dea5650f3171cfddffb282bd7ead8f454b4b4353ca4636 -5bfacf7a1e33b663db9f246aa7059f605f5cf43bcb84b07be3a3defb775395f8 -745310529dd092dd6fa351ace76a3a103b4a09eac8746600fdf47e0a0d1ff92c -8fcf8edb72fc7db253c930914a2560843c3da0e6d85374a88693f61ce08a1184 -9ad6459572a2a45c7f4d65ec11ba4756a83ebe4c60d1b418c5fa271187e3aaba -aea40d45efce91820216d33739fe993cc7b60cfd16f278e0015edaf659017aee -592b3b69ffd3ec2b4df60c0f3c64ba414240edb3c64ee917adfad09b15d5484f -6e9f184655f02568b5a03b97b44747a33c066b1bd9cd57d1f628a0efec18c450 -bcdf129b14fdd4c3741ed9335de42b1603732a67ac972097374e3b22aebfcbad -599e596907085dd0df5d8e6623f7ee23692db5f756f4d706939913d1bc780505 -2a9665507ca97862594523b27e3726b31f3166e35302e5000316a94dafed622b -87761b1fb66fd03699a44ac170cd0e2955aa285b50edd10b3b63c8c1162c0ef3 -0acd4cda9af18b529710f7ec6144269f1129386cc90dfadde076751651701e4f -2b9d33d70d69f88e148f019e90594822a60f5f66159acccb9a2fefb672179db8 -b2e1b59ce362cc60167f8403032d9f97beb4ba40f29cc6babe690dfbb6dab172 -560f9c82c8d9bbbbaf137583887bce60c4fc92650265b566d33cbc999d1147c3 -76324ca6dab4baef5eb7defa3a823a12a5cd6fa7124ae0f3e3f13c4451d8b6e3 -1ab1620747f679aab6fbfcf29f05a41747d1ac878c8d536dbdaa6d24c026f88e -e13cb2765c848cba065c97aca2f7bc04fdd97288b0292b49ff8604149f5bf43a -1a4b4c83259efacccf0292610d2812346698ea8d524d3c55dd38249a7b61ea5f -13e1a571f78907e11f866ba55afe381d4974d308d88693a5b12450b4e3d4c55f -aa9db47a5cdf78b627aa327cd7a2260943da40c869921ceb26f91fc1aec845f5 -0a19da2558d628ca3d69aa3f0b4d50cd1b8707c0f3043707d9a293c8ee675f6f -535f2a5d22d592ebf7459cda6d8371b3b66be804ea10c4f40ad1b71c969a8c68 -b35a3132476953dbfaf4648dd630d834fd280923b68c4e0ec2f39d655c09e0a6 -dfeb96d8a965aeb4999c88e594a0ad6c3e1a00f906954b9d5008c44a35e6e85a -fe3932cd4d9cc8783cf0eebb99037ae524110349e31c769166b93278140fe330 -61fc0ab4a948d2a56804775cc278d67fb46ba33d278ccba281e16efaade3e06a -655420fa28125309eb917b137c710248012821c1c9878770e9ba5fa8ec2bce0d -0d208f028f7f8692f06c798b71be22fcf304e8d090f8c6d6e2cba7b57880e1a0 -cb12c482008563a57ed79da0652fcb62b71373a56fbe07ca1b4cbf7ff63a4d3b -6edd4242d773cdd288e00fdabda95d4541fa2c8022b4ca084b0e2d62849b74a2 -28cffe48ab99e7bb885410a47652f9d3759869cfb24301674b565155e3e31bfa -4470c073805e75345b0429d792bf5f5bffe6cb8eb18773ea37657061359e5e42 -0e093d2caf07adf8f3606c07b53d8e6dbe798532b645b72ab476a38f8afbc392 -d0a7e99772c5ba5b528a48eb65e99daa790bb46d051927575ed1d91f1ca29075 -7016cc7675a4ac1185059250bf4f5de9967dd10a3ba8dddd86b1038c01899813 -0653fe2ef5e589fad419c1d9d327ab595703d26350e4139e3651a8f0a191b96b -d35488c3ba08c5ce24ffe4ff988c0b62a9454b9d1620b32a6867815b0062dc66 -8f19bbeac5026dd171ef3a492d40acaed8aa1c4533b7da3888824e86a609a387 -1e47729f9f92772a796f1a6b6ba3370b6f7fa14b0870d5d46d185973a4a14bce -d1ae66cb173ec89af1bd6e1fbe3dffa617eb359cb5ed3b4d8adf3055aaa23213 -fb7e54e2a43cc6fe2a81a28f5e2157cc767072875b8c145a605132401dfe7970 -c33ec18cc584ef9a87231704c1c38d3b4937f75bf94e4a9040b81adee0d48d3e -b9a85bae7c9b959d3424dc549ab3c0b8e140b25b38f584e2e9f4ec595be076f0 -119c1f64042fd333ad6c5f3e7701b8bcc45bb3fad42f4f1f09c09ae4ab95eab8 -a4d028a3635ec0ff4efb3f0e69b84642ec1dd7ae47601c074bfe69a39f50adf1 -e35c68a33956dcf45b1823d6b3ccd37980972a8895fa38663a24f559aafa56fd -02c8e3d4a9ffa5789867c2f035dd3145cb67aad433843b7559fff89800b43cf7 -4d58490bcdb3faf5a2f03e22769188fcc1d924bdc7b9b9904f18c08c0687aaa7 -e6caf55c3b1fb3cf2f6d4678b46f243d74fb1ae2c4e8ea76d780d8b10bf601eb -bb9fe5f2b4257bd6455bf8e00f7ec8033da5663ff8b9f205c0afe41fc6a2bf55 -df39439a59bfe3d1a66b01d6f241cefc5fe9dc39a95f007a538ac939cf29fd6a -aa6ed543e3b98aedd1dfe2da331575fe2ea3803585c317926603643d0a50c406 -682a119c82c64494bf8e23c1763ef76702c73950e51b56625ce79b9263316ef0 -a04f8458473892cbf65162983aaead8a60b6db6e9d4515e2d1253e9ccae66ac3 -6d3b1fb692a1ad444170105373b1bdfb66c2f07cc398e2ded737301f87cb5fc4 -581b4b1f2827df0f647e442091e64fea01890197cbe404607379783da4fd697f -0a9a48f220954e4d6339f3588f21f2dfdfe18eb79911cfd00d96023ee62215e5 -6b445bc1fab37a302be8c0cb39405bf2394c06ffb4f2fa073d987f73f3ebcbc2 -81aac8dcf8386424a621b8ce0f845fca0ca63b78098754e669de567a59327e62 -8d88c638066985f549eff3252d7489543c7583cdddbf0a2fcc1027503a54c2f5 -1f2339b149a9238f73382171e638a7064e7a48afadf808a6c126d6fd40cd232b -ca6dbc3c5a24fcbe550201902d44c1d9ac5329e2cca38808ea462559ad89a295 -3e9942052eb861420189eb90065b582444a0e6987ca93612a41fdd9fd8608a02 -7b7b312e0c1bf137d92bd654d880cb7ee15b83d363b2900921fe1bd6b11e5f25 -a91586a96454ce970851960c1cdeaec4dd0e88e42ca0812757e77fabada021fc -f80216749d537c345b4bb0dd35829a068bb32601a6a2d64e0adfcd3072f73393 -795573a7fb055f0d7d081a582d07e25a9c1e6cbde659ee0fcd5a55462db6a552 -163e04f36139595c8379cd305e771b6aae8e357d9a6318602b027c3c91aad760 -10cdb587488653cd22f6eb97f85a65749c454195bd006683e40bd6496f9a26fa -a7da19ac37bac3554837feb4e7e2bf19cf7b38750d4ba7f6d8dac1a828009dab -3dbc3154fb81bb109cc14b02510a3b4062be49588f6335c4bd86013e1c9b8a51 -0e4293edcf2dfcc2deeaae390f5079ceb687e73b6e4792be0b1bdaadb0593a9f -0aae980e608ceae5b10ab6a534c168238fd6876f48d1a1bd836300ab05bec228 -2cb68d41653fc08a1adfb4c694c9b492f50c183d661712658af52400e044ccf5 -a00cccceb7a964fbdb6c85f8b54f12616cbd3cb23fc872a495593a41a5d21615 -69c7cca4ea6c0d63050f01da34d8e733295540d87c8d18a4742abc0df04261eb -2d09bd36cfcceaea02f62580f8f41488faa8e6d85667c8c6896c5b34c7b8feda -bb96ef5c0b8b454385c84af943b2e00277373a10f247278b3c7b7bc794547038 -a890abedff75d8ee115806dc3b3232a64b8c43dbb01078a693c97b40d0503cdd -72fe92d376728693b0e4490d403822d716d4fcd0698f457a7d6ad512de73b5ca -054ca205af8c231835d0bc020e508faa72cfc0688e5463a4c51c76bf820f237a -bb20bde88dca269bf004791f5d5797c2d0a4eeb1179e878f53e559c1256a59a1 -6a03e485522796811130d491ed35484a36fb1f8c58297b1c83b1543365398d76 -f99cd419a67b7c588d874167f45629c01b25b9a998caf541b5908ae91b3d0884 -23bdab370b671a1c47076457169822765333716f4a40cf2e09352faa1f095695 -88ab28d71b0dfc8c3a9091196d764bd821c82091cf31d10d661dbcbe79baea95 -20f5750405060f5a721f4fc16709e073e63d8f8bc54021633a81b9901e9486a6 -dd0b839317eff4b52927c025d5f2abe0b2df8bc054f1f0bd6b72a5895008abb6 -d782138bb4a3f9d01b74e7e4717cd48a58f478a0d9a59d5f32f0294a53b506d7 -d0b71f2b803e6f88744ec26ef1b001966e6291ea99e8669b9b16f63c8945e4c5 -f057040ff1807ff2fe4d836796b4639d179e0b8c25bba142cf62e157ebaba3a7 -3c503966e49508ff13b9b8881e5ff5efb55d716d5d8b37426de555d22a6d7131 -726af6f568732aad5106a2fff0d197a631b35670dc44663cae78828908b0d4ad -d34454f89f541d43c9ef0e11245e65b3446d01eb00187dd8f2853fba2491aab1 -01e91dc23eee608510ee4c36b936cc3d9001e6ec671428a066e3291a598fff27 -5ad2a3dc82a8ba11515e031ce1d97f3855ab670bcd7466ca9254120df7fcf3e8 -18136e36cb31789d96a7f1c53edb6705a88a3edc385583433aad541cd03c2f8a -425f16dfb84be98b9d20bf6de8cc77ed3e17d169f9ee661ce70e54fdb471fc34 -b7a05280d629dd15d24f1dbda5ca63d5c5fe382b8079fa5a276ca813da7f876f -0e2af80d1d3c88b7d74697fbeedb2e605e5e2415b0c36766faa10f8053a8ff45 -7496dec653649fee932461ec824fc2d33065102537342e13a571d80487355a71 -de467800eb1b11052ee6771cabc943177a9ad53210fa5d60f9628a8f8d97eaac -35f070d6b361061e2760c4c60b616010977b9f035698ef0e41cd98beff2fa6b5 -0ef7a66154aa7687349943cb7a26b749e2aa0fd50cfbee449dacc32b6cde83eb -e6bbcf9c711a7faf77a93ee551a246c19da0cc9b261a44aa4f0554b688d107db -a531d969bddb37fa8d6377999981f88b5015477b0c46391d31f2c2f44f0a28d1 -362dd65b6bc2787a8b1a5bf664a1274d46789f9ce45b939be46f228f5b048ec1 -b21b2e58646cf2ae56f974ad85a457496266595a03372986575fb37091fa741a -58148c8ff4d0f8b06f8ff0d6d024e99573c2a8ba09b0266095c3b96a1209d284 -1ddeb748a44f2014f041732710c70e224b698e79530705d68aa000675b03c6ac -88992ea2f7cb3655365875100d95bd2e053bab89dc84d6ce9e5128356a9fe11c -ee9f6a76766dc2c8cf702ae03497f6164eefed6b63467f223b80d4288d4684c3 -b18a7984db8928592dc5eb9b399e0695eaf04eb66eee475953a78867273b645f -d7e14031a2edfc6dc22935625effc7a258dc83fcdef9a9acc0ecabaf18b391ba -b1ddade0ceffeb8f5d0f17bb87f197a62e117fe8398278f8493f84999ad33d93 -2ec71f0e409341b792da1f0d267559af455f7e8f2912962abbe6949654734ac0 -705eb01968925bc9a77a5d9683451242f3c0b0b1916a6450dfee7ee7b5d33797 -0bd16fd4ee0529f4d4bd1f4c2fe14bbb63861bbe817ebba9575bb6521c7027ef -6dfe9f9150df760976dc82eb7f256e31144845031075a5478194780f9c5e4d9f -768a65e4ecbd127436e67ae233b871aae80d678d4f9ef24a5a4222f3c05ddaab -ebce58c5e8f1eacc3ce82533b995e6652cdd65487f9ac469035d8a10677d1313 -32c1cd1e4d3ae9cd7dbe39420c299e6a4cb7c294e841b60921129a5be09a8b89 -b761f1dabc32be7c5f78f1a011e134aaecb790842b150b3761d2bc600a232f24 -ffcb635d8e59588594762482a7479b7f58e913ece3c69dd859d9c392359d5779 -fcb792ea2fa33414d80e42541591eabe1c206d52d2b0c002e9a7a1e2d9bda4ae -f889732dc52cdd4213a193d042805e68d4742b011f0a2eba58abe7b0ed262899 -2c3d06ecbe312486e053e3facfbda3b81f3dc26dcdedbbfe1e9f2d69a7aa8af0 -e8274b147519bc7f6697a8d07db7e47516aad5fbad8a40fecd03f9cf48b59479 -202c51f8a178db374de8db9a0e11a9552af0c83ad2335c68b3aaeea487100f1d -d8b282eaf722885dc46aa340dc6e18671d6ea94d801b67f0f243718e41481db2 -b920c5e3d6b5285b68d5558c610cff0e0dc57b784b3c2330c18c5355f5e8e111 -b9d24a223feb2fc7a6e09bd2c11a7a89540c3dba22b086afc885576554d4174d -f3c5bc98141a932d12ec951e44fe58219bb6fe61e05e0ee7a4838e9a5d4487b2 -5112fa93f6ca2a33cb29365d4dfe79e193c547f6c4fba633a0464dee88b70a70 -1bebb417f11621d3ccc8a9d5259c34b534bcb5830cfc11b102cd03eba6073685 -e11091a1044e8be7f08ac6284b05af2399c1dee1a2d9e96c44998bc08ba21516 -ac734d490b4ae8ef9c0722630623bc8089cc187191ba627f15f5bbda5a9da32d -0d48915856612fec53a4569a5e73db6161354604f36b547cb681f27fbc886cf9 -e17b44717b07c58446302bd7864586fac0c2afb6ef0343c17d3e1e5af12f6bb4 -a5ce72fa0115264a319e682e92b76a0056096df79dcc16a3158fa8edb0390e77 -20f28745a91b792b3a79fa6ef0221c5bd8072e9fc9bcb6aca393fc2900965f69 -1fdc0d10b341d25f7612ee0d4d06a5b9a0727189efe20c6115d6a816a3d6ba36 -d6f56e593ca0ee16763907b203f0cc45cf91a1b32e8e58ca9282a1a695df52fa -5c7501462822fea1c7e20a70a384d0a0bf3eed779d6d220600f0618208b9827e -c7dd74bc52ad6cbd6eccb7fc362cc587a9b8d5c768d1d4a6ac43bf18e4f4fff9 -a1993e6d257ac5ec0f714d8a6892620e6706ed5a3ad1efbbf1dac1d3e6110dad -f6bf542e8761c1dfec00c9ca7a70ba170733e6169fc8504f4733c8c14222e3c3 -6a03d51ad0835f0482f39330dcf1d24d365c69adc5b61f35f6d72e437b2a1084 -1c70200f7ab47d3d41cf1ba070e94503f1ebaf8e300e325911332d8a506cd102 -d31a3596c0e83df6337bf4dab37a661178b0b8155da504a37f956206f01e4502 -2db5af1457e29691ac6b671bc2fb243b0aadc947654d0cc321a45307865957c7 -a1ffe5011a4501a9387dd01a0a2eb2b06bc840585909258fd0a7aa42963d494c -cbe04cba17a9ccbf693be2b73f5866bcd59f8e3f3e55e111542e8b5ac374ebdc -02d11f457fc212de7810cb9135aeabb585b7085f64abf2ff3bcbb5fd1d6eea2f -09a588be0973758614f0787a3a6f9e457336b47ab9d3fe93216b2a98fd311a2e -7b2fe78b224a0e7eca3d49e661924847f5bd1ce418db230b9b9a6695c91fbeb1 -b771f20b4808020c3a51259e9843b21ac38d6e89ed59d52bbeb5851fa80bea68 -dbbc23d5d091292e7066dc3b305afb6b1a2e665d23943eaefa00dcd39eebffe2 -1cef2fb978cd0550de6a536570bffddfdaa2895ea7d70535e02fc70214a8a9f6 -4cbdc30952eee88113c3e08e7099503e25a9debd8cc3bb64f3120fc9350a8442 -9e1a00131746fd58b51d7f090a320c7664f82b8acfebd2cf80d899006c23ce10 -39c85e747e1508d64318c3f724e645531dbc887323496894f6e560bff62dc622 -c2da3c9355a048f1fa02c32318a55241c07791ff8e740727ecf959505e81c603 -f19f9924ed8db231e5eabfb9bbc7e048059615bd37fd5b95b90f0496a52f87b5 -647d6dea18e3f5944f71ef4006957d8740889c1bb6edea51aba0686b3fbcc344 -eaab9b088e038cdfe4f0e2e2ba42c49c52c83cd60f36a3dfe3bf34a555f78004 -239b9789a4025fb0370f6d7d605db4c1d6828e0a2254bd7b0802f819677a5c9f -c8b7bd9737d9a053d87cbdbdd0bd6e08c7ec0bd5b7f5866aa1bc51d596e80dfa -c3d5da6c7df0972227506fc87cb889ec731c66e25e3cbc20ea1117f2b6f4b5aa -54f2936023d982b2cee435223b6718eed5f61ab1ab7e0e661ed944473c0074da -db45e2cfa0dc2b3d6a10a555bd6530e8155f94051ded4ffe821b0336d6a83c69 -38b0fd07c8c7524df2ce28614b584ff9870cc59b5308cb20e614e4bcda869743 -7096cd9a67b09f8f4b5068f0900e7898d002822bd47699d2c713b3568e883c40 -af5b64d43f355812ea9c6eb4186b80ef06f6a09b15d9dd78aacd8d2e513e40b5 -f88b3f869a01f91bf0ce1640a359f8f78f7815fb1148dc19667445c02ede3eb3 -34dd5cd9a8cb1f57df0d17201abfaf87045728d7e4c37abc6c643933f9af3c9f -cbe080ae89dbdbdb0d535104d1eacc61cabf2b30c3168aa359fa264ed9196062 -d8ed5fd1143eab2748cf46bbbf31f5200ab71db18d172b169b460757a5e6d7a0 -32b528716163928e9f088b6064869226c8cc9a2029deada6a9fa27974a658787 -bd5a78a37c73b9e30392eb9c92247e45591298c25b9c8ecc49a3024fa48bc219 -5c34b6de81220d7644d26c58a0a8a6fcf5a8b1c004c8030eee544f44f2cbdfb6 -469880d72f39091764d0543d7df15e6ea9924a4436fa18866a5210a43404d51e -ea307b1b3aa42141d20ec9c8ad3253c1aa6a11db84ab6d1b667c644414d49279 -e2c0d14375b97eb7bf2012b72b7fc5fd3635cf04a9f071e01cfb9940b2f5ba42 -e8b31bf778a7d79f8a1135d9641a65b6bb144f96ba99440b9c2efce50acfd279 -108161892d7cce3294f2cf22c984d0a569f42da0538c7878315b0fde9aef7c20 -dee06f68368128ef0a3abc5d76022bea5ff6319f323454714b01fa97b9fc3931 -99d2eab2107c65d575330072f169cd31c3f9af438399ee9f381d3dd4133dbe9f -e378d8bdf8349b9e3639addde00fb517e9112fd6a115446bc63408267e7f90c0 -baff97531d852397428081b4a45b31060ed32ac53bc13bd56b8a20fb53cd7e59 -8a3ba5f6919a3af234242a66d7b167b2078c8789f3c4af09166873517d3892af -64e282578b45c9852b31b37ba87c5399f88c2ef8faee47db69b0f37790a56e5c -0d82f64f9c5053181427b607c02d2c31ba8cfdf6f9e790c05fa53c2e67599362 -360651b63e140c562dd6c9e7a1f43c720f0d194d6fd70cd7331cb76a114bb066 -3be89d34ffb3a037c48df69105dc91d16bba57d07072b38ac9f5af2d5e7a654d -2f4a084b42fb996a56b83ac9b8c7f336aeed2455476680ffc5a20f0696217393 -8355ed42114ce20402b0de026fa6c01c5cf5d7d3d780a7cdd0c3ca53fe4a2637 -28e7a11653ac0e251685d512f4108a64f6ce5f7c333e58f7a398a2a8246fc77a -3a49d4e9c5942c4588b0337d5c0524ac89cff23193cd2af2e33f31a9050e1311 -4933981b36f92d41ea41b3d3b467f2a3e400df20f60a53a25f3fb13448dcffc3 -2e05e814a7e05b2eae1d31886f10c9c7ee530dfcbbea8af20cdda9d360d075fa -7e08faa4f4a362dc894fe88330b890157d45d85c048d83fee7cd06a81f57753a -77758e9fe5cc0c5f7b3befb794ed217f09e9e8a4bcebcdfe1e0de2fc7c7d1ca9 -7c01849c77d1e88360a66c74d2750e20a0d06c70e61ad689d65f94460a69a853 -78d0c5f74df4b08343b8acfd6643859c14ed8e97c4a0fa9e6fe871c43c8cd535 -fa0adea01138857e6371d57192a435d8915dc530e11d10e7eb00e03fbd90c37e -0c60a3f1a5fb64c740e21471381a4daacfb9a7acb33e76d3176377f625ed91d1 -d913f2a72ca7685e53870fdc7a94e3c613972ddce1f2e4802fb590dbeb19df08 -703a30bd7dbc6184ca85e394404d0c166379e987663ba637cffa2e53d74ea235 -de006bfc6e5e3171fc5bfaf7938ede144adc81ae20ba55aca3d4c8e663c342ad -7f14cc53745c0748f8d3d17c24952b0b435dc50a555b731700f0ee21e4528a02 -a3426fea3cd3d3f4726f382a8b8b64d4cb3f38a76999a0147ad0612a385ae264 -83d5add9aa7814c8e156b412894ec142c05261e9b9e8f8cfa1f0981bfc66be40 -2b1feb498727b4e25864617315589f791a631932904f0098c6ad3e59a441583c -df510528f0d4e5b8ca56ec2c8be53e2b271030daaae4b972fc0503d86cc8555b -565bd08d869deb7f3ba776e3458b0a1742c9357599e1c59211884bb76ba4a958 -c26179a807f5b24a21e890c4b766d5604e0b88b76a05d730beae5c3b03c8062d -cb05028dc036ca705e83ba202fdfe3c93fc5d47d12be319b143abee976f3066a -a52500a21e890f4be485a6fd2d00fe4c67920768f80fdc5016157aa766239ba6 -ba26fdf35cdd04ed2d351a8ceddab926cf51ecbd1db7e28b9c5e290587063ca4 -ebd60640e82b225d22d5b8329fe53ae10d6cb395f259374d00e77422b1278b41 -dced288fc7338009ec90f120a4e6f1a8a3d34692de4b610e5279d8e293b17fce -6927573c961280965629584e0778b168db09cf9740186b88496cfe19208099fb -730f1563b9991f445e8f86b6abc959116cf6d3dffcb7aed05c30391d0eb64141 -f5a3cfdb349b23deca495938654719bbef720c907ffb4460989a084a02ec0fb3 -a53cccc0f85da1eb8627624d5f4862b3d161322633b672ff2af782173c303897 -c1f381e26eaa3110a92396a06f951d8141595128381cc44946dba08dbb0225f9 -0f44ae2a691e9dcbe82be7ee792099a59452a6a3ab25fdab20504d9c98b68798 -cec1b037a98418c51a23eb44844b85922efd5aa55b155e1baf616b097a1c2884 -00f92e2319fe59dabef855312c81714bc0fbf7a1353b13711ff963d75382de81 -a86949c0263efb4cddb1cdb7527f6095829cc89f53158ec146f20bb77d83e84d -8c579d6d395ee05c4e24e94dec2530fdd95e854aae33586258141a959ef7da2e -58cb312edd660bb02e8a1a8d67b59f63f8537743fd101fa05d48b0af248a8794 -cb868f53a077a9714fbba007234b0847c7c12cc22aaf859c97212c34e543b141 -8e47dfcf5fda77d059a6a554798c1270bd9acd6b3804b3625aff79e1582a0155 -92e55217ee54c392b0699f051bc3420de97ab33d1959fae2cef6bfc19aa6ad2d -167ebcd68e013b0960673e943039fdf234243315337139afe5d7ed92c8a7f27f -2b2df38fef79d549fbdf4d3edafc553c9e28d86d9d160760fd8aff6db31b3868 -8c27ef69460b97fbc3412710f6b49e591615014f804f57cccad3b60f1082d6f7 -cb045d41915718921ce01ab3b733fee1df348176403c1dddfdfc67e74dcae022 -732375db9d2f83e89fb6cd2a952be43c112e89eb16368063942cb44de904f4ef -a2e2823d4077d137b0ff231cf53540ae502dcf091e4ed8b280f940ef394108be -20ace8e155ef2641626ee2d6f7793536d3205d0c56cfbe3d02ebcea6db74d6c4 -4e9e8cd0a0b52bcb0e7732a1e188aee10f6e7e2c9e4408146b68263faa536696 -4e14f5b18581a0b64b112147eb0a15cffc14cf172a00628bac3f4bae52224850 -fc19e7da12cf37bcfc5e91e38530f48b7e075c23457eb6cf3ac14cb6a9c2f93e -8b35a78e94d67065cc4dcf9cf7f02aea2eccabbd21df965bc009f768ab1dd16c -73ec9db77eb527c7a96a6c87faae098454432fd9f9c4bc49d7ead7d1d7c28e50 -715ae0e4fe8059c588ae51c9b29357e7d58eb4c0c03e52330ba593b44e3d91af -35d51345a8c3cf1a57751b59a1707bdf4d3a495bfcc50d2b241f264794c9b8f7 -6933b9ea1650a7b5ab611d1079254bf6a9121d5bf85c76ac442159a1831873fb -06337787868224352816edb59a33496a742281c8585aca7744a85712ddad7f3d -70e6f2f7cd51c372e763e3ec517ee5c53256b73a1bd3a0719bbac6da274ce005 -c46915f75083478738679d2e478bc36b77b08fd299c537cc739da2078ef23c5b -8fe90f11ed854b324be04f34a0fb70a26dc365f616cbea576f30bbf4646fe06d -1e5984d694a1a8af3da06ab405fa3b51dca86eed16f1afff5cfce7b78e0d236d -c6247858f79d9a52bdcf9760177779c1e19ca164e18f3209efeffbb91fa82876 -fe2eeea3016276eed9dd0f7964a7840100781f9f9620b109441f69d5510ec47c -e456612fbf8c7f1a1916bbf266de174bb47ada2de8aeb21f85c7ffe5abcf2a14 -92cb11682408d17ac8f9d47392dea82d04a1f6772f47b667abacec6adaf1f97c -b3a86c07533163a33c7dc47f425e6ab0ff14e5276a8f53e98b879e89a6f0f6a7 -4c379c45681c41020a3464cfe03c3329469177b62b97d05ca9911133dd5acf24 -7548d285807d35fc31ca3e66ec4c001005108b14190c6d77c4c5eceef000d077 -94cce29c86db20d67fffc8a252163c1455f813d0d5f5cde4aae0e4fd6bb9fff2 -b0058dd5e4ea54831247edee8ec59c0d187941861b59d2ee2f2a731f16d18b5a -a4f4ffa4a746b8c8e40634d1cacdbc9a81e1de2772a32f976e744416545e9117 -a712890c6a00842a5d3c83e69640a14cad52ee5b230663d2c2fb1cbfcf9e5f78 -f8594b2ef00028bce17585c49c72991c0e8a76ed5b8b7a15ab8a5edc9546eff6 -bde1bb3b1246fa8fcc9cc5bd8db6979642fc4c6a391059edf28d667e996dd9c5 -ce34b71b2ba16ddf1a9ee9c5f90ed2ebe911dd5c679e5ac58a1f5120b8d07bf4 -9ae04327367db7ed4f5cd35f51df529a340652eba0ffad3ef500148b6169c8dd -cd82c0b093a0acecf6a11b8759dea35507826950a1ca47a4d8c276be3922592f -f48a304d9f7a52f31e452e54454c8e22f33c6434bf9270cd241c98f5b05e2941 -c2b1eab57035c4c2a7440a8e432ae7e9867bcf6b74f4e360299f345de1afe748 -129d01ecddb4af2de940e19302a3bc7fb650d32906813bb282d52e44bd81fa99 -148bb9a5b3019fa84d4a550472c9db1309dc371f460bc99d02070d5bfad786e2 -3a0bbe6488b033519407d774e6acb418ea6d7beb376cbc234b51e6485ee8baae -fe11b71645b225293954f1d0e131ac20bf54b13389ed1639316a58f4cacb0fb6 -dd2767a6eac889cd54bb2dbe267486c57304a6e9e03eb231367caae531409133 -d25d91369be76e2ecfdd151a41d9a87791bf5e2e200b48c9519d90c1a03b8378 -70d9fa50b6664f1efee2c69a2aca53e2cdeb279721b9892f9b300c0aac91ad60 -39863202bbba2b4da7e89f9d0f49dc3a1e5c84ea2ea977eab41099baafd9cf1e -cb9be0129d78973ed407397ca91e0695758d80502dd0fbf2096c92e8634bd6c0 -1aaf65d1a34c5da0c3c0f38fde49985768b73721470328fbfeac3d1a166437b6 -2854c376ef62b3f1fc318c69ad6e321d6ed0272b66b8438ee53a2318be567bde -e9cbd0ec41da938ac7b423ca87422b168c7a40e89af49102dcea64f3627b0c07 -3a004fdd60d97e9b72a8524209dfc1eca25838a293f314ff1bd68e77583d1325 -59907d3723b5bc07c64c80aceee830a943f82df462c5f87e5ceb2f4ada4f07ed -275a7479ef53444610e3e67b33c49d1890fa07a425f76efabd699ce953a1dcde -d5f422a0e32e43cb4e0bfd665b9ecc327d1a9c2e62930dc3ee549bff0fdba8e1 -56137ee9bbfe28cecc489ac9a390760dc98d189f7f546622d5258d642b6fb62c -9004f9d5eae1422b069c7a2f98b37d7bf8a670467612addd360f22bb639cbdaf -9a793434d24bedb1f90a1dd3bf2ee9c4345acfec767fc63b185fa5a50d7a4093 -0ea080567e0e49bf49e894e430754aef7f63324e99d65201be3da5e13d98a5ec -91df886dfce875cfc5621cef85f5c458314adbef424268d65a4ccda6c055f942 -527a15ab4cb7e454e0d56e6f36af4070b24761f827b9949eb5aa1d10b1da7057 -bcc1c88ec8a5d5d77c87b05404c23e6b3a2b9ebd4c43fdb607553a03d75498e3 -fa9cd8368877bd4486161e83a0017887a39bf78b1cff99b62992d64d6124eb18 -e8f3fca8063b668b48bfb35588438acc866497a8871a4155abbc0e2f76b86740 -321edc78e6707969c53182561f990e131196292f6de7ab6c1221fcda7f8e8acd -13a0155acfdc43fc9d9fefdf10f70727489cd2b44a266aad23ed6db35e9ede3b -25b6dec15841fc8ea22fffd1c73b9c5b2937955b6a7fc952c139e3230f477d19 -51aa8903aeabf309a0ce51d0f08feb12ad7d9153e6db9d8a21cd4efb45faf4fe -e3783ab03d59370d6a88e4b081f16ea35db7c7879b3126b847a667deb29bbec8 -c5fda1eaf8b908e1258fdd57e2d4324e341cbef755975671dfe89bfe0b18aea5 -18d16e014e75242a17c7d4ae3aed9067cd1eae5779acac81c68543e5a6122083 -1896bd5ed3e1bb444b324521790b7721d478a412e222e0a10be52ad4bbde7347 -f5ecdbc61d00099da1eba46776650c54a2882fad6dd3032e2c0804586a6a6562 -f9a0e025092f1a368dcdd2b806633dccf03f9bc7f540a5a34a70856a253869fa -2aaa3786a7225232a60aee3cc8a48a56c7055e52d9143dc695a054c62481634b -c09ab8ddab896277f772a696e23fef5f50c612307f046a1b4b545a2e62df89bd -eceb419a8f5f40d37a9f95660eaba3a66ebbe448bb5ee7fad363f35d4dea5ff7 -01d1d976bec74558ba85561db975a71ced117133b713e2e61979627ce0cce51b -6ef437a61689cab30d62380aca758009194d996a16f0a8c47595db25c9a7f89e -fc95bf1dec4db6bff7b575053bff5e797704c0ffa71b5519e06fc814dd4fa9d1 -2c8496f47832724afdcc958f5d5b75c7382a1bdd76da99b5c149135abf0743d1 -a15263feccf69557f56c2ac99645d8a47d2e81493459b0f2df0bd4414610200a -5c6a2c208f887243dc04d01e648832cfb63557bc6c31503ad67404ccc6db2409 -1fc0d4fce6394c20617f254cf9067411b1c7d1b64f7ea6333683733f98052f28 -3c196120d8163d84722b41ddd1f4e04ae4970aa9e404c25a8f7a15c9b674d441 -2f60ff5e902d03e58f91257c2d4c248dcc9e26ed2833f81ce6cc58207dd06ca2 -b24671cfd99a826fde65ae6b242c85cfdcad37d02a8e316d8b2e584557b66a01 -6fa724886b4d143d930851c2c92254a3b2bfccc2536e20bc2b88c20b3ae1dcef -0196f20cc7e28568323d360dfcef66497e90a76b37fc8b265a0e465d1b881631 -625ae0bb9f392b2a32c212b6428e47f31f385a59ad32500efe8b1f7a0b14a0b6 -f9416fcf8e4c88c8355b153afb875bf55d19a0ae312e4e5931b9edaee6d7900e -0b839158c90681ac40a063c0364677d65865cb38a5d818ce117ac2d78373d5ea -df7d3d03cbe2d69402797a5da08764f500412ce58d5db22281287586f46e4ea0 -f515473677e1ff5365cada72203717ea91bc7e6f06263b6395e52f79fa725230 -efe5041d6dbfe1d91fd179bcbb7ba10a641bda60199957f8ffaa88d5ed67082d -dbee2959cdeec7f827c965474de5a76ce9394f544ec7569a3eca40377a4f105d -254cabc25b369d3f218a2a5461cf57d6f7d7a3e65e3e1e6c65cd888efc6e14ee -d0c4e76cd071b1a86ca85aab66510d93a0dab609c3b56b0c0f5fd22debb041c8 -0c9026e781f9a66c20c7b22c472707a534b97e7229a6556db2dc81fd765592c8 -1157b609b3c215f07ff963a175ecf7fdaa5930a3ddda798e92541ead871bdb21 -587bbdb52745c2ba44d06111dbbad856b3aa71c2dc51c71b3d7368267f787fef -25bfec835a8399441e54b3464871e7f21e6681204e4f253abe621017b12ed434 -468de35e6c06800d7ea191e10a7a3ebaf8e2fb41043cfcd14ab3ec8871c55176 -7950d966102196bccaf4be7c0290bcfeafdab1b9f35a1f0150cd239553787ffa -3c883280bb9e3e8c4f96770c0e22fc08dd1e65fb2590130b440c1ebacc5a6b56 -2a6d5b2d6ec254fd802f1cc484562b001fc98df9b789f575e7d0271ab5523330 -bd3c34a9d90585263394f8d67c3c1857feb7620ad36d8a0f9036092310841a02 -aa7de08ec562bc2e62224d43510ff70a69ed77454660f3fbe3414960a302affe -a28ff27693dcf1d3ff4c3c20747d4a091290706cdb25cbdca6af3652584a9d3f -5a6061dbaeeee9c47a5915773548a74ee23b8c73675acc8917aaf4d9082dc4ad -a49505d1ab6a3ebbe151d9f78b1e7cca18f2c77f6634c4a410b3172557fecaba -5dfd32ed9ad24fd7dcf3151b55cc0d673e32202d26124798d9fa4e5984136a03 -26b1ac7679ad36356bd124e428e66adf021aa0eafae3295f1a27b7d461f52c1c -1e49c9132009c02f2e936ff2338c9c6833ea89d1beb163a76ee20da1635af2bd -3a315c6b8f34ecd06205030fdb026cf1aed42fadc1d6d4f7635d58888158de55 -2a81f808352f8f91a9749368bf2905da5aedb0be5f8fae76707cd4bb245af6d2 -0a484dde7ad7dfcaaeb26db8ec09b7446b369b5e22e9cd8a5c1954aa52c1888f -d1cfafd3a0101bd0d87e654cceba138d39e7b420e9bedf08d17592ec552e5bca -f3ae95db5c7bc27c7fe93527c464a22c3cd25c3eae55a83fc87607f3eb83dce7 -4b6aea60d4c093596d43f930024efdd5290b1d1f84e0936e24ffaa6bc08ff8cb -d5c5ee1c8b0472ed88b1bc33a59bc46e76262a9e2bbb09b1ed8bfa57c49d6e92 -d8040830f7af3eb09e1d81a51524d3bcb30a55ff61ef409ca2055c2858b46ac6 -5f8e9b43b88c522aadd5777861bb69da2c2b8ca33a40b51530b2cd60cd3e4c1d -f644e76fb0ef1b114e70002abb606fbe8d98574ec52d8ba3b098408356a2d39e -51db09b3e2a498c80ecde573df253cad6364de6545081661ab10cb16b1ec5e59 -3ac441597b29929c8b96ca066d909e3ea925651dc7ed2ba9551cd276b62c831b -668c0cbfc28e1bc122b88cf77c997292cc42de0dae2c950e759e926defa8760e -af7d54ddd168430d077df565243677745b103b105523290b3cff222773bd0715 -1eb0429142c7c003f85310d191f690f2e7fcfa41cecedb224b89d5c4420dcffd -c875ed085cda42343199f4d953c59007a55b8b9aeda71ddf411d26ab31932853 -f08f843b4fc8cd4eb62d7602f5e290338717afa515790c6af76465f06e9985c0 -1676cf513f35b83a5a578050147a287f6cb702284dda2c11772dc27b24fbfb82 -087923945e4bd649587b6bb4ee99d10bd0646eff51e641bfc80451cbd7265be2 -eba006b47759222bb2aadf9260885a03bd6db4a6c5b9e8ef22a080ac348eaed6 -e2d1278f0cc02800c77200a164b03f2535e1f676c3647914634643a7065f0023 -c3667475e33106ae9b8fb1a7f261b1755009f63004820941076743f8aacd114d -09316cb4e85b41349426061ed99c5e11e4da0ea3bddf03c82a14983a523e54c1 -7c2b2d9b290d41510107a24d82abf8d9a877ab37df3d336a7db6bc47fff2884e -79ec7cc9dd02b5e72b0f3a962e07a042b6d086b33883b21bb671c26da4f113c4 -cbefde6d7a1b810ae27ab1c472e7055e51cf755b8fb1cc64b5e7de396a301d3a -33fa2d518fb4fd0aea54e57315eea0bff6018cefa48dd97f1f1b1fe7da94bece -0e16ea8e8a27e784d14bc7515bf01db7b35f67426a8dfcbe459944ff7fe54b8f -0a44c511def1a5c17e14b26a676ae060ad291acaf9820abf64eae0848f45642a -14dd03a56af9cfe4ca1f8e1a94e816dedc969bbc4bc4920383909839950bdd63 -b3fa857e34c2d90a343e8614c7afe07a53b41773eefc7b73ca874bf4b3cc593b -9c1c916f0c34ea84aa9d08b863453e39302bf89b46e2adb954a825ff748e7ad0 -2057da52514b1834020b424fbe13c161201c7a1ba75127f33785e1004fa8f57e -118c146c4930e51e9c45fc522324675f428b58e25d8813cbf7beb57510e699af -cd61a21bc563c9b7675f9dba8c9976a8d9cb069771a788fc48705bbc094499d8 -8565e84bb7f4877b07861075cd763f01011cbbf31c4db20bd53673394179d391 -efad69f554432452b0383c8ddff3a31193660f8ddab986943a5076fee04b3c51 -1f4c6954ded0d45c1e9728d563381a45b3fe84b4ffb660dbf6ccc5149f250563 -e1aa4df97dbbb453d7748b4e3ebf6a9bbad1017c77c5b0b19e357928accb0c31 -15dc82d2b9434494206a3c3bb57af2a633013382ee81d83b71d0fb1de3e38953 -f15aa48f377475060d80375c75d96fa20097a1032abe5e1672a2e143d12dbd52 -bc5ee680ba36681e94e151e32c5f83ff08a4274262213fed43a6b5bb1e1cb83a -e9d845ed34697a0b4f2fe93d832d35d968f21bb9f9c205948ab1f3caf98f9f09 -d4736277d7ff10de6ae14c084cb6c6680831122a836fd273fdd2091ee13f3c97 -af6380ecb48078fdc40b4a6091fd474fee7686bee008930ad505d0dc7a57ba9c -6cccab1955d552dac4cb163ec549bdf525f2a1e7cd9b078e8902611233f48a9b -ad5050a3c4b75fd463fa331c152c011a37af39926be595e1348bb3c375ff7b54 -18eb24713b9b1de1ee3ec4987ed5bc0ec3adb1a49ff04a1608da29cdf5dfcdb5 -adda5e76da7c03bb6d55114e9ee23c4c3cb35fe8ca436a02522eb0935fbefa96 -fca5a2ba189f29077d802fb6b3c7737a4f4b7e840dd7cd92eacc9368975abba3 -cc4cc98421e50a5a24a9c91dba7af862816365789f621d99af0c4010a5c63230 -253d5fefcdb5d0196bdda6e2e9e221cff9ce18e90cef2d96636aab43e3f5018a -6273483f3de3bcb2606608358a7031efb31eebb86a88540c387c3dece9321786 -e4ed20c3825ce5ee4615d5cd080101ed6537966563e86cbd3791233a4a3e0905 -7fadf02be99618b2f2ee8f969ce5e9962b644431f3ca86a1bc7c3cf4d487a84f -95e79bd75e013a81c2a4a7c153043a13a334cfbf87298574346cf136f055c7c5 -636bf0d7259ef1cf08a85e5167a5b430a892b9dba8f041bfbfaba67c991cde74 -caa50ad2699cc1d45404aa479d887248528bdb76861cc3b489fd1dc16b09af92 -e11367ea62e2542128a15ad7f18c417f6a238a75917b5d814edecaffdf0a244d -91845b032edfbc373b038ec2749481917ac69fd45cdc9dff1dbc19990eaf4b23 -3a37b9df51d449c7bb50cc8214593f5e3e08dbb007bab46db6306e5036ae0a77 -4201320032ed2ad43ee2f45de7a06a29f988dbee2ca306350875e2f1fb9d05a2 -221d9c56d46184268a3ef3ef66d622e2033cd1812abbc6025fc9338489613779 -aa00f1bfbc124826eed2536f59d7d90eb5e56eab6ee41007824af211d4240ee2 -a1c2e6e5aee45fef8f594c52dfc9254864d83455c75120eb3bc1777e7911b3b7 -15da86c3b69d4baffb98f755040a83ebff399f5645aedb16f1773b631dbd3e58 -90157cac3716f2b90725255633db35aa3de0d7e67a1f9b03c3369476ebe9a7a5 -1096c9aec71f96844071e97e36877102e84a16b2f0362aba5f5517fb66f86d5f -ef882dac03d608f582913034d9e29913d30d50fc3f357a50e3bf2eecf75481c0 -2d37582963775f23d127bdc655fd03388cd3405b8833cd463b0d5724207cdf72 -fde25ca6fde38c2836cb3c0088c34d2a5c267cdbbd5d11f34761fa410650289c -4613dcb225814ab22a459b0a80eaec61afa57317e9e7eabee8b0fe7ec8f92d92 -03eb8d92e88ef319b410ba3f07808184a3ab366aa293886294a6f69683dc1ed4 -d269e57d95bbe88f03329fb4443c6a64447740b4781bcd0df4789e0853ec90fd -432faa0396baf4b4ee22815d8c1e33c547a81ddf09275d0a5835fd068bbb0827 -37cc4a990146bbd0147bba0c6f1cd26369c1e56951e3c163e0ed8b5027acf25b -7c6212dfedc12d5715294530932cd73b0f7b0dce6197965f01db74f059887133 -df8428ef3e690a7ba5aea39bdf1af10fc41e43767485f45b251e0ee576607d62 -b252d18aee5dffc655f5e93bcdb81ff29068f9b1dd299aa2a2810aa6b41275f3 -4e872c81cf4f3965fc1e863df67037a26bdab391c96bfb9508f5ebbc61b6d757 -e433fe8b7dbcd70dfc5b84da1e83ebb3b7aa2458729ea49eda4ba52f825dd8f4 -3d8c5c8ce01358580968a3f19d91d64a5ef6611ac5626a906e78b4ad6794d048 -5c96b987669e91c77b2c60635cc891d1478dcf0daf140247c1de7f44a1a6809c -450c1aaa3b4a4babdd642576ac182e30a9e4bc5ff2fe2b7b294c299d7076adc8 -b127d5b8111879efd3c93ece1df1164c94862d432178c85448d5bb57b6048bcc -49b1d1f52868b79b5694df9b4b12df45c930b3b9d9162c0302b1f368e67a14c0 -9283b27fa2ee493b16f8b1c6a53de6b357a90e0ac91db2409f7bc64a912c3945 -7d2097583bf817320bdd540640192cbdf7dcd7b5bd8bbdfd08f406814fffb228 -9ddca4c32f74cc0c538d4287e1cbab17c1a8e940b9476d5b2a799d46fe25f8ee -3467ba488108760df489b6293a1653b57461d5b6a2e1d388fff2d9e2f7d4dfb4 -098db64f07fb8af3e48f4c8ed068bc7faeabe010b4632dee2fb6e1182e62fef9 -14b0243081e277deb0d4a73ac16a1d8589b8b450c408ad81e5007f37694edb71 -9f9d7369971bc01cda604bf7b79da1b39c05c48e9c5dbe237999df84a5374e72 -3c65e04386665dba518ea43f33a0e8f0c4339f18e49016333c1da107436a2222 -13cb25ea5719249a9ad36f31424a4a78cda9d868dd58475ff3a70236e83627a8 -efcdaf9f4e9c1298aa4ab4bd3130a77e4fcfca54c685f1b8500b2d19e028e9f4 -8b278bd41bca63b818e71d11beac4574e8ad842b0bb8ac6c9d242c7ea58f7a0d -7b15e9fdaaa79762a1d9e62a3c187fa89b14c5b18274aaf60acd7ade09ab7d7a -4e1275524a52dcfa4165b688dd9079412af629280e09c79d9a3ea97643d63108 -a2e8aad34bbfab30f199ed390224ab66bf2201f75a10d355065730deec18dafe -312267ee61412d34ec7915a3ea7277bec37d4616aa2875e9caa356090cd2ce2a -0e714de051eca75218bd445d025b52ab7cd63c6e2de597a64b0ddc61ed2e811f -0251986444cf8481610c749798f7a56acf5d7e6cbd52205534d5a94a691910e5 -7f95c70e078f5580384f09f69466fa94be4a6fff49775756c0dac39d5e3df3f6 -ebd1bcfa8b8e057dee0b2e77991d928655b85c166139c5197bc42bb18f093042 -2f3fb7acb990958541cdc27e19523cddec01153ca994508162aafdf047fcde73 -30045a01c46394b77a1ddf2b8adabaa0de7a50e48d8dd0b9eeb15d24ecb59c49 -3b3ebc52259f7cfcb8d572de6b328653bea7ac1b86e4480f6db4877c1cf9bac0 -9b47771198f19b201b6d3ec2c1ba501d3d3a966ec7eee9dabc481f6ea1cf9c58 -d7e22db5ee0d6c03e5cf22debf463d3ca1540aaca67f0b6a585a44e9145e6dd4 -62b4d3fc3766502a5cc470c189536adc6711461b6687681da63f60afff76b083 -6ba21fa4588c2957879d4b1e6c682f6249ccf1117523082cb67ee829c4064578 -eeae5f5c45c64baddb526beb0b4c5960630eef6870f39a1f3cf87ce55d398acc -17520367f422a077ce4d75e5db85e60d68fd5eb31fe4dc4de79a95c2a93bf043 -16bb25a2a35b8eafc5ec2588431012bc7d538d4aa367f05755830bc5b6c7ad24 -2060409254b2c46e708ed195d1deed36a5b9e1ab4e49d47242fc672fa169e9be -e0be3397e92132cb1e3d7c61c24c05f4102200e4c43eb148d6fe80538081b87b -de8257e8aadfae9d2db64554b7e19d671a3f0c97e9a33c055aede112c3968115 -d5cb544ed68daa21c4eb0737189754a25868d3965c126f5762c09c5499cea1e9 -56f74cecd8d1db6b591562d58393f9c3dd5cb827b30a224991478a6c935db6ab -becce61f1a37091074ffc6ef151140a9c86a676e08ceef148a38811efe835ff9 -d17b57ec7c5efd9319bf4189f95f789f446f3e706f9abe13b61aa5fee9fb3327 -a5ea286c34c87c8f119870a3824f3f158393fc5223f7ec36efc3b0d106269b98 -5c3fcad3b3d308bce30bee19ae63646e9c7bdac89b707232789f9f2c24957d49 -3afdfb3465799f23a25a3df47ceb0f83baf59801b25186f2a3d7df74e51a872e -85bca2fe8cd135a2ed9b0e6a9d5ac502ab98aa2aa1eafe4f25e37144bf530e33 -e875bb08b8ece0998d2d71274ab0c6abfee0c4fd34a4e19f9730d28bd3b3f9c0 -a348ec93623f136a6bff5442789251eae0db57ad5d3758956c375e1eef0be9a1 -7f187e263aa58091e7a488bcca0f17944e9fdd6ecc961c10195443d6a4f78b8c -e76e92a74790376da992503c7cafe7f68406cf7d16b025c0015c534eb74f27fa -bf838732e3f398cc24ad62cab99a75abb11f10205773c41525cf76420f358143 -4087a046a2f9f48eddf66a194104d6873b126b82a0661b60f3fa0d02595df850 -8aee5dcd73e4d4217e816926a2d59e03e165e99ed3d803f9cb2c0d797d2e650a -6ba54a8ecd178f8e762d7ee85b67d95254b43ee00dd16afeceec7697d1e2c149 -f964cdc4bdd178f7c42c57c191eaafeee1ea2e630f679c66c568326abcca0f32 -a063b57833581dfdde2d40ccba4369adab4b1fb4bfaece9255dfa3a78720a24e -79893c41edfbf723d4a0432cc1d1b6ca61663032223c3b11e3233ccd45bd403e -113a8ece17b879f90f2ca88000ff15450deed1ed71005d127c93a36babe5e184 -4ce4bed035078720631cf17bcecc6bc5ef22db67b8790cda3a7241d903987bd1 -4d0f89488eb2c1bd662a1c18423093f7443ed0ce3818d5616e8871e14f598c05 -ff4170f9175285d540ee2f9ab8541765afb8280f1b7f0fa60ac4547ca2451327 -82bf7f56353277dd374100fe1598841b7ffb560c250b8a6deed6994fc6603d34 -3165f893aac350c9ff3a9161088f835570e6a5ca7d0e5b8efb42517cf0facbd6 -a352ecfa3a8ca5a00d2a07c24a87a31ddbaa2797b47fe2d27ffe21b3eade546b -3c547d5bc8483a5e58e3a5f145a18f4ec739119f90eb92f92c0a7cd54189c54b -235fcdf4e4348f837e07a428105bf1e07ada50b09c7102b2ed92a8f86a5448d4 -ac75326ec56f4d4103d20bd0ff76676a6781ea3b5ae0e037f214650b8239a6a2 -53260d162667c47acb56b15158deceb256734b510506f891fab32fc0a4c6a45d -a474302d01b72c4d88595e42391292090df766786344804a28c7c5aeafb70a8f -edc7b025cb32d05663b0048d04d6ba7d33c5a94e4cd5611f8f4cbc2b9dee92b1 -c36ed463b0ed676837f5bfdc44f0c54f631eba32fa554fc9ad9178b156e0f8ec -10e269f59d30e10563797ee5937c1d846c7396898df34a09490d1d95958e4cd7 -bd479ae9d5fb5fa9faa2a6374e90cfb2d4057fd9f5dbff804d0e91214e8ce183 -0345da804a8046ba55e5500c6b8f4c78f62eea46c6c2d7092a4567d409f21852 -162430b8b5773a3b911f9d3bd6347bdae80c231970d38d47de1354cdff3065e4 -2ab8e79f1c8908525ecf1741f13c8dd9b68a54284fcd38d6d3ecc43e525657f6 -86107a95e4147fdf790bf4d46e041cb1367cc036a406f6af9719ea2af596a07b -8e45e15b4dd9b89a3d70a550320be544d11011c7c29f7cb05fbed5ac7b32b773 -3fe3b912ce57fc4a4aff6a5faa344dd52941bc9863ec4f70f8548a7d946adde0 -a0c8586f0010a07718364e012fb75698860bd22f07a644d32cd7dfeb9264bca5 -cdb3e66203cf6ce24b76bb4797703579e5d9fc564864b0d89cfc79d2a4b99c3f -6ab489f85c32236c5c58d9320f6cc156db8e7b8e021bb5b1efc6478a8e0228c9 -5158b1add4152f9452c1306489586f03f54ac07962f7c8500988e47f27977ee4 -615787261cd28c39534187d6dc342873a94acca64dfc87e700a7dc52821b6841 -cee0412e8dc4fb4cac40e39e0e2d429646b545f12be48d2cfd2244f23a52c831 -ae2599b96c59e4da9f9b38450c121ee9e918cf86c147b4d554b8b5709dc77aa3 -42fbb8dd2b0f1f7124bf23e1a899dc9d326bf21c356ce68766f93489aa645c03 -d40678ba17c817fbfa13f3f866bd2f9a2141d4dae1c26e085a317de391e6f8b7 -de10115772b05f75559f008b28aa268a2095185c568c12d1285e2d7d609a3976 -93b39b1b02ebf3f4217e92cb7d51416d95ac2953177b96bef79098b8843f7422 -1d5aae840c89f9f6116a86781d661ee118613783309eac0541da3e9ab844b0c7 -b0234e5de8e9d3c81412bd305e1dbdff84ddd36f0a509344d1207f584814cc15 -b39aa1a3de0e86f3e5252870fdd2f3960d6752cb2ef47a2be96c9c896459fcb9 -fd5fe164949f59d44f63a6963c45a38133ccc48f334e48ed205fd17e7abb6d45 -6fc7866d838f52c8c7ef02dd464918cfe2d5bab370fd7d50999b3fcd0aa31564 -b715eb25d18d3acec85f28afa8aa6d6b7cd96a49f6dbee5647a7dab84d429d40 -695b1adcbfa23d843d10b97f58f9a194d421d5022f21a74f1e17370b8aa25af8 -d6f937d5766a0f4382dec6897e3bc555e4cd77290e8dafe9814c6d49644b7043 -7132bfd42cfb4b803fad8dbe41f9646ba5e6f3cdddcfde2ff60b2ef0f93e3334 -0b8a29652ee6284a0aa89218cf0fbfc9cbc0215119d2a19db07b3fc3eef9bb77 -3bc96fa5dbfe4e213bd2c99d820241f4a6925ce7585a2619c87b8687e08e06b5 -c91e727f934e9ef850df3f35e2ff07b5106f3e2c9aac817a2771ef728c2df988 -0e45d80e93e39fc389c971db5a76c3271c4989476d69bd869c0ee03f5b65bd99 -620d1c3cc71e41c139186aeae9017116659dbff5f8f096afdcfae4ff1b61a6b9 -8280c720858053b0c6042ea862495c9f37f1c10fad1e3f55d3f73228797bd5b8 -ccf675ca2d067cf9f15f91149126f7c645320a063a98817090128be6e7e5a1c3 -eeb5e1bc8f02be1463d3dc8a07d3577709aa121ff4d148d29e43f9776d707227 -79a8eb0dd259553feed652c1eeefcd153e8825d30b0241bd2dcb5837eb16954e -0d1fc47d1e327645cd9b803738ab69f20d7c774dbedf8f8dad4b4f96c4049bf7 -3a4c30120ccdd8d99a454317397fce11e7c8c7e54d7639e2fbda27b8b9e10226 -e0afaf3a6e83fb4cab769a1665c078b9b036070848d7d9175dac3f65aa329e13 -08c60155d55fb3d94325a5dd3e50bf86feaa5fe632195005bee4343c5d4569b8 -8112712cbf7c8176bca3d21685bfcac054e5859ad2c6423ea9bfe7dec95dbf35 -75b7457f588d1d0877408c35be4fd6394d4ffdbc318f0a690bbd2d9460dd7fd6 -8368e6929aaf23247b1a50ee409692082f2e1c47cfef636e985e86a5324ebaa2 -0adde48c898382e828b0580ce4c5458d2f6fcd716fe9314205ec8d3f88beeb08 -2132455e88282fa05a0e616a6b30f5097f9b41a7467c5865da5a06d8b4689007 -64ba50a20d29d240ee5a033901ba4a48f632b37bddc80a8ed9224915791ed367 -94fd3fe8cc8ade7091414a56d677dfd4e0862d07f21a33d7ebd52d5c57c58ee9 -0e865b3ca15c776a612af07108fa990b6ccd55bce5781f94a1509a13af28e8ab -e7a97e3c5ca2f844faebbd0e0dae04eb4a6453ece643fe10ccfd012afe8209a8 -d463d82951a01e3b1b832f602e82ebf2b654417195233dd2d877ab104147455d -ac292bff043cd666468db727ea6e33ad121219a3cddac1dc5f5442e88aeb035f -47a62ba58d3c9ba998431ce697dae9d908fb6a324e5872ded899e01e8e612c39 -129f2ca836fdef15110f7f814bc60a515242e6e44846043f21dd871b5599f6bd -9a321bcf552bf1635d85333866676a9fc4535e5c65b37218a5616b0312c4f306 -5ae590e3d06f3dc8dffb2241039c49ef3e5553efd781e852570b2c3c663c9def -01704cb52425c10460e284249f34d6b705b2c06760be12897b47f3225d41af0c -622e698d7be57e9ad307e5af9e8d75cb675ca26a7018484040f7ec98a28edd99 -2f3619a804cdd743c3639e26ea4b3cc3701a93e61cdea0c7b60bfe5b26da9684 -1e60d4117b4497b2dc65c6b498e971ab6b15b36353cee6a7ff70c53e37981d71 -3bef05966bcb20de75e0feb66ae29f0dc67f897fc61eb0bd87ea6690a815857d -4ca6dd7ed4d1364e4873e03df8503e0de0bcfd99bce7edf936d0ff7ba706c2ac -c06316344b14ac2615af485b9ac8dca30bfff414b1a86def502eb73b204e9706 -99e485ba75383b524ca7044fb75e73a401b7615f77931f863dee8c5141dcf69c -6a30682d8f220f0cccae15a2d071c9b87cde781d3a56387d8d76cacf458067a4 -c8e6bcabf441f1d231bd23bf5563145056ac5ea2203c0e5a6a88f4b17d83226d -c05698a173671af892449d1895ac9a50620a0fe91dd1028ee644189b94c28003 -11736342f56363ba1d810219855bec4f18328f3d2b6bc1cf8bcadf89d0ba292f -12c2d95efac604c7f1b08b0fa4f91a303659f0dad1b3fe8177120c6674ef2dc5 -59159fe6ba2fc46ba9afb9980b85b0f769819351be020bb335688bd106e4dc08 -ab8d8a32d548d4bc2f31a580e7117808258c9b201e43f1a6c1b1f46e1556122d -72a1cf0ec5a904654d21e59593ec79ae26b2305bc3484b03ec8f48a988abbbf0 -ee38bb5390ab3087de605b3951ecf89dc2e63c09415127dd2481534e04654189 -008f4975a6a7b38cb6739f6b43fa4fc516075200795878a12c9c9921b7322fdb -f5d067269693cfdaf6cd0526c647fa7d852f0e41bb0b5e172a36e6450cce9c73 -67e0457a49efeaf3b3f96bf352d06c5d64e2834fabb80ae60cb5e17ec0c61d2a -bee1959253dc383d24c704e5e3c1eecea9d867507d8dafdd7cf770066ec96fe4 -60ae6898aed838cc557239a33a43fed523982feea5d18058a87c831bc7eed95e -e68dd3e2fdba6b8683075463bc2ffec3bfe8fa114eea157fcfffb7d0b1548859 -54496f30096ce3e8d6259862cbfbee80cc4423413337051d7a8ee6deaa94d112 -029615055685e0090ae6ec5fd5131410fce485418b37c028e802121edf88f047 -e4b0b2e6c9190f99be10a5c03e9e31797678cb347fd9517ad441c42fe513807d -91eefe8e408566611b473a95f0c3977c1230c3acf93546a0a22dee3afc23dfae -9c48b4850b6239935b2c115ce23045100bbf5aeb80dd0024b5daf11df762b5f3 -2170f310f38d730727100357b604b79c03302d6c1dda8d9649a4bdfccd99df1b -a964f71875a91a36516e1a531d4a4035bb32ba45e4ad9f2f55bd4514f089a389 -b2e5e0e8fcff1fc0452807cb3a55022285f9806eeef555fe3c4a89324368fb0f -0a0b959e0656a837d2c4e6e0be3f115b8c63f99378ee1c3361c2e3ed0eaecd16 -75b9abaeb24fd2b44b748fe95f4d3eb9c5c2663033263bafb0ef934328850244 -e49a64c9c92ebf6d72b912036dc2e2c4eece81b99869e0ab18d6c3ca686c7388 -f89577d2d8d6ff132b93cae6895620fa33ffe3d17b7e942017cbfceddf7881c5 -523c8d74338898aa3bf06c14838adb5a84380d6b78288c9a36951351d168b2a3 -d17f9ef945baf8ff085bf71a6050d4a362623143e8382fb67bf13d83e103b46c -d581625c4677548aaf7836ff6985e7c7c9515610ec092321bad6e29c3ef1f421 -8fc2f583c7f772169b95c91215658e34b12c58df5a611f5a9f496876bc780d91 -3b23773ed6d8a8077bab593a922bbaf550c5d6413c13437da4549a19119af37b -e873757424fa3729cb1bf977729d535d1eddeb1ed6915fa7f3451c42f91e0d6d -03a51dd3f6b328b0e994069e91163e4c58c0e148dd0bc8b7d437d9566fd45448 -8bba42dd89543091cb35f9518ed83ed26a8148acd521af47dc6afd3666f509ed -cd8bcf042d5e454e95000484b12fd60976ce8919184b0b93dcd9aba875d4f9c7 -516561e02ab0b249f70ca747a99ea76eb507a3acff7776ea223eac0b2c0de672 -58fb296e7e1de48f233c0425a04eb042c3dc76b21770d469bfb5b8fb0eeb7447 -724f26230110a2f1f0c126361f03e82efef2df8b06c7dc2913d2bf05ed94e9e8 -54f067f46a4bca1689e069ca7c1c60818056d51d040c2dd4d61691c46933931b -47af9808d23d65ccabee17052990546e1449bfa8416079ffa44d4994b97ee847 -8d1de72d990a107e476fd421d2770765c882e03bc06112cd2167969720e67abb -cc9d46af5c0dfd3c30747dc8b06ae28b1d0987136b10607e87770393ee640127 -3f81aa212cf59f672dda422a322462931335948a8c90414e7241dd08ecbee968 -3b0655c1145b6c9185fea3b71e4e497de8c07f83dad9df8d8abc526f20a62a10 -c835dedcf597a535aae4c15352be60edda3fadd340cc8669e7cc75064651e207 -d968b3bd303d2280659aa1e13c154146408893577dcf0e42cf54cee337eabf2b -15d0e8744482218b759efec8efab4e5566486012f945050a4a3c8ca4b350011e -ee7c6fd8c0631490b689c870452d5c3a095bab901df3a30759913e117922faf0 -c8421b22c9e4c6b57c2b6f152320004d05c107f9b8077872f5d237dfc3983855 -507b5faf5d3b45c352b40a8fd710beb78dedf57386e313549d647d7673c18903 -05aac3ba7099f411e41eedfff813c84b32e1bb440a053c7f9d0d50b6f340d88c -a77e728487e2c1d546b4f77d20f1cfbdd3618ac306ab1ccadb6d4edf25b20ba2 -0442bf616c5cefe78f92c4f23d5940a48e48e22254371108b0df29350b2bfa6c -0244b59513fbc3ddeeb462f74d7d729b24494cd2a04c682d7f6344b35bce2320 -4f10c39aa0689e2cf52898ae222afcd7fb71ce4af07ce06ab1ee17d787b541df -65fdf090f8ccdf2fda3ccf39143ffe173d3630bfc917eca1f5334bd64b64d8ee -aa7bf7fac688375543c676f26cf86c4b409db2179a0871df6760d6fcbb7f3695 -af6dbedbc81e7dfe75c79c24cdd183691101413da9ee334f8a2557c7230bf7fe -155082e8f10e284d46f7507af4aaf6e630e98c37a06133e14410f60d87bdff61 -c9389dd771062b90b448f84f5722f0af41afb79ad93ad5204503c82c1f9ea224 -899b361ccfa5fea9692ad515ffa82d342d18cbe6ba2191e97459487238e02043 -4a3c1a413ff175ae878ec1f39c11ef176552bd883944e0c9165bb4e952114913 -4e0d85f3a2ffdfa448cb3cde8ed7e8de27234d18f66d2a560d26e0148cb884ff -4e227dd5b771a1cccb71aa79467f9f8b7b0138569f53fe57a3c3c65c8c7a1e0f -864d2af904a8db4d64299797a31b9f71aeca8349f30dcf8122ea3ea634698d26 -f0595c8ffe6794d47b9129007a89cd9f29471f60eb78c4a8e68b86d66da54c51 -f6e354f345f5c5a679008dfab5d671d7c7196abc9c845e94246b39b21fcfe093 -4fdffcfa99837c5dcda1083ae0a09b8b11090a2d6b7e4ae2334601522011870c -df1b3ac3a4bdb9e300b06000c1db2754e1c33af8b7bfe966f31465f89683c387 -abd9c4dd001fd35cd3eadd5e691ba2920a468361e0da78591a8303afdb145124 -746d5e3c7d68b0661f0674de77c4e44324e33ecac28fa1908a67409d425a9f83 -69f9c5c3e36eb2406ad729ce566b38a012bf1c8f4c6a7c28a54ed264172ae60d -eddcaebd2ec4b29aaa2890314d4d18ddea9098658022a6b92b8d6943ebc6cb5c -4f70311241b1e7535210742e2fc4711ec0c6de3f69990148b99c17d1788d7c94 -e1adbd0f836980d956c3074f435954a74f94258724d7d5b358286a4deb0f2832 -1d41e7b50810af3defe02a9c135409cd542b91703da6fb11c62de54e34e5963c -e17c62349f167e79ad3cdf39d13d7130798fa7d297da1d282711b8d7667e69d3 -8de7e414eb4eeeffcd788d9d9a8f674f7b1ac9ba37d7453ff2c32b5053ee2634 -76add593e543947c63c947424e903c029c2ef1ff1e96e0827fb762bd56c285aa -88b477594d8cedcb5704125d11a7d52f1c8c35d22fc9ca1367d6822c7a9ae614 -4daab6df34d28a9da19783baa9571f5aaaeaef69ea07404e4c6095f2d9944be0 -b7b30284602981a01232f16a8d81aa11df2bcfcb0934a1c6449af83034819df1 -bc306fcf71e71eb299c4018ae770b02a9f2a16a2a3c7b73ec3205f154ef84737 -c8fd404833c07bef3c9d34ec7eacd09b71fce2bcc4b11a2be1ae73e1928bdf49 -ecbe16c6529a98f2df846ea3481772cc48657991cf921a0fdee0959d61e70111 -df55409dc8aad9530d03425610a236d4909b280805cc595ec9362bc87912dbd2 -0b7f01c424133130b1a565920c10a0a9fc415a63d2286b4eeed700b1ae3089eb -1956ad2e09013a666ffb5a1c7bf731f5ff3199a45ef52f83aad301e3a388b617 -bf3fc45fd91cee282671a20d96a979ce62180ebd3eb97c35ec6d8c0d4c912947 -e8ae429b86f0e085d52441e1856a2c27f0a06ff6713547d80e88628d8b836d85 -0ca4e80be40ae44aa0aa688b6f76c13589927599f0d987242d03d6c610b2ed4b -c0d64431fe369e90559e53091830d1d6a3acfba8f9ca79d10865133bd9e6da3e -6bbf78c0178e519d690b262836783b178af9b40f21dc8cf2ffe70a76edcd2323 -8b966ddba1f66b3288b2bab34bffcb84006d55aec616d47cbb11da8f3f532fdd -864c97e380b750a3867764f8a00175b85d256f92c9cbf700c042da566972c1b6 -d5334662fb508ad52a89893f5bd6bcd1621f6c09c3a79564058eead4a847bfa2 -4087a754dfe029311ebfb624010432927945c72c521c91e3d79d4cbd7c611860 -1b116a82b10d1a1f07a05ebb54a1890065277625aa8f4fef175e3e627c7e32b4 -0add4244373c8e90991b94c0ed1b068885d797d8e62b7427ea9f1dc7960e4752 -43db9f6cbf30bc5a3bdb63afa1952c1c9ce4eaa5f7488685d9d498292bbcfcd7 -b5960f127a8711aa20f29d9723139fee2e0b7a2bf5f423402649710f2d3fcbd9 -003900b441c209d4846cce5c02984bc91c0c11a055e2fa9ab339a8bef291fcfa -11acf9c6efac0194a1ef9effa86b61534aea99dbf29f4896508ee4efd36de7f4 -244df2540ba973489f43356d33aef4502eb79973758f93ccada650a71c953db3 -93aeaf5807f2d0e65032e25ac293304c55a6b4afb22b9a6cdf82404ede8d42fb -ad3d5b628d5ef69410ac55f33d2233a4c1ae33a2324c39803e740fd623aa0000 -d8215388dca7ceaefa18461e6ad55dc6dc18a3ca6112eadeaf22a3287c883fa2 -f4cb731bb9d4e2bc83a26671b3a497139c17d3a5aadc58ea01abaafbd766e7fc -141c02ba3085a8934f96a88fac690a620e23529072eebdc5da4b9138e258b498 -d581d6ead55209c1641c498a3e166ad2dbd22869cff92f717e1c702dd48c0d96 -01b4930c636575d662fd63e1e799aba9e068d3f7737ac7b00d03344bc76624da -e317846509356e0727eb4a4bca9a26968962c7900fa69ade14a962e060f225c0 -31b69d3c9d56d69270053374cb5c7c79e8d866f8f736aa5f18a2f932d8088aad -a2d60e90e872ed30bbc358d98f6b705382aa9e087ecbd0dc0e5235f044b0677a -e1eb51be9e923ac5ddd98a201979fb62992420172d90699122cfffa1c2329a3c -c48913f9b4d61cac1655a0f00e6400b2ef0feedabb8326198435d9167044e668 -8a1a73fd640744bb5c382c3f7bc03334a43093ac6fff33651d743398cdfe7e2b -066a4816ac346f39c2c5cab14d2e91833892d0b33a6eb47d95c6df4eabc0834c -b583e32f150d366428a1aa218ab128357c7845f638f0b6d06cdba9b57724bc47 -e2e05338f839bdf8f08f385738bfafab7683738c2396bae966b4d2e2bcbc205f -440c0fc9a2fe123a6eadbe2808572e5bf44fcc03952c9723eeb0c1349fcc989e -67d1dafab7dc6f60d607adbb6523f851b976f20e600d2364c55423d41b9928d1 -79828faa8f7953c5fc693ac20613b9e0c6cc7dde58594085642e1995e79d5caf -78dcc00f24f997d2d892ba6ffe10216628e2ce79e3adee8a1f736d3dbf11c531 -6fdf351441df575d2b6d2e9796123061f5792ccfa57ce6ec5adf25f06d3e4f2f -ca12c458053b7b1d4f0ab91df0f8355fb095cbdf6504b31626653c0ea1fa443a -ff00af97d6502e05313f89b2b2a6be75abe1f84bf10cba4d6ce4d22be919478d -f12fca05a0a78519039b70fdd67f8503ee23eab463f7673c9fc3d464747056d2 -419e9d31d86833acb8dbc0c6aec2c2a002ad139e3ff71947dcb03a2858250aa3 -f391af5ff70fef4ad8c64548639925f966246490c1e1f22133f6d6e7ea7f0118 -33910c48ec8103bcc699fab1914df38672de62c0942c6c3b5ce80adf2226b36a -b18f5b3d985f47e89820dd2c99a600f1627ebaf7fdf6247518468085cf3a8fda -94361d3a8106d99dc1dff3595b38ec1e995c537c8052d825769ecae24d68e20f -83f3691d19e4b8e35ca03d090a21b34838cbcc9c731ca503f48c02982b9e5d10 -a093344fb173bc1734178cafe439f5effa0886cc29708cc5a5900aa08003bd74 -6592722ffd282a2f0c1fd9b7d12748456e36e642980c359bb1e262f39b61f365 -d3be084415925ff7e28b4710b90e51bd1832bb4ed55ae358fbe973e72131ec73 -235634a8ccd7e3d917264ae19f26a0a1fd992a982e20796162f61b73c4acfb70 -a9371b09c9edadd5249841e53e4ab90b3b26607248b598ef3d00362710e90f5d -8959b92e1672197ef2e36084f92fbf68b95fe38bfe69c0fce6aa394ac54c0c5d -a00661ccf749007f2ad1c869a944e7160ad31c04e4c357ed312d9e67e7435f80 -ccdac64694fca0fd849d1eb71ebd2af367eaedd043d589f2afdc8dec99d96918 -40a6b36b87f444b338f013bd13dfb185edd0bb386ac5d9880720438503ec09e6 -a8193e8e57192c0a83e3b42703b61cf7e624117d124d1a1abab1aa441cf75a2a -3820e691456f4e588dd2cd227b24570e54a6a809669219739681fe0657d02df3 -d5173cea9b4eaf8f4600ff96c6ab14e5ae0f2abb2d428cb9576a38c81b4eb084 -3f70b0af5f50fe8b346aa2fd4b1f7aeb114f45c6c49f991813093b4d4f1d01dc -c472663230311f9662359afbdb49cc98c7b23cbfcb753ecc5aa83e9af33735c1 -a40e69216f465723c53bdd3f691b7f35a893b0750cbc01ad321f525338ffd260 -3003894c177d2a72396878762f9056d7d65090bf15a27fa1370a2ec963a70869 -17c1618966175a14e54fc3afe9587d00a4356b98c42e92db658874004c3793dd -d4a075dd2c82506e84e9fa74f32bf5337a9a5f5609d024e754032df6d73464ed -75c7ec086dd9c3ed006070a59fb4bb9b460f6bc99611806f49cfffc5f738f8e6 -587bc19ce5e808fb9ecbd7b0804a11a2bb7feb2dd3f1c2e75cda6495f0115b38 -f7b2d1a8e016753342bb141bb469e398da1d49076f0cf5b27222b7d7bbbe4dc6 -fd128938de784ee73e01b8b3a5a5bb9aa5dfbaba61f1c294f8f33721e18c1dd5 -93720d88eaec019e4b94fe592aff31b97cac68a51522ed828c54bd63dfb01690 -bb0bc0d036faf2807cea61fc4de67ffdb7e353d4f6892968874012303da379c1 -9f8ca5e57eeab034c4a6b465770999f42141754b3acee626d302ddf3571d1061 -314c240fb980d3efcd3a8af635d4d61b6a5e670238180b308e74d567a6134828 -87d861aa76b031a221baa83e2479d6ccc4111cedabb075a7f1a5dbc8d5dc977b -2caad52e5b220f87d518e4c58360053125f954c2e47b220472a0683162614c4f -253a0d795938bc905e8a909cb71d7e87b251561997bd6b9842bafd1eb7044850 -a0be3aa098ae43f712816d918cb144e4f13137244f4e607bef688bbe1620af61 -73804df3753c4b931db8f67a5ed3ba974e26efc293a17a0ee3df8973515690be -433c07cc3d6df25b2ecb78f0446d21ab7111e80f770899a2f7f7275ff07426c5 -b5fa3864cf12e62a7cadeeddf1b42aa0b8c7871010c31c07726ed156ceefa233 -7504f37424ac8949d64a56847f0aebf0152ea8e14ab401d19ccec61be704ab93 -cfc591e021c576a16bd403ae6f696f8546f7b173700fb2c14141b7106a4a5d7e -e62c0110d9c69d3980cc8792d4aea33d9d6c11215e13f39d86835fbf3bb5c64d -ebdfdbee34600a088c6af2ee5d0c8e91923ca927347670157898ad7bc494a346 -2e2683a9202344e5feec0add07807652a567abfe70c79cfd470aa9c4f3f31fc9 -177a73d08df5fbe27b260aeae4b48fd8cf3f1c1634d360acd0b676990aebc4f7 -b6ae204c94b9a45e8a0f48c20de163f98b1c7b6a2277fd390aa591e5925c5d73 -84d7cee3e635da74f954022a7d66dd2290d32238c58e523ee61c575e9442bb77 -cf938b213fd8c3e8246a581b1de0786c75ff4449337dbe7fdbea762fd520818b -b534d1d377f0f876ee7d1942565faac707a2930f059e62a0eb609166b6a048d2 -94b6ad58247b65271f8e248712559d82b137216eabb6a0690d0bd5da519782d0 -8de2c9cb67232950b08af18b6c7a030de179c250678ab125f391d91c58b9eeaa -27b58128107ec4d3ea2062ed788318f34a7a4861be1f109c3377dfcfd5182c0f -71fa354a9e52dd80ac3ce3db81619d3d5fa34c898e09f47595ec10ac3f4dda2e -6fd6ff1b21dd50a9a53b89b4acd332ada3c96d7abe1cd49db74a8cbce4fc9ee8 -7196260bcae61b44c748cad2e77e68a862a251c617087e8972355ad8247c6038 -2bc57ea0ca2417efe1bc0e010fbda0d2c7f410fbdeb780b667c76d3f51819e1d -298929d39121cbce7d2d2fbb3a7f03097e5b68bdbd186e82fa333a405881129c -870cdfa7fe710b97d8055860f4c0f7cb7b8341c7e68f58fe68077f143b1c153c -d3684eff3bdab4593932f429ca7e3477d1287799a76f674556bf29d5e2476b34 -9e1a1da17baee1f33988142a4935f91291aff3c34af247f50ff4093a0418a049 -9849f67e2d4f0c49040c5d0a55d6a3b286643c94f3ab29911a1e3a8c0a98a9d8 -50675db3aaeaa65c8ba0c6babb1bb07469acf70c170341f3202557f3c4c0b956 -566008dcc83471c08bcc17a7450f97468f5591a552c5f67b6fb445f0f311d3ff -d05a15de3bbf04a5ccdce6ab12ef532c9c52a58f69be8047c27cbbc863e42e65 -93941cdc57764a6a42dd59e03f508074c87735ecd8cc33c48b39f0a3a61e3f99 -1338d35804b70c7667c9daddc463a443c78582e0074ea3062f83f6f038ac3c6c -fff84f048a1f2a4f7a91d6f556a7a8667ff31258e9ce7777033b8324472b723a -a8a982dc355c43f6c949fa4d5434cfc9a29a34806ff1f39426ba39910e618d1b -0d2359161717edc9084534eba69ebbb8ed9cae7ede0b9e59f6faea5b837156a4 -75baaba22b5a63c6cc56685f6c85e11e40e80b39c16a38ce60a39fd5d0e31a8f -987bc78a6b9dcb4832ac27fc0768aeca984a27cce0c6c6479ba20d1f20b53a9d -acfb74a674d52e7a2c9b1c321afe2f406b4f8f188c6884378cefc56ca470b6e9 -abe2a9b869f07fddad9fc0d4448663ff746c587a5045e207030b54ee970293fd -102027cbc998f2d6e5fa36afa0e27a2e8736eccde982941f1c27193b23cfa282 -60ecb46f1c3e2561631ba48da1072c41abc716631619af6d37d5ba55f598e889 -515fd13902356b71c43374575efaa3f5a638d615bb44ab50415e96f59246a2a8 -05ef00c3cbe9e8fb352430ca4b4ded78fb68c08ad5f64d1473c40d86041f4188 -31ff25370a0cf0b433b14ecfaae6d6a383361680ac9a9d88bb5142f57e7bdebd -cfd42f85c8b02668b3cd7313f5b2105bd3461a8849a9f2e81fcc8bccf9e0578a -4cdcff3a22d58863df55ff0fea6750548c9c7de1f0e6d3737363f0fc5964c16e -9b929db0a3933773cd49d6cb7c804491c8506f5b56969054e8f0f2e49077b01c -1a7a2391bcdd2ea92c2ad1e3a6ca7b0d93f61a17f50bfc31a76d26a152818c28 -fb1cc9486c20458a572a855d4957bce958b10e1b8786d8f0acd3fc730887aecf -78304e350aceed92cd52841b0781bb642c3fe28066600d8dab4584387165e11f -c7316d4c88d24e6c1c5ebec97a31f5a1002333d6ffb8b843cd7979ee87b7b614 -0cc742d5ebc63064f1aec8e795f37b793cd011751af908d9e2f3b41745ff5905 -51e8497fd7f9d9593a679ba184798d6ea6d565adffc7a9d27be9cae4ebad4318 -4ccfb4fc9180163d29dab98db13f7bbccb4ef47b395ad27c6449b935b1caf6c8 -f19e9eba0f71db59248989e89eb0a8b389463d29845f96d87c3a5d44baaa8276 -0c87961fe91b21b632d16758e152def763adc2c8f2a694b0c9bda0b9b4e91fc2 -ae533b530b722715ac3c94cf31bc34f507f4b122021be4f302cbed32b1bb1556 -e973214585306557f73a52e01c233ec74c2cea00580b143968c10c3030eb32ea -04258f952ccd7b72ed8fabb54d8d697edcd1e1593889e8ff047b516251e64dc7 -bf1f794e2d98a3ae71ac8dfbf26d6fbe2d02aac17f7c22f0b2f93844179cfbbe -3ebf72c67e33dcbd5ba61b81fa52932e14bca5458830f4d8a226015100016910 -09cee0f131eacf199616234e9f6f9c6b670e4862a5a642f961f395af1b00086f -623fe2a8397460c0428ba38add163be9ceb002d5fec71c120cc90b429085b661 -f2f77f810df1c48abc77ae291a70ed513b2592134a451c7e4ace69744c4d77c5 -903a197b1dbcbf24e71c9bf7c839e2b0a2fbd3c80771348c9a13ee77bc26efbf -e48d199dbfd4c501c35845e7abd04795f8f56d339e02c488043b48e0f0a085c6 -1649f9db63d29ecb2d00d8e25f5dc7b5795bea0cc2d03e49a1785fec1b67741a -f8866d811db4646c6a8240018b407fe5ddf9aa478a961b12c9709b3a8f2e1e6c -341440401429f6806f47621ecd4760b9dccc43b3be729b787ad67022b88e95e3 -273f155a1977ff25b8e7a01bf918933c79d653e4faeccdc73d064f6977c20053 -943fc7e2d1756fd26e96aedbad003ffc7d1f51840dc186d341f619dc99daf00b -71dc3237e980022e05ee502c9969ed294ca42b80f930884e42cc1d46156444bf -d77187835762a9c249c9f97758922099157204cc578c6951eabc236a1f8c9ca7 -6cf97a1d3f648914839d0e1baca2b5c44349f69659600dea63c1cb1c58120ad9 -8b339495ebd237b407d4263ef93b6f84cfe70abeb3f70bd9c72cf55be742443b -e637331258b73618b1be411c13fc9b4a4664b6e8b49938861b11c45d54f81615 -78ddaf95dfa06b6dec253f812a44c7d910460c2e6ee1c9dbb7e038ffe2804a0e -63c1d125d00b469a35a5de55196cd62dda71b6e34cb26439f8139b0b274b4587 -421d93f066f2af4e44752b42d87b9ede93d5d3ea4b57f8d1c5889a6ff4854b1e -63767146bcaa3f26b20bf307e4370a4d16b43bddcecdeab12d835c2651b9c1fa -9000a488145d16df1fbd0d86312716fcdd4d98275d051230c37a882ef64ef54d -bdf22049704cd5cb1566a482026770928b3d7885af3b91c7bcbd36ddd93df9f7 -58dc06b92c2f00238d86bf844412f7dfbd5cacdd2e06636a2595abd6aa804fc9 -5d3b8ba8f6ea187ddf37b925e4b450515ee4996d4e2e962ae5184a3c875fd80c -7305b65c0dce36300166baab5321a296852d14e99f1913a590a7c9bbd0119dac -a2c0bfc22bee8ec1d36e514e2dad6edafa24a27c40a07b652103f257a88b71a9 -e887c6494c3492401a956bd6b4fa309af59e820ca44a854012e67990eac49126 -2eb3ea0d0e9e90c0ae6e97ec5ce0f1fdd8cfaf9e0ae56ceb2ad794506d72fc79 -2108c143e49fb4b25b599b15eae0b51aab35865d2a068bd658c2cc05ed52dc01 -411d87da7d11013006fa4aff52cecf0593a2fce2c6f257eae51b8a8f660cccd6 -d8640270d5ea16c994433c340f16ef49f3e9043c60eb96321086ca78d6894573 -15582edf53003e2dca565edfba3f96a4c64f278e127b565f9b179e3353481fe7 -bc32058f7607cec3bf2875e065c959d7c4f15bd74e23b6da7274a0b23e682aff -f52db820dcfa2529f64821bb4a7ec19f1c9ed6ae3243ec055da2e57ef632f18e -90cef26fd694c143ab5186649a1dc595d06f64558065dc88b06be2ff7895aad8 -247f4d7c634657d92f490d7af12619c057c21b6d1eb2670d8e5290658e61ca7d -c72d34682575e3fa24c6b3a2302a2e393a80571c5bd7886bf6aaf6861f7f08c6 -af0f074aaa4e94e17814ea5bef893853c74aece56946c4d8e2bacf3fdb8570e7 -e66255906e641014ad4695cc80738ce37581cc7b9f96186aba07b71c90eaf971 -8b4b9faeea0636a1369c91ff5aa2b3fdf84b1a26236ebf4e8124030734d96e9c -2f8c994f4c133084215af3e7b056fe319846a6362540824caf647895dab57ddb -391bdea6ce008d66556fb5559d77db23db2b2cf6ce007fe41349b205400c3a7d -cc75f866844cd35b79e9f6698b025dccbab71fddf949afeff3bc0ef03d508c82 -686ae5fb9437400a0a7b1cae3b20b2a89b48efbe4cdf693ae0ad4b35a00b3abd -a3d0824cc227a3d50b695b1f849e43af96bed2073b16e2c39be9f878437b14b3 -fe7abf8d049cddf68c8a94dbf561db313de69ab12d21434b09c55e14c1d6389b -4d4f3fca7076af70184bcbb52df12f77e6908f5e7a73f6f3a4df826aec0a4a37 -63fbadb4c0827dfcb85b3a894ed0eaa4b2764c94d3a09408f65f89f2b927ed8c -64d11f822d040fefab05d35d6b9d3cda3682eac0970e944a8a48833098e64445 -0275c417be667776d2f132b88dab518c85bb94b34c651ed0f07db8b80c084543 -6cbca3a5e225289a01ee3983db0abf6f53af6abcbeb3880645a3be6d43eb77b4 -4ee7cdc1b80ba30aa84da7ccf7084d0507483464f667f77f438c0f256db5e7d7 -83b635efd63d6685cf0b17aaad912ed99353ed440a1cbb54b7b1af9807b5957e -ad2e86b8b25ad57d4af26d6c8444d9e1af5f23f195263f776c97b96a4d130bfc -d4daa8e611b750c665348a94aec9c97e9ea2dfefec054d6cc1de52079ea0de70 -03dcc972430e24bc332f05f515b6700be5b8e64f8aee673b54ecc99eb49dc7de -5e1c356cdcae5cec64b5110c51f2f560baac89d44c0fd083adfa4c99731147af -ce83123b386361134d494dd7b57b32ced48c5068756063d7b16aaf965258a0a1 -6ec95b46fbcbd9932c1111577eaa4b89ecb5663778a16c815b239c3e01b487ee -263a0a8880285393f3263d231da8214ae55a6147d663a5b49553a0f2603501cf -5e70124bd3c391f8f30f3b07d2c0d9e3f1a55128d1e7b9d26b54b27af89228af -a02f0acc85cedb2db5da29fa8e2dab1bb8f5861e10d463b17d208bb341c8d7a6 -b790174402f863d6f096a984fe6bc438c955b698bf572d2d6158cdfb051a5cfd -f631a79d18a99a556a93a504795fc39f8027542a1aecc048e3b980b585f08874 -56b773469da9f8bcf314bca8988a17635b05e6e6e16ec9c7696876996de00b42 -5c3fa3155787aeb47273db58a25a27ff98955c77d2699737dbd05d29dd400d8f -b8bf24dbef5680b3cd31c4f09e8078d6ac48ebbfdb8391e8cd6aaf741bb6781a -6758fa5eefdb82d8f0c628aae6a1e9b2c0a5bfd138b41d084bca3457c610c8ec -aea9848f846e3ff4d2d786b9351b14460ee089b7c4aa2651f8c5ef33b7d7f9e2 -7bfca753cae27b75c1b95c59adbfab31ac6373627a7fcae4b506640907c72b7f -e6626ed34135d216c60dd22b886f8015fc65640bc301d064b6f0c7d4f1868e15 -7431f3edfe0cdbeb1e8d9c8dc69fc8ccecdf697ac9d38e93c24265512fc4c4f3 -f5d5828562f3711656097500f294d125f411c30a8862ccf458498df67a772b4e -35799239f474881b449816a22a59c88ab9768708621cc66370c3a63acff9b869 -d5797895dbfd962e5575496fa55556d9547f2b6c71a5b157f64ddca6a05eac26 -71c862fbdc9fca61745e4cf6a2c2f177d0b372bff3ad3aacea51cdb1f5f77879 -6ca0993c89de61eec96d10d499a0ddb8ce7fb5dfbd9afd1efa83a2bd7936a7e3 -25ff236f80cf077a07fad9bc2cab0eee94eb55edcbb335f017dfdf6e39f7015e -a2ef2e6022cd8a7ccae98bc4dfc5f61ba3abe3b3d3e33127351fed9d052e216a -132bfe442203f88c1f6adddc3591a750d57000e00049af0f079c24059fdd9ac1 -8e0b967e7e4a64c3c39fd0968c3052e26383431e0882f6e72edac878f0450755 -f402daf3329bb6450da9d61622578c03b9bff572730db063cf262445284535bb -533713a2186d2b054cc102b806b1511200ae7bd72ffa24356666815436cb893f -f73ffe338516c6aced39026c85a0a29a74b5fbaa72e959c9d08361cf6706f516 -828819b6da4546818e3c51c73a49406e4f7e474e0c0ebf6fd8b4417d43a352f2 -127c85d7782219a7ce314c5b740688b2c577d1fb8df29801ed39df9e0c0d4f0e -004792fef973b5f4cceecc9de6e8fe114320953bfe027f1b2da4a4c63d87086b -7be27261fcba75f865a1702fd02f1b3ad3ac838481a656d680e7cd7567cd89fa -97caf24edccb6a9a9ac844ab7c53ceeeb649fa1926246badc08da706d10daba6 -08058488d29f4bcde7c3e0bfa0dc3e538e59f77c33df294e3cb78d8ec883e450 -6574135ad1e430ba735302bb224d5478e72c0664bc0aa1cd2bfb628d1750a19f -731238fddf3ae476126cf061e206c0d6c560b17a303d679ecf39da4908bcf88d -881e285db0479d59590be3559241f2e8aca46aa90bab19c2055c052dccc1ecfe -9e4ebd99343ad5ca3f39632682caeae32cce38164100223e91074d7717e66f4d -c5cfa9d3b916082266d7ad35d5b2c6a915494bf5808a0b1e5740450b0ffcb4dd -489dce6658ee49f8f91ee608437aa0b8cdbdcdf5e7e8d419ffe61e62c6c77f7b -abddf7eaabb9a9cb12cb1240ec2a563895b777dded8c360a391c3d6b322cceae -a75bc543299951394252ac218415205b1e799b38c6ed8013762d6bad186001b5 -94d9db790b51efd507afc785aa0e1f8530710521b131045eeb967c2068594002 -5c28a1ab70a17ae15002328ffcff2a20851ad24ebf59d28b6a43d71eb95503cd -6a96b1410658c8f5e9a351eec91d37921cf34b7091ccaba1f5f6e70bd589b479 -a9fefb01baf7290ce4542d292a5af4e41d2dae0da7e7fe8db798fc571b167972 -7595500ca6d092ef97722525abcdc91e22f7f8b0cf7d70a6e4a5ce2f372dee3b -1bc3080db6d5c7e84c22774140caf8beaf265f723d0a682cf2c49268932c6a47 -2f1847c48b23d287e566fcea7308a93e58b588ce0af0b67f7b38be05f6723ebc -aa64fb866f004d3cc0b0afbe99cc6f1794e6b87b87870f426971ff1ea206d91f -01b10c96af3ae976988f8751fedfeda2cdf51253c45827e8ef8e301d6d2a3310 -2f1c0ad078e0875d5b12aa2d441113246c73f03dab1f5f6ba9bda8a462958afe -c265c65c842c4c68647c2cc62605d1dc35c8d43352c39bbca54583403adae299 -1f94fad6c25254158e771065b03a281a7142f90a04e55ac2a5a5a7807c6c34ca -a56f7e02c4fdd3b6db2407509c7ed9ee02e7f4682f403a3a8ab315149921e97d -ee39f670e3cb9c06be2adb18fb64c9f93c632d887d4d39602b9d9e78e47ef23b -a7a8694eb28b423f950e9dde3249c346c5c7e3e3d01fdc00afe6327f52c8bb04 -1ad015ad3afdba9c728af9560dbc91ac1df31939d18c87d4f590b404f42246ea -4378959ec3133529a9db834392279289c0aaf8d20e4b726a0db44c023b1fd8f6 -6dbc606b202d4f5fd24f6e0f7d72a011ae3e48494fb833d6dcad6527dafa2dd2 -e26583e985986d934bcea18534b21731567e6ac6c3cb863410c18714b31b894a -11bcad7f22af25dda9cf17e66603cfc4d52f7a90fd39ecae9eebc5cb396fb5f4 -26892e05d1d9c923555770a0a5f063363a8b51d7c4af19f9008e417eb6731c3e -83d2ea07a7cf7261f47adf674e405cacd7e23b21846aadb7e56481bd21e1233e -28c6fe67e5257a3f778aff9004c72890db614215d86b6f6083b0be8cbe72904a -9ca178ae142c139e763b6cf832c29f87bc1f72a35b3a8ce3e9f24e2d02ed7f5d -08f1c2531c80046e6b61545a89c069164b571f505b937f97614fed8c898ed5f1 -4428c47e1a24b481a26a5b8a6da16a3ac32adf2770bcea47c9df125f3ccc3820 -d9ea996988c03a74511c0fc48842eeaed4f46ff92f954df3a97fabdaae47170a -261004871f7569bf73f2aa7f22c03b9a05433c8c2f5d0192a595084339e79443 -de5d394c15050b636a9d2bda012147d3a9dda39170867472903995a8b7b2af1f -27b0aaffbd58d60a59e3c3aac5b961dd6fcb3ca9a73a1409bf2797eef39cf9ab -0d9e59ae6d7ccb4470d66091662b98a777573ccfb1a35b2369b0d50a9e5a519d -68f498bfe450041e4de194cc1abeb812c41797b7145e367922c8e03472bc557c -dc3eaaf9949419e3b40b85e6841a27e4a19a25aaf6caa139d0502d17b613c46f -df5d375ebc4032ea28403b23dbe178dceb09e404f191dbaf59c8867c95116baf -8736fa4c7b7d838633d76f9af7f1779751c54f5abe97707a8a0ff3b05cc8c8ff -23d96dcfcadfbfbaaab3b27d652a757f5ccfc30f00b122b1ad010f23c6683a04 -c5a53f9099d25f55c2aa5144887d6a89d5d6c3201e5edbf8e71b33adea7673a5 -a7f48504fe270a0b133b32a7f2c167ae61bd9805a7a9c4140e36345c3d1e3176 -91bd38beffea3445fc1861c7118445d075f1021bf44950e2f2eece2f0342ed54 -34531c7e9d53bc2307add9f64097751d162c4531bd991db9c7c8c71a8eb74bd5 -a9e1b19ea58cff83e2d25c13166ffda04024202fd568a32600b4e0c81f5ad684 -528be94e00741a8c3b14357bf93ebb43c7afbeff8800d80fe6676dc742c3ac11 -d51c9e1f97512dc239783b9275416d2158322f535896174204627af74f363c96 -5efd8dd1ddbc710923eae44f44fa69e274e8b84c67d42212a189c51d7b51f829 -b742016dcae77fb24440e416c58085baea55adfeea589a3c58db273b6fd395fa -092b27b44c408d7d8eb773310754c9597c77394b32b4268b9a02cc5e4b8ec06f -bc7e099141bf3ab12ef032e9b6e022e13a7555559940e8339160f8e6760646c5 -5402617fd925888c639fae96a05d94a94b34ae5e8f8f4c88690813f2d68498bf -cdc9328d523ea7e6df94c343a4f6cf3a44e977b6b64778de0b71bd116e43991b -6292760dc7ae25de194bf35598761e74c5629eb7e1b196ba087c88ed23ccac07 -a50bef7592aa928aed2778726a499103c4daadeb65515d170a840eb562e41fda -cbeba6f51c2bb1ca1420aa9ba7dc079c7e5accaf8fb64ca62b31552e57bb34a9 -74c799b98540f249232fa2b6ad01b4b8ec6364ed53b164e179c76cfd09a6e0a6 -245f78d0fcd392bcb68a9fd37e2b68d7f07dc031c7d466e5019c43d7e2a1cabf -4407e522d32e8e67ac25c146ec09a5fee1ce83f84bd06b0d92421b75709aab1f -8c8748e902a45c6500d6994fed6c097cac3a60267dd9d4303cd3dd5883c33369 -a9e57e68c2d59c758e1b8715e36e186534ce904a061bb649e7d086bd10d11cb0 -ef811357711b303389b678c9923ed408e38e74c4fd39511d91c96ee5d6cdca8d -d6dc14cf8146ae3b83620bf7a56f5f62bf80034edc1a7306c859acc6da4b0e69 -3622ac8c774569e1fbd40359c0037d9fa7bdb6d59b3da01a7e2c5bf7a6970979 -9032ba9e5ff72aeaf8ff576d04d05aff0d3b82627005941244299ea42023e8e7 -74c5223b1cf4845f7614219f13c1bf0100789b2fe56cb9471a4148885742657c -6528fbbdb80c1568001dd2608e76835bfba17e613fd28467341b79661ea85684 -521e9d6d436ec08d4fc523660779eaa82e7ee2ac862341f48cd7ba04e51ed6ae -bcc6306e08ad8d8689ca7d8294ebd8a014ce383cd0c7a58144281380ed6341f0 -34e733c110bdbd72302d00c5004005399f4ed454574e4db6fe37593e0c427d0f -7eade39ae4d2ff83177574ea2f98625837ec46af3834cdfd5e21b92bc5e7ce68 -5c2fa7c99a9b84c1c84e26ace6d4d620a437503ddca52403f7e3bf7404114bd6 -0c13a91335848d08c162340d86f2cd3aa87a273aa31582b52ea8cfdb4fe57f38 -a1072b84b6b1d43772135481e010cb1249676005394d13ce1ba344f291304496 -a2cd7041cabe75d149fd123c6cbc8592ee8777f909f9cb65582f204d18a11d44 -1b56f6c1c2e7dd82a261c9ca391c81d672ed404f1a21f48b08c1c83f1a2825ce -a02f8e98974883fabc4b98f30ffcf44a83e665fce77986a82e431e2b17852d19 -f6758ea3565f643506f0fa8ee4636d8d5861e079599992c1b3fafc9ebfbd98b0 -aa56a89571d79f3679cf2d9e76ac0ee7993b1d8a1b8f2f082bd0e04e59a3d1f3 -05eff532823cbacd76d7f5e0a8e062befc338de93b859f8c909a685e1d437e0c -5004046087253dac6502c0b973638fb3edd95e9cda5204faa8511d66f15e1519 -8e18f1afd93b9d7ccc31e8fc9fb37617cf6dd5cb632b8f2a5a31a257196d9835 -2584cb4bb6f3cf6967e0672df090badc3a2690b5da1f2f0f4da1ffb7cf8aab6a -ea5ae9cd0c5bcbc480be92124772f5f7883822ca05170ec2e49e9e922f2af79e -64c496496767ac665d5a6095c023897fb4566edd79a543a2a992ba74010cc614 -80888d8f70d0e39b2b4267a5dd2510e9de401534092107d343591c4047f04c56 -a0c60b34d8fda26f9138ebd6b28394fbbfe6870c1cc8782c30427f3973536844 -8f16f032c1e895a5cbaad7c6b97a305e92c303d51f5479ecaaecd417dbe27d53 -0095209a7ad4fb9626236c5f8ed4da9b2d7ecae54bec567c4f8e752531929919 -06abc7a3a43c59ad783044ba2173974a132916675d6adf87ecbf7f8002c0156c -6995e29f3ed4d35793132bd016ec07d383ffed0061026686fab542bcf66a3d49 -49a671a8c33374802f3b0a709adfa03dbc68e099dc003704ba1ff3afee1f7685 -59df4a2e78612ddc8c1fe96833bb041ebf58ff3327f564a8fd8ba56e046fed80 -3c8524cc550094d97ff6936fc62b30ee230fbe01d01a8cc18cc282123ba674b1 -9a4f38a32953bb93e6f90a0f0448c5e1702c062cc533018661e6f8a648511182 -c13e6e909f3cb76940e6ea127f472e3065829c61a0bd411cfd0c0f846afd1fb6 -9faa3313e9f6dafaab1a1bcc14532e829a2534733cf194618224bbd371659f62 -c2916b87fad62bf3f5601a056353196f1111f5c09bb6b0cb1f77831591cbfa7f -5791221e028bb133440796901dfed41d916644cc331e315c9a15325cff29721f -90f45344f0733220c0ab2b931ede4eeb4c680b1684561033b0ed6802c30da326 -aec3cc58d57458e57847c59c4929507a9de6b349dc0349123e7e11bd57f87d53 -245a69e071ac177eb1f65a6c8c6deb80eb025356b5d7d279ff0f0d415770d79c -c1877dc086028e857f8b21ca42bc4b45a7ed930b6101088bfe80e59d3cea364d -e969dd1074c46234150c70a6afadc2cea3a56f55e0d7de971acce64f8de2ce76 -86770678f99f221bc8b970a68a68ac0d06336b2d55636d379005725b10d08795 -a6532b3514da7a024e85509ffa64993a90795a0f6317ff2a4f65783c716b347a -0548464a2521fb5387940107f1315bcb244fa4ca67e136f5569d15fba2c53221 -e56604313e65892a674e724c33ce66ea501c8c51129faf95a6d419278d3d7b5f -637c5dde1ce7a54edc62039db4a59a955477451600a5eff73fa51da41ca7fbc0 -0e37e888242b92c94adfca36d958ad7db4bb03de11c4448dcf76c6e3947dc9fe -4b99459817b8a6f1e64eb879e3925fdad24b2e0cc3d4a267d65bab8e6725221a -fc29966b5c914d1ea25de480951c62fba783de240339486eae4ad1857d3e5981 -6e3acd432da618d68f8a8a066883bad457c976152e21d6e268cc4cd8b996dc2f -c86b300874a9302a9f0b1dba5227f0fa96339e58c4f4effe4fd5e1917fa897d6 -5a3415e251fa9cf81a9bb469b8bb32251779f1732e41c167462892d517f1458f -783d745076c7773e577d654053bebfd540465b07e4e51bcf1d83ba87c4268ecf -2ed50eed378a0be8ae49539495c23cdefadde5e2d19c46350c44f4cb5bc88660 -e32fbf87072b3b667768ad04564a35e2c22e8e79a35bf3bd4f53b91644ca1d8e -fc5a0406a984290d906711c90373d668a2eb25c2b974a2831aa01cfe3c27df7f -d0d193cd5bcb2d49388e656f32fc4d1d0690701bd6c0ade60076098cd04d3b03 -91159f2d17e43966565608c02dee1089d86bdc611dcb5d6884c25e0e709d45f7 -eb98f9dee60ba38b05396808082b2f20970b73e3375e6ee941ee3f2256239089 -75744167f3fc0b372189898cded856278168d8272b6ddf711067a8c69a66692a -21813a6fdebb43533bb33793b10f70be6a36060b78df6f3e3cc5b871a92edb85 -806d8686fc587aff4e4f939b819c88b4896cd70a08d453b9f7a681dd861f8cef -65af91ed90a7794f90d9ca7afcc9c833a04a3d64f487017cac3d604cc7502992 -5e520caef7efb02f1cd208abd2b5f9b735c5c6d743a81ea1317ba72df2a200e7 -02dc7867d79600334f74bfb97c896c46eafc8d27a0ffdf4d005ceb4335b172b5 -45903a927eae2ad46f61a11ef6fbd60f10892d44508769041ec0b97744070335 -cbb1d95f9c5117668f15e093b87359fea8f44ad2285a496182fdfe50f9874b3c -2e933f980a45738d042c54386d52a1e18b2634d234aaef4463ecd24d66acd338 -e2e809d3d5048532fbc14da378a1c88250c6b16dfde5e0a6b4a44f38d40ccaeb -c02b381e8bde7e479dbff3ba2d7c3fad2de9ef5978cb2cc01c060c6035a5e0ca -ef32997a36e49b1d9dbd5b53f5e80951e4a8a9985c2dbb68d84d3342c176aca8 -0024b21131a97918a06b92c10fbc19c6c026c1267ee5fe00bb4c57cad1198e15 -39acd0b62e0ff0ad1402a534e9bc14ff41855ccfb35981b6fdfbc3cf04bcc4f1 -ed691532a920284e5154b8a0bc9eef4f52b679eb8ac4e42256e7e4cf7145e151 -e0110241386ec32523ed555b95c77f7802682b675e8d0360120dbd2ac3dd9ab8 -27ea52aeb3a2cc4a85fd9578db79e358497916f564879da4dfc327ff638c84d5 -ed34c06755faf71305aebfe027a6062297b50c1f3aea03fa2aa0718a7ffc830c -f2801ff35722afdeeeb70552924a964a87e47619403e10f812faf030e4e269c5 -235cb6138969427473785f34e51a8fe86b0d7868d9cade51511e19e975fd6155 -9a5ecb133146b98dd3df10fe0e821b58ed0481d7bdbe4eaea67531d24ab1d684 -23ad14c3b8dbf1cc00e19bf1ba116f7944995b61e2524daec92b41eefaa8ecbb -2d8d53e185a989d64b7ea9cdf2f22d77dee8b8a1ae7cc6a13822f782ac67a90a -253e7f0356a511356f4bf5b1b0cdd5344165d88d51831b639dcb17158812cfb3 -2175dcd1d87403404881f4c6aa7a87d395f752bbd2f93ee45470299732a2373e -cb8b0d79c85093eae9349237700937a2e9ae3236b38749c097edd66ed5eab99a -c938174a37fb3ccee4244c9df8cff6c83906a4a452a2f2428ace663fde9a4b31 -2a0cd10fdfc3dabe91b01082a2932163e8007af5b12674e01014695a4e6d52bd -d58ca788a4a3c77f3afac76959a417dc44306ea2684ce9b1f009202080c6d3a6 -6f614f7c75bdcef9bc925c2a93d921448e4aa2f25c137b1417996a0824b854ce -0d43c9d9f8e676e940f619b85346528d337e4452255f38bbaf001f45fab93b54 -f1cad03a38b367ee500a290fc6ec5495e9bb131f05ebf4d38f269d02738668f8 -0bade67eb9d16daac6ec3dbfaee65f4a443ac5cb6a669089abd86bc36c089f13 -6f736b062959c2ef136bbbc0863ef1098f395c89f888e3016434158a6738f884 -4cbd70e9ee34f37e48c56541958fce7ce2d3e1b89c22e991934407391328916d -aa2547b078630733d777c4237f7c1ffb65a023d037692840200a396afa40c67e -6b8f938a762389a2e81638da72e03e67fd70c8759db5565f67250ea4204f48e1 -2eed71bfbb4d6a36932bd650b507e611925a902e7e794391b2066179182b500d -d91cadc29e2168d0c981fbda6be8a7cccab5c310e93c6af5be24864e3e14aa57 -d44e6e3fbd9ecbc2ed8b27d6ec04d8867fa9ec2a4dfd1c0b238094a83c657cfe -71c2c3e7d6cd118497984127afad20053c41d29a7ba9909e17994a48acbecf44 -3cd4713017418357e26818ed99acee5ae9abf06279986e4e8f7dc31be83acd71 -dd14e522e4907e8d9594c4591b72c50096acd5f18f584a613004f0c99b3d2a4b -5cea9eeaf0754d499a8ece3dd4587d2202f064fdde4beefbd212d697ef053125 -ad790187306f26c63558f5aefba0edeea36c7f5a66517b2379f494818c79e027 -57099ced32fc6eca9445634f19eab79c56033e08d463cfddf692f0d249ed7342 -4d474b2b47eb4ae7e1092490295f7c4aef9a04b2c388b6e331cf68d210c2e923 -e31f53bae8b88f933be2e12d6c729466e761d51bc7125483357bcc71136264bf -f5c836d8cd676af3581b9cc63b7edb0e143168ac6311aac90e7acf73d0d0dbb4 -75f673b2dbe72538ce4b11c25b68a5c0684ff5da1e73cdda2dc46352d005661e -7e510ab89af0ef03049db9c96da50369aecb765d99ad9d08a27dc17fa9a49b4c -838bd34df3afe9c3cbc876660263a38545599130e625a513e5a10cca38e67787 -c2d09e8e1186dbfdc952b02de01e2b24293ea15a9820da7cf3c8f5f02c0d6b8b -89af16f031c58b22bfac7ca177cd29156a0a66c8191470535c9945f92f1b4fad -1606d4fbcb4cb9457a31b77a35187cf69bb2dd18fd416a28a2f761913bc1f041 -8319e4dee21aad948d6d6a698dc7be9cadf12592326341dbfe78ce5551ec25ae -b08a262ee11fecdc0f027d41bd422279d49fe1f21d2fe5e92b2f2406fb337796 -072d2cc55edbc5389b3a9307b72a40e0441eef66d425ee42fc886e673efbcd78 -29e56d00b14a28a5d41fc8f550c0f10d0c7b7e348b4e2a3d45aaaa0e3042d522 -f0ed4080bede6afe9f6edcb797864a1cbba50057bc134a437eebab64a370697e -547819a98b67e1e815e04dc4a830453b5630a33b30b27e0f74b7791fa4de5f2d -db62d1e9ce01b0aceff871ad301a7f0116b1b871d5a31031dcb71c7b9510166a -32e575b64e549e5a846818cbab62d4de6fc07cbf373557e0f620863a2975c848 -48d0ee27715721fca724493d580818b6e53468eac5ddafd9434eb2a44f6ccc0a -0a54d4b01a6eaeb7e05e28ac090e305013ccf7bc120c0c9471a5eba6d84342c5 -cccc01f035d2ad7fa6c4e81a76f9b6c0dfd13ce59b3ed2dd41f74a2bb20c4540 -a042e91a0c970d22d59d9ca98883578d9bdae3e8c4b1949e06c24b7a05fdbd49 -ef1adbdba6397c864d75061e5ef55a6d4926f65323de2547764080d9c7f38de1 -dcd434de74e06194e857c9a1d782e484e1070225ca40c7a30ed4cb9d1491d9d6 -ff5eef2323a3572f4dc8fbc817c8a0eb456257aed7f5358be44b3a817c28abf5 -a83e296e3b016ce9a768f14c9eff546cb3da35b72afc33a1405e39be33df153e -f82cddc67eb04904e016c3c75e80b73eb3a1d7218ed19d1f8c331f6bb6797627 -096b5760b85896ddc61c4b4a33727cf796f5917b426ae5f0ae4e0cdbe6751f3b -b9a0c42c1104b2bc7d45ef93e1575fc34ed4e42ca864b7604668cb5e72d9a402 -60e85f0938124c7a4440d9e6b1c0392ac953dad574652f1feadbd2adc4e46fb9 -c867699f8a4e4aaa584acab394bc24b80a600beddb5b28a977b222ffb497e577 -98660d3019806955daa68b400a3b779e6a998e58ccc64736f178678d7036752e -2996ac63099ce40755685c87df162fec86724a7946d0ff00a5dcfbb7280070bf -4b83b15b75e14245870208f04580dcab0ba7365973dedee104ffd28b800e9aad -c6eaaf798384fb1119d5423131bce97e2e6ca3ed1b9ff8c77064dd3abd0ecfe5 -cfb01c6cd5229fb360d6426abf60ee470999720cb96f25ae03698b670e042e92 -d6886bbca9c6a2a2cc9a5d22f5eb5dcff54a66dfe5d8b5324987e69f3b93ca92 -850e51fbb43fa1699f9a7eca215870db2f3075c8bee1ded30a061b9d7a3cdb2a -1d1133c942ec089461bd05c164bfdb4fed92a151b2b3ed0e577dd0242da623bd -c4b7d5bf74e3297ae8c39a27d9a0607ee4a7946decabbf11d4afde517dcdeaea -d53f94087a93927dda4696b5d57ba551d3db0b1ae356b58d80bd5aa85be1c3f0 -907d9bcaaf200478d9f3179ac93826a969af53105dad469caf4221cae5652f4f -3ca8d13e2e5ed4fc7867450823899c05426073b850e900ae1cd0b3c81f3b27f1 -a537726923d4c724c4b363013d305a9782d5eb14e73125c2aae3645da28787fe -5055a3477c8638680e2d08bf9503c23be5551f3782b59506fe5ed3abd5eedb60 -3ef9293bb3f795e6c7353d53fe05d25612bea17a3359223fc41b16d3b068a8b1 -b2736e61c04ff4723c3a8a5a2f19fe762fcd905e3621ac18e6fa388acad8d71f -ca75815a0000a6eceb38091c83c74a6b8f7ddd641e33ed757e5ebb8825c3bcc8 -9468f311e40c732cade916c69b078b9caa675de89da4578e0b970667e3de7fbf -977398692c79e40ee55f01a6d66c8ac14bf36dc3215c2dd446e3de4ade55f94c -10d4eb3e7da36eb3ed5471cd02453f5eacc6439f4bd4bbb815f097e452a50545 -816c75fb2607b4bc8088cff32e6cbc98612d0c3cb588f4032afe851a9110a09b -5706702c8bd83b9c28ced5a584dc915501a36b4e55b5e8592593c1f0bd7b4fbb -15246446af236f4f202882f809935d3e9d94529566f09d7052862d36fedb583a -8e68938e450afff9d89ae7dc4ac6f996efa6435dcee69289b4291bc038104062 -e41b2651237972563cba8f5cd2465393a6c3375f9b9d64719ddf4a4101d7717c -a84efebe10d766d072578dba7aaa67ff652c3580f5f2549a939959dfa928b68a -0df843853c4a1c1ed3667076a8b288ff3ce1ebe740a52688d809f5b2d5960803 -64d3b1629724dc170faa44a4e656676b9d8627b6b4d25cc46deacf1d9a64efb0 -4fd8d77ff4121cb1e510866f3a0762d1b41b45888cfda3564e35349f0fe6f55b -709e466a79ff7e923e861c1e7850eb50e9ef2b8a116d66440c83a843332042e9 -da32e41a1b38a5a1a2193b111b762a1efc596530731c73c8f06f50c7eb386a8a -aefd424d2707430aabe649589b8adeb73ad9a955a65cee44bf1a2659e0f5a21d -85b470e491f3a487c631cf99b2ab9b6ae6b56d81f53e69390520b282c516249a -ae64844e1c164554425486fcf34f83051c035122e3ed72ba6044fb0828ad9304 -abb0d38e7b13d1f09d4eaacb4f42e8e5389f3c16478422171c09fd63a67df3eb -74795426e07c565bed22fadfb64d84e2fe35534d2d2ba0e5d563fcd512cc110b -fdce8a10266d2a50aa57ab30d60590f0af9bdd950190a53ad24e6b3267ea0ae6 -550ffaeb26145b73516cec7f62c550637546d4dd626014c8121281741ddd8f4f -e4ff6496f8069134fbdaed74f72a5e945c41cceff2ca7c052bcb764ebc8c9c3b -bdd84fe5cef11d470d229a966e5f67122b78ef4dfc900b97d5543d1200eecefd -b7ce8c7c49c6c25eab9c6ce375f8b1975d52839e30b370a5de1f4e50cfbb9e9d -155b3554401c40ab1a0d0b7500d88d4c4dcbd7864b5b3158d75952fb9b719dc2 -e6e6871f8d53599a3819e048eaa54d6b99422f5aa93423103c2f0e01b0da316a -ee3a8b70fecaf01c9553168752419161e9c5c39056607614c32437e2d724a5cb -0c417eaa7e129ef51d705fcd087d86fec0dea41e3e79a5a12ffdf183c52c251e -03c8704b27eca423c2804d5fcbc082c12f2e91bea00d18f286ed5265d892047a -e426e53794d9655829c09d0078d501ead4088de8b71b69de903b416fd4d8cbb9 -35e00c72d3ba6d5eaf1f61378171f581e34f7e0d3b6171194e258b09ee3bc4d7 -d236cfa72cddfc5f3049c99d002b93c3ebccdf4b4ffdd210933e827a8c74b823 -a0ad225ab6183d498ffe04317b56a9912596f0c54e951c1fdfce2d90bd3771a9 -6cead69c98b1d8d30617c80a704a85b7662364ce97b0322b98447a97fc827584 -f607106492b23165a0fabdf846ba4ca2c43a61dcf2b4b8587965b5aee46d9216 -ebf16e18d7e06cae263d160e231fe24a5a750eae53ba9996247d5bea1f1d2b91 -3dff420ad33da68222852c7225850778bc04d7193ca5bf188f9de98c052a27f0 -734ba510fffad2bec8cbd0674925250add6d27aa81a64bf04d3a71a0f31f4a16 -88b05bb31287501da54f4916ffc2debe02ed12fa169c34fbdc268c6054123e9a -d280d8ea1c5bf83577c35d3995b3a51f076b4db9729cd2207ccd51c84c8478d2 -09081529d97b31e96c423f7e22e71b64f2c3f50c0572fc30848112478f643e25 -36a5e513cb564136e121d795a08d54181402bf96ef158c4943861cfeb7fc57fa -91ab500281186248a34dd75fc0369b6b1ed694de67a4ab236911ab7a81a2d9d9 -985fd71259787802bd490d4fe2f8cc883ad063371978b6f73fd00288a8b1d508 -6c9e379f472b3d90407e11368b1c2d69333a03e4e473d9974f571761c8803862 -9d628fb8df815a4cd7ef443faa73cc22b0c8ef1bed922b7665651140d509ba1e -f20357614fad55d940b521f0d58197231be5122c3f9b584f9de040bc966da17e -65929187796a493d683d8c004bd6c6c4ae39127d5ccd37ed8038eb4b6bc135e4 -c4babf07e3a8173824369001a5e8c34dcd7985e5f72527d560c90bbe1651d0fa -258006d1e2c146c301bf5741217f0ba5ba5598b65d9d54cc7d77d662e9b46001 -d1b64d00f93b705bfabf0b0ebdfac68684e5b4f6b99472e0054465f0569e4509 -04819c350a6696b622e8d40c2f19b8a85ec206203f1d6a5e23fd2015ed1a6f8f -822cd41c389d61373e3c76bbf4c633bbb837276dad6b798e78eeb8fbcba6ccfe -59060283c4e3e70c2aed0fd9b82d1a39f5272b5f163426d8bbdaeab88b2e5ce9 -78dce79019a8063a227bdb91b52a3c13081db63a21f1b3036fe663f97bc87f5a -aeda4aa3d044fcb0df254fcefa524a1da78cb24f73767caae7acb059398b1687 -5eeac36f9d721397aaa8aa93ac392e94ee3f2ffc8adcf5d0975e4c98fc85d754 -eedd6ab4302ab58623cdbcbe337563193c22612cf425793718e2ea61bbb1b115 -6f3b4bc21ce8ceea5d69a35f0d02827c90fc6087c6502b6a465fde79fdbd890d -d3fb8a99282decccb3780fb6c82448aa192b7bb09c3a922912a7654830e93bb3 -6c4e2e2465e382e630007d43f9dce2d114fe13cfa3e09e99061ea41ed89bde4f -b57f88dc525f256a2685eb92ceba55cce8015cb1f03ddaf16d1bd8d7a96df9c5 -d6018207164f6b554d4d8ee556a923d831a96ddd89a8d4205693e9d8b97befd5 -ce3f62a3cc399b9f8570693ca6cf5e87756bc154f96a0eccb69fcdfc0133142b -ba6f5ef8b37636fc2313fcef7cc1d0275b5268e4d5cedaa394eebad68059fe3c -c8a1ec659be58bde3f4e75dfae037d7cec8a5ebb211d899e31ff4918e89e75b0 -b9679669cd8d2e522e9cba190d91ed8a2b9dc56e92ec9cc08fe1ff58b96a3a0a -763083300db6ada58e5d05a64b56a174d2301844d54298815d9288dfacdc5aa2 -39e22b20f7de218a1513a6b068b78925c083c12d9c1d964392b095823312ba8e -246853f6cc7bcc5907742550ee41ccb009028ac5e80c9b5824faecb7c4eb4b90 -5a4451605f89d7b5ec2733458381b91097f0cb5660bc8f2aa679941c9b24cff1 -0a8f0b6740afb9fb97cc6eacd7cf39f70f7aa717590eee87e83b6e04a67af211 -bc0e8e1beaf8210f03edbba8af900da0166bb7d9bf9df91d63f1ba936cc15d59 -1d487be4c7cce1096d3dffab5fb95b310b9e500d9b8013dcdf8d7dc1b2458c60 -df6816cfb618c3d305f3174a6e0ccf46b554aebdc8c4ff31f13f51900770bfd5 -5e29b39fc6cf46f6a6f30491076b1ca18743eae590ba762f13c9f83c4a12ca29 -cef754b0ae5b76ecc29a56f500d81b77b767a7e45cf85b73fd75af3f50cd66ab -6cba72617f6206dd6aabe1d70eb909653972bacca73f40390f03ac61161c2f38 -6274f484fcfb99a62832c535ba8a2dbc5ec415e570011e07ae6d2acad0304109 -11a0c24c71639e49cf2e859d02495b3bbf3edbfc7ff82979d1819cc132bb1b88 -24a561c53f3e98b5306bd8d9596889e1ae5e5f99ffa86974a3d98ea7ca6207de -198b87a93216c4a7f601cc780b4bed59eb54f4af717e8e9d007c23817966732a -4a24f5a7c92694989291acca0b33861172c5104f142dc5c0297914c917cd487d -e1dc42d4cd6011486cf129352240d2419b7336c54bb578f33a6728e3f4ed5ade -265bec7fab902d50e568a755529b1da96f4bae7d16773fe9e652412c94fe62a4 -9b90a9dfcbf1b0466a1b89d3abd532a026a2a45330d90890c27cccd422dbd9af -633af44187ba2560811b297cb3c720373afff729d55cc873e87936fe72475143 -336c6bf027b71c5f24fc8ad2bb7aaa3779b4a346fcd60929f42b2ead0d38a14e -4653e3b92ce14dde30e901312da82b38d61b08eec80cdf22901ad41093788a0f -c61a8990eda88ff813f3f0866909ac7c56c5dc0160abc9e70ce864e859763b54 -a423f34287249f20ab24a62602c5164b1622ba42c28febf97a5021378c2c30a3 -b5e5a73ea570721ce916ac4682cb679342a177657ace0e890f1249bcf5fe3519 -bfad392fb4a7a59a33fdf00ad6f3c58131f2c82554c6281a903e19e2d2d5d49a -793489bc2a9560ac738439660b4bd6e535776c1766897feb2be25d1a7e6a8f22 -e37da2cfe7ad779b1655cb970ce1a5a92717a400388e316d000337d4848ff6bb -17c7b703fdf39539fe3c468c79cf23b70d10f75ac34a55035d8ad5839dd9466b -79b69c08146ab3621614e641cb83c7ae915cc5ddf518c9188ab4b124769e9bdd -55c2cdc550d10dc2410b49a5ca1a4928e1f830fff20c24268b3208727cbc1df7 -b550ba7d05269f4cad9c14b86b18ba920e80158445d07564a1a6ceb77df17593 -50c7fa23fb9eb18976c2ac82ac67e2b8faea4949a53b1e2a263ba8f2d2bb1525 -78938b515736367b3dda6cce6923628e3a4ac7052892364f0d0053caed5667fb -ff2a7a0b1f15f61fc6e2c39754f99857d6ca9a4cd848faf7558e55c3175e386e -5bb7f42d77019ec0583bdd58781e6b7e205f686b27ea79926e471e0d73660b63 -09e2fb3244100dd5f7e6c873974888d77e3f9f2b989996c4236c83b8f2bc843e -560e4a07d45296158ee3a164bc49b47b37c2617f2f26c1ad5fea0c6d50b1015d -0aeccbc4bc1b62d814f5e3ed87bf17057fc2c437d6ab9a716a7e4845275112c9 -de9d5450d79ec87c68ad22eedad4e14615b135912dc9c51b55f0def2a2ea85bc -d7880beeb30e02c476a5200810da5c61e914e110c46504ee97ffad58958c133e -af2f7274f7c8866a5c0cce5952861ec271121c3517964500a9c312559c2a0b32 -7b51a3984d51d75fd0548f146df90849bc5a565d9fe12b181de4e5f7f6f5293a -f25bf7c82d21c044f07df30ece184cc1b7c954a368377a8676fbf3439e3ce2f5 -75f35e694648e040108824be5dc7d3ee70c4ac9f724f93d68827183b8346d46d -75e854243b6585eb6e78be218b44368c2696bbec8dda7f7b6bd2cd0e87ad5594 -28195afd178533d57dee4d2e89897e9db709247dfccfa4df88adbc1a9b5ddbc7 -ad17691314c7f7f5b988e29d355747200b5a385d8e34511b9de70cc0bad8d759 -3009048cbd5cec2a24df414b098157adace9f132d62ab9a4c38f84a3831cee5a -7f017bdc3affce0244f8b7e17e67778e84df6befe3fa6fce7c0a2c1725d1f3ff -190edd33f307bd472b45bd0b99df6843785d2ddbbe96e23cd8b831b52223fafb -069a39c4ad99b436d0cfc37dfcdee9e84b8757b253294a5d52e137f4ee653b56 -e1fac965e280d0e9aca00f054e1fa218c8d9527b81ccdfd686dbc7981718f321 -ba00e1abb7366f70b7401870dbc84d64df270f31d45b59fe621b0144efa27e02 -79f9bcbc567fc07786840d767a72e35da495a5178df401eee6a07fa3a8d60f8a -abee6895d11402793687d27a4d2cd035291f76a4db595907a65e5b2db5c51737 -f2a3cb61df8b9d24c21a4a323eea8cadfaedfe9f3eb72f79bfc1286a72fc9f6f -8288e0e47d572f3c43cdec4b660c769102649621ca67886b4a754f33a065908f -08ac4ff44bea04402ca0f932d47526e674cd42e3db9cd5b51530190ac8b65c62 -bf68e2136cce0640c22c218c623071b5e8fe843ac3b033dd21021b254693de46 -c672f66512bf73a58d96399a35e8e315e9bd1b7720882b1a7cb257db11b68cc6 -0417b60ac36f82570bd28d47f52e91eae2b8caeb67cb921ec3bf77510487953f -bfd4dfc5791225c5b1d25bc77bba59a1a4ca2c6d06bc66f35c38f7c983dacca4 -ce4154f6c5932141eca8bab3e216e151445ab70a430cfa4baca7519464e5f8c1 -684ef5532067ab3ae32ad25175e6e6d74e058d9300fad78a6e7c32738d8e7e23 -c2e5a701459f76dd9e002864503c3692305d1618550d0c1132e5aaecb3a59ef3 -ec1c57dd4a443a99acda7cca08b82bf436865a315767c1bfa404f6a17b975e95 -11e08b40fa5b11cc3e375fefb04c1f81f05dfe85dc1d860ae1057ad0622aeab1 -036a09dd71964a944206c2c88c888c96004f2a29121dc298c38ac352bcea84c4 -1810dd09f6e2fb7be9bda31363cc245d4a614bf47d1ccc872f4e2ef7d07d06ca -54a3a5ddf5de96b224c03b65f1b924fd2affba7aa7b43e6c9e0a2011cb6a4050 -96200a4e50cf62bc2f405034ba359570213ba82d0d779f4433269a42e39a422d -21dd5806a4fd43143659aa223180d6633522d82bf563966eb97b2e298537610a -c3a501906615784fb6286d961035a397294244df1b6c10d794c3b3058d2db76a -78a5d81888ed75d9292f3e8679e28c08c4672e454f525a71143aaefeb4af50c4 -b7bc4ffe4fbabec4e460a8f3441eee53103ff98ee35b6c6f25b90217b0c5003a -c37514bb6138f1108962672f00685f10ebfe26347c9e4c80fec60ac46b64faee -32e2c3b82bf4882260146ee10e2af198d6046c4007bebdab12bd7652e6c14d82 -8c9dd030ee4f785c5f5fa16d2747f8b3202c91068f4607c72c9ea2f934a09322 -504bd3567bba36b1fc211cab06005f981db3587e7a9500599080c0733b063887 -34db6025916e3d71c23236f851508b8c0e04207cdbb87578d46040f814c505ce -5cb9af671c0cada35b750a81bd67f06a52651a4d4ddee09b944b4fa1167ce934 -0855aa27c3dbf11338e0d016ffa14049e7b932f1c907fb1e452db60d34c019ff -c4ee2d7ab8c2bd78215bae5618d3010e94b82686d918928686512abbd2bdc336 -daae9b8e344562641f9b3ef78747b1154fd7ffd265ead2bf8be75aa52a0b7716 -f09bd982aee6be75020d774a5a2d45f03e11aab7ee12d8d248417b65cb3398ee -46cdfa99d6b43ae536998aab64b2425f2c0709f6efe66c3f5d376989e30ebca0 -59497ae04804576cae98fb8b1c0ef2ee8d36fd4280ac6e08332bc6f64e4af3fc -432a757ed3c9e95559ed187a3a12595e0abd95e1177935f867ae5e5ef11af919 -5d60d7c2baec5c3c9ca1ac22a2acc77f35066122ddcfe65d0321b70025ea1330 -a7e0e2b8ef9dd4e2123244f7b071cf669f342157e978eda41fa176932f99b914 -ebdc6711df3f917d4483ea709170843ba7b0a7a5ab8db6f0437152b43d253bbb -b123bcd27552369cef3c2104a01b5658ed965e16f353ee70a0edde24729127d0 -4a3b8082fe128d972e657db200bbe368e0a90006049255c3792b5f2b6bf023df -548ddd41d3d3d82d7faa5944068d0e1e661b52f8e8b698ba1d2fb8d90806bdad -2cdf1e4ce36eb8b775be5680d9bb043929debf5a1b50fcb82cc39a5ce2e6ec78 -380bf8f398f74d022acf75f4d0c9197ec8efa91bc3d7c7758e1951c1ae8a7f5a -93f6d13a50fd23285c58688f20972cc2e7cc1a3fc5f4012d280337aa92cb387c -19a7d447a1a76401e377b3b0b54f877d982c849844d5e9bfd60ead10347c53cd -ed804d709189f7c7280e665cf13353ccc96bf6bfc78b1488c07def5ffc76dd3f -d24e2d4390bd99356ac58dbc46a919ad8721c37b7fdcff3c8e70853bfe3716db -8bb7efdf2bd5144e8fb101ddbffda33a49264071c8395817ec2b396fba5f09a2 -dfcb29ea9b5cc166fb6a8f37bdcfe8d92b776c5e142772e048d6ab35856a289a -cd05ad840b2b776ebaa2e8ddfb578695236a4ff74b936f74adb65d5eda696a0f -0c33dd11682be84bf3be77cb3a46936703f2ab56240fea5c29766a97def91f0c -b44ca4d5a128fa1bce6ea7468550a877e1256479370e0bc3dd9ae33f7e2b4907 -e33001717fbd5dc620e3b59d7635ab53eda7e69af3f84f50077258a2c1cce4a5 -92a2afa1ab5e92d9024b70804b4b6cdcde23d11592926c84c8f4bb0f2ecdf0fb -2c5c1a717c1542a662c358578c4eb9cd9846a15846d9b9c12afe4fcff88ffca3 -ec09c97913f59a331e873dd334e5d917d59633276aa83c51dc1bb1c12609416a -6fe867723baa10ad68b88a9fea5afa6c45cc3908660bb13d10aeb7d98102beec -552a904793730ddd5a3a1c05645ea490971bde1fe1def881f57e7224cbebb335 -329994e1d630e5ef915c36022c4d9c0ef3f36d6afb97fdbdfa21921e926b98ca -669c0384466bbcf1359c48980074ecf292ca4efed8c425c038149710d51de95c -ebf1bb9246ab57a7a5338236a1d6da751e95363fd6f96c24c6be45a153cde7e9 -1a0a48f3b681d51242b6f5c16346e279901d58e17b5f420033ebbeac11798ad1 -1f61627eb3e2fe20b03d8c457f343e9e66bf3ada20dd44e6e9614f00cb81e82e -632f3ce092cafff676f1073d43616b020b7524c2af9a0f2fa8a38da653a83adb -54f3d091055c6ecbcffbdc2464ce17978397391ac5449957826e0e3597b9fd2d -427ab9f60657e0cf61428be224868f380f43b87e4896690e2e28f5a33255fe7f -3103fdfb6b0a1a3056fa920a4d3b05a89a033a457b82a4930df7e78246b65f30 -0ba800ac3ed4a554b5137c20d47f9394db07686e33f28b679caf7aaa9e94cd4f -245ca89c359415fc084cf2fd9dfa050273f67ebb58745ab59a683232c8113b51 -d1d93d7e4132c21dc8250c7f58c40e9ecf6bde312812357377b562e1221d6e42 -4e902bfc149ce19d981d869c1e985220616cf7ce6f06677e6f92d923b11b6a09 -eb8428c28f16e348e671b2f8829f32a4e2d3dfa07a4fb82e09f99e38c3f514f7 -15914a1d3f1193e4699d35c3a38624288dcf1dc133a14b3092820907c22a0f70 -ffd15c37f50003103010bcbd08164f572d739bb5623cba3b3300e34bfbf716b7 -f4851b5604318461fc8ef6b04873801d745f51e9fb3796391c29bd89932acbb4 -a0215292dd73b8c7500af82cbd0114923e6a5d971f454a5587922cdf21f6ee10 -7cc299a84b5dcc435768eb2b31adbc7a9ff06e1ca3171a72a0612154cef005bc -eb9704b140f3ea6f46886a15129b5f97cdb950a01b6f2928407c8429a43672ac -e5e6da99927c3d53d86702484a1c8345d156086b8dccd6ff33b730508ea52c08 -6090985d26a46349a9d7dd0053c48aaaccbcaf21c2582564aeab5bf87dcb2f06 -6107db6d62734edfb5697e1d228963e447878f9b17ca5462970f1e329ce91a05 -46867b6a913549e92162231ad7066d9684557154b55af80f60cebd53d731a9a8 -599be015c13a2c217923d757b1a2ee2b73f428b13b3e7c3724790e6e73494cb5 -e8987f60f13783dbed0290759f042c9ef3ff34a80542b4afeb732256ccc4ee23 -b7b28483d564b5b283c1accd2a336426442074d5c3fa193534e15681e3ed4f25 -2d505ae434ae415e34933d6b0861cd784cd794c2aeb54e9717098e1a0c4019e5 -6e7a885b8599c162f4fa1c25d8f0ea5feaab7cd0d6f4c1ad4ad4a0becb5dab79 -4c05416d0a20da217dab9b00afa9a566bab7321de3b999a00ca5bdbfc0bc62d3 -8e910d817cecfca886f14c36a2f478efcab9d11624b61de5476373886a002492 -5504d49df4ce1bccf2fa4bdb0c5e150b41e1af1b4ea5e5e91f862aa012e8fff8 -8a20e8fc845c4330d9ea33e84c5b0b77bd5f997d6704a19849d7353c2bede9a3 -738bbe76d61f452d59232c8d990a02eb2b79173494566425bb2925bfbebbf4f9 -4b92c77aa56406cdc3eaaded0edd9a189d149a929a9f3b01d86a8480aaea7baa -f6bdae10bf0dd59da643b29e9b9d7e3531ae819ed99d42e5701678c6125c2b79 -8859cbf8750c0e2c36b59c12eb693a9d0a245be59c577b42312fb335eeadf439 -64d7401d56da0b54e506994b5e217198b53dae5152622c792e25d056f81eaa3a -86653158299bb3945f267baefac55be57f0c83bd6154a3808f4d61bae5e9511c -928ef00cd9b9db903285006fb3158a4672ce2d58163f6ed6694aab602d9b4282 -8063286b7b911e0291a94eb1fc1dd1e57edb16472b2157ba97a6f00e7fc69177 -f2db6eaa0a7fe2d8250c600c3cc61cbeb3be19c1ecdf7595cd9d17745922e05b -840760d8750284daae7089d5401e0d46712fc0fc05b43c7c923e04aacd6e7e8c -f2dc04b9c6b3277e29849ecc8e702093f8213eb61170ae0e9b80867d682ceae5 -6103c6015e910a0f805d74f3bd826cdfe1ab1dcf38f5ad68dd830b5baab91609 -cdd6d409a84ef803e6fc7186dc044323e1f336bde6adb85b8743181ac0356ae6 -8ae872743205dda0a301143a23ba1a8ffb459930267354426cb328ab365dea54 -0fce3782828745432773eb366a948bf0bd9fbc1d44ad7016bb8d7c0328572b97 -defda7c8eeb1415cd15361cb9fe5dedad3c7ed3c34486f6655a8be7f5a882965 -3595f9af65f6778bd8275ad001b208d12d954c243450a30239ce490624ca1c95 -0136b8eb77c70d9da2636c0ae65767084d30ae9ed8ad7c2ae114740d6d967543 -143b1ca5c4e4acd3ccbe3dcff1be71edd051ec76b1e66cf437b44d1a78245152 -e6cbf550307d159aa009a85dd6acda2db4bedaa07325747b14f8cd1ca2443d31 -ef50c85324075a18c96c5e4949d689f6652301919b7b4a6cc760c2c1b435c923 -639ccfe9e1a7b48f62cba709a7e4ab0b726b1961b265e93bb143ff5a15b226e5 -75a5b73fd54a7cda553ea63a256c17eae8ae71c662afb07bc45508f8145dea2c -1a4af3eabc396bf4f7a28875306661274d33ae9d2027f1809122e178618bcafe -2d7a0174818bcc2431286de124e09b53b3d5d5dd181f0b6abd42dc4330de51a8 -7640e632adc9a302c06f8d416fec2d6fd8e604c322a21bf5a45af1d6365a5a67 -9b1810e4cbd19ea381af0492ba7f698d56e8fe97308e0329ce094a8bc19fe824 -16eeffc010e29f6d596f644366e96ea56eac030cc0728c03e3bc70073d907dd1 -2d20810d1f93dfff04756c9808891ed510ad9a3ee6508f49a49159cb5442876c -03aa8d839aa93159a9715572283782030954ecb010f2aa0a0c646e2074badccc -b0fd5c863b872a4fafe454907e5e13f6e09268b175becd5da0a72a457db1aae3 -78b159fb2f5d481ed918eacde3cea66a7a67c91cd99aa9c69815604b03c9f672 -20a108ce6da614beae32725bcb925cf410f84fa586305bc0bdb512f2f0c703be -76384b556b38f9185f77954c40734b78d589ac990c29777a90dc965d98d0e851 -b333e806fdfe35b8119f4e0d2f4ae5b2dded1b5897e78cfc6b08d45e7a71b791 -2d24b0923e4aaa7fd616d37a89a471379cc372611980895bb605a919628c3b15 -a41b902d6ee9ce4f5b3ccb39f8e03ae0ca3f54a09fc7f9f19b668b70ac9ec7e6 -b663848941f28decf6d480426c8e52259e024209ed37d007d37a831577f1cf4e -19caf4cb20e1eb534419b8af81abb654660d25c76f4c4ba1ec516e2c1154cb1e -81952bcfbaf3e2e8745b7f785eeb623163f1507bb691585f4aefee40fcb5c907 -72d375163c1d3aa41e69ab8131680bd6ca22a4bf9d1e00ce2d4c7360569b6800 -5f28b7facc9746a18bb74bac5b3694f3a66e1c56b5d7d789686b81a53c9631f6 -e48d478d856cc9dd9508b93de57fe932d3ecb8646aaa7490be8166a2653f37f9 -67e2f58b3ec332dbf806b248534b63150075ebd1a9a929cf01a8d9d7fe93a1b2 -23de35674b6119485f361bb86f075276da15acd538fd884dde074d9fc65b17d0 -8ed18a2a3adc48a1a7c1eecd3c2c8a694f2d9c0f19bb177da48b6ed69664e203 -b356000fb1daee9d1f2d9b20313b53db1a991068f2f482982448d543b11ee3df -686c3043a3667f0d64c055b125ac3da66f8d9eae9b6408fdd94daa824a764d0f -d67a02440a19280c4025960adeab8d4de07eaa1a52880aed95f42eb9fce5603b -d4dcd1abdab582c26379883b15c7561d9d7487bf5ffa07da45a858e6ddea3c90 -cd3c32206bb1d6ae9d988e1fb406d64fb95f2f869eeabbf736ea9b5217b2a8c1 -c099e8b075487c092ec832ce7139722c5e021921aa2f4aeb97c7498972aa7e86 -10601a2aa8707e305a060cb0f6198c0bf4ea59174a0be5b0af4be99b24a05f42 -ac07d4f756cac2b475b04807310810204c54bd1543c211f976e168033d917394 -c067bf4b5a4797731e4c33ebdf1cad4f7b8064d88c106e9a42b9990963035941 -fec61df103df8a8f1c1d41ba1e8ae1060e50da522792df96c03cdfd46e4c62a0 -13d396d291f534b9d586f03d3aa08102b247c2f7dc05672354b9ee2e82b3eb03 -48c9aee0aa650deed166e145019329e0025f80fda0ddc0b7bc7a91a33e2b0de8 -90285f7931fe5ce58e2c90bea8b30f457ae9955d1f175a281416f8f093982234 -be899e8628e1be7390ee6681cd1ead8b3d1fa49394d628fe9709c66b40b44600 -4ceb1bea7a0c5ccb5cf7656ab7909e47d3c5de126888d8d74c500d2bdfbca532 -c645f5a273f1a83ff72b77ff98e90e0c40599530a7953fe3277cd04289efab4d -61ba6749d5274a6fa9880d2f13a16519760c077042bd8cdb04e6a6021f8a2d60 -e282d89ca0d3b0c18cf8485992c3f9c8d8d6f4bc00d4dd80b0bd0939d975f020 -ab03046dbd71dd81269ceba8efc3a5fa819f1ee38f39d2c17e01f270ca97f933 -09c5c3ae0987ded1eea51970d7bc38ceb018a71dc9f7637ab2937fc635c2d977 -28c3d8629c1e0f191bfb5ed9314ad6e75021d22eb8fbebadc9ee3848c2cb4627 -b483c61166cc8333a7c9edc522e1af78746c63650b4ef2fc35d68af8d67ec0a2 -9868001eba2099a234c6968f173e7b324fb5b97d67a87bf976fb53de5e8b7000 -14f35b0990016f7eb933377781fb530d6d2ca72882827327b73f088aa6290529 -2b0fe237427f81dc7706150991003bb3735a9b5ad2c744d650167d80525b3cd4 -1b4f342a9bb873b2e1864f4980ea35dfe3377f98577c91c1156a3d309f2ec63a -495b6f4ad7f8b8099aa7f7f5f768dff11cdc34269bb2cec7e3a952db857c46fb -e238190a8beb0c051a08cf40f72fe6c496c7336fc68f9044f16b06a091bbf49b -76621b67503f6cdfe4d64da89008f158b9888d604cc0c421435d478fbb7b6616 -5d6e76047a3733b8f1cbd24834c429c283ab9b1e1b6100c9fe7c26006746e21c -e148673b057b745f0f51eb3765a2eb794c8c33751d77b8b6c5f2fa4ddebd67eb -b867eb45c7a96b9ddadc95cdb7739f1ccc2f8ed19f3b9973a7014adeeb718d29 -823e15c7f9108627cc608c69a32dc821c7c6973fa65691904877cb3dc5fd6b4b -20abd578a0e0fcccaed769e926ff327d1466bd72f0c92dec654c3d5701848da8 -bbc54017d7a4f48585770830fc636f98d288f48b2af5f8880a887d0dfc2dc5b3 -f503674394df1f5020bf9972f5f872f6a1360a1d859373d05264e51850cedc74 -4fe81fa7ee47c3427f29bc4e29e546e8c0959d9ee70731fdf7b8aa38f76e518a -455bcec4f67b117ad18d46416fac48b9b8f859b0b891fe2c4188a10610671220 -865385cdf8f33a5f68b77536f393e59d74f177207e8dd27084f0f0c1c3d0c679 -0b04632b11bb7770841b13317435e0d2fdb11a9943eca60bf460a9030bdfb105 -afae3a07525f75c3e2f738361c91ba9c7071ab58fff925bf792044596239d81c -46704c4a04892ec0a77e2351b4c9e52e1fb94032c55210b41f45443b380cc768 -5af57c7be35243a3d0719099836df53a496085d7d5e5219eba80bfdc3878077a -f50b22c222cee5571a6201d3e70113f0fc379a0470ca270d5c6e4082a4a3b974 -8f8bf09a1e843dccf1c0cee5e39ed85f30c3615d1ca530df55b3a3ea5cf70f2d -fa2fba3e942b34138ac99fd8dc33afcba36d95219d901136e4cad0273ca895cb -25b6d69353e557e4b5257c64ac262f38b92b3bbca1d4f2357f25949b94a217e9 -786fcf3d715a8647f6276265f79de72725d2ab56a85db21e2565fb64ca111dfc -3e2237d8d5888a749f2e6952163de439b2e0ae3779ef541972d248f1898ea3d5 -5acfb3f14091e42af2386b12eb414d480eb676295f2276071dc7e443b6050c9f -3786e7707ef77f07e1f7f120a6544291d2b3c84d1e6c05dd21900ab923af8a1c -5ae32200760fbc4823eaf9de690b9fe359835685f82f36d4644d3a91c39d3d6f -1d188d6edbad9253e561bae3f87130939979cba8b6ab2716e86d1d1d35390257 -3f8b795a8a6493e504065f07a8304a6cbcbf92cb8e6993b65133db100a5a1e12 -962a1cf4c295702a9a0c898f3a9129d46abafb2916af572bffe168ce88cc1e82 -3448bd62ab0fa1affa0c669f90c5636fee4df33f139a267fc9492fab613599a1 -cb64dfb9a4cfdbba40b33afb235a60d4a666d8178d2b174412f872a8f8198df1 -8b3768ea06e73f4f1d56b953d36471843d4e02eded01fea728d131b4651b6576 -a74601f2d57bdc6c07381587cd935e481f16bfd199159bc24efd088564084012 -86a9153d64ee621bdd503328ea9357444d174b0117084d46d9214f2a1adaeb09 -9db5451873391c9520d209e9b9cd350dd8e121785348f2b5d76f7741d8e5ce56 -b42ba82deb64bd20585646edaeae5f4be5061cb3dadc21a551f8d02a2a6587b6 -d7e674e6b88613a75ec0f8a80e5e18b53bccb86ba8413241fe15b29459dd788f -3b46017696ce1583e3d633218c36f2385ef559f687b9953be2369ae171736522 -d92f549ef58f003ae84c25f1824ba12912ce1bed9a4bf9caec2afa03ab06a7ea -bee845c6bcdb03ef6abd07c65b949e7564318d26af7426037ba8b751dc58e580 -cdffd068316a1a6cdd8158ef59cb404fb156467f50aa010a59ce15ce69a3f45c -60f4876a88e4f773a92627a68d0fe4505cffab9aa6afbbbbe2c6ca6531f5ce3f -1024b4e217d66ec6c67de62c37e44bee0e95b98f11b8c673062e2af995851613 -8e9de7c3363267d054f37a527f4defab8a6a714ff865e41c8f9a0c1cb3d9251d -5d2b1bf7acb24ff2290be376343157f7704bea10214b701a08455db5331a3a16 -435363440998bb9d8de1cb15165ea7e8183c9f49700485300872294cbd399425 -e31b558627568bc248d7565a87acb9c197c0934a4c554780f87188081adef86e -924f837411932322cfe7bdff98ab098cb022fdfeeb4646e9902848b587e0ebc2 -a54c5bfe91c944b8878af276be6fbc08866778d944ffe7ab86dd0064fccaf25f -6f523966926f107eaa85b12182c29bdd0991fb8c9fd2c6df567a3b78efdf6b1d -b695b8917b75e4ff802310a90c679b48e7c14aa48a2725c3b86320c84b8363ba -e888f033497eefc22105b7062c84a568e58434f7e43f0f5beb8ab00e6bd09b8c -5bd1ffc0bb85ef249957fb803738c2ea7fccd1ec349c123d442e43ffbe9070b4 -9565281636387621d854bf9816e88561183274fd022d7916fc95ac4ec74b74a1 -a2eef38dd7dfd4c3f2c040d91c20f637fbe05aa2d59b561360a1a643d59e238b -58b53a52a6d5dd6f270ebecab33fba821d5bf09dcfe432bf52c3082abb1b2b45 -7f0c4865f9140b7145cfe477259ee0c9ba5ef8961ffe1438e4504b24fa539bbd -a710c26629eaa04103dc7077b06b823ebb8bf8cbaa9a308b4a3c780f2091fcee -54ea943146b33fd2ff9a1181d1fcf6d7ffe8654015ad2b6360280146f77c79d1 -25242707d7ab3fa55aa4c7d3c18a6590f5815758fd66053d18bc68e6e149db9f -6b7bb1f7870aaabbf127d8d419f00be7bb1e039c31f600268b7b60f06498bd8c -0524559c858b993fa1cc94311d0d75bf21565e9a288ca18d9f334e14cf1bd2ec -90e4b3a02f6d3a30d02001b271ec47d2dd96c728772e8e410f4f084ce7264c13 -c677f577ec54fc31b58291142ed1f89df5516bf55d99a5666f3de6240ca45e4a -4b9b5342d48a722a4a2e5ec959931216e9ff349ee2efa03f0a36be06394ea0d1 -62a708c7eb181f3a424ccd9e6e8f001765cf4c3b3556fec13a88f5634607ea13 -97501850153ad0b901695e3f1b35b7ed8bcde3a9f194cb73a3b21b06f70df73a -735f8e1ba5304b6f88b2386725d9b251a702a2acdbc6f26764392a94511e9958 -1aac07c221e1d90dfade5e55ef77e6af76cc2efdbe70a456bfc4af12a2be9c4d -0675d938bba4a8f2e8861e3ac086aa54acfa4b58e7328ac5ab9cd71034958b88 -78d5a818e44acba9cb4db92ba87e47799c49fa415bcff011cae3725477c40bc9 -e8ed54a7fb3e6afa07b52d37f912a8fb6ace71ab1a8ccb9b77ecb3a046cc4191 -78fe33967c4747d2230a83338ea3351162f948bd1fb4a02a53f3439a2b994771 -a0a3f4ce21346fb2e4ca0940332ee9b46a272f739e3c13f32d0938ad7c858790 -0cf8c6a8bf6fb592b8114901e126e7c52556482784993b4d528cf87db5e7112e -1d0dcaa5e98b2f12ed5cf6a98af066fa67914987a8c2849a4f404471d8c042c9 -70ab5655e68c9eccaa33758b66a84677a6b21357ede896ce86be1569dff2d99a -8be0849a5e0d5ecbf26384a5d2af27acbbeecf78c165a022144f1fab586c7c46 -89d82caf949c5f76c22ffd5f6e32a60ae3319fbd9e6219cf029db80a084e9142 -79ef07873fb9d496552df20578331017e35760cceeb7aff3b4fd170cc5bc8098 -f5a7322402f06deafea01409cb10a5d990b316ef2a089c78cb3012d56dc16519 -1e49cf592e1da681c3c230d0adc35143fd300d5bef2d02900501948bb0ee411f -39e33eef9f98547f6b12188f47a22ceafc6e2e92b9d60e3dd8e9f99f70fb35ef -073f67591bc0674479680b469a5d0adaf213875cfa870c4e0e5bd953dd0ff242 -95f91794a396d90f0f167231b8c184418a9a481cc34c4fa5fadf95afc3c01aaa -aecd644e3441c8449507e97eb5b00a4bb538f2b355f0d074a8965b376907d5ba -030186e458c62efd856f36552853f500f5acbb6ed7a75e61ae6274fc94572189 -c3a7f20633bb5cc239ae2f7d8f1820bbf56fbb19c8f83a378b69afaf7ac0858c -b63dd627a3cc329e4eae14d3d3738d690b3d0f6d9f0db46d36cf726535ce3ade -ac9accbb7ae3a921421b236ffdab5a32c8714b0b67c719c58c685f3505adf085 -c3164d352c2e5df7b083a22b5c4a90b1b6860fe406448cc7d1465835dcbd0a59 -dada128944737ba23df6e90cc754f78ad4e4186e01db8533430926d1fab3b33e -34a808a0148a9a1e3ac259a26fd3c866a53e60f514003d33b9e451bc90d77a0a -5903ca17155dc3a8f7986e10eceabe3d0f152b9e3f77007c44af13d814fbb40d -062b554d27f393d28f20391a294d8fedde506417f276f2a4442d1c5c20c2522b -ea02f519802a3b3c01ec806d156fd5c40c71321d978d160a004e90781c523ce9 -bef7582cc802fa2a0a2b4fe491fbeb0725ce595dac549286b609855e6b16f727 -4d78a20fe5bfb086051fa99a1886878446574190bbe1ac3827602ccb9b78a73a -f16ad542486cf65edf006912797b4a387d8152c13bcc767b90f0ec98609f438d -6b92bfd30f6cdc2ebce3027067e817bdd0567352fc61846d9a7762f37ca620cf -2c37e082d50d27b33e8ffcc90896e058454d5299d2c8d5c90b9d82a32a866cfa -49a7cf5b89cbcde3e20da1cf6228a40fd975a1dd0a4b69494f28ff890aded139 -4712fbaa86482eccf81e7d84d7b7f08e26f455a2f01c585d483d73fdfef5ffe7 -4f7fb185b42b699bb9b08338d4165912bef88b097279f568abb6a5b713c1d905 -e4bab47cbd740ea0984f75dd5fc99a56ce239d23a9f41cf84f6417fecd5b405b -901dbf10523cff1691fc5b59689067a7a752e7a957dda181ef21f23935d62ada -f7d34c1199cfbdd1194be84740afa23c2a63c254475f1955682b145e47462dcb -4af3e9ceb98362461e8bf9a6f2114c7cb1e0c360eeb3d7a38445195044346d5d -e1e2e954bff5fe038eb3f7dcb815c1267dcfe58b0655a3052a12d714c92b4735 -07fb27c82b695146b75c9c1121dbf9b84e3cf46fb5cca0c4e7ac6a814e13f1db -7cc0c8afa4532fe98b2b14bb8780c88a50c7cc2f62eec7554dff4c9bb2032e9f -a400e6ca315a09a21d12789d163ec7d36089dcf61bb8060301f7e8ce85b89e76 -d36648f43926089fe8d997abfa48520d872b53ddacab6d12922dd9fe311fac17 -34d34507537194c1ae913db7c585674886dd70433a043c57fd3d4e29d4ffd186 -d835b5ee1ceedefa48a2e6fd7c9cae2dddd20a3a986f4a1e9dde20e62efbd2d3 -6fbb6b2ef1f314c2d5ce0ef74336bcd30af358770ad3964911faa77ea7103981 -5e7b80ab8f720f6a4f494db1045950ddaa2c6ee71ad530ed987bc6a39cdaf1de -6d6e819e821c289ffdd8f333286b9aee5dc948c24bd24935d42466ffcb7a37dd -d8d075bc80cd608aa283ddcc361fe96ec323d902f290c472d91388d64ccf2efe -5c029efbcf4fe890839f654551d9f7697c65b3afa5a7a131ba09ab6b8fa518f0 -84b7600134e741a7bf642ed6a89a6e643fc5e4f298a9a51c27d4c4abeb49043f -008b27aa816cc9f01be008d6658e44bf4876eabdb31551f6f037afec6aa9a18e -0d36b89511f90306d091adf9be86805eccc6ef2bf98ec664a74ab31e40e1faa4 -aba56b6e64b245cde40e603aafab777d3664f2ce98ae1a4ba3437e2d185824de -b5a98d4caf05675a4131bb34276488e70e0f97dcec92073b24ce900a23484e5a -f6fd0fd78da41892d263a5931bfaed9d9be1d1f9b49cc175ed59a688ad9808cd -c4c9596ca8b41a3457e811cb360af508c42c6ab285315f17b06a223bab6931a4 -5870616857cfb3e128c8b4ae53afb6f57f16e7b5773a0c864544e9448dede0d6 -9d7286187ea81b24f6333ac43f9c8fb60a893d49acb382afd8b0dcf12dbcfafd -525c635a2c82f19da6242ec5b29424ca53ffaf82381a0f04f676d4e07beadfbf -fc6f1ff324837605a31328b911ba3076f052883f75dcbb7bf96cf6b43af1e4a2 -2b302493f6d6404f8d127ecfe3faa4219fc5ca9e70f70928e979c3043c572be8 -9a2264cbbe28f89b955aaae5c8a7b85de2123cb230ee2e14245be7f457c81ad7 -d689a317f198f820cc9654bae52bb37e0a5080fe8b5486c00933c70ba9f8825b -f67d6188791794cd02da3e49f6313b7e7525b9a37f90c865fc07ed4f76f55f0a -a31f5a74292717ee0097b503e4ce2c9ba6aed45ba7ace14c7a8ef81506224415 -1cc2f5d608156ad32b9ba3e491a832becb7835b2d143f162574bdacc4aeb70c9 -a83843b7ebe41088482876ff20a0dedfa6d689e6ee8605c5be8f7c657fb0fd6d -b398293a6893adad17fbd10054b69e4fceb583f07e17b3ea4f643c8257905210 -ebbcc47e546398aa072d42661b4645c6dffbc22209aded7dbb5ce72fb0cee9a8 -f559bf7ebe803c9aa312020495e6bb98ad5deff86c27fb0debe0bc6e03dc0885 -b9f9fca800fe03905b5257f10231cc4a1144dacc145a1885f118c7f118b32b38 -77808529c10f5b17a3d36862fe2d3f0f663bea8d8cb74d2668a52c20afc7a9cc -2c6813e17dfe1ae0ed3ebfe82bd172a03cca6a9fe7a5036798b7f5f90b87ee27 -f8c00e98faa115345c1b1d0a22a4e7b434dd0c86cc9c5ae12762dca74c939c92 -f8588efc81d26e4325ba6165e099482a117371e0c75406984e085382102106c9 -acfdbc79d9129d2495fad67d125a8505024d70d612cf0a3532558d9cf2ff749d -4fafcbe251e02ca193a8601c95d875f906dcc440abd7468d0c0a8994ec07369a -bfa91f6ec942a60579fc23c52fa0960564348cfe0b56b49bde8e7027b8862b56 -29f5b3454f5a4c7b35df8de8a47a15a37f3a47aad8149489e18589f48efbdef8 -79778f8c2366f7e1866c3918668221e06821bffad087077787ba6a5a437fef03 -1aeb546ad045a52a9a06c83c13eac6410b23f4f562bf29c8a814766f37dd53af -a51218545f5f64d6bf3808babe703bee2ffe03afea3684d12e9de0c530beca08 -b613d5eca676bfddc6d3a7ec85fd73043800cdd2fce153584ea8572bd210e072 -c9a0f25b9ded9ec9d808eeb97bffca0abfe67492eb3b56c7db983f630839dfc0 -1f7d671554523af2810b3ec9900b12e95b502f52af60747b1494e2d9bf2ab4a7 -89e94edc102385c66387512bab50ea5495f98b4d72355ddeb70f5f1114f7eaae -c3d85482c7bcdfc059165614237131737f0518e439bccb6a13ede9267cf845be -4c16fba55df487b98ef2a7af2c6e3588cf684ddaf3adc88615dabb73dbccd0fe -ab06f1efafc4e7b3f077f02a23c7d05c3b5766cab64b72f5da62ee996af0afe3 -73e59cf9aa0346c008ebd3a503b0452ae49c6f3801bafb98a398702559ac194b -37fce3b71e2ee7eab8e32fbd65ec56c538757a596548cae6115d3e2762cdad07 -3183f6772435aff3c82573d091ee4aa933c35d0ba2f3fc8c0b9f51db198ef8cd -293bcf237e98238eeff5850172d4f42a345375c7e57b57ea98a244c61d55fb7e -3e4438c9b41ee433f6ac93d90f9e2ff4dafa0c1940954b4fb9259e9809f65578 -dea1499fea5a22148c07050469a40d40d1894e0423710995eff8b543f1d26f3d -1dd39a42db94d54898a9bdfb22f4e95bfaccfbb72d0dc4e06598fb67d62d6559 -cc8e01993ff19aabeaf412c8e0fc8fe45d50c9dd0050b139a7d392c3482cf7db -37ee242bdb05663bfd694b47efcaa86126bc477a8ff218b40668e17b1d9c9db1 -3bd80041a2bd34c789bc36b69690245b882d78509b98fdba395cf5375c19010f -c2e26dc7329cf9a3ddcf27d445d390ca8367306d17b7766277a546219b465563 -a0a77c008d9e97372c8ed2e0db751ca8ce19abf83a84efa748e461def39f8ee2 -44c43a7d28f1384b671fd75cac5fa28fee078f88d3ea92c17ad88c75f0de0643 -49ef3c204aba345d4b87e7f43392de1e46b514b4b77178e4926c6b1d6c0b60d3 -198447d592a2bc47b5dee02aa901d9b8a3bc711530455e3691500172a9135b27 -e449aa505ff90d8b2f5d5b6100adb2e9e6d9a77f4b2676ac0c158a88d3056a97 -db1844240c2a645435a4b35b1192fb884102802d790b15b15add25d53deb8a57 -2d587422a9ad68eebe6cbc7302dd43c9b6012cfa7d1aaddad41341168ef329e5 -f929c9b57b5cfc107f7d2245c983d98ce9cc8eab759f09ea3300cd38084a617b -6f76aae4001e47662f1c8814601decaddd2f86fd932e54cccd36ae960b8c5451 -a36645500f83223a4f886e5e819ec1f5c20b3d99057b8f0873c2f88bdf9b0e0b -69bf1287ecf4e17c61500bd12d1b7b223082fb89d4a9259985a82b5e0a501a37 -850dd987d093b6bbda1bcbf65a37d899a3e70468e736ce74e84124089dd36069 -74f0ee7ac48306a996b8cf06c00bd8f15cb1a38febe8f06b45eef081d475dd63 -07cb14dd5d173697a9cf78b93b65c16e18e0f81fbd3fac2f0f9e6cac4a6b87c0 -60a6fef4e8e6a661347d36b4266e98dadf246c647339e234bfabdfa8617d73bd -f43196c91d85897807d58baabaefa6f3facf8da61d587de9fc0e7577a46d6610 -5ca0f56123b30ce2cc6e2f23fa31ecc218634c42bfbbcd840f8771b894188bba -527f85ed8f74e5dc5b2ad3abf771132a14d2e62e1f2bc479ae8b1106180c51ab -21d7a34137aa8a0acecf32c5bed3aff8066c34904abbbfa88352d71d102de986 -3372ae7d34bf45633fdd4358f3badcf0b00f3a81e49183a3aa5bdaaef9ccd647 -d43320e2aa493f5f55287f92b516b35911e167a4e16efd6806096496b91262c5 -2174b723cce81a1438318d9d2e2c0dd50cf6ff37d2745c79ad28bf1dfcef1a70 -437615dc18cdf189b509577cb368b19602dcb315515852c2595b3ba98d5bb973 -825a15b0a4de19c481c5fbb164bdb0e12a0cb702ae1245ae1759ca08dbdc470a -bc7f1d9efb4e480dd04d2c17e41261c9cc20ab6a00a41737df413a18c102db14 -4ecdb090f633bb71c3179810e05b0714c2b8621d40208064b3af499077c2c9d0 -ee6705bfc2bde6ff60a5936f2b242b9f588c184b97a3e788295f33bedffe89cd -fea8cd99bafe51d8432175e342dfe8a2c533fe76c49ccd42c1b3872d9924d760 -8f1878932441515d33631b996b5f9116a51ede40393eabf7e9e4208512ea03bd -967e1033e8fa9dd0dca782b1c7565342c2d9edfbc7e6a6e2e4f73c8350b49599 -ff391902ff40466c1e04ca213bbe8077b147da9c3b975468aeb3ead4492e96be -8f6af0dd78fbbf4d8258d61ce40b94c42a2250e4df3a5f0e7feada93cf613462 -8aaa997fb0a1f6e508ba62c97b4ecd68513dcb0be409609663f881c87a04a23f -b58eedfc7530d54644ca56a1d72588511b2c101019fa4842576e567f387d0a0b -96c54526d6491603b3f85e861df91126eb25d7b7aecefc114afdd1c294447f49 -56f29357d85aa10149d8b1534bd52d404127258df79dbef01b6e05ef7e20b957 -50e4f3c5eea0c53cf0e613a3324a0511fb89715d091f61f24f0981eac0486e52 -0a9587fad67b27215e17e9774c509adafce3f41b6684964101e6f721ed1f1feb -e76101b4d399aeff534f42adf6e0ee6b22c782e0aff2941b0c2a2dfdf8fccd66 -3aa8ab54379ef174093116519e3ab6eb68c898b9ff166be6b8780d782ad5f05e -c99a3ecbc85d8898f5e804029e4226669c4b569921b163fd1b3cb07a986d6e3e -39ca2da295749c737bf0d3854bedc4696ee08d9e5ee43441708b1ae616b081cb -92595420b64abc959dfd57bf3ba7934db1fbf7c964511018a64a585bc7f45097 -bd09e683206e71e5d05fa3b09e9b56fe13ba592107b2d8daee9c96663e5b1587 -aa377957fdf7db3879812c346ff677948a98a53a8983eac09bf961af60304541 -0d2a2d9e841edd3989af39bd3a1a1743dde31b472bfd80e188c2f65687ffa11a -bbf4b1fcbe850bad7e61f82aa17d0f6f5f96104985cd430d2d3b6c844220e0d6 -4a3690cdf3b92fdc59205482ae6b8a9f7063693b8e4647517bb3d594f0dc950e -a5ba321957bc740867def7f90d45dc09d99ab4c633f4a65cf3fa3632a5c9ab29 -a7385b07bca075df39941ecc2f2a8bdb321a14de98e49d13be0a3c8af7ec63cf -e27c451413016267da7b685fb3abd2b41ad6d0cb972c6c14762c74a953be35da -f0d170bb348786ccc74c7ecb1720ae766cc5738942127df9af338ac00a8574ec -e7cba7cf2998ca21a8eb7fd80318bb64a8947cc4e3512c6ccc8c313f46ba37f8 -f677651f64e6fcff360ca85daa19732f7374b7d25519ab76ba61b484cb89ea0b -0f57768b483a04c136084bbd10d36fa4a5914f2f0bb7446766977b738be07917 -9569ac6e6d33c5fa7ef2f1d019042728adaeab1d0e2c929ebd280c065d01d2f2 -d6441fc74b41d7e3cea04ae9c38d86e36d2c6b8df0cc4027eef45f56819735b6 -b2022dbfb8b536224d3d2192bf923957ecbd6e3a7edbbf54a58224ee694bde8d -633126cf38e0d2810ac24ec8176851d7a59a193b83e52016ebd3e55a79046c2c -eb24ea8d6b7c67854b53eed744ae787fd7866f5cc54a1b704535b94a0fcb81d6 -85e32529116b325ee3693e28d6e75f6f317b728698c688f699039dea6a70a100 -2d2bcabdb6009f16178681c5d7f49e1fa6d9c33a7b6538054efaa1ba8241aa23 -91f3a1eb0df1b826ff60c61ca5584f2fbb98622ef90649c8cc8a1305d755a861 -52683efc368184d6fc3c3c5d4cc46021625f12a1a3af82ac498bb2509ec7b0fe -7c065a70c0b4897a1e2d8d341c4aed77bf88c8ff0bf576c0ee8485f8cc533e7c -00a6fe77dbc49e3726aed6d665661dc493fd2668d6bb6c1f543b0dce7ebce7b8 -c8ad6f35e315da333b13206e35b4755139731b093aa38999929f8e6c005580f0 -231c3b4e9c17f4e367b7a171fe4e490e900a21bb7e18b844ce82b435508ed381 -e4d5abe386c8a70ebfdbd8d575eff5f121009385dec649b6335d973335ff904f -a09738a878cb4ffee65279ad8ed29792c614651c45bb89a3b53d1e0a8a3becb1 -b25fd839ba086e1d050974c97fa42a327450e0f2be7438e4c5fcf782913400c1 -21f473fd74062b858745f0a8434cfa76cb89289eced88be61db5343e4678ebdb -91fd931d6299603da5c097e8f4223062ccdc52d89ae03a3d1a68e660d7f101fc -6825666962013119de9fa6aa5af265b4bac3b1063e8fd922b545fc9f5197ef86 -a9242214ff1a4b01b5e68e6a8ce8a767e1153cadf648010ee70dba79fdc6967d -42e705a83251315ec553769efa6f7c3cd88379d5847cdc1fd0878e1498492140 -8486dd8c5f353b02f967df7cffe3b44c8808ad92610009a7adde4c5411c1f396 -c2b717b66753e00320ebcb43280c6287676c2f9db2c598aa2a4d5fcf4d983a1e -1e1a3011a6d6c3e30ce2de607f5a2480c74bb2f379503e3ae4b058901ebdd8db -4c83a2b44af8e1c2f7d89f34b608ec49062e05f0fce81633d513186b46bcd311 -5ccdd2173b246b2ef877243dd06a599db76c927b6f99e539a5fa0b5829f60040 -f4de1ca4b6b78f78b5d56208823cb35b1bda9e77da247b470d3b3b5e29c5f472 -2121951b99aa5cd88f56312e5fb95ad3cbd3c43e18ad80da42d300ba840086d5 -17806d75166c779716a525f31f22336504866abab855d23265b81327a7a0c051 -e94934236eab04ee0f37f9e54c9e9ce3566b25b4cbb18a9ed57acb4564dfdaa0 -44f65273273158b97c198dbeabd454609e95f1e80268830434ca0d9e125c83ad -2ceda508d21be3b61a25e2c7415e6dfecbf192fe8754ea9fdd3db7310e2f40a2 -61b537fab243ac8b856f1c21cc53e0b67250c08abf50487542916728ba200f3b -2aee33b929931d05e2ee91dfef3e88a2e0615c8f264dd3fc1a79f71c1c5cb12b -f53551f6cabada8e9622aad5e6a6650196b5844b6169a8b1f4abed6f47e407dd -47656dcc771c48ae7a9d863ff1b3164e1bb47c5bbe8ce7e42f0609db1ddd2623 -896ddd1d56cd19fae182fb66fd9c7b57e3078a4acefea37a77c5d496d4c2bbd6 -e98e03090be36ee31d6e03ede1737d5724ba7c88369dba7654aa22abb1ada2cb -f1604069461c31a8fad7ebd44ac1a1d89e33d492a919b5238e4801998c86ffc5 -0c6cc1a56d40cce60f6495ec8653bee33ca6fb04af0bd01b1b42252db17aec95 -d155e09df2dd6fec1ccceb37ad47db867ebb5278bec97314ddab5eaa1eb5b833 -03e0189dd86f0e86fdaca9381cad3f9212885a372d3137bdd69de912aef854f3 -582a25993b3527822336f831c9873cb991a12bc05c26986398fd48255a144616 -7155bdb599a91d4ee8202efa5e7246ea6c438d7d235d382d3fad7d74b5cde5a0 -a151218629b5fe76ce8019403cf18dedbdb210310c0fa202627f2a16b61e252d -91631c7c2d644ee16774f41261b67faca3c0c202c4d96eef57d1111b07999ad1 -7ed9ae36707fbcfbfad323b48b110dd251f2c575396fca0393015172e20818da -a21155c8a32546eb6d588a54e3c08264e865e3a2bb6876632a4a4028dfb9f42b -47a20966623a67a13f32ed3eb38c43f410e06e6fb27c1a50727844dda47e6fa8 -cf0cb5ba1f471f8e004aa677968e49a1f6987905e350ac24cd3c0c2f37698538 -603d6bb979b04a3fb78da19e41831521130406741a94aaf35a561255f5c02cc0 -82f4d8550822193038028cd1a8aad66365dd347c97f43cef2c0b777c7ab3f6ea -788045447603134515c65a28d39aafcff578befb030bb18df6c1d7c176d055dd -81607c6096053a8c913e8f3b2e10c64a4557c6f27c75601dff6cb7a47c4cff70 -63076160e5afb24e88d07939fef281aa7abebb9593da52c937ff6052dded6e36 -1a74070fb2499d52905e6ee91bf82ac61846462a171bbd0ea6563397f52b8bd9 -e670bb83eb98987231d6930dbe406270f6200fd126b1fc931e9d2cb17cfd0e0d -37261b8094d868de7717b5066c8e9a5caaa68c21eb7f43ce5b92056dce98dc1d -0faed0956ca1c9ef57e6de499d575accfa857c8ba92c67d02338bae6be911e0d -a8ead476647a76db404793eccbe877a21c04f8e3dd455a4ec06d89aae473f0cb -4ae627995730c5b15c24de761914b181d7f7b4095ce096aa6ec14aef349e09f6 -537574e3fb5696b0ec7e4c442ff441dfe299096852ca82a90dc65d3f9e2f7923 -b30cafc2bf623f464f8d9f094e53271d885a6e50125c1f7cea72cccd3dcbae2c -38ac6d5bd1149a4ba73c3f2260c6404679c56fbbfdc2797e7725ed63cbc1d0fa -951587c7a42519588f0116344c13e80acec98e58194037b70be00452a915947a -b76f04f0cf4bb9b957d29896d5e9697c2b0f82634bb92de78b04d0c4a87ea8cb -417b562f9e1465703145130d29e610b7361dbd65d6614d4b6d4542ff89d6e22c -c6b1da26e30b9f3bef4919cb75a9334245a2f9527df4565c43c2cd05e4bef841 -49795f869e895528272beff1f39ebd63668064d3778ddfef6fe4a4be0b8ff414 -150dc74cfb7bbb19ff4acd5fe75658cb5748feea63c602c383f8f48535cefbc7 -808a8c07261ee15295a2e52506e849737d58d022b187d2c1863c82d11df1dd6a -eccef89ccc25b63808cafeecbe4766faafa497e976ee6bc7ecbec52c12571e45 -bf80879592195c692e58876cfc5e9eebb2177e6d5b95e18bf1f6b105928cc8d7 -5ed19827a1d4b1e3592f87c46a717200bcac48627cfd4674e41d90dc4e19744b -4c07f0a43b1ae90258a4cac371085a09089ef9a125f17a69bf338c00a1f5491f -5f7336ffb469909af6de8496e6c7461c9314e4f6cbed6ea0e0c38be220e4aafd -4965a3466fc716bdfb59d1d2f0722efc42a46f125a72318d8ec43da52aa8ebb4 -cfbb11d2c6fea7765fabded4895d838881f1c5929d07a73f8a2851826de7a227 -7d485cd6cb4133da20b62df6b19e810cd52859796542c279e091be2442fe3b60 -7d05cc5e2cf4d37f82ae6ef720faa0ea22ddee0ac3a5e7bd9b7226998eb5d8d8 -471f60e887866d73417a0902c4fc38bbdab3170a0e6973626d4fea8aef166708 -481659ff17da79b56f3a7da7357a9b4d5982e189649cae8cf166a818cce1d03b -1cfca035562a73225cf981e918fabf08b0d423741a5526ff804a77482a9d94ef -891d7993ab84fdb850462e6fe90e0f504557a5c5b840b855404432ce18f8a4c3 -ddb2ced91676e648dcd7773b576360c3c88386bb2cd3de88185d7425771ea4dd -257a6a54e9f7c377658e0adc70f0caecba96d1fd1e376e91554d0edb392e4f60 -913a7392601efb15cadad9bbf5b6c53cbeb5fb73825ac9e0b30cab99d658e09c -d21d4f7b76115f79e612f1cdaa2f7abcf565334d3a013ecd76d09774d0130174 -d21f0f27ae72b695a11458d20f0393635af8a5e92d6b42c32984b4282ac9b9f2 -0427943bffa0501ff24b66b7aa584e9fcdeb7afdd830c01504058755c530650e -7404d8f4f19034f642c3d9c50b4ebd52e579d09d24300d7834d4398b955f914b -2ae913b3900166b07096026cdf61347c37261029bffd3c02b646fba3285761e3 -8475426979a524dd7a9dfd4fe64303572b9daace4573384f5e9230561ea481d2 -d79528189a40780c3b99df297cdd8d2a68f088a1dd864636a0e82a0906a876e1 -a3b970d8838604ea0a3d536664357430ecac2708b44ed30d05a0d453d21de014 -cc5866d3c36b9f6bb2649879f3cefd467d038a9e4d006118069b7126b2030539 -5ce0ab36d08b39ea2879de1d5d34b39f67fec99a91c1163e8317e0510f553686 -b62402519dd2c8e289cdd01a97286c0f827d94b2b586ccec630a223b0134b47d -a16716a4c6023271ce49faa415ee79ed6448f1d944cb9bce3f336cf286aa4698 -5fef2da869535e77b75411ffa3950dc8ad6ce1970305a6900761ac52cff47d03 -1b3b8cfabf2aba556607ab906eb7d61e54627bef4462c7f114d8cd0fc6d09b61 -9119ea9e986c01fecce81c64dd74f58883721dd7600cc467296da6639bc6f9cc -53f82ac7ff876d67324264e7576d99a6bb83612b92398dace911cb1e0d280984 -b99a5a5bdc07847e400172ce09592a1a9c2d84f4dc87042036b8e3464ffb5f1f -46acb004e29328e1ba85a33e51ec73d7dfc4f2e1a7ca921e21e2e934220584f8 -ac9e32e41ba662957c311baf98d51d6d120217340982ecbadbbd5a9d7c3f527a -38b1677d0322b6f4cc28b583288558f7413ca78d1acf9ddb5dd8d2530c62ccf7 -71f7359565ade21c8dea4fd08ec24cdf4ca7ed3e16e7b4df0b4abd161d077068 -12935409196a7c0798bbb101e7588abb618a4e4739c13e154234340e36d8f2e4 -26eba891942302729d8c55d38567434c4ef57072f4c859653679b94c8378bedc -49a345f557495b60dcc46eced3d7c1b0b9883edf8bc79a8599efec98e763ffe3 -6274a25d433778f425eb942dc8037b9b985af3205f0504ddc28997604bc72082 -18456cce9f8e426a5dac090d91473365a2901d509d335ea5bf1c5b564565a8ce -f027607052ef823638b900ce497890dc351866d55e39a6d26e3b505b7e5a3f9f -a3e28bca583cca9402647093a9ad751e2390681e99dac2d3d0f36384b35325bf -4ad65ef847102fa2b47598d64ccccf4fb2656d16e0218e4a5c2ff69582d09639 -cf8d83c13470d525be935f69b129ecbca6b56b10aa220e18515be5760971c5a3 -55d19d7d9cc38292ac5c58a507e5a35b0a3bd5d1f221a6c461fcb4b9cedb4103 -e1068bb154b57757559a2ae96030baad73841a232f529cf9b93470d9a5f18f81 -22e4c8e8bfb3e027207785a352e3a6058c6d762e07124bb00411b6ff05adedc1 -440411ba70b4a164173603b235c71ac6a50c566e2e736cb9474d9e94db81a0e2 -69413bf0763027458a70f03a4d4f24ca376235c78397dd343cdd7f98410502bb -52a84ede7d641d5eb2f5fd8f3f1bf743eabd7d262a8bb11ff1875a60555b2994 -8f6dd4932f6852133f4d3801d8bcd703831e166be167eeb613e77b023afb1690 -22eeec004022dbdea0c14697d2ba61dc4f7d3700b31eee4ff21c4c57076e616b -214c03574df173d3d848294c1e061bf1b1302fac02e37f6c9ba0545a3c678e4c -1fac86e0803af2dc80276e71d9637c9d40f53e5736db0c9a3398d7dbda6dc21f -515165ceafcf48d3a0a09578049d380314172af191a6a433405d57333213e64f -361bcccb4c1d5bbc36ba1a628df39af69af05855558fc6d4c1b2f6999df8bdbe -c696d75e283cc6f574cca2c87a5d3e1fb3747193d51bead3902f8a9d21c59204 -7d0d55913db817513c7311fcc743722e0f03e7408c843b698199aa6c3866cdc9 -337eeb45f23fcb017e1c0828130c45a29fae87c258e2739486a9593a7030a054 -95967598e6b299a25d534c2cc5d501ce6163e4a41b9d6eeb5452f4410968848f -9ed131b33cbd3f610a69cb2a1d373a5eab0507e10dd233753503c7460596c067 -0fe5dcaf8d6e2354c380a489d4be4db2cb2a0a5e614acc741db537c41ba06789 -892edac1f1f1695d891ca76a32c4785e229517d11bd05bec4dc3f996f03611b1 -2d2d96684bc4a35ccb9f1cda038420acdf2955753865d7bff68c984fcb3f1f95 -63c211a628129bef2e41c1e63744b0568d005d7d2a62f38dca05ba9459e79cf2 -e9bc91ba50265eb16d2d5965f9425c1c2d5352eb3175082f33507b936b2f0c2f -942643b9437e770af26974669ffb292890e22e936d1ddbbd5d45652e2bde41bc -ca252664a134bc244378f958339cd9bf8b152cf4852437cf4090b4446106b1ae -5c7a828cacbf144dda3d4626b0e9c1e05d8ab9612214f72a263625c7e5ec6f27 -004fe97e740ca9a52da0fba7befdfeffff54cfc4b320dd9ede3174daaeaf2f39 -3f16d144400b3970312e34dc09f4bfa5fe458bb6d27a58f3b0a24d467c24f42e -f7003e0e3637e2dc0fba526d432bd145d653e8df80e89b7b46b626381a5bae7c -aafc87d97963fd383e84d48f6227f9e512649e4f727dbe5e68f98651126e7114 -d6acdd1882dee5ad14a0fc39f166704682ced74bee4277bb07232b009db2a0f0 -5751e74ce72efd52e2756ec32425a7c6df2ca1647432cd1b7b10f265659c5fa6 -9b82a7d55ea1a64bc00621cb41a1fba823e42a5faae90924482dd648f1765f95 -29aa33c24221767a879ef2c4425643da85f208d2088ce1410b53c62717705e27 -c6c44842e260ab3b4fd85bf297e1fae51ea71acf47279f11c3557a0763dc2c55 -939b49e97663b71b9b89ba8028840fc878f899e5b8d74f05bf4dd5de996ddf15 -1658f798ce0ca2391fa34b448549b218c0d4291e12aef2bfd1d3029b140f8e6a -8135be50fde4443c57d7a7df12c2003b44d7ad998bb5bea2477ca30ae3fb8914 -b9badf55bc588d0d1e86c7945f8e9275a71831b291d4b7294fe3bc74eff32b6c -7a8fca04c89ebe9cc98a55362dde3911a0a2f2195af608a6174a9ef38513a4cf -8cfb3bb81069cf1b31cdb481bbec9b167569ae6ed035ef3c87d49b879ede1923 -a2135801917bf934e16fd3c82603d7b9dd900fa66113e53bdff92ad1bfd4a8fd -ca7cd980e3cf6f3e5a5bda9dc5820aaac5ed80dc8765941453e6ce9404db9ad0 -76d9e588a5163bd338ab8e518571c15cc1ab28a1f3d4d7f25ee32785cdb1321f -c2c4739fb869b6dfca5528e55e2057bb17e1c43f172bf7ee629084eda067ed3d -1385baa978f9c2608e4911f90b4bddbdd228f5987a1e49391fdccf9be93cf092 -f1e6c6b0acbc71a831383ff2707c9009aa05d03563a0a228e806ece60ca3a1f9 -2ba3918191254ac421598e707fdcacc9c3f7fb0c752332e30a015c612e8e90ee -db9c08b8fd401c40599917e4ba053a58bc61a4e1352dabd2475ba4869fe84fe5 -a02b690d866a6c26329631768b2ca058fe2f6bbe0874aeb61154bd27252f5255 -64f0825c0014f10c7ec976716f7b23c3e86667cf431352f7dcc58e271842acb0 -da26ec49987c0442a484c3c3c300a69e37d7b3f21e4e50bfa456a312cd877bdf -409806a6f19a3a742a869a1515a1fe2e5c3aeb1db0bec37a824e3b9a4ebb5115 -3c24d79b893556df8c8d0ebf2688a521fbccbb3a7c7930d8587cf3ce8cdfd119 -0a0d1c0261c5aa3040b361138cc7d9baa8d82bb06fdb396557f00387680b18a9 -cf7ebaeacc7a7a0c1052c5f4103ef4e1c4f69ab697b1ac81c4b13e2a107fd1af -97cc941b34344b47eeaffb9693f8181aea6b67e4e5ac71450e49e11a603dd499 -2bd525cce1570e0871903b338d6335b46a31ef20afb6ef502949fc38d68aa8e6 -23b1ac6a18b104d2bef4414b887dc988b281f09d285b4a9df76b122528cd29eb -1fa6a4edbe53c73453abf32c7a50be1157c0b4480c044945916cfbdacb8c0da1 -7e2bcc909f6cc16bb749a1ebd595c377686d1a6e42ee7d5b27f3cf963c69b005 -357f558907b24a9106c8f21eada1e38b286746f04fa18f15291fd3b617c550de -ecd68736f341be85098fae47444e3f20b3cb1b5f168c44b1eee1b10184b3c7aa -ca4480b1c62caf44da2e75b9fa1469c85509eca42e494bf7cff1e83058debf28 -9d2df8273def70fa14f360270dc329ea8969d12091abadbbbbe9e083b7f447c2 -2217cea4a32b9681a5cc6f995f9588e7caf5b7a77876f29d8b9190d9ee9e5eaf -e4dc55a8786d9a351f91c97dc772a007f4519a5230bebbbac9793feec1dcd65f -f1355a2805fe499dd1fb0ab6dc77898f1e4fa0ade063fbda15e7f456c4d96fdf -adf6d4cd1d0d506b5da663c19c793d76d53b14f7f6308feea0ff5a2d02aaf0ac -e47e36157080ef5412f956327a789ab3e05276a16f1433f1b9154251857366b3 -c357c352eedf6f65a6f5a781f2341053341dda8d0456bad5d0663e1162425b95 -6f9b7eace1dd2a98b625043fadc847d051d1d695d8bee1afa9192da3a21af8e2 -822cdf6d4952bc6df010a1e6c4ed232d33276e26a382e65daec9fc7bbea69608 -706b7f5f39d14a69570f4dbcd481700b48c5d4e05737e511b897c96c5c7cb598 -5696ee6320546f235dead3ac692bd38715d38c0c881001e89ee5b9d83aa5da58 -532b905a17bca3b8e867d2da162e7b230df7bf3ab7854bfcd07ab5a4e4a2ec23 -866bf4c6ad0f4c9c75c1d82347cc66da1831bb9c2205cf1563e4c2efef922eae -bfa1808e2381f8dfdb6a634d189d5aa4559b829428a6a92c63b1afdf93e72e6a -34721ed8d0d6123066fcb96dac4c123ae9444a8e826dd9ce9ce381cdc4dac32f -13508b60df68c5229d1495e125044e4b060c2e208f1e433369065369ba1caace -eb2c4a0f8e9493c0c65e7695938146dc32457165cc87311f111aad7cdf97d9cc -2133c6d2c1fe773cadc95a789dc293c387ac6fa594cd43144520be4297a32d33 -720ef94704cba5e0d20b628ffc5489c1c3f5beba061f5d5308fa82fb6bcda1ee -4cf4387a9dfaf1c21ff66fa4939e9f449ddecc0a264406ea45efaed33f76f6ec -e50c367d8ee0fa4a05f8a6d41679b548f0cdf598cf7def0c5e3d9c32ff875d2b -895b23185cfad73a052fa4280996cf5b346c2120334f90dfb3c5a833e5233cc9 -9dc77ff7160b9c1f022290fefa9ef7ecc00c441f591ea1927a0ec1a9575f3099 -4eaef8bc471e8b6f663bb0ceaa7f16c721989a9ff1405c852b04a7291e0a90bd -4c851c5b18276b3e6e324a5f35be0000c7cd1523b6ad59f2a7d5688e2b1f1569 -71f7390ab8ee5f2d8bf456ff5cfd1e17c35469dbfd0426c200c6bae6e4e18159 -fcee66dc423c903c9b9e328e1edf53dfc269fc0e383b75d4a07d530d304979b0 -68be546ff0ec64608dea92b1955e00dcc945a3ac63704df6f48a84afcdd4bb8b -fc9b2c335a566c1e19f7f687c4723232385e344e8b1b73f62d9b0c0cec0d1605 -d5c4d00a9526ac633b8be773f1cf3b80ce855ef826243addc90d8d7bd4a5face -99b61a182e1f34b67f7934aa702f2c93e4a09b71e4625db7a1980cb42d97fc7a -904c658a6ecf863c253ca1e2ac04e38210bab9dbbee0be7f4ba0de4adb5d55c1 -defa92c814fd117bd987c9fe90e85f6133afc41e49983118925490b1c6b65d59 -3167aa093dec0b39bb05e62c34ccc08b8077a2ec8fb9b4bcaec950c5c7998652 -913f6279871f1ff3a2ce1159328a2f918febad3b25e1a9034c7eb54872bbc6d4 -b1439c799a23aaab7f90abaa2a0aa11cedfd5aa583883c29d6b25860210360a6 -3e90e79a13dc92b664cfa9c35819f34a2beecb77e0f24bdf336fb0cee093d34d -9f0f9886dfaf3ca545bde0f820565e2ccb8570794d3b0ecda2f702fea58ed09e -f86cbcf82ee89d4dbee6f9e824c049629b4dcb4b23a57819eb3913753f628eea -786964e48633604c3665822005ca4e9a7a12769e194f58ca7d7da5f954b8146f -8f9a487c3403801a4ad20b5d3fe388ff7b30769be9e43936720ffc98b912d465 -9e8726618cb19a836a81edb2dcb9d1d405ff47bedcc044446644bba2f8cb62f2 -294462e2a4802289a412a72a4ebeb97031d4ba19956916318f8534e798eee975 -3850eedb198a5690d86896eed105364d7e8713dc1cd855cc2562bbc3ff8be663 -dc17c062eb85da6d56fc1d25ad29288df928820958add7b183fdc70da907d41c -686aef26da51e772004ca12147682ddf8f11b4ab508dbb51e13f42990efc5a79 -71551efaf601806e7feda29094d1f4550148b14fedc032ac207bcb8e28862c3c -3a0cf4483580c378f5772eb22cffe2a20b0779e7b948ec3ff3253eb83d221813 -1d4573ea688374be205137ab99db43c6ae686af2bda7cee067373375e8d3a86a -34da137c2eaa157ef698b8236769ee6bcfb44c1f621be3d8899e5a4530fd103b -9e99e4a212e0e7a42527c773a011a922926dd75dd06bbcd3e95c04395ba0e228 -6fc9c9b2d34bea57f85a3f6d09ea928f8347f5946c40266eeb27d2c341e617e4 -19d34cfaaaeb1c5b84e2bef68122625cf8ed23cb9d02b9307b9c220edfbe5d75 -2414177769d0ec55bd6a35123002ef6e7d9f1f54ef9fbe65ccebf9b0181f7a2f -d2bfec7c070a5f869f2cc952ee911503b0fa8945dce8bf9e7df4101462fa0ffa -6ada3241f0fa97c65f5c1077ac5e76f433ecfca896552725d05cde6d573708f4 -1a7bc46e4f72f9179b4ec20ea56d34d3f8d03a1d8a2b4fd51c642c2980639910 -fe39c8ea179d29f0071197c3e0caf45d6a46d2d29a80539da69e2fd70a1cc7f2 -f46dbd99a503179c17da9a352d38f54dbd16c38db19be77c7d80806f3134d1b1 -c63a1a9143bf0438955e5e2d1a3481208fe582c16518af007bfd8ca2f74743fb -a441a5e1cede2337884d7a17c9b384ba2b1530828e28276a956997275fc18684 -21b8728a434d9e2ad305f562dde525a7ecde23a84b14cace97e79c33f1b49093 -1d1e7cb04a68b41b2f22e247e39c2f4f925d5417ce6b1914788cb1dde97a1edd -8744464081051b0c5bb61497111e9e4d1ab13186a2399bf3ceb66a1e52d640ac -22ed5a90a969bc1a56ef44be3c481dd8f06d9a143aeae5f221c314c79d468d37 -25bbf880256da501fb8314e830e4fa56638745cec6e41ccf28de2075da3222b3 -67d0d941d70f6a4202204dc8da38c65e23c09ca67ac7c2a2e361b18c2fb6f9dd -83d071e58b9b93270f977bca2b4c2c51341a362c4cf94503fddf30d0f9f91429 -de76a58df6e3e3cb2b7607a130a32bc3dc19f0e6ac0df3e327fd9db65133c053 -71da987bb5d91c7ab6724468791f3f70dcdf25d1c8e17adae1733ad0fd48693a -036168c6069d2d0234de65bface177d0270e92e1c423465767080374b282b218 -ecc7c21e0bd7147af43616343b36c7449cd2a097baae5c0b84e20b93a434b026 -8ef6292583a1aee2e2acae72a64b70803a4779bf061cfee4ea0c2d76952edcd5 -84ed218515c0758e014fc3aae387f0ece38979c6987d24da93d2fc80346ad0cd -5c0c96865648a74d940b94462f980bc4653971463e0f79f9e53babbcb0a71af8 -f71c91dba14269ef4d4f7828cecaa7df1007129b9d136a66321f1659ac9cd2f1 -54a5a78fe9ceab12b3ef923c0a4437d71950c9a3cfb8e44f2aee896449170791 -52484b8a3d110e69d651b3ce22bfc51d845a2ef0761ccd624132371ed0a3bb4e -9669cd27853cb57122f9ef19933c78f66dc55f3d518df51f74b650e550738b33 -ac33f72b975dbfaa031077baed9602667840ca13e238cde527a8195588da428c -7e18fc2c83851bfd50a706e298f87bef6637384bf7d304919d39352ab6930e07 -9169f4c844f33b1132971f5d13276e7711dca2158c1bbe55490e5e8f98ea14d0 -52881839317717cbfd47596a71d8d4316d35984739089d95fce0a628eddfa0a3 -37685fd04a487dd5f30d7d27b7b68d01417cc30b0e3a1de3585479feede00ab2 -1eda971da147b66e591813c5076878e44ee1fdd2aea1e61d274cdcfa699d09fc -dcf49b13679660842f6043b923f07426d1e8a70656db730d8cdc1ec2dce4d9f9 -64f851feb1f773ea034eec4c20b6af13f71e7eda1c7f9b9da2c0a1fb52d645af -b7b81e65ed919799c38a009950b5e5c92f0818f1eff32701fe5f24207d46a4b4 -b01ef12d0dd6279480b24150328f0460a915981373333ce76015232299454399 -9e38a0db2f499985be3e466ccb59a978a954e271a81057624b24cb4d89e0c804 -9e79c147c56e86a5716f001b3583683eaad287ef2caec437d64de1e006d3d804 -35cd94c8c89e0dd9fbd257cb17b574c0451fb22761734b5e8d941fc037d94517 -8f2a7f2fb4f098147aa1da321cefdaca9d861d5cd383ca1d5794e67916c42e59 -1faad7a45629c48ffa027abf1fc1737b1619d596eb3f415066a2a46ca8833d69 -1461c2d857abd536a64a523c6b9ab331bb019cb3d3391dafdbe4dd8b45d15490 -3638ea44a174f194e6565ac41ea91f6eee60dba8fa8e252a118d52e9debb541b -ac888f5ddd79719613a5293f46f90db7b22d3fecaa4dc3e31b6a5079153c14e4 -526d1c1b1acab303ada0513bf4f739dfff1e8abd772a75208643317353c32ef7 -60ba32e999ecaf1419f395f29ba7afa03c60ca2673aae47bdabaeeca2b758dc9 -e1e4c9ef902025f7d49559c53d7880111ca386a2503e242399f1890f5db9ff32 -ddf70291beb1135734ad64fb16687fe7a7ab0101e85189d9ec112e8faf2e9670 -42779a2433bcbacb86a3db5eb33c88eb17d7282022b2ad07fb4138188fd01cfe -6ee1112dfbdbf3af7317138fd00c22b3adc2ee91b109eeb0a1258b6d2521cc67 -acd872d7838ee120ff8fe7ab5127f2da7fc38b5619b622bdc71a1526a571860a -028be5ecc750a56de6f5b6b2244fc9aa5f8ee7b6dd76d2c44f96ecbf01f82296 -fc43b5dacb0837ca4dd3f7a207687af9198830aaad5cc95259a748912f148665 -cfb52ba801b0874fbb17b0f672949a39a95d01feb64c0b45c06964eee1948dc7 -d2de83c5abf4794404e7ba0b7d55f2fbefe36c683d4cf0160f7c65c10c55de9c -a5f7c67432fead218e890e89baf53e470fbd5f07df90d38f1095acac15360090 -55017bc00f69637e73500d53be9992946c3ee7b0f98733b15bcdd247c9e9a91c -3aae65f8cac14a471b7b86c69fc38a5b9bbbe19eed02de855b3b12ba040f0785 -ec9ea47cb4834d3ed072fde62e941fd067cf9dc83bde4673de59ff2239b7e834 -4012f6629d5af87c944ac39e65b0619b91beb0cec74f261bc14254e4a0b7d97b -dd501eb3cbb472fa337a1be19d3b179fef2b36faa828039bfd0df5602e51efbe -37b67c4db9a69e6ec7095c1c5ed8ea66d9fc29386b43ad4295014e50deed3092 -4d58026b0be817c38e352507fa63e62a3c9b49ddfd99d8d9f74079a9582ed180 -611be43f784fd320cec0f5e4cffc1f36e2eb46d2fd6b416ad59905dcd91c7a8b -0b2c39c5eab9c673e191de0ffcc95c48b37a7591ce7a868183992900d507ac40 -5fb6e9ff1ad0628c3a4977559dfe98cec8d2579fc0211eaca207315338b75fed -e371d4c226637266f39056472e6a439dd30aa00e51484a88be167a8f50ad1d1e -96f6f6954a346ac69a41a8e89e75c0449c2c0e262f56f521d0433b03fb1de267 -cbe3a5923cb22950cfac11099157a0c53a1023250cd1610b02fdf0239d1e4784 -f47de59987d6c893358f46fadea94fb5ecd751c15b84fac3dca22d2f7200b503 -695900d9c70891bab3b50ef295520687521d31e084dd12e2504cfaff5fb63c64 -f4804f3db3cca4294b3404dd42378ab3480ed9df63e9d470427af2c176e462d2 -7e21a6305ef880b9eb97da2c6e03384289d4aac8c88219450c8315e4b64ccb7a -859358ba612e19baf9f51eacaef6b5820662d278668175e6cd70d3ed44aac8df -ae875a8ee5ae6706147135f4de6bb36eac9cdf32842614f3ba707148644b0e37 -ab3b12c7ee88ac4fa05a5f600d485474696e00f4a990da42b504f393badbcd73 -4be3f3b39c0c4f7bb713995a70d7475e374bebc718ecec01088523bb02d62120 -41c2122bb4c059ca40e5dad1aeca84f77068ada0e0c8e13ddf09263fdea45ddc -b5fe620639e25d737051d8bec4de390b441ed9e95df59a31f5ff3156dcd42ab3 -b0d7a9a6a354496321904c60666d9a9a284686abe95ea47d4395ac110b7f43a6 -d400be6345a1389156875a426251aefaff3657e8c26a920aaacafd1cd343d390 -699e8118f8381efe315246449374dbfd551ac967add3681419b8bf02ce1883d0 -4d8e19a6604a6a58451c5ae258a344a5c698c20a18a1324f7d145c5c48ebe457 -f4e4cc1eaa1d51684344785c581c9ac4e1f4bac603f02cfbc8119005ea0d7979 -4a0e99baa717b19a1854eaea9259fd7c1b48657b9e38f64e6cd9ea6115e37c62 -080b5de7c2b5292f31888ed33fdbf3cf85499e4bb019b9691040bfb0dd4f663f -87e8f0ae6ade87928e05dfbefd9e49c047eeae4eee4b824ef854bc0d21754161 -d28282a976152160adcee2d89f43964d0ed1b370f60274a1098d2ee179c57452 -e6f3d687f384f50c4e784ac30cebb363510522a22c0eea340525200432ff191a -2927e0b70e67cbbe3d87fad2435eac9b7b9a7ea1b3458e99493edf7a6a021a2c -e7dae0975b739fd279aff8fd0cb5aac26fcba49fd2c353c2bedf09e2fac1f41f -609082142d76309e5eef468022a431c59f6f407850e730f075de1ff3ae0993b4 -0e2ee19a4df47fa0c380e2080d4e9ff90c498570f802325fda69b1c484954d13 -ee0fff53fa365525447a2243f32533b0375b53cab9caf8f851dbfa5145ac0679 -1dbfe1481cb43a356b892989c4a3e9c9dcf76dc6247279e7d5f30c068fa5e96c -a832db7a5c7f500bc2303bbc50976cfa7771be57a3d3137f6ef54c2123136618 -c8f531188f84641bf06f7751ce35fbc5a5f0124d50f86f57c188b1ac7666cb4e -ae86a50c0319948b149b2eb3e4c117b2b91a2e0ac2fac82633e2f8cb3937043d -aa77c3091e8a47775b0ac55b646e4f72a97382423850bc91aa1b375999c64571 -166673bdb5ebec623088c513be1444b0098c8eef500e5356919a746d701f3e80 -f603373f3708be7031215554414f8e6c915f6d67cd6ea821c82ab09b5e87aa28 -ba1611180892c337ecc2f91165afabf70e6ccb3d1ca4a92b4d40a8271087cee4 -e36c178cf40c6cff985417799370f0751796fcd9b66ab47f33d26395e35a61c9 -e1fa9886e71c996bbf461984718c2a5b848b6b49c4b6a257279c6a5cc79c8f12 -848508bd7f3d983b4635bdc8347bc4fe338207f44dbcb86d88617d8fb1b2653d -0db18f7edc3db6e006648bd836613fc4df456bfed8f341f3e94d407c2b0e64f1 -6c275470744a56d56119782d380b01d768e97fed4942ad1df7887467b51f259d -9f9abacec8648028d13bf31d1922f4be81d75c6daa869f351111661081aa547c -84b40d315baccc019fac8e394ab54c23ebb2c1f2dc2db93dd8ef19592b1623df -3777496a3677c81c9a2333551f1cf1bb3f2f9537aa7deba7160f26770e32fa87 -f5e2719d8071ed7e70692971f1ab61eb41a81fa1d7060a8b99b657dcd0c16c69 -fb7490d97d3c3ec7b80906933e19c056f750eeff9ee4ea9a517af623aa0fde30 -cd84463ebacf3cecb96769ef53aec7e990d729b09eeccb16863b132cb4edc7a1 -3bf982e5502a041d5f6d110146353627b14b3f3bdee6d64ca1631fb32fd8f75e -2c2675c760a7163c30fe9d8352fa603b36925221d8dc1de4cb34dc251691d5e7 -0f5f3f26b5a0ef4abbd897466c8a73188a6a1dce07dc7d985a51395b411086c4 -94f9e515f7b92387bd1239399b3d22dbfdb6470961ae5eb7297838970aeb0bd8 -eb50334d741b694c895a474f4a02c3d34ad188bb35cb9b5d9966ec36dd906669 -ea83488b314c83a76c63b4aa89239de3d257c5e0162c335d08e9c3ec82116557 -4071d3f5ad23e60bb893586390d83593cb7c32ea37ea85cf52029d8cc843fa96 -f3f552427edb5edcd20d85dddc9e9e60774fb267acb46cae0dc22e1413ed1a9b -2dd19d9a663dc8f49456eb9695fb5fe338eebc948977d28ecee486b8970a8cdb -5d07dab163d17216342e3efd02e68db4d2e6b40034e921d868f0fdacfa27c4c5 -2e14c20b047f688aa96da5e17de3912480b5d0f829ad71309e72016f16239c98 -4632f9c8d256ec67b9e59d3a0dcb5a90adee89bd3d5998a8fc0e697b9096bacb -1938cea1c30c8eb8f92adf9abd344ddbc191d1ab87c200ddced2982d41629e94 -a15f8c084c86b0d16b7c2dfc7365e9def82f34b8fc9200d053d74e956aa0882c -70a4811f8a305da56506b1dd87cb7c5c930c0e930039e4e2e769a00357fa512c -cb396fcfaa7d5f4b51fb4c7e90942d0a3b697a3f7b2e350bc5e8b5bf83c663a3 -4d020e9f9b792218c159f3269588a67c82ee511da3576466df579b99576d5571 -332ad8f4c7b82a1db2e993060a3c2e993c0754bc4fc3c5790e12b0606cf143c4 -dd9676332210eb37640616283e9954917efcb63e354f88b70aeb1bb27f4394a6 -38608ff9b5a35d0915599a3ff25c876420fdd2187b0ec21763919af15d9dde35 -2ba08179063c273f5df5c6f1d9b771e974098a3b72c87714de3e858d4cdefdf0 -93415e097c603237729d6c0f0d6f8d0dd83905572e64b1d76145f7ab970bfabd -5e9adbccd21a7a8e42e54f02d3f9cdabe9c44cc49c4ecd81c9c87f10d44e689a -97acc7d2f4b8fff013e6cd124211d5dc04e9b150cc5100977c1a4aeb153d5670 -0fc536d3a57ef3f28d675dcfb81f6e1f64b4b4f5f55401ae7feec1f08ecba350 -83a44088ed2bc42796d67efd3ec8465241574878338e2d908f4defd5634b1246 -379b443f006134e93b2139edc0cb5a9d7621617212d7461d37e1a42e6f9ebe57 -3e0ef1e3b2a556ace936c6c69e1fb533b5bb5f453ca112372284d443b0116c35 -d9fd7bba8769e40475f646275490019c7344d304edf5a32776b52427ca82d596 -0d561bfda6ce9725318442dd0b69fa0fcd737b25579fc17c527c32bd63c12147 -bb2c1e124084a0a4934544c53b54a1f87552077d3929facd95c45b1f3373b14b -689a18dd146a34dde710cedf03843bb29e0405323a8129ff3a978d6b11e19ba8 -0d011772454e1771fa30c1ac4d0d614b59db84e259c10a0aabf890da2418e9ac -5a18265b389976e103a65d0893f84a7128bec31a2b7ac17f190083e5e2fcbf78 -981fabce3afc7925f477d7b3a061173dd23241c08cc9f1e6589cdfc5ad2f48b1 -068d25231b20461492d7247a403a53f5d130fd85913e7b9a08b2c0747fed51e9 -ad5c39388fff3e0e9b0ba6a8428ef684dc96678a36608119daba75bd256e8a6c -e88e7ea83c2b0257d4db4c66a4504a3440e96d7309fc9ca3f24c226b857bc7a7 -a94188df30865b9d69b3e08d0a08b9fa886780d76a73ddc8ef3c8aada5018f13 -7c45715ecb779599b7c94f2f0aac06a33d7424e1174637b6e59741741aaad084 -7cf2832a41ca590e3a60dfa17f73165b3e01cddf404afb50fcbfce4663f4ab6e -f44164317d3eb0595801bac6dd0a8364c28795f00b876fad837c7a49e48dc8a8 -b1ea98a2f18e659cda8f5d9cf21bcef007319134e205b9e7d9be72775ba1bd2d -71434ad560a66d6125c16300a01685aee2c0aa3d4f8f1808a63d348e5f02b42d -025b58441b3709517e7bcdfcdaf8af30f29675833aeb9068994597ca128d5678 -f1bff5c2c9e823b2d45e6922f59cc01668b56cddd5f1c93dd18a151eca0e804a -e88021c738ab04f14a24c2fc37ebafead48c2941440045069bcd1454a57e3c78 -df3d39d5e5f3eebc15ca917b825fd43034e46747e94569e731190d59f8e61d13 -78fcae15e55fb27d8eef3cf5170ae787551b1ee3ee253b80acf45ec3b7dfa02e -4a1e3eb9dbd4be99faad507e7f3a9278c3e1bfb8bce827651a2bcda12fc342c8 -7f9cf3704b192594e29edc342314f91caf872a64c4b988cd589f18e907323eb9 -3c213b948f4a3cbde305ba3dbf6d18ac017a86f3379f0c70f717ed5cb78a8b4b -0f882ad5c553b6e5095cc388783a0e2f06d93fd55c6ee44bca0ba03d6a1b024d -050dc87f3603cbabe887695f5e6728ff102f69b6022637161a0bf2676a687379 -bbe0694e92ccd3fe31d45029fcf3bc2dcea8c38760430999d50dc0d2e346dc83 -ed1023d3632ff142280907cbe4691dc89371a6f18abba3fc6059c6c2751a13c9 -c0385a361c2ced35a06ab97320237ea8dc9d6f64fc5ec869e6c7bd93b13bea09 -2711c2e9a53a9c55ef8b80f7e407393048db97759f9726a6481845633ca6daef -1892254a7f2a4b8790b729e203aaf0a8268698dd9cb57fa1ae43972fe1c51473 -b071cadb77d59a99f0e4d6bb2f60ba353a5f37ba59a57f12e7b1325246351252 -4bf19bd703ba5dc17ed7964c7ea46a3510dee628e375045d0a5fd78ee8db785d -f45f5c2b29e15945d35213073a89c73b85ab5a4baa26a3733efd71f03202a08c -801d62f0adbef4c7428b9306d8faad9e124eaadd5abfdb0de9d504d7bd360ac7 -746c416911686fa5f759c6798f169c55817d54ef77e4e691a1670225ed1d1b30 -2d0cadea00b00267ac98159effa92238ccdc11e8988c58cb174a7c378fb4f951 -e369e64c279e0e52190e2293be5a24e860e0f5807427eb0e2e4ca757305b7903 -c3e18aaa582fbd61c83761fe7581ba385b8da6e75e29b8eb3b4f60a146953a52 -82261e0cb84d4173f1914003e1c956c34ee6865fe92a588b7ba5414570644714 -bb3609074e17e75b9a7a3a0ceebfd75b137025f1bec04e0875894400e75c2be0 -caeabeac218267bcb7dc90e29fcb13450b17c425025e966c1dbf72742dfef330 -452acf51749241a5cef61b90bb92d44ffdc28bd87c362018d1a34e0e6e6395bd -3b297694b2d6c6954798af7570a4724b87430cc23c689a37aad6cda49b618e41 -328e0fa01b251784566f805fec8cdd125c233d17927972ab6a4238e39292432d -ab6ac1098bce32dae21b589e15bb82961740f9371f7de415848c1433f7b1cd9d -38a8503c82dd151338459bfef69f7fd3311649d81022e466c1acdb1e2bea187e -e4d2844876dc5057044b7849b52801ef9bb15d2db56b617e3bbc71a7b7efdf5e -a479308d0444872fba5883098c7b910c67fa9fdca632ca95186f4a282c4557c2 -a78accb9c7cc539b6791c623455d724fb72d53ec1f34057e9852141424093784 -c14a2226d7ddb0949130e8c95d9b91c32c908e6ea386a2563c3afc3a73c3cfda -2083d941e80537e780f8a42f2cec22b9ffbce31b28e834be6330778277e0f959 -972143d934d5f653484ed0a640572e19b1cac1d1c55a891db99651039e528127 -7649224f5ab959fb4376c80b24527cc5c314e8ab9511046d30432546a2494940 -17eb48dbcd9a3beacd1362c68454e00f2530f98319f23765dc9c898c46c953d1 -e16eaf13538d4dc9175e1bb9c9520bf14d6406f3e5518cc781febc998e35f5a5 -ca7fe77aa7dae4088043b9901549ed38d9f6ebc3af35a41c63093f637aa7c4b4 -a0fdf27d3cce78ba17cfdb75232ccb07088e5a710e713cac1fcfb5f36d5e714c -67e0f5c03e9287ea9e67c6dd7fa75d9a26b6671c820a818c2b23c42b581720dc -fcfca08ca5376b591b3d95bd15e4cbe8d797aac02c65a7e11537a4da7f5a5bf9 -d234be43a377d232749083063928cd86885b4c9539e51581ca671364685dea91 -81d27fb43a901b0e4de10310076d378d8db9d1dce16edbf7b87453cce4a80c67 -8f77b001bf36602c730be2f69a37b9456e357b1b8664eb2d1b89cf94e817cbb1 -1a82d9ae60f7aeb42394df3bfdb02aed48f32152a555dde87b5dcc458835e886 -1d82623ee78005c4b6f691156bfd12797ef20ec5e00d53483b1e8c79f8f1f46f -e6faa0cce79f418833add9a67195faeabb73e1e9807a340e783a42b9cf098704 -1efe5a016a90398a8002823e16659da6c913bba04174fdc7df920d2cb19701e4 -e5968eb90c8a62057c97dac75d8ff4f5ce3688e97e0d20436ad16d4b589d986c -77aff1f909083337243c59a1e4ea1fc89103c8389256ba14e1cb1c71ece869e9 -a51e242e59b4bf240d235672d545840f1c83f250b7fc165d09895e7b9f51a729 -2541d062c9c121e46bf145ba961016644e90363811dafbe0992dfacdb8d850a6 -b0f240e549e42687ea2c8bf23032c201f7e5b16f530099097cdfea2f05cfcb3e -53cdb10aa917f4cd94cb53b1e9356118b5e9a1ada4636a4293aa6c7dfa4116d2 -513d25b0d0b546a706a185a7f9309eea5fd53e4969920e11c36fa4b833b3bf4c -0792ba2275c004e9361300a3cb3f03e20ae313263b727ece49d2714b2da3d752 -10f8fe5004effa42d6e6650343b1ab47321cf811e1b51a50d37699155cb8fb75 -193fda32c12ad186cba4f02bc76658bded443634e40969f356a4b3fd878273aa -1d86d487122c7cfb7961fc85c09df390624fa891198eac778eff878cdc920e98 -1c615ac8c425a2727e73e8bd7fc99d82cffe9a9e3e858506cd50d1f41dda8ffe -eb93391c17be92eb6b57bc3e01741aeabe5804f2a7be862fd0d495446818665f -6b8e8d35b7357681a6449ba9a073b6d6d2bc9663f1b1f6c5881d9e1793603c19 -39d4c9f602d7532c0b83bf0719f0b38aa1fb7b587c3dd544a0fbb9965b0a9d5a -849a75245728c3eef61f83e50f969ea729d77841a4b908e173b88edecb82071f -cae18d20f95bb4a3ba384508cc504bc1d65987b4c60e718c02c740545e3b97f0 -dc94730b72c73e81d8eddb5b4eb9dc94f2f7d774ff43daa6f0249ee522e64af3 -c8ed48f50fc412414d3d4d77973ba870b1fb6b397944b4ebac0b3b222343dd4d -da3fa7394d5858375c6b64398eb597c91278f2fc493f010833424b13692d557b -a02e72d5c610488e7d803662ef06c716d1b867049ca9e63842301b2b168fee78 -cccd5b63a332343cefdf18c725e6d6038915e62044caf569600d8674c2a76151 -b9fc26541f79176d796f7f067a30122e165d9010df9aaf43a7dcbf3db2205637 -d086e6ae2ebc2baeeaf434cce88fa6f5a7549b30d4f9ae5b00493b764272d86c -01d0c1518ddeb7c6fb470f05ca78750f31ecc877d88cadf37dac09914ae8d648 -acb01dcfe3d37ab6e8f66425b19908457d62b4ca9c987daedfaca3cfc016800f -9cdf23eb6959ea21e0764d788063d5cd0c5c2f87414b80d219e0c173e078f604 -bf94ca18c33aa9efa6ecb846cfda141ee6c7e01323d387ab63951eeacd50e1a9 -626d0a1319b3111c50f368d538a1c8e0c189bb39e0329a849a754ebba51e5147 -74e2038d468ae8a73c15432cfaed3dc981a6bcdedbcbc1a077dd3f5ffbbd1069 -0700f759e50098e0d3d1bd94331cae2cedf3187557edb2bbc71100c80a9f78ad -800b200a589750227414822f11274a629986e90526e046eda4221a44e72d6663 -9d1bc8bbbcade788d500dcda09d9173bcd96eb2f5ef058996cf4f51c96831f27 -3cb50c8824c15d0a25c253404f0cf93356ce3ac1e3ddf6e35991a54ed6774771 -8c6273e6217b2edfc364a1c179ce66bcd504c0fc371b918442e38510e8bcc272 -949f33c77cdbb14e66292bc78ebcdd18055eb92083cee63b70093726a1f82e7c -e74c6d319de2ef067bc8dd3d6aa04a37391063adb0eeafcfa78fde0bef380b02 -2f4e36e9809ab4bb381de29876e3841a65062cbf0ff44f77aaa103939e1260af -8d6782cf4ebeeef633d467cf5fdadcc3305ba5f4b240d0dd98a36825d87989cb -08cc8278fb7ef17d373e432ea0e436d7d882992d3355378f45c55337c9d861de -85d34f6017e5f89298e08e377c1d55a74bd329223e88681d70675ee8c17051be -e7523bcfb65c0740f1bf32a906bfb305460e09b261c2e606785bc6edff3aaccc -6a998bbe7ca2e0d068081152f965dd117cfdde4486a8f8656962e33c0914fe0d -a14ab03db5161500ac72ba005bf58ac94d86b4184dc7603e3368e30985454c81 -40b6a13923a82f892c680d8beeaad8d8aa34ab324b28bb95ebc4038897a4a037 -ee3f64226b0a370b0ff0e7b1c26e7986def3133168b401bde2b9c04b49830261 -8302c456b106bf23e1a52195458e219173165ff927e0a9ba432dc29fc06f96e4 -fe94183fb9a7f8ceb1270a4857a3114cc942cdc7929b03de23599f1a244133e2 -20b25eb8dcc82322b18e81f3efe56c8668f98258bbf1b36c5f18a7240bf03fae -1b80407007eb3e73e67e8655bfac27b3350ca32f6d0d7c4cbdffd15e1428079c -8c43f42bc50a6d9627c9b6b758cddd00aa0b156f11f197d8b496a3121a5b64e2 -2274d96006037c190a8d848c90d13d7582bf3da7db63b613fcf705afa43de90b -59e77479558ab7a32b5bfc7fad8e7c9a477dd934fbec7622817cd023670a49c0 -a2721ac2447bb87a87f559ec3cecc88321b1d4c65c8d7de54a8def554ddab31f -5a975fdbb7f66c11f76b169e3028f0bb143edabb0474f93234d770e8c4f6e048 -e16aead36eda0b963f6b56c7495fe2165b0e7e65aa3e88881aa8c19cf4634f75 -ee504112398571be0cb87e89d40adfc94026054ce503acb0615c022b2d258ca2 -30c902dfca8d71d6b4004415c0d406135085c5a2d4c36d3eb8a4364853245824 -3a122398990cc801e768b3cfa594ef322f01b43faee5b2dc230874a562de57b3 -6c60507b49fc7b9eca43ce7352fb5686c8e397c81661eca028e55aa9a3b7837f -1cd973493cd7b1eee0187ee5723296b5779fb65c76bae14885392aebbda6e787 -d7a02e9455f1f7b7a2e86e3f17cc5191bbe25be4599a81f2000b28da4625b6ba -8fe91a7044c5d8c0d5f8a3341000be5b1acb18116e450cb820e0078fee03b4c6 -55057696b8ddee72670b632296419dc85d19008904b5bd40d7274146fc7ab747 -4d029cc611833e43abf15ac551dd897bdc76727360da2624c0ac3f3130176460 -8d0220d75b419cda1bb836d5badd14896372fcfc1b83668ac7c78ffe43da2f92 -c28fa45182bad41357ed8b4fe108e7fd938212da3e59bb3c8bd076578f9eb71e -50f29ebd3b3ef3604819707868dee8d8fd0895752a236bb6c91f40b200b43f07 -ca234ee627f6dc1c187a847620823d7c4e622c5512380f908d5f1e9f48b32b95 -8675baf0235aaa0abc1eef97d145b89d9deb758daea4941c4ece9d526c91082f -67a21f58d3d379912572b1c66706b5729a2dd3af1e9430eb73be7eea47d9b1c4 -d290423b38e645ac5bed4f69aa7db56cd970e98bcffd91245d02ff7e524a4727 -af8175f7a6c4aadd9c85947ea3d265e9eff6813b4e8afaad457325cdec5568bd -9f20e6cd6bf06947558d85e079959586cc86b61d829e9605bd0f39d6b277077e -90c14c1d8534bbe1e256f90f2317b5b35db874b58c8b7b2b9783ad7be5996ec7 -eddc96c1922e819fe7a8817a8381afe16939b4ce9172d2b85e9be54aff85f0f8 -b3e3faaf8dbb9f0bdea873353b41e5683ebe43cfaf508c3b939171c70f582234 -2808865bc64670fc950cacc27da66a71cce97d74eb2428d33f14da1370c3c01e -9b7210523ad8b4feede7231d7fa683f4717af6394eedbdb95ec946e6f76c6523 -0e83142348ea23d6596fb7ec87abbec96389b9fbd446162e5f3dee518c187ea1 -f5a9bc65487747b9e75c21e098a9bf1cfe30f38cbdd837c8f21240d3ee72fe35 -8722c1a94045d4b78ac82328b8f2ce10ca875928f8e334e3ab966bb828c96e8b -c5f670efe6a844ab70e1649782710ddf5b4b48d9588c5c779d90a0886afb434a -d4b6f1bc46778e6cd0fcf4b698e7153ccc431054800e3bf54eb01a23ac29da75 -4fe22d1e9ad1ad509fca68ccf3aea9fcccdf3320d68b8041ec6a11242c8b4424 -0807b8d6e8b0c683f16ca4b982215d096bd71403d771f38f409b418eb636851a -6a2ba687069282aa2f81ff2cde7ff2babcafdf4ae1c717472522e92a72a1c267 -7725485a031321e459f45a674b8968ff68bdc1618d59ec30ffbdfe0cb5706fd0 -9f44c47c9ef25f48b2cd05cb0827f6921e23f9d3e3855a79419d4631198ca85f -da165ab60210a306154f94ab5f69d6dcd03ea855f5dd226092cf8650f42f9351 -b270cc011613d57525399e7f660980881f044fa0da7161f5f46f258232fbe34a -5a3277505b82e688a7c3849b794fcd03f33bc5e08c8c02f906571befc53000e9 -b47ecd5567aa52c5c479109946002b522b79e3641d3de5d9c76a4bc8480d46ca -f4d24872bec5d1f057205eb0fee6caff25e83a404bdf0ac978eaca3208d802be -2d3893dd7118383d594640bd7a0ea109793c26f91d6e9e2b610a79522c64d4fc -5ca3ec6865129bfc85e78d8d9b1cd00cccc990047ff0239f62ef8d842257ccd9 -d45682b6fd46f0d8aec91d9abcf7a03cc940dd66f6a0efa4d70520293be09639 -0edbf5d1a8b15d60c45ed5738baffe6cfd17a64085d60b9f683ccee0ba80e4e0 -3f26ba6e0f8ee65842f5c1fda82bdcf790023899b37b0201f806a3815e29881e -ceb764cbd74aa1f425bc15b7a7d3f46c2561c1dce091c5bcb40619269b504c95 -dbc96931727e342d7da904e014dfc4748d59755b6d257644f2015d15a2251bd3 -d31cec5cd51b6ba383009b2da20edbdac440a52affeca3cf90f398e7348691e2 -61c38d6b4baee9bcd2ada86cbdb1c8af4b6f1c06bf554d11c0309f5e0b234035 -893e4fe55552408fcee702cd181df7780bfc37423a4d705be6fe62ad380db1c2 -5f91298cd0e5bf2071f85fc148f20469b9e2417ec34cfb3ce289c844371f6b7c -1ff5e1d2fb809792d48840e7545caf7698fd8ea220dda2162c2f82906c8c4c5c -61fb4825570d7c732a88462494a890fae5949835d52c1a922b1183859ec2269a -387c7eb1e3f084e25575d1f70b0f91d57b22d9e6d3b862fad567988396f9bb22 -a90311a7af4cb6cc7b34221415de25ee9e3641f855105dcb555cc13d9b273884 -1a4ff877ebb3d58f545314882034ea2c49bfbd42d357fde9afc830aada4b5b74 -a1f1a8b9a2e13c17bcfe499db12b702b6092601dac2b71dccbbd0f2f2afbbb91 -75cc4d45172012e742c7bedd20e5ae428037d061e0a96b884928900e2330673b -69d47d47c2cc3dd4f55ca6aec9960596ae578e32dab8230ae12da15be6c6337b -8a4a193da0a7ba2996b3d5361366c80bff8c0ead4e56c5d6b7b1f246b2c40d78 -7dd8da6e968d0585babc814a7ab2b37442d2d96bdafd530ce348e8780dec31fc -46cb1817c0673027ecdbe9c6a619e4836ef44d651ee0d609cd1e83e1e2a0a924 -26c2c8d6b3974856941eaa86fdd1b434f174ef82de79b46b4234289ee2f6e875 -c6bdeee6cbf59a107706366768576915ba28540cd90217c19da7d3236956a330 -faafe830843e199efaf27786b3d151b8f644f0f9b2414657d785440d111649c0 -09a62bd75a8b6bf8640f8d732d158e296363cd2e4e044d6ad57fe6f5d3db0e8c -e4befdea8d8d544ac3830b2a47523d0d73a4611d1747cdd1e45fbd413d06246d -d25dbc337a00a2fdb1f630bba2b01a51e7751d05ea8ce8d14ee9c36fe9693123 -4fd6295263f5572040008b7d9c88afafa5ab5e17dbb290c1aaa33ccf20c02490 -ca82268807cf8d7597302fc030ff0bfd995cdd8aff45434791ca56db740738a6 -59500fb4c1aed556987d9f1aac027940fa240e6798aa49891bbebc1102cb0e55 -2dc0602edad14710e1a675fdc74b46b14a65fb2ec5877919fcdba8498cafb022 -a168a16c5d686e942c916b037f24eaef65d9cd0b9668c10f17cddb8ea132df33 -19cd19e700df79558bcf36eca26637b6300154d294daf66e174421fe45f25e62 -a76c3c48fc96d67234837c658b8588b4b7eed532439c1dcac20d34a96cc6eda9 -e7f07378a77a974e1b713576bd911c0bf4ad1017efad04494479f134647cb05e -6c6a1e0afb3cca8286f0b56a4529f24f4a2d9a4df78cb396a2d775390ca518d6 -31979a7874f016c4d34e09d9b551fc6903ad30631ae94b37b70be9dc7628c9d0 -ce3198321127da76c45405f6555c1c8c60e21427a15d4c0ff6cb590d947588b4 -9a3b6bc77d9dcdbb8ba2d7d07d27508875efeec416d8001ac999135a6be7700e -20912f1b5bbb0133ba5d53b22321be1e18797fcc9a79c1ea32ce9e7180b08239 -7846b35347216ba5cf6550f6e74ef3cc81cac6ef4b01537003c0feaa58b59503 -5541e2a1c6420f9bdee377faee9d8b0c86e94b466b6dcd9a4b3fcf2c35667ccc -93c03ffabc8838919134f5c8e91b5f783ff94fb9e4002dc4a05b82df0ddcb1aa -a899c03027d713a7f2f52f971131c7ac5184d2bfcf1c43432e5ccf28920b4986 -95be9321b3e3563813221c06248e6f4ff01d6bb6217d6baf1a64d9fa0a15e534 -9dcd9bd4e5d784d3272eb11b6febd854c20d4093839e36394e384415e56ed90d -6e30521acab8a4497f70a4e967edee1962505bad1193a398a227143b9dc0ba07 -cc9aa44fd3ead0fb2e4d225ad6a35ba06fd39fe404d67c79954dcd9059f4bf50 -51f521be9ffb4bc24bddef8482e9931249abbaa33a6885f214cfa4b216a58220 -c322d54283299fc2e2c4ab61183086b0e8e650a511cdabcca64c28e735eced9f -38521eb60ea0e5b78d61595fcc0c961de9eb17f36d68854d0747ca19a6424ceb -134940efa3f755a98dee56b78f71bf2809a4848c252d73f1983983d8a37dc19d -34c1e657a8b328abddb3f48277fb532c2ee073ab454c0816751eb66cc8e732ea -da06875d32e6636be0605cd8470c2b893de3623da52cec766f9f30cb51aeca0e -336524809b9132bf9d541995cceb3b9e3f3b93b1d2e403ed94de100322f62e1f -9504a090574a3fcd4d0120dd853b9804efde4cf44a695746e0d3382d69f5e4c8 -689f7fccdf6231dbcfc6d1a3f911e050dca3eb8d6013876d38f79e332fd51333 -1a39edc06f4a3aedf10125efbb9a3b63921955590431a460f659faf91b1dc8ef -14dcfa9ce4d37c7e225685e89c8d33042696d506d84950383190eb2c935f016b -11e9a681a5d1cdeeae1f22b2017c63f18433ff48221efdf4460586d93009317d -b6ba4b2c4f918c53da5631ed2a426ddd96175ae012d463947c822c51cca2c8e1 -4b30bcd6e519c10bf68b36080419d5ad3db7aff3072081a3fede21f7f1ea4701 -48b758a8af3711b4f8c7a427b0d63765971952870fb580deb8538e5bf063d042 -3d0db851d60d4b5e551bdaf9f5d2cff71310dc66fc80e04463ff901f9d450221 -26a8a828e431a4537527bb13fc10804e8aeaa7885e780e8041d1f3ec41162935 -cae07c888ddc77b34db5e859c59bc1529fa7da92c3e61dd7148448da7be5b5f6 -1eb4b4aee23ebfe0acbf8d8139725f870871da3e22b332f5af2ca66d8233ccda -f09025f95dd4b4480b3996ef19f6b9da8c3c696f3feeadb24fe100b22c8f38bb -1da00f1a81425fdd02f3cb957cf39db222043573f3203ce4412d16c123543656 -d1ff361bd22219e15a2f116ba971338b9cccbbb739d554e102bdebffbdcfa66c -afe0821918bdf4ae4861c71ee6961144043def8211bbd06bc1b7a17fb7b49264 -198268534c5f7eb90027a484d2088cdf056c76aff000fee1b66ba855b52cfd3f -063ea1ab303a5e1198143f62e84a808bb861946bf886b8992725157d3a559138 -85cdb15c32a2fa2ef137de0a9b267231f7f1c9e8186859226e85558fb9f53240 -bc1bf559a13c47432178972b3148e5d650f6a9309b3df8d614055fcf94a25eb7 -8b0bb7b74ac62a9019a873450100a102584795b06038ad1c75e69d3b810da852 -80246bd861c0cedea278a8418f53f57b71c765fcc4fbe2beefc5bb23115f27e2 -f205c40cb2b69976f76b7555373b6300a10ece936855b51940ebd489488d0d06 -0e9eea6b4ce423ec6f6de963f8891e3740c8baf572f60c732022250eb2ad1186 -2cf850865eae8c536ea6cbaa21b0e6066bd584493d6d5b577c55fa8e06928b4b -9bb0448bf84e502ba84f6f26c3afe6ca955d975b335888fa3d7c7b5ed0482e02 -e9bd1262a91d2fb7ebd1fccafc7c615f73d343b0188d28dd6d109bd37a902101 -41b2ebd18d43bcd5c52ff32f3a66bdbe2a44a82908d9fe39f223cda9b8822428 -9af7eee175330d8e54b3b725cba75f5a72bc4ea95ae89e023105206726c7ba03 -c88beacf9fe584639162133c01cd2bde282144b3b254055d14736bba3a99e8ab -4783fa3b93a969fef3f49eb7bd688db128e61a5818404cb64e9c255e8d83c751 -0e750b7523d0e90aae154d93b4440427e80f1d048eb8f3c87c3a3c081ae8e5fa -df69ef610ff9aa3fbe01a5f846463f63f3337d3271967dfb7b0697d026c25cd8 -fb74d5d1d5bae0716f19d566274db5f271f723436a7dc02f7f572d6d5a2ade89 -934afadc18b02acc23f6beacecd5f9b7b4a6e65563d326df922a37e85f6b74df -b5c61c03b3f5b357edc5c5e7c1438a59239162aacd623619d7a8c3e015f1197f -c996048106e71c63b429cd5e8ae6a5d99d85327359e4712f96725fdfaddd8027 -03f75e32792ed1a37eaace2f936920c2c3d524fd72e10ebcf99d12a7758b4878 -654de2b7de6b558e0c819368c6e02fc875f7d3069b7b6fd18d24f2f92880a993 -c9358c60991f8a2df33f9aa00626317bfca08bcae5fa795bf210c4c1f42b59b4 -cc5862be719f8f2306b86cb7d73246674c4e8c7a7f0c6468e041a7570e8c40ef -e469ff58fe07bb17428af645581b195181bfa07e56260ac413b4d196d71741e0 -1aa35a498904816b203cf4d5c0f34bee5bd976db1167332eb38bcd5295fd22cc -5159a15aa66dd5f3eaf5701ace24cc00747f2392ffca72d194aaea76b787afb4 -bd273dfeda9ecf6bc479c21a6d81fdaa18e53caafbf54ea2b034c62d1d74579d -1c8ae231ca3ce884e3fe0d04ceff6ef3cd9f10abf98ffd7410a42353636eb6c4 -e67c3f55c389ac0cc0c0af1d2a103536568f69224e114c65aa33814ef223dfff -2438a4ff5fc1a1598dc9146cf68a262c2ab1e41fa1b8edc90cb0410a27a1a419 -db48bbbd5b9c638f4702fb48a2495aa6222d30419bd1c7f3437f3ebac95b1d8c -fd330d6294894070bcb82a779061e4cab91ee255c6e4ed93a90895536fe1bd0d -a3aa357a13e7cb7fcf3f45cdf2bc102ef048150f6b4533b7dc8dd523ec238fe7 -bd48a3d87c10a2cda9289f22f28f73d7625e5d89acfc694f0a86bb81126f40ea -906ba2d01a46f952ac227ecb6bc3c238846d2481efa96c47393a42fb0056957d -10d8574d2e31e46c00c712f0c4dd12d2b7b05918fbdc4007d82a80e5bf55ac51 -baa09a5265dd5e6cac1d6ce1f9327e9da2a8e8dd29dd5a3ed9912f9e9117cb83 -f5ccc9e7491ea168c692b7961ab7a1994d566e9b036443c60bdc1d8e45cd6cb0 -d0ed69a15035764ef718858375f1813f090e70fda588d5e90c8832796c274cdd -6de76ea8ee3b43ac33f6dbce921cd8a9aa55ad7d54fa64145d50b0f62e47a0c3 -060bbcb8bf4527c37a3e19f974b38c9a8e03da5d34b7517887ae3e989142d5dd -74cb1bed7e9c3b36e2ed497cb0f7518a4430fa6ea7dfa2dda6904c9af215ffeb -22b9151192cf2484194d491354e8a5fdbe6489b38ac0a65357dae93f6acf9c09 -fb9dc6e2e8c235a495332f26d7b08f698e5fe97949846e08461b43c2c8ab13ca -bd6a127f02e36237bc8b640007924c3ef0c4aa8758dd76bd6f76aad1d9f32941 -14dd1481e552e5395ed47f107e00a16f5d8f026e66edb63f86d8e6cd54b253a3 -8d8f474ef3928a0568c5f8a7e35ce8042b0eeb136cdd8eae1a2ee8dd432fc6f2 -c6566f4956b9f9ba43703e862ac1bf5e0f23752044e6df337b7f744279cf9c6f -b1ea71e92db5ff2d4384f1d7223d2a34b777d95d0c996e4a02a2ebebe6c92dd4 -41b7b6297a879aecc0bc6c063fbcc1786e9bc73ab053136ba4d4c62ff46932f2 -27f8c2331a759f997f49e4e228093bbc15c679d9fd42f36ad99d215043b9145f -bd3a797c64b2fabbc86fc471553e9810ccbe200fcb0bd6cbd73e144b587c63ab -e4435b6d6a30ad741a86077ba2ccec2fbc2fae5584839ab7d506153da60594d4 -eb1f264b5cfb4f322e4ee161fcb99189c2facd5c8b2d8877c26bab1a06ccba7c -92a540aa371eeb06555386d619fbce8960a8a5d556752944344a5484cfb6404a -75e5f3120022c19cab28134d483f1b1cc485cfa0670ee507884216f016e01e7d -16b7b81fd93f57bdfcf9b66c128a685a8fa7721f3c896ba09822d2267cdb1a5a -94fcedd3a28a95edd6cf1166d85696ab1036bb0c6a8a51b2bb0ead830fff501d -e6e432a8c9f3c8443c13aacac49b09cbfcf6349137872780b89c920eaf14c571 -d55cebb08cea88041faa2fa1ca2657d12838fdd674c2d75385f408d26663760e -e556e20063f21bc9fa40a57a943f1ded897bdccc82172a6b6199246f2cffb670 -f1bfd492f162397a63513a25c8f359bb75db2e73ea2e12b448118f2e884929d1 -92e693926ca8640008eb1bda4ad1dc39640746372d5526aa0601f07baabe41ad -fdf9795afb4a79ddb4a9d3375334445c08c4ca5230cfc29628113c26ec1fbb8b -a72bad4a21d36020b944bdc72724b4681988a9bc7cefbdf8272bfdf4a0f64dc1 -c70bf7fb9c01e4f15ad9c73da8cdd2c063fb3352f6efa0af70653b1a1131ce4d -01319ae71d968feda31c035f779fbcce6286ebf8ff364348445e4e28357b888d -9343ddc0e44c26a43aa755579caa047da07d3a87ea21a8f034a4f5c21173fc8e -5279d60a74af1f399f673a83e4bba9640dc8a39d42df8b7005df423390a92f03 -0a43e5e26ec0dbeec3730d558d5d16f70f711c81753e774a4571ba1b8cbf36f0 -0ac45a9c43fea15ff40c443cb16dff8866885bb83df4f020af493f9706999940 -e822f6228ecbf05d6824f9741aab36db392b8c79f286cf6998172beb7a418ae6 -560a3ef36c700e92d7211da9a5e657bd884b9e5f0c2b24f4172c7a10381cbb40 -aee6e4e7b97a0d2b30009b83951297d4afb8e37ff153882eecdc7b9a142d4142 -15244e6a809fe8adfdac7a7b1e47eeadbde4ddd7fb5a15d315db82f36df1441d -b188347e6d2cf06a289d49a6a4cafb14561f0c98d2590c6b9e4b47625779cc94 -fbffeeeb204854fc3a17f5bbe279c71c4f2f8131496a3961895e6f41df9324fc -3ae5f1ac9b4348a418948ff24334873cae759e7b16abf994cbbdf2b94ba028a6 -0f5bce596012cb484845380c1acd8950207e6ce308709bb731666fa7049e318f -f5d35a7222eb599c8e81803347343162a4e8d34c409152f2e5b3814deabbee95 -358ad55ea0dc1bc6670d20d8f502d246ef4ee46b41e396b8938f3cfeb8ab2893 -0d9c25a13ef723bce2f12e0fa00817596571bd39fbc95e3901d59c3ac16d08cd -ec1854dd3681cf4bf14e661d23d098cb6684da8165c94cab4e46d60a9615cd4c -4a86c6b518a1f6a093bdf55eec7bff798e0bf327db272931f179d128b9ebf7cb -f7545a1b3a46cdaffbba89ae761f428cdc6ef9acf4b60de2c8816c9b6b6fc254 -6bdb421d68f3cf7bc11b8c012a8f3836e081e0c8b182f6623796d5723dfb905c -08812c6e1fe8a116570443545f5f06d546d1adfabfb7bcbe04a20fbe169b6085 -bce5c6ba106e9b4ae054951d72673338713efe3e329f1066639479a973e9ddfe -9b466a8819e319c5066daba8d9c380a9385f9a70710fb0502a523038039d6eaa -b980fd2e33575f2b010a99fea5e2e6aff033fd853c4e31b14f461f3723f64097 -f41c584750d164098a0eeda2589a859d49c83fb6c1e8e753f4eecb5afe1251af -312332d7b4508fe78d9165133fce1730811030b69813f46a3df6298b65a75e17 -142be042e2baabcf43557c7d8162312bc6b47e10fe521b0e013f23d731c287da -1e34ffe32e161b89a78d6bbcc03b454fb6663f0b102675cf377acdb634f94b70 -e99b1ae29a2c27681f8f56e7fbbcfd5bec3e00a98462a1e9979194840e8cf6d5 -7335abaf1174a365cac6b71c7ab15c82cbb6491d3160661b6e83334192c460ab -0d5cd6a26f7add973c2665c705bd1cddfb09ed9e610c45c44fabd9ff2f57d1e6 -8dcaf6ff5492ce58307078dcd0e2bb654fb7f8fa2fdbe8ec0aeeda3886ecc223 -1323c16edab99189cda6f86d8946b5ced3f6763ad8a34e75c9c5dcad3310f176 -986df35ca02bec29cd98ede443343ef0490e3de574da49ea1f9d7158164bcd01 -98099804d3aa0eb5a46ba0503ae60951ba2dce7a1fbf0d963a167d80cc4c97b8 -d1676dce4c4715528e8f981d8b1f57dbbae0f888c5ec8b3aa1ac3954826dd0d2 -9d51174a78258be7e894a4d768bf2cc7e3a7b081403822c57f9cad672acd17fb -f421e31577cc7a837e469007fb25197c0c163b7cd1faec849852f71bc4e597bb -dfda5eb0a79fc0b7aca5018cc59ed9dd101b9615e58dd45b8b931b4638c8ece5 -f7fc3f44dd787bac8d3c4255125733de5e96ea289bb49805738f244d1721ac14 -b0ce3bea7259d06d132e2dadf6ad6359d5063e55bba136ddc3e7c5549d678429 -1d9dabe9f1c1edd8f6e8b5c69e947088640312d912d7ee6ffd6856ee61f6d7fa -5992eec603bd2cd4a1c1fdb3f334c2e0605c551e09c018146312b3bb315b2807 -06ad9b05541d0f4cfed68b3afbb204cec85abcc17297bc98e1e5af676f17a3b3 -24f6c205f50daad12194fda7694a0e1d2a9fcd9af126f13a0dc4949aa24c7a8a -3bdcb44ae0835d346026d2e81c4fd311594ba5d2fd5dab23e17ce667f175cc29 -822fdddecc12c86a916e5bc67e9d344f33d5ec32244ee094fe3e21c5e248fa31 -d81149f7af4052a1e7cdd1dde063626b9ffc2be1afab01ffb4583a124592938a -cfed4467630585e57ca96dfe6f2f7b9117dc19c27252c8b269c445035891b334 -0f69462fa2596a49af4c9141afbe915660f7ca8740f816de8335051be4c396e8 -4b98ed635ccda08ea93cc8235d05597ec5f205766da2ec8ea272add76479368d -81375a60110111006a2543a6b86218eb1869363f52329ce456adc08f7b661681 -949bf38dac90e23736e45fbb39c2accdd21602cf380ce1d6cd26d4fca08cc0d3 -c1d903cd594e86067c0510d09d445abfd10116a9f39d67e3d68e145f9c8b4f37 -aaa4ffaa7ec3e866a17594efe52483ef7bf6cea1b999281df9047286b89f4d54 -6d27c5715f542d5fcb95b1b2d781c2a54a363bb05f4e9dcf5b9c949eb6c2465b -2d605a87a4d5f1b74676a19107df7f33288a5c5e2516f57eecca5d24b9396678 -35e8c7ce0c6a821ec58015d172cf919dd5d798d699e95745a577e971e6097916 -8a39291208dcc3b8d907aa149f6a8aeb3239fa5fa9b7aa28dab14931c8dd7ee4 -1f305e30d1e40282cded6e8b454457c3c5e3fd02b2b2db855a8123545e91a1f8 -9442a1671ebfffbed85cb7386f05cf1a7d1979c22ecec55edbd4c3bbfd4e68a4 -fd3040399fd44a643116d0d4dbda423dbc24fbf47a5c8809e885db76d61e6d10 -575df1e143af5d1a8f3bff852aaa8f440316d3f5c6357b54382ee4a83bb2a1d3 -e4b41884edd5827b46601df9ba4953d0cc202110568a6a14c18b5130ad25d6bc -060b1aaa44d7475a2c9911409ed784a63cee43baed684fc5775aa9def3df72e9 -0fee32486fefa8dbfb0dc8378ca798d23716e71c7e06035df322f6ea07a802f1 -91884e8ca2ce73f9c669a088e2f54e4870a7e3c3f5ede346838376cb43c865ae -c317a6a8fb1d57e881c810ca8bd63a0368132953d3fcde1e5ec2088681cfc12d -e9873223272535cf7b28444f14f9955c92618dfdb12ef9f1ddc76af16bbbed51 -3625f3a5ea219193007687af3d509f0166d80b9af3353a68d587f10f850544e5 -80615dca53fefc354b94c588dde972968e21903d4dc4362996d75c16a8e53b43 -dce8241eb743fc0ea4f1b99baa23ae73fd53b8eac56646089f56d3e7ecbfa3c6 -ca3243b28890c6cb9596ac97f9f3f22788b32a2e5c765c9339e499d0844a61c3 -51174c30e638c31ee18ba86c3d7677449b09ff201653c2d070882a00e13dfda9 -57e33df83850e15a22e1a691b2aa794d192dd64feaaa8cb91b5272a86cfe2e17 -d066eea1aa0000c0e6e36fc78d0685ed00d0cc9c618388922a72733fb24b506b -ce9b076dc27e8c76915621f855e3a0b921555cb24adbae5b664e2e0352a3d6be -10580d9f73b7843294b6e36a1c61b5c63f5d63871e4ac29bda479b8c8e6f51c8 -0b51463a1a2ff98dd2e92f30b04d7bc4a1e6d2c100fa4bf2a1bf41851ea8b1b4 -9d17598349c1788eb1936e7844df0af5fdcd21a4edd1b5b5fb931217795dea07 -70f6fe0670eb97b9e8a1b0eeb1c743b783f53e17dcd84558e27ba64dae7f8467 -016c5712a58edf87ca69e1953cb22cc66036c4a500caac0aa491d4ce26a40f4b -5683185f9b824fc2b4d5b6bb0d211f32b1a895e1ed6ad7858cca24c4f1ea2b74 -1bd3a3c93e10400da358eea545c188d1d7d575cbdcddc324eb09c382159ceb5c -a9ebb4b8ef2beff670e9e66dcf82d3c931a5f561969573baf05f65526dd4c708 -5424add9b9e02caddbd6de219eec64440e2c24b0c01642c9bd91836e3e81b1ab -03d859436938beeefdbdfa2f7e1ab4beb9f0266714094b9fd2cf95dffd149ae8 -af1140dd0c3759011b71677d8130cc9d1b2b61d74c2cef58416ffe20c93be780 -028fffc223417dc98b14e2137d15eb85684af916fbd8200b9cc71188652b3df3 -fb9f51bded5adcd375dd2f7932fd0782f23ec2ebb71407f225e7b4601e625bcd -508a0f3668c5f2254d677ea3ce36ed1d89148f065877b39e3edcbcf7bc849c35 -e1db16a69977070cb9ed217a9d601f339b1f943a4e596517a47bc239a291e454 -7296b590060eca428f604b7ac852138a5b593cfb95e417ae980d0b52c8353295 -6fab35d520ec6700160e80185915996eda97f53f97f1928b67cdd369b7e3cb0b -cde35f2ea974e3d9b398cf3fa044de37aae15479b4ad19a2a88c9e0ca0579285 -8552b1817457a2ad05a8bd394de54a7c1060cec6e9e95bbfa3922bdb5f1d53a9 -3c177f9c3612bb8beec2c42e129ad09c14d52acbbbb0ab3590c7cf259d154840 -83aff8fce7c5dfd5a3e28ad4d3777fbe0bb595db0ae673d7d86e4803dada37d8 -8ecb99bc8c525c1ee931cfe7004c361ed7f417be1f4ff7e92c636c7abdef0f92 -994cac90c900b6421582731b501eeb68ffef1beba128daaa668adc4225100d83 -c55f2b0ded6d9afce03fe581da3f1c955b7270c178347c885b0b4af97c852843 -1dcbe4bc5136c8255ff89a5d9c1a60b45efb940fa8b1efc8877d5ec3b8af027f -ead2db50d1239406bcb22b403f000d75af7cfc8120b81d7dfdc8e1deeb7bf39f -730c24d3c25795e6cc074d328526f78e2f84a4a0ba908c24377c344a957b2d72 -b5c88d59035df55ac115aaa16d852ede9fcdf9ebd963941f2979cb5616b000de -c7c768dc91ab6c8f23d6da7b41d80ac211f6da66a69abe273a24f94f8f5e5271 -28715d914cf1f8de04bc825337168c789817ab21f70d49da38fd54de9b8b4750 -d6ea45a57e25d615ca086439306f5f89bccc61254c95fae90368220cf5acffb5 -0f3c24bc9479ccf1ea9e0a9b2e2f64372417c44695f43b9975fcee1328075471 -9c32d5bc60bedee497488866881f8a5091f4026eb04c4d92984daae3554c9bf8 -04c3612798180ef599821e5f5668c280a40625c1bcd53f6987a4bc2502a2a362 -54f080d704dc71a1927f573c67476bde1263c99178f4f817c4477c1daf1f685a -53aabdb6b3b2fe769d36d262b4fd1d4d5aa7f8523805d45565b476dbd12f27b1 -3f310ae2a7f75dc33f10fb33c618504753db5721fb503c9f3b20f3804e22fc82 -ba2e42b9f336f242b543fd69c14be16d636bc49b79477485b3a3b9ea80010ca9 -e929ba1402f0c4284cc17cdc2c04193f6050356dc71d4f21844ce46f64d90284 -4a0a6c6e53a7c8ea0f87ecc694fef89c398a6f27b66724390fe8884e2c58b5cd -7d51099d7fdf251c73410009eac66f505137bfbf155170858fbf4e1f04307d36 -853da4868e31f32a3d52714b617e74114df0a02116b1f7ec7ce77d302cd2303b -421b022a85acbfd1a46f04c8da3526e5af6749c8395b1f6d63aae3d2d8a565fd -991db80296d60c895fea3daf637586cbf074e06002576aa35ec234edc2836e79 -e6dc1c3e3f8a6153506575e6c532e32039a97fd0d3491b2cd856e874af3e8742 -0be1daea756f7cb4ed2da886a7c8794227034bc7e3ba2e1d90f067fdd541e6bf -2da8afc4701e05653b1f8d1bbf87aa82bf6a186d2a910081b9be9aa3e6acbe77 -9b9233d70393787b4e9497a7f9cfe7f8ecbb181795ebec11353ebcf0f3f9bcce -be6ce24434c54af9039a9eb93771ac617e0193d7c8c1ff12b707f909b391b569 -279d783c20f50eb9d6219f1c9054c6ce5d0bce09ea407c126c8c16c6349c12a8 -f399f125d4b8def3b2bda369557751df58099b38c8e7e5edbe73699d6ab9c5ee -ac56052304c2c0337ed830c1fd09bcdcd6f2abb17d069cfcac6efec24e399be7 -b3ee5d0cb814f37aeb0f4bd173ad0be251722ee41ba04a103682e5ea2792ea86 -e933a8c15d085edff08b7868ce67cda93888e0b31b97e0729627f6039ec27f96 -502512384d58ed44883715439ae4f7a83bb33112036a065f63606a267b4d89cd -7b46d7f1d2e9c6df0a497359a3092a2569f2a46ac77a2e341c46971051f24579 -57ebe9c382bc8d165132c3072acef21e861bda77e1097f819001729a743cd02a -d644688d24b4078c2e75a1bd434d3710dc44e87f679e431001fbe8954c03d85c -f4da29154b9b9d5d89392e87c50ce1528fc0d4523dd3260fe1aeac8f9f12da31 -0703c9f1cf85a6d2c43ac51026c7684fdfc4e8a5fced726f9e83e25312247c9e -a30bce2c93a4538b01899e51cd3a90bf2241cd5676a1c7591fd1942f9c30d7ed -3b520b31d17baa14675f14e855c73af0ecf5c37627e75410ec7f6dff0d49d966 -0ec5708687d2e4f98f1c6c2e9ca9876a1136739bac3ddc34935f3001d6ed03c8 -00244a688f21d05b24da020c8a237b77140cee264227542bce90abae597c9b6d -69ff0db628f48fa1d1f41849461c934b4a552b7757d1ce32f0fd1f60fc85f788 -0fffd1e973283a49a2be97f7a9d966f0d83b486e9f72f14b14e7936397b75390 -38b9b11429d2c3bacdf7fe14159ef2d9f8e9bf7099ff7b97c734c17ed380c151 -b7e60ec6bde7c63795bd6b758ae72d66947748af540543945f85a1e6708f2d65 -d6deb82c1c59ad42a53dd65a451815bef27b8e295b391e93f1b3d6a980f47006 -ffcde9a86f3697e969f0f2cc3b2fb2bff35f8f5feb2c3e3ada40157056b550f7 -a0701948006dcc43062f1cd0de1b49157c06e218a67350ecbcbfe1ff847c4f6e -e22499406f3e8a12135ede3a869b5cf327a60b5dcc7a11cf52ef16f6750fb7a4 -825c13105d75f8a74e2e456837b7e6f595c260d372ba475f47d966dbd1cc73fd -a0cf1f406e11dc12baa68e8cd78b8f40abd22c35e363fa469fefaa00d914b5a5 -4095b064bcf62fe9974fa15035f55eca54c92e5bbefeec40b28fef657a54e1b4 -072c00409251fe299a4ed0377dd4199e7b9101f4c86825e7cad1aa177353af45 -ac940e154f9aa8654e4db0ecba0878b9e9b51cebeb0acfacf489a12afb611ba5 -8d095a545ef7fe67d9bae6e8ceb04fd83bbc401bef599c2fb5dbe80ab92e98f7 -de01052f2994bbbd41b3019de65647decf630c05d3bec04d72f857ab9ddf0cfa -49b747d6563d4198227c76745b4625e515006d7e40fd109d9694acf7bce35e03 -b8e544300215fef36442dd9ed7c7c892f2130e65764c745497ff723c72fb4e1a -ffd51b26ae752c148bf3d6df2897e6fb46ba6b68ffd766714a58d3aeaee8ac73 -5d749ade73f43f51abf19aee5e5f34a23cf3bd4b7a0a6fcaca2053a9f2660eca -b7ff94e539a827514c1ca1b3d5b02c1d804efbfbc4f9154e54a9c4df6f14590f -08856cea4d0bc4b9532b8ab5ed61fc05b975627fbc45602ab7009d880aa5a6f2 -05c3d0ee506b960a269871dee1afe0633a33b8e82b6df97613b443e9903f0efc -e861ba7246fbb883aee3f50dc694cbbdc42bd985bdb75a265e3b9fe370808327 -bef71875e8fa3000025194304c13d75c9540a531be8b5a6e3c3539d11506f1da -f90a4142a02b4add938f357478eb2ae36215296d2ba15a2860e5e4732af331e4 -2a22f359ad4d223ca013f78d77d195a6067feef9700806f3bd60d69812cebc6b -0e5da028744912bbac819d849ba960f0f6caa311ef914e369ca878c605057832 -737d2ec9bab5f4ada68c1f56bcfeb54f3e75fafd4cbb5bd5661427e8f59c1bb0 -b0121054a554da666f327dc0dfa82f6044f07a18a14623ee53f720fb7d2b9eac -b0c2abd6935db93471355b17460aa07e3e841438344e70261d7dae4286e44743 -8604b4065ddb1748d22806f428d2bbdc68702d094de0624c606ae1d5423f7792 -bf41e769c9d8bed663961aeace9b4bd0466041ebd9a80f0854425b3a9ac95152 -8689a9aedaa917a403f1c4f2494ead904370863ceb3c385bc05a10fa8508fad9 -a0a9db1efdd89cc2ce838b72b8bb249ceae9e129e1a60a9d78dd8465a52da5e8 -ea56f894c35f223485b12d60548e3f3c1b167c005ab1b1eafaf2bab8e23f151b -c6db27876f0b4c6db8538978ec008ca130a162761033346ce7e429ffcd293172 -04febcae32f6349e726ff9c75e8049e24cc20775a844b2047a443fd9439268d7 -10c263ef30ba933da1c2672de7e1ab56c7239399f0ca3040c63e1c31644c8b08 -8ab9c0b31bee84514ff4d735bc2f7afcc43ea4ca18a4e5d734b2a28ebe7e849b -e5968617769f7f079b687dc77d81071eb5bb05a62eb5c50d8fece49409be7baa -0883389789b265f0a032e7a0d3060114d5969b2b114f330eb0ccb2e12c4e2497 -f47f36f7229a598f8018ab9901a6b10b64958bffc8b681b20949a9576f9503ce -069f32f6f3ce23421cd142bf633bd402ece7771cc70e6e840828a88329cff4e7 -6802bf11aa4decd69e81ae8eec511c3c190525a193d73e925d737de5313e0c52 -f55d1f6c34fb2c7c95a643d90fb7dac64fecda7734f2e517910822ef98d42432 -435681892841ca4c379f77ba51f1681711e2eb76d22e1fdf3568017c8c6bb5d0 -cb5ae6602109292ac180dc75f2eaa25f4c3e6d62cfb30020f0535fd43ffdd0a9 -33f3e6d3e63d43f6c223e8c345cee5642a3d5540596717d3fd0f287d2205aa4b -50b282e7102dbb2913f1781c5f2d0790a8876d1bb686e5070274aa58608d16e8 -c9b4ab78186b4cf232abac26b8a26e1c2c12b0671055cc5f9fe4aca92d60e2b1 -83718c968ec2bba1c53c805525cb5f084f6e5c3c71dd487e40f5a101111ee42e -aa2df73ec0b480dc82f11015b6a3d358b0b3c3214397e97c53c65215416780cb -57784eb0f988a0dc54f1871a6e7fd15f8b9f169b3d918c676b61a61955bd5358 -baa7e7565a8c1ffc0aefa031182c4b23811b9dad9e08b74a55b2aca752b1240d -cf0c0b729571540f0a4866632ae74321e3b2ab41d26d0aa1fce7f03f217ee451 -2b213b0bdf3d8a2148feb5d35e1f8a6da2e13658f139304205db38b510a57429 -2d7abb567b3086db63d2c0ade45d73b30684080d57d6b6b25f612c40eaa81fac -55cd578f958a13f7cd0e2fcb34a660f5106d91971ee729bb090ab8c37bb67953 -c1ea9192644717a218b2b37b03d97fdd4963dd1186b9d7347e7c856527c1fc7b -6e55e247e383b0445323845609b35585e37f383e820682979c3d1a78373364f9 -3c31324f698cd6ea07c91ad288dd751a04fe29540515d056e08ac7e4b381b1c6 -cb2bbed1322d9095972ad368031e05b6176897934584bbbf34706b5f0acb3b9d -eb8b8cb8eba22d236327592e27d4b0830b4e4a7284d2c1896b5ef98a15cad5c6 -7412b8ce2d95134f53ba2395c2e397ea1b4e54cf49589e83be2d86654c849e41 -68a42bac0e6a6aafcce3c8f585c1f381f51b45abb58ae1aa4794caa2dba420fd -affc83fe437866b1aecc1d910643f0f9d70b0da41212f9714d1b1a3f43e5e725 -1267c59a1017f8bccb6cb813845d7ae92796ae6395e5d17f8aeb3f7b733d6c29 -856cf66e370edd3e1162307b39916b89c371e0c930a8f7a8072925d211fc3ee4 -e94dac824598611ab5546a9f98e475460058ad14d5bf507145b6e70377ff092c -2c96df0115b97563c3d8ad3e765180639dafc9240078a9bdc4d05c38d760c3e0 -940b3ecfbb6f12c3e72ba953ee6736b671ead09555820cf7a2ead9fa6cd063b6 -6e1f93a17d8d7ef5a33407b115bf86677b254d78ca23ccda6d38b77c343c3149 -bd2a1ffc2c173841797cbae994e7fb0a0ea95fc1666cbf26740ca2d87800912c -b6ad51767474ac0c1a9d2661b25663dd2e0e5a8f0a3357f9098c02ce4be52a92 -d65bd68a775d0ff3c8e4038f4e263832a3753f12097957e2dbed99297106e612 -aa46399c0ed52941ac0f468ad788d06a901912c7015453577db8a30c2415b172 -a291150a270139013a994817dfdf5946b9b9c41d115b2335ddca74f9e05fc546 -3c1b1eca6615b3be14b6349bf9432377219c3c7c35b2adef1d8544c47af2af13 -b71fe636a47d878c753d23c0fcd6fe0bbefd26642a4cf5cf6dec4791a31f0729 -3930fd1aedb30471b68bb4cca888315b3ec51e1e1211115d363ff503fe9c337f -87be8655c8f7e7c382f4715e8442f797954ddc7e3c40654a39c01a4e3bd91c62 -c0ea25a24f3480e721f8002ff0d8057cff5a972ec0d3d8464882f6b27271e208 -6f0f9c1b371bab4bd14fc34c9e798521049a37cbf299302230ac20131f9818e1 -cb970c0844028b18db324ce2c491384c519ec0bee4ca16bbd5b5da8729da1e61 -79f548f38b42cebcaa3c2f95768034006f3004375a008a2dcc4c6b695f191168 -c5b994a8d65e199bb2ca5b76235bf794bb325c1314cf0610b85d38a5aa679552 -1c503dffefd736407a71a0dd79bfc59050d7654e18063285e53c71ddfd527bbc -792ff5628a05cb9cc0aa40f7c0d3f31f391fcb0a59fbc7b1e5bf32a173057a89 -d92b24773bb9d14d3d1a5d42dd1824d7dd7ec7604adb960cc85c0dc76ee7f8e7 -cd521005fb367c642882ef4ddbb1cc7e18882c067a628c5f78cfa23624324628 -f3769f5e4ddad6c4e91f29c9c4f4dd03ee48ec5a580b507bd028407f2356b218 -c5c5cb5681abe3c28502f2a7d5aa899a7b255ae639ade27d2d06d3bcdb63584b -80d0468b5b7ce8276851cc83060ca40f181fec9648401cc153ab9283431a3785 -f2c189fd0b94d0119f97e211a9594a26b6c452322da798f7965e51a5f781dbff -9763afbdcb07a202d5bd494bbe893db7e2ad917bf224b8e6543cd315e16881cb -7feea2a370720d8d35237f4e4bda5eb2eb750364b7ea0c6f51a4806290f06012 -f552ca1c79890732d5582cf29eca1a0e58211bc4a5141a19161e435206963a75 -69d2e42f5cb18a2d93eeb84cece026ef20682eb8a0671c7c241f1a0ebaf725be -9587029eef3468db9cdd8afd0e2be464d69b5ea6e69cfb069ff2196fb93a64ce -05e2af1aaefec63a5ed47eb28f290f90a3c6b145fe9e86e6c2c79c4e28382471 -e79f15b3e650fe7e072c81d1f0816bcbd314317da14ced23981d7edd9823f96f -2d7768a0683ea097aa66e1388f7afa30788a5e801eb4fb77b60558b870f970ab -8645a60652efeb100083a15848b11ab8a660766a8e0bb1f27d56024ebda2c62b -1573a2b40ac6beb9f7e853e0bf1920d1f2666bb7ea87cc937efa80d213ac530f -3e01be49c70d9cdcb99e10f378d16772a75a515822329c22e3f8c6fb5942b1c5 -5ec6007f497494388b1690b72cedf322a8e3579fd9595a9db44f2cb947b5bd2a -e9080411ae2da507d98c8dbe8bc15d8c49e378a1a08aa327fef6001ea1077312 -006e03454f592bf328b5f8217a90bff7efd38a4db8d12d8ab0f3e36ff9b5e4b0 -11a89cbe302786e8b3589346f325111a2ab7cf68d13187de0714a38236b532f9 -18565f33a363da30925eff4330aa9f79afa84f16cf22d7a2e488db4599338a93 -e656a15a0e6f61c1d6ed6cfd11d0148922d2cefd4e21f70bfb3034d1fe55d16a -447e765a5ff0daeeb2e308028eb57a6ebe6a9c2703e6b326f1a34880f9fec857 -7823a64c0ff70dfda36a5b9174627889522862c765cc2633e67aa7ea78dfa5e1 -e403301d63ed3d154bd27739fdc23278588bd5e27184d91fa1ea41db9e9aa1ac -c324e067003018f10fe44ef3d7bfa1f38257edb617a7e2cf59816a65ecacf17b -15a7e41319fffa5c1f6b92a4c7d4c78928433ba7b9df24904ae2c2a4b707cda6 -16c1f00b5b521ed8a2d6a0dac25f4c22719ef0dc9adfda4d241d32202c88e337 -74794d0b19993f4de1f5af6a16f0fc95d96829ced11c7d5d548fcf46c222a856 -4b0bd3c2af890f84345f6f60cc06e7cdcb91d7eb79956d6b7d70e862fc2fa79c -12029fb27a650bf011fcf75146b7dc3c7f093be97d53c6c720df3874f0141fc8 -783bc69f5499b61aae6d7cbb5669bc51620bff7d1900d3e526c6521012ee1218 -9f5ea225c5c7c0547151f5305b20a3b70e25c30a50125fbb3793e94921d6dcda -998307dbb029fa75b418c6a6d850f4a1b4bfa955693645a79d8958713a4888fd -9530c5720a5705bf8b758d494f28c735b37e134d57318938790f1d64f69c703c -c214a8fb2ae2fe87d991074cc8b5935cc2933d87d3f7919f99507fa196d6fa88 -efd536b33c10218a852c135c503b4efd1392815caa07f92b3bc5fed375142407 -a66ffe12416ec6c1dd499f32987476b56ae1148a717295158d0e640f929e136c -d0cc9ee13398466ac34bf3c36ab46afe809fbde418aec5f3452b8e7f5334e834 -b6a140d8c674a9ed043ed3d5898d337dcf8f99843cad5f398846b5ec54c7bfcd -f445d959c497ff85d7049552c4800eb823b56d04fad8d3eda431a4596b3d7fbd -e831c5ad2668b46180847f8be5dc94949c5d9c10125cd7656a8aa5adb9b014da -39b2413bed1b5d5f94517f84f6404be1c3785d674470966d8398a02a46355244 -15948e9fd8629317506820e0aef35cf8725995a27b72c148765c6fa2236292ae -ed1c13c1a32d60671eb3f33048047b771ee037c3e174dfb50dcfb05196591e22 -4632e22e8ec8d17ddf8674c2fbf821244530bff0b30bb4b6348608a38ea138ce -b30712eecb5cbbb9efd6314f6e00e659fb0fc4357fb8001aa97cd94880ddbc7e -a3820277584f2fd9c209619a5eecf1cfc523303363db73f254c3d0533896d5ae -b25e014af2b5699e69b07309895a54d0ed020f03081303933fcc22fcdb87b732 -f285c81075f2bf18da495d19a56bc4af731d5b47e09746074d5c3f531fad7a31 -243cc9af83ca4246b4f31dc9508bb9eac2fca186185db75ebfb47ee97dcbc0e3 -9feeaa85accd73dbe4be16d5bd744b30a604ee76910cc8f335c2080b248c1246 -5b98afb156408bf778edb1be82acbc91cbe77df94628402f41bf2f89b5f434ac -25038664dd20d72c7272d9421e26d84a5ba58cc10904e3f399adb52c583b8f27 -455a16eaeba39c17699647617b48b094a0e0c6d91bda7d986bb9d1ac9fe73f41 -5bbf94ff781faa841e9aed24cea0a2f3bf17517395a48cb52e98c37bd6024e53 -bd6fce272346c172e137e53478418be67aa5f26e007199e3910e1ad86a4d70b7 -73de64abb72fc5dee50290bd6930089d9b7602ece3282ae05c4e74cf35c7c28a -6659d794355b46a75dc1310d3e326bc4e2069351df82bb301e6ec56a0ccb96eb -79803c1cf1c791348794b0e418ceda6dc11063a83660874130b97adae889d954 -a3b93a11be9ee60eb86e5c3601f510b01a002740a1c1022ce6df49947361a831 -9cd8a7b2c7363d5734ba08779b5dec8673acfdecb5839bd46522de38699d1fb5 -e65699eb5f65784b0bde3ffe885fbab4917e0ea82fd98948f3f575e0f6421f90 -edd14262741ef80169c2b3dda090e8514f823616493d2608ddedb28dd5729c37 -a7367b06d6255bc11563d879e66e16a89d4dc5dd01c9f4288cb29d409e5df969 -4de4ab73a45ea936be8b612f084722243511b7938b1be6e869477c4580d4b390 -bab509dc1ddba9ccbf7e209a9cb95f1d6dddfcfcc2aacbde558709e1350b1e56 -b2d913089491df85e7af642c4e361421e34746f9d4d436082cbb432278451294 -fa7050306d05be7165776e2f0338dd41498bd3a3610d842935215ebd0b1862f9 -add9a0ead6bba4b43ed5e5754975711a077133ff09f0e6c91cb4477190444717 -e0cc0b692ef5294bb093f4a5b82f3b77614082cda745cd968cc7185b7ccfbef0 -c5985479ba1c47d22e3ecfd57f3d3c7ac8d9673bab7335865412bc35b8296b55 -4123d736187e2217dc9a6a89e361a0d3376e617dc113b0c077ec0f6dd1ef51e7 -7731f8564de93c2c8c6c840dea927464613a58d237e510fb85b4c584791d86ac -f7913d79521d555e34f1269e2f0f1f3f98676e34af54e3a923bb90b861d97f25 -a4d3f2e1220e2bfa2c4b90dcda31c1a887bb4d1576092386155900cd8d3c1365 -b7248d1ec6390847f39d6d6c50c87f46e097a41109ebe39ef4713a1597d189af -7d1a8c27337839aebe4181a8bc3af998fb1303b7faf9b880c5be5f11282ae941 -69ba505008d09c8ef69783661bf08621fc66fd8ac23aaa7e86828a00f6c3c350 -e300c66d8b9a934a03b643527b0ec23abf84a00125c6795640c53d65984055e8 -af1cca1ef6e73ff690555fdaeaa5bd9f7e8b03dd64434aa9b788248d9bf477fb -1539184830ea251a4c567762209740dc3c16172f0e73155468005c4a1fa6611b -743fbfda993f79c9814d90289f2167a0e675135944076d702c4e9c44c89a2f62 -53a41c53bbd7a41667fbf3bb86c342d02d50a7fd7bfca40c2ef9931f6b5bc25b -4a9241f32146c06f0aaff87552388a9520d1de7d9511ee4b02c0a9011bd6758d -9065d3a9f8ca2d5897be7ad3e0c13383133be215ac55ecb29bd97302823a54a9 -88c686b7e979289f0fd215389bde389222185827fe82a912438f1d78fde1264e -7b2fed78f67022ef5ca27bf1b449537abcfbc3004ab0845a969c52d3f4d8b2a2 -e618925923f70bfcfef1cde6157a03ba86396ca1156b98f5a91883d821781ad7 -0caf360940cede3c2a4c29536d8e18a41e196fefb191d27e26a4a0a141a4737e -237c99d4fe3710e0c7bba050db3dfeef6554ca5802dbcd60b5669cb6763920f8 -b49957341b36b96123f446bbed7f71a35b40808968f2d5696a2f2dcc1221d119 -00af15c01257ac5653e3153a8f110052e579a068f98c7f9c8fd54f66ac7d47be -2bed6fb56f39841b3ca67228050321b37ffc792ed2273a8e2b75275f58ccbe7f -eeeab27311db961b53ec231b361fee284ff549cbb71330c7505725e564472e4e -9853bbbd643d99a4f9404f5453ef07063f69c881fbe5b6df70f4884fd11e40a1 -813800fd655704119f7374320689b8388682069b9115164e70df68b8b8efd30a -fca84d981402d9caab679308dd00f3d515d157ee1254f73c9b66ebe7d90a2a7f -9c0b94f3aff2639eca6327778bd0bfd1b4a822e626f92f8010d0f8ba3c8034d4 -e9a710546382d0f4069a1bca6858600c4077aebbe651dbb1e5669de252407674 -56017d11f1ff1a76a4313e6032eebdd96819757d1e9a7efa2ae562712087891b -c88daa8cfc4dd031fc2124a685e7792e5c9ca300fb99883cd40fbc76af131064 -6a06e8112083af1ed41f0929832bd0880dfabd4d3c5627189a02512121ab67f8 -f326d30070d6338a1b28478c65f167c2b83ecb40305c6c5f685265c3ed756377 -efd4a405a16bf53401f1f42d623ecca0316895b64352c261b5fefe05e681fcb4 -d0f9db17a4d8e68ee7be1bc69ea9deca02f35412c58614945a2a1b3409b34ff4 -f79bcd5b7598063e6ac27fbb6e9cc457f69a5036b0aebac608204384716dc5e2 -183a8e1a6c62aa1bfc21a0b1bf7f098f6e81adcca0e50e4d17d3d2f3adcf34cb -18fdbf18183865fa8f8bf66ae921175f1c623bc7798bb6fe30325591c03eed1a -84c2305a4b9a077d82429136a2fae3f601b52a16e83b1976322cdb5f8f0d6450 -924f4add3c9a87afef2005e6f905683cc623a01e961c089739e19a8ebd4938f2 -47defd754f64649f987759f2b8d0e7575d656b872231f1bea04b83d725e06384 -b2d125f4b875e43620ca11721977e2e0400d09a639567872c5a040354fba6269 -2f326941acdcedf088b1747e5aa67864ce0746c09e820f9c8e33ab0a771a3733 -d9cd1fbba2d0c9738a447886c211a1ef67f3db36b178b150de4c27551dc69611 -2fbb7f2431caaec56994380f234eeb0ecf32517ac8ea7ef41bc26986868a8cb2 -8a7c75bc343855518ccb36c9aa50dc9162d8c9e2c82a9b6b41dce1d83a96a1fe -b15b3bb6428068abc99d384e8d5f4501851a0b1939892b342cb70c0b14e802ff -54f67d1d9fb8476ac633862adbedb832bf471b4a82dcfde3c79023f619f496fe -12949b529c62e4f5171ac81d93ce9f908ee812a9a9363d1857ed0fbc77eb416e -c0693997f4cc74e97965859135c1e20b2162717c7ed8c024be6b8227333dbfb5 -23e123e2ff34fae177b534e368d9101ff1bc212b2fd80d6ccb95b7090792984b -443f79c06d2b2f5403000f9023adf34a3901314f5b882d877428a95025bfc957 -acb6a095f654f95f42c7108f70b87b7141eafb01d8baf5622727e2de4776ac4a -7bffa09baf1c487157aa90c1ab4dc8b318670ae756ff3bf453acde40888fae0c -b65652d226b1b0d50d9957268a2dc7d3e556130cdfba08a0c59c5582ab16732b -99e4752e8a4ccada72e97bcd16dbe80f6a3cd6460696a3cc84dea297f385943a -8f97ff600ab5bb95c7ec6e1043e9d6033cc98c97e43c0cb13c3ae02581f14004 -a68b54084cc731ba2d323afeb3c521fc04bfcf679f123dc66b472f9780fb1b7e -b1e9c7022369c2747c9741c25482801241e6e9d1815cffebd0f21c3c2d8e8556 -14fb7ae4e67a769e9d98502adc9c2ee00068cd804bbd8e0f13dc940b135d8bd4 -4a33139756ea0032033a38b30a19d5951813eb06408b4f1282c832231313b25a -a14e27b380b47d9f4eff1507c81240622045a698529c1fe7ae6bc32097d4074f -ac7248120aa0532c3f54a9b274733b8d8910a9a359e6e3c0259324a6b50a0624 -53d8ae995b734e9c82b9ac9c6b49e34b6f76447012b3c045e8054cfe2e283f8b -8a95b58e3af998f01a21c5c8e84d38e33f407268dd08265d7b41322f45df50b3 -ddd115d289688a7b264d0fbc0d3f57b4bc45595d02e25e816d08c989abfe27f3 -119c400941971d6f45d935cd56bf47c6df416d39d0ffeed57c4d504420688d68 -dd41ff7bbc5dc0047f23e68ebe0cdc6e25914c50ab5b036abc2cab5f7a1458e9 -a2bc4b8e0b88f21a7e0a8f0174ddcbc9329957ab8706186036653f24d6ceafab -55191214435ddb7de0aba134b86e69124a04e5c9626d8d74ca6c789642a7bf1a -3d574bccf87add70e2233e3bf4913a7de27471d107345f0a579807177c085b0e -84e767a95e92fff5090efad57048a458a67a09be7abf4cd2fd9488e5550bc504 -052f8cb37c9d925cd6b88088220d7876669fa7caf95926f3e6095a29c18d3a7e -a9888b3b138b70dc3ec317eb03d51c00bb2ad496f38402c30d9048f1fcfcedbf -731028659716fc0236bb86268179beca5daaefa2b12e9dcb4325125fe25f4058 -ae7d324fabca69558b8a93de15c0069022feada2d89082d83e559772dfcd6d05 -8b5ae536245c0728af1be6d5723c549ae9c473703265111ed45da33cd1c81be9 -4322573f0d93294d7681c009b0a2c37a4ea7c4e7800c5ffe08deefa18c8bb8bd -12dc9bdc19601ae6d7aab209f3ddd700f9fdbe7cf53a46870fd0c0dcd64089d8 -031bf4a8e0e4b19d50945008b7b05a2513d93b25d37fb905ba90bed1821507ce -a4774ee190eb8a47df7a034b4e1fba9f099e82570ea967562b86af62eeb0c754 -07bb1a9bc4ac831d8494abc10bbf8b94b6e80bdc189a1e787199687508595176 -20d191dff0426fcd7c04cfbc454322a94f2f3d618301aa5fd81a3b851c0d92e3 -a3ea488199f5108f78d16436a18ba5501497aad36bd99aae29f6a598ab25f928 -1f5d08cc177f790a32ec9457bcfa67e3cc4369204c5af61708f4dde15db9a6cd -c761687bb893639fac890fb6c62f75078d007d2cec77a5980398d079aefaf540 -f6434b0a3c7408e976035a87e52f163dd4094bb59cecca8f831602fbbb215ffd -08a3c50b1d384511875b1e2b7eb91378d3c00ba5339a0ef031a07d7811f5f8d5 -739873ab88cad6ebfdfdd37329968fa1db2d5975990e936fcae7d3da9959345c -bd6d78399f6ae1ea9d7c0d843ba166ea7e4e7ae5101fd064c019206617ab2379 -72d932f03c8ee191a68f8e569c85caf46cd7d4c14e036d3643211434eca67863 -ef5ec95088ba47d3e6c2744f3fd6570ef8793b71fc976f4ad35e4fb571d1c856 -992e18bb3618dd6af584bdc69358522357751dfbe21666c34fec8f491702c88f -5196ef6a92e29cab4b9afae6e60ff3c84487786320f0f6170e221abe12e1c073 -d29dd1e83a0d0fe4c5d3db7ff949aa602950ae14acbf1bacfde7c2ddc56f1311 -e33ec4c6be2044d6fd04d18106766d44495f73ac441d68922c3e9bdf0e954009 -6c0fb6fef686ac7c59664e255cfbf8d7958f398501367dedf0e99cc0542220ac -8a6152de632136f6d0b3e3b8e9c8eef921768f3d2db09cdf1c7e0a2872d3b130 -624879487969a34403206b96ed7bfa9f4889557010c9be37c3592993c0f44dd1 -7fd5c57bd93b563686047193d5f14d9203da916e22fc83668301bf756c628df8 -5016403e57a7d8f0d441091b5f8672f1d2bd4faa42182c5c087afa483f76cb5b -2bd61b1d129102018f85400a1d36feb45ab10c9cb2da5f370d6a8e07538e1ae9 -58bff59d144f54439c8d58498debfbaa37af934083677fe4c505c6397f47cffd -620fdb2a7bd35da2bc9a8510ac2acdc13e6f5cf7569c726a3dc3bcda959d3663 -b4a0010ddcb796e74b2e25bf52fa0e04bc813ab2553cad5b21f86cf69a043f9a -eb9cda04a2fa6cda34b055d85574ec9bd28dcfd76ba3e1962f35a8833275bf86 -9bd81923c06cb58f47c86eaa415303e912e0b9356824963fead43d7e95e5a6f7 -293aed17a670cb4f23277631f4c76ed9e83cc3a98d63a1475966f2e5c42bc0ea -111da2c3c83cae833b0d129ff3d0f43a44066f87e15b0a34a822b5b7efcd48ea -a0f59844e9d629bf566c159ba930576898cbc990601a6cdbe8c76781a0e7b6e8 -1152618dc695436262a5f6faa4cde7c38d1cf2581d9ea6f2cdfed603a841d1a9 -07b42284d1f883a85869c9cc511444d72466ceffac5c877183881c104be411ce -dc086ee454155a7fa2fe549e34a9503145e06dc953874643c1e026fb030f98e6 -f95a97c730f6967b020e030025294d7f7981dbc9f1cbd023c187490c4576b8a4 -0bb3dfedae11018b5409e107e420926619b054c57260c4e241a56cd1ea97f696 -c7c74baedce348b36d804e25eb0cffa5dae794148fb0f1a534d216cc886afaf7 -e0e1680e0f5824af3620625ebb28e34906489436c41c480fb716cb7150600893 -af244d1fc244076d444a3a276a9f784a7ec8bfb5e664dee91fcf72d67539ebb1 -699db0e4cf51a0df881e621a2d518607acb69029994f17bb498371c6b55bd57a -bce6ab9491eae706336bc41519addc0e0c3ec14feb5b6b4793ab1edb7af98cdf -653e1631d7cdccb2542d9d5b3e2ab35e9b433bc4adfef3a61c29b51f703a0f18 -0537394bbef86f952b2296c37c9b4a3981cc1ab667dbc9d8101664ebf685b406 -d10acdf0f0f6f6d7414c88d4bdd47226495893ed6e278236b823f9b53b7e9606 -f9c77d67f32ca3011a0f3f9d925da5d7d3684e23585424f1d2c5749917ccd585 -f46f0e537cdd69d2ca901b40550d1f66f4eb5a277d5e0f35c6c511e8fec1a8b3 -5465d97f3e6fa0ef92d9fccde9cf3322ef4cae69c45e1a632f82e7af9e53b304 -b4161cab520fdfeef04325674aa98a5bc60633e1dcad4a8254007fffbef90ef4 -52c3273f506a46c78c45341e557f6ebfa502ab8c0255e8594b1ff5e6aac2a6b4 -ce0a979c6527a95917297730c83b8641576d886bb38514e1905f0cbe86e3cab9 -4108f6ca3e8872d1a72107a4ed1a4f4719ff2b13ec51d5b2e2d6c5923ba77acb -aab7dbaf75c3a906181a0538a5928e6e1759911969bca395616cc416c4274a8f -50f4bebb60da583dc3aaef9dc772a6c395fc750cd43b6e4d83b8ebdf0537041c -21bc1e19ed4b3657a9ec8d030966b40266b83094d1c0d13e2d7d0ce0f6736360 -9e37567ee9b74ee0a9d9daf699b25a37c45cdaf9fc6f620947fa0c9309899d93 -b88bdf7393aa676d1bbcb47da0003423d0df204e9271a5df1af3a11458f1ed8b -dbd7e77e5476eb4f751c5239c98003344c82d6f332163d238e93d32557333742 -52ba9c3d1326f008bf93ee2778f57c11c0ec83c355d84f26542122471ff2a37d -ed92b9928ca95dad3d622877b860d80bd2db29208bd32442e8aab6fde632833a -7d01f641b0d56b73ba3e7bdf365e401810ac785d68e69e9df94d26cea3f1c323 -9aabd70ddb04cd3afc4e561c0b88a907dbefe63de2ee3ce592ce8feac071a3b2 -bde3b8541c378367a4963ab7ff7a4fd8b02443336d981b169a4facc4d8ed6c95 -2069d1eabe7aa05e5e152f3754264802350b4e9a6f0234743ff404dc9fcd46a5 -3ae8a0ea707e53b86351389f35bfca0d7d57f47a1bedde1b70f815cf1fef0e24 -8c9144562f56b73183ddb8597e5d4cf8c7cb089dac0af7a9896c9a2971eba344 -b858a81a210fb080316e60fe88ee3fa382a74f5f00512f2016159c274f41f67d -fcd9b3d0de01ba4c74f677e03b945b491b6fc9bfc183ef081b829828faa2abaa -35f29d1316ed09fa67217849d417942234c09b08c990ede511ea03b1299d680c -1dfb99da9c2a1df3aca243f017f89d640639dd26c1937635a4c29bd2d99ed639 -53db076362ce94830ad1a590980819edf991bb8d17242dd65da07288b6159af7 -2af093d4c2f0c71c813df498600b99a14d7c0e21c6079f31c57cb5d0e464573b -ac89c640798be879da0e6cda00d4644060e69eab9dbf1ecf6e356cfe4f47fea7 -608a81a7067908dba67ba8c23b9402668de33d90dad15d1d7dd5dcc20fe58e27 -03645549ffadf8f1e2d37607b84bb297f91fb72ea1141fc337ce7836ba53294b -e642f4c9bad340c712c3bc8c12a3ecf4e7c685a1f692a51f46e406b73d1c766a -c5ecb3e64cc6ba408c52c664820c40d8b727140752623ba0ffd152d58ffa4893 -70e39aa85a65317e379c0dc18c474cfa171c294d0d8a7c8e6f7f25ca30adeed4 -22da01b39929db9099b3ee2ba69851b01ade4c03c60a5a9af94a0a6985123e20 -2e457acabb88545d524a1e878be5ce0a6194ea9fecad8704c6ef3ed08d0b058f -2575bab149ccb05c6235ea748bcdfb0c21f3b0824aa3c26a5cfbd6905eab7838 -03d41b42420ec96db3cbcd59a37b9856efcd3dbf247c1075c1bfd82fefa84b08 -4f0a369c1b66f6af318794f8d8fc9980232117447617b51a3d81d1e09c780ca4 -02f2338c8adb4bfe1f21122235f7f82cd20f569f26c5a824e9c6ca93df89e56d -f0880511e5d652b1c69b0466cf45a670607391094ff35fac107515a3f57d8a22 -67d27d618073a18b4efca6bc4ef09fa889a000406677a1c9690b11044e483a33 -7093ab67b43ca73c16033ff16081c693559bec99e76ab5fe98c6c52239439ffc -c0f5e6f59300454df1af0a5069537fcb84037db4fa75b99d5f540a064cfe05a2 -bc9056038f48c8bbf0c45a38a56fa2e8fd87c3ba7bda19ee89b4c137e27404e8 -6b7d9632d64ab0abd7d55c7c3cd92191b9c942aab58f4108f00820f44bf0b4b4 -87022ecb04303456d7c5395a7e47edb94366810260a4b0e29ad43b31858253e8 -60fbe01a3947218eeabcd198bbf33e01fbad8066b12c31dd8187db3a1a4108b8 -44668de8caa9ba9e4a93fbe115a3a13d95d3ed0a69337dd09cc5af5dcd05703b -d9b81380a311c368c3f8a03888492e2c8217c07812c0f450a70c5a9f35a041e8 -198eea2c046b8817e331b93d3d1435c6e32f36031bad1060713db956db3abfb8 -7cc350a5a1e260bfb4d8808c1d9a6514e3bc764cec31d6a1c76f11c24b1a9683 -948b82ed945132f5f6ac84cabde365b7c35e8abcd5ebd8f1056c013f07ef20ab -8e3be119374be52c34ce41d7b53e6a637fd3311172b2d076b7347e4ac1c665f7 -8672193386f0fa918c531886b266305a76a034e98143d4b59c6f6477740656e0 -87a2b7149d0fbdb907dff5bf17a4a3ae04cd9a22a8a2343960fede26e90e201f -293dfc94031fa976a5c48d05ba792baa8ac2fdc639238601b490a4a2021c4390 -f4eb8cdf25ad41ab3c9fcb10c580b85b4aa8cadb0ded02390e05c130e1328ef9 -4c39c6f17f3e9da3896593f0ec5d99ddede197d2bf2042d2fe45535a5e12bb56 -6e15664a93abea4a69ef5dd3bffab98dc3622922a964da37b0f6e4b7cd1e2ba6 -c642426df1f8a714d49b78497c467c64e07aea394504decc5ed7166330e0914d -37f4d3cc91e589678428a6439ef68f1c85f3417cb48231b422215821673475b2 -5bf66c5f385fcdd2f839e7ba624a0202da091259bee81d337125c0fb5e5aef1e -546ef32c50c3718d8ed84f52c052f0e20bcb99845893606b98288dc5942d5f3a -0298d66a8f0038d9a53cbe7fe9d59d6dff482b75386cf470b97c31b306d37952 -92c60aeaeba33c45937e6a2b0e95a3f76303949983444d2de617ec7643ba0f08 -c720a0860aa8fa45da3452db23c8d5fca7a5ffa3eebc8b8ba7083ec75123156a -615652fb9d241756de3bfd5124b938627720583f901e4989de5f8f7862f94db4 -c19d6d0d3445e3612f74a480a6c48cae649d508de54e106cd7e73a14fbd37bda -ad81f673ac72835f34d7b56816e0ff406e07086ec3b676085c4e3b8e19375714 -de37729d23eb0f55306e88751a636770834207f0252cbdce23f4c8e1ee9e0cf3 -79a88288766355da37367a6364c2fb0c31cf954e8a683779f6adc43c56e2ddac -1329048891ad199059c41f623472a20cd7a16f24e87bbaab069278e61bfb290f -ba081e1e921b37c1f3414f3675836dffc269f29d23538ba0b6b6aca888c6908f -ae354dfbdbabbfb74e39a81fb3e460e7703fe3a53a52b308b7ed196e401e0f26 -cea7df80444876997b5f5c99eb2b28639fecb536f827ab93e0f1c48e40acd51d -841b11fc086d0758c72fb91a5ea65ca66225373143ed0077cd61917f4dc44a5c -916b82cc4b714dfa3fb533b091618a04d7d860c051fdaaaaf4990418a65e1f8e -989a0b0ea936ccfa8b9c767ba20c976499fb52157949a9068192213278e8df37 -4417e1c386e4ae3f59b1b700e49d2e35b752614b04dd884b061e345462770d0f -9d829a7def9f2e6f82b89f36172d9cfce19851ed506e06c496a6a23fd7548c43 -b4a14faaddfcf52c754f3a35dc854a55e0051636c266a4d934897ee3af1236d9 -eb20f374f96c252ce5e4a7934db596023afd0fd420df3365169ed7a4048b1e84 -81702d31972ef546aeed2700e88824e12601fe41ec5253e8d7bc088b874a71a7 -a12827956cb63d4f2ac6d800e78b213c324fd385a83707d62dca6c351e78d18c -9cdd0af2bcc498fdf31d27b5e387efaf2cdbed236b343ea9179c5e99e7a34a76 -15f2e3065cf561ba81520f188ee44aa6549de66b8c6898cc63c32393fd360741 -9e7326dbb42cd38eff7aeea50f6b939c305582db6f772308ec1e5dbc1060f50b -9e2ce61356256b91dcd7ffb970b2fcbaf33f700950247f29f5035144a55aa13e -2190a24ce359e284d4d69c500db7fbf31fe129678e2d72883311f165ccb909b1 -dcbf4dcc325036356290d2e3af9052db9cbe684cb50e86e962abe46dfc691f0f -c08fd6fdb19091eb0f3439effda71d3d2df07b171de8adb64e334edaf149acd3 -76336eef29b5745dd10aee7acad93dcd62c590df2c88b1783f595797238c928f -598b922e0ab9fdf5b9edbd44b35b1d41e309325e34d7b1525da510cec5d7d291 -93ecc002e4fd541b3be2bb49cd741854615603c93afc734f1442b11a6780fcf7 -b7e7b75837dffb8ed245fe85cae4106603b7697f379c6067737c618b70ad472d -73f4f5ce2602d60d723521fa84d12183222b00a139e144f2d403c3b22a253a36 -01bb1bbe3c676bd04628119f7ac8c2b93d02e3cb864a6ddce16618d725216823 -3134a298c911b4d80ab931524968e516ee1632c42256da451143beae6c2ec113 -e691be5f54b06d4558aea1158f9d5053e36ab2eef6ea7e06995141eec9434b99 -76981d7abae3d5753afe5589149c28fb9705c82838e9c3a1acf8dbef47e03227 -20e514daea8fde9f3d7718dcfb24abf266f2c112c1a9904d595bd7de7bd2362f -89701ce44d935e39920bf19a11d8eec055c5bdc70e62c6ecb36762d4b7d225e0 -a61bd51405281c20bc997647e69d51451225d0c24356af318be3ee10c5ad7dec -02fb48853ee708489bf2ec57116824a54176ba85d6168d08a619c862b878dc3f -467f7fcce0751cb433bf323ba10816ed10d8db8d6832d6818ffcd5069147f652 -8e7b44b5ff2ef169ee7c9c0ced05340813e4b4ed6a1ffede2bb66b3fe26a86a4 -ee6c83d862656551f13a56b3c58ef1fd0114bd6a76d09184405a75549e87e4e3 -3b9c6d419a60ceac5de1349b704628a715ac6987e1c7491388beffe039c53ac5 -a9eeb526932f1bd0d57b5b21e2a02bbd40f911b5da88a5ff8b9eb2e4c119e342 -19834c4b2378b5031c4cc7f7e3eef6d4d1a041e26c4f95e6b9a9bd0193ee3854 -8c092d746ca2cf1122f85dae645beb75e2d53e5905d94df8f4b3cf6b416e4f0d -ded9ef543b1503e003a875e0e67924974e20377810ea231d444f848e8aa8d8b1 -c8932ace417c78b3ad0b4ca4ab38b18cbb08ce8bc08c0d3b7aa0b9c308163f8a -7e1969fccc3092f6ce687c19ff401a52510c52a9c5453586fc78b1b1b1b64abe -779d7756b5a3d1a9f1b6d2b12409efc24c20b2062a1d31881bdb3ca8c5425132 -8607404e532a58d30096a7f934c58b93cadcaf93a73aff333d3df0a77b98c00c -02e93be0af063c9195fde065fbac95d92a03ca5ebdf55ad5f76c559232db9cb5 -a4b08d5c34a72fdbeb1ab6f86661b100f8e4f8d0c9512e51bd0746060ea82eb3 -b592fff49bceada8cbdd60fd669d947482068d54d9923fab26847d7656835bc6 -42ec15e8557a0bb79994ad670e2d45d240c5e80f0d42d46b83b7c233299cbed0 -33b126f5b1a424ff16807975b273e540c5678cab5e01f6ea5561f87cf2119ea2 -41ba4397f9e47ebd9878e97ea2a8f86e0d8a84daab594385e7b64f4730cb24f8 -9d04af4d6f362f6be2fd1133d416dde82b2b7b12eed3f8952ce56b94d225fb20 -457b8b765385173c7e5247048a2c28ee49ea561964787c88a36b2efb1f6b469c -3e6122273c8d8a67ecd79c9105c9db6e5fdb5755b5d1764876273d2265f1cd21 -2d3ef1d1238255ce131884e6177ceda204e3614a0c834b79674bf0537e811a3d -9a64fd4fb998414b988a4b5d3ffef13252e4cc0d760e4921f6881fe0a8995bbe -3531a62cc3572d25c2bb9d81a5d87d6afd659ca644e99355fdca71acbd5f0895 -8925af5784129704383696510304f31ba41ca819882d6dedc9e22fc2d0aed84d -5e655a26ffc4d09a915de591d23b003e4443885e9b30d51e9ed28a7355ebcae9 -8b448a211736401c49adf53fc09114d66dfe4714c902252da31b8d67004ef79a -630585673786622a2c7bdabc347685861d7a9c269105dbce7278d9e08cf5b701 -538e4d3eb30c2f32f92f505a96a946425fd88fc3fda68048dc42f9b4c1954ffb -3bab24852a266652ab4498c77eb0ab83d1d30463f91acea571974b67001dcc1f -418886d5ae650f328cd3cbab750c4bcfe46d4e5ee8de5c1bad9b81d5f9e628c1 -7a42e517aaa4622b0c9faa2812bd93d0255b5da46483a3e5649e9866f4d98162 -95225d3ba2ed93ca7dd83e808300c51ca5f94ea47b424bc81d64dc87fba6fa67 -ee21b51a255298402beaedb508f9aff077bda0ca161dc8dea6cccd5b7d038901 -cc1c16283ed4b80541ace9909fbddc869687a2f9b7ff10e9fb8e29403178cc86 -c4de3177a319d2729485f37ffb01fdf5abfed2db975fa5285e780b76fc41eebe -b675ee8949ab6bf9e52e8bcc14fca3188e87727e24450031af0ae66e0b7eb450 -022e2e36a028f28dc2eb256844b42f70bf1508de041e93f215ad3d4fdead1e48 -3ebe29f125adb652ae9a6d5d44237c2e3a97f6ed45eda51b2d8cdb856dd521f6 -9cb87df4bae78a82ebd9b276f4d866c89e254dac840e90ee808dc1dff180f434 -aeb656be8f3de7279f731b333ef5407ca4ac98bbc120fb9ac3dedb795b3f3428 -a51e0a7d2bea5b46912472b761a21544911922097ba38c02a36db7dc4a9dcdec -82a3ea057212c03d8e443d9421626162fa24b58381cc59de60091de0cbffc305 -e3e8052b240d383a5eff8bc002869ee54e7ac6fee709aac6a26838e347bbcbb4 -c706ecd1e14ca4c66dd8c9bc4815c9e58fb8f68005845b6eb5f05108976c01e8 -1be114ed08a0831fc3475820ab5ea303923624401bc4fb6bc01cf82e46d5fcc9 -2fb8d4e3b4f128f451a448504508223c3b6bc90399324be021f0d77f1b0eb859 -daa997bd9657dc93ada20b47750d164e90f46002aa8ba1d42130258d12f54b2e -e24792aea1f448a8b87b940dc3ce069e5c55bf11203730d638b57bcb04b21e61 -059a48942cc5e52966e13b95a6af9695c7e34955582e5ed28569f8b11a8e98df -271232ece486fb2d5220325e6d7cc1943f5c8f86813c842bd11280402b5cb311 -2daaaca424db706ee5493dd03ba573961b193e26b7c14d5746beed7204a9b865 -94a15c4ffa333e787c0fb78dd0364cd9727ef79c1a60b50ff85f4d8edacfaf94 -de2efefc1f6d373903017fc4b456109e69e38d2474904a63e1c33d90f687b5d4 -b6f1552b13eba7c5e329403cdca70ae02179ae25ea88baa206b111be3685607b -f80cf03ee0605cb0ef090e85f64e317c6dde1368077fd2f60268fd8293fa46ae -65d1cfed24f7150f52cb93a712e290321d9bbb916c646070a20dd95afbfe1a60 -63eaafbec0ff10bc8409ff145d37108cd9d1b60670a737293b11bf475d0a7e22 -9c7a846f7700b96db683497b2af7730a50b2162408c91b89ef16e3f87472a9d8 -eb2c39aa817b1bc16f0cc1abcd43232932b0f056e82529c003e8b3edecc8a2f4 -fea94f2784af9c218d0f16e9e2b4c15c815ab44bc4d1ad78c264882aac71b13f -53fe7ed927e53dccfef4bfab785c87e45cf255b5940b82263920a54663f2e056 -04f401805f4e77dba4fed097e5d6ac0cb6d4776732f26ba96adbd8a1604768ce -33d1225ec1fa2d769b5d8e5454c1d2de6f993754124c3b537ec8847e7d403ea4 -23c0940a132bbd7d1de973a4ece55f1fe7bb1b47a860b8ecc9fa127dac775754 -0ed420fd8cd7ec4d654b6c19a637a0d42d13a5b8386c4a2d44158dd322d2d8b8 -4a1fecfb090ffe07dec819bd2c0e60bcd167785a01af92f74dcedff09c51eba1 -34c1e3ecd3876b1eec440650fb0456147d991b72fa19c2875fdde686ae20d44a -b7e995b97f302e47bfbd0d6eef92817fc2e1b574586cdc02f2f9f1762b86b62b -f65d93d12bb75fa0b880c338900c6427a071f1d4b6083c9ad8863f4f3068e550 -08e562680a2fab888ce1352bb783a61b6a42f513edf991f27833aff151f347f9 -9d473d88b172e0adbb20c2e00cefc36fccbb64f2605602e856bb7ba7240d6242 -e42717791a42e566aae40e599a84f663ce46970c90b572bcf3e9d870b44d8fda -fcd70fb84573e7a179698d7d1c6f63e944a3db61e059a690c6d8456264637291 -26911dacf3d9be56a90f7ca9409fdbb1ab71ec0b792a729c3fa867781dc5b73d -0fd1cdcadba6a02c89e1e2f13bc06798534ddf787cca9df9bb06a548180497a7 -754de3eb43f3e3be543de322dddee9bc4f3a26eadcd64017309b6c48703ddb4d -85d08374d4f5681bc82ee987a74547cc86924c565f9469bd7859afb68e30599e -79bed34c4397462ab2668b9120891f4db792c5fe9d76f5028fe586b0b1220fc0 -5d76af77941114d8041991e9b595ff6aad2a720e1e6f58f54b604ca19d1a561f -9a1f3f6c9d8e9f17c147a0367ed23e8153fd67f2d32f74e580fb606e28e1cc51 -cfd09093b82a89813eba2ca76014b814328aefba1357ce6eed45a1033b1dc4b9 -e7a68b3a578fdc44649131b5cbdf509c3c4141f09246ce69a9746f381f724660 -84910d734f1236885ae905a791bdf1f869fa009bd3d05b0057c168252f940d3c -72c58517bbe27e914659c385656b353b9627a6bef6ab7bf6431da9d93035cc40 -2128bd7787460df2bd5ca0f83e42489a8c384de7b4c6d9962253dc9450d816a9 -3d28ae297d80a460cfae38ee32aeae23f36bb2b081deb092a0a4270a05253333 -bf6268b8f5a4033730a63a079958cb2d5568d513b1cbd579ff5bb11abbbe249c -17e8e9e3fba49942c1ab6c5b89b06c866dc552276bb659a99da67786d9f1a134 -4771fcc7c6ba564370521c36774626895d53775e254874050e24f93e81568ed9 -307bff46cdbf3aca9116e3e3ccd9589e65111c558899bf9ab2ac8e205b36afe0 -528cffedd8b9ac9fb0f105f418d05119ee1ed843177bcdc58764414eecff4f04 -be10bca3550d2ea11c4073ba44fcb2a6594b05b1b95b7544bc38dccd23f61ec6 -b4c147a43c299f8f12b7f67a3fbab77cd44a5117f13d4ab637fb96fd5a4b5742 -ad46eb6563f580fd05b484b095cfb2cc9a0a43c85ae048d5da2bd13ca1e03620 -c6019832b8c0d17609336702bd240501b5e0b7be564365675bcd3a474b42ab45 -63704cc986e973d7341386ec9d81821669d14ddfaeba4bb8b7e7b697edd0e845 -6a6f04d36d7b5044d1f3c68c2952051a73c84918f23b7fc56a77a2a9ad97346f -045579479ff05e5161ba9528682747a7e628191d6c787a0460f964881a04178a -31fee3f10125b7c3100c59fb7b420e822655fb3ff5c198c8104e42ae4fe1758b -aae68eeb63204062afc4053da7a7e8954795c46b8dacee545008e5ba7e5279f7 -0dab2481436d9cd51fbc9debbe2869b2f994164d05940e3c2aab9ccb52d9df47 -af127ccc2bba4c719f59bab12cbc6312b0a9f1192f923c4e9ee75df86c5c9b34 -ff10bf1d567112d96bc91f6794cb5450fe9fbafeb43144c64373c4fe3ce31c60 -3ad0ded4d1f505d3124b97854102d08913c202fb7e334bb58ecf5c7d1a29e558 -0e65e78580e8ca8d75e6dc118e31787c2e122b6734ddb83d1904c18ae9027e1e -2222e5af6353abf633e927af8ac0a84c12a756dd2988f9dfdd726045ce98cc8d -fc7658f8b2f40b9f8a2159ea727795fae99b4961c6e7cba0e40796dcf6d2a61b -47666901e589243f7bee9ea4352eb869285e5dae6ebc9ef8ede5bc8004484fe5 -50119d23bffc36e15f09f7f99bb37a82fe7c92731eb94006ffbb131ae6eaf82b -443fe1d5ebd425e223c4574d6273a49653de31893bd311e19b5bef306a0384c5 -a0bad9b7902b52642e2d1ca87b01e08b420312ab48ced2b982dfdd10ebf34f72 -c0f5557c17d8fe4e7b88771d0a4b0807dd30843a9a242e0dee8b5d78bbfc5f44 -fef61b649f19a16fc5b69668d3960b3cced74cf1666dd2a0a34811c9f5b8f641 -9bf7a2fdba3869444cbeee72af90f55432c3e5ae9788e70a7e4ab7855edcbc18 -2e42e443d9ae0502c50121b5977cf6117899147b47d3e0ca50d2274ed4683cbd -c5c9d532e2f790bdd5a86d1dd56eb947c68b059535f79573850f535d9b01cf76 -ad8ec674c3b73b6977ab0a572af25dfb987fdd4d9ed22694df5b0d507ebdb0fb -a802254bd192203e79cf65e3a8699d7d73a2be9008e32a0e2543fad1230f946a -1a3504a7fbf2e5a3c3cdba0c353259cccd7dca2a564157ffc9cb55a37a185833 -7d9d214fc1712eda103bdeccaf1e160b55310974a0fff28337d4d86e6d14d50c -dcaa4dc072458f32df406a3901719ab2904e6fb493420a850e8e2639e77d94d7 -6af7e633bea9a2257312de91212b0df45dccaaa4c78e33756ba05fca0e407dbe -92d88e652338b0974696530e12af206241d00107bb22e34f6fce8ab16db478c0 -acce4702bb633772a86755643db3ab6096a6f465fd3609c784adeb63bde3c6a8 -58547246bfb22326d53a6e81fef83e1390e6053dca839226e55c8240134e411b -e46285d48b60a780b14b9eb45bd01898b529ff5b4a79b7c3d9fc942431135d59 -160fe9cd113c7ac83a9a032378b37996805bb1f927815ad43295374940d7c458 -1a68391c410f3eccda64d2256b1ee80e8ca89c7cb714f40a8689689204f7a91c -15735ca9baf3074a05f67b35f55a7921238049e9dcbf631591a23f4a09616bcc -41eb8741444dbf9e05aaa34a722c05279f1d1b0752f51ece0dc119a0cb874369 -8f1f8d0815ba02be8a742578b1d46585e117e902721437090f8de7093e42fe90 -736d830bca72006f00c48dae33be441ddc4e56b56adc09eeb1be77825adb8b95 -1b798ced887511b5db87b745ebfe3a3da01ceb77de0b089d428570bf8192a00f -f34ba79dda3b51d49465e617d30035c416ee965cd689bbb9a26c8cb7eb55a1c0 -f183a4d2c35684769acb193e699ac248f5701d72487c16f8dce907318955f109 -fd49c94e525d6e9a38df6e60b9e30340a898df4598e5787f0af31b65f7d17960 -e0d0548c1677feea07ea303c37119c18ad948f64038141c6b45cc1c9c352f9c9 -b51435b9211936c5b736d451035894575206d77f231e78be9a81d9c33d9fd0f5 -528a8fe66a43ebb3d0cb5e9635b5372db1409347413a533777f8fcf4726930ce -b29644779f3ee4da634621590ce9831bec5dc88f5cf7dd4ab173277f4b48de14 -c1c6fc34432d859f62c833580ad57ef0b52fdf519912c9744f90e67d02c22a86 -5497de28f4d9d8c8fa77efd6822528f1bcaf1ff9cc934111cb2235c1cf753c89 -d070a1c322d8cc4de90700cc5a74484acf62471c1be4005e20d8dc65ffa72757 -c9606f75ef11c5903714ce77af93f35b3cc1acaebdb3ad361873c5c8483c9814 -5bc1c7ec5737716d0c912aace8ca526c39eec516521659124928e880f6546f64 -124a4c1012aa640d536f33d2e0652133176e7ff09e45823519e7a043a3ab5e13 -a351b79e1397a5a8f375cde10fced5faeb2f56c3c7bd4e38b984a57a171e33da -dc84f6a909dbcffc28521c5e651fb6993e84e225e0bb3e6ece2c9903e8b333c1 -2ae880c163826bee6c3ad5834383b213a35d6d135d44f52c933b2e0403502397 -c89032be86a5569b21cc21e5eac200a1ff11e94e7131237842bf49599dee4763 -fea582cd6705fbfcae44b5b836d0196c39d0deefe298c9264977bff13fe68c4f -f879aff708c71851f8ab9b41a0f5d0210dc1a390229d091d13bb9911537e2ef6 -f44b8553da0c91801eaff991e55366bb474f1beaa8cd89f47c215efd9bec2e9b -0a9aa8aec7a8647d5e68df8a16e9c7c693e5e4cfef688590a00a8d28280a7d56 -71215906e2b97a147a1995b956ea83ab8fd85bca963adb46f9af15fa8d0d3d1b -fd0d84b8bdc06a74657234c8557bd77a1d0479701647d870e08fe34eebb0dc27 -24e31b3d938ed8eaf9f00dc9478ade83f6d9cdfe0712d88b11127a4d94bc477c -0991b5934dd927a90648386380bf9a61fbd37c067008dfd208f98c41bc74eb03 -9393f6ad7b29781256ff3e0696daefc71b53b7257444caf0284ba075972147f0 -814b5079b410c7ebf80c3d092837561733c8a9eae8de802a7ecf12e39cb86838 -a8f0f52177bca4321a461921d0fd32b34cae45c8edddc8315c6090ec54a4aa81 -2ce3d5b65dd33e7c0003f6988c427a7c9d7ce8d0c2f7fc2429a19ce0d94f8ec3 -a2112fa5aa1fcf9a5ed54ee4648517df9735029dec11ac8df02045b47b444417 -56b1e606b0b279c5813a69bd37c6802a21ffdf44982d45f639123bd9b98177e9 -f4a55acaae002ac183ae4c12f5db31a9e69e427c69bdc3392fcb1464491023e5 -68b165725a2eac9a7e6e1e7eb43b8fcfe112f115d5eed55e7edb96f5cd5911fc -d45e31b8272d8a8b7ef69964bc99b14e30f90859750432c17c0d24bffe922db1 -87e3f1605fdaccdc3a3245be9d4d56ebe60909b81a1166f2fba7ebf06d859365 -5538ea90c3acd0cb357c1b0a653d98d63243fb95523ca8cdd7c3a9b501f63e3f -c9688be1a5a1d4dc2a4cfe23f53e9a1539a09d5ee5d4256f1fbf14fef27b7939 -261b679ac70e74256503128871bfeaab8f41bdc771f29b68aba462bfe43ae9af -5516937437cd3298bed43fc933030d40282359d973c25b381d5c997a073cecad -f93d6711ca83ccfedc2506068eb2032d87144e323250c987f6e586324fe44314 -cdd6fa6a7218360f79f182ab3f94bb80fd17548b424dc9fee52b3b69770dc634 -0b2f061e6f9c187bc6de481b731dac64e6f3584d778bc2c06c0c08504bd2be2d -73e3cb8c43d628efadccbd04e5e9c47db5e6fcc6cb4bedc49d5e6e01c3fdb564 -586f56c8e03c39ab3f0e4b1605534ffcc2163fb26179bafe6e577bcccde525e6 -cf5dff607ecbd7174f5afdd1e97416be0c55f43efa028cc9147dc7446fae5a69 -7318989bb15169887b1ad23d2675f8174c116b08b2b6abf9071c815f68a051f1 -5783b852ab99f9d31bf7f45b0d706a263524a3f323e4047d936a0dc557482746 -cf001de8464a3f5fdac1b2641ad42ea4907530daa985706f02c2159b85b5c1a9 -e4ad5d1ae5d362c033d168d30fe92e32db4d094075b5d789d478de2599d6f952 -e2f3a4f716defb6fb70dff10e395e58a8548a6c8216c9951879d3a9d1024d7aa -f245b59d49e6feb3c79ebb6fbd672a8046486413d95b6e72af70521e9bcef55a -152365198ffaef0e3ac599d64915fe9d9fbdf0006c2e0858cda2e0c4861295f2 -9e42a73e14b8e0375b46076cfbd3d9fc2415312095f81afa3ee80a5282a6014c -b4832b886ff771723049d1af7e68b0e6e9d6f735f87accc615d3f4574345d0e5 -51ded9a939b4bca1cf54af16d43b21f6dd17d7c05d34d6c5e0f9c86a8c686c5e -a84fffe4d9d6473f08d24b0006eb134e9f5ac8c08a3cc7d129ebfe017deba14f -305daf6d96e5280ea1de141f4d343c9540ef1312de1224e942fae877544e375e -38cf9f60f7b71eac46f29d2dc5221b3c448ffa0eb1821f4d9bcaaae6189ee272 -184ef912d938e15068d33dd3f91eb5a1246c5986fb05a893ae634bd0909e2df1 -5dae479b238061917e97b03a51e076e43197bc66679b9257dc93564dc25f269e -5cf3508e73bb2c28fad61a76245c246b4ad717eac7f088431168b80795ceffac -d22aa776e05fd5665537e0127e64e82c3223ffd6c0d1f233be184c495ea604e9 -419387d3cc1e5ddca3c0bc3fac78f06ff91ea2444109b0d9bb99820d35320c09 -b4e6a389c6749eb48ee51f4d59eccbf942257d45a4db2778002e8d027761cd73 -6cfc59e05642b7ce23a84859de14001f13e2e38ffb0db84c941e1e5834c7746d -6c4f8e2bbd52a115f4f5728f4a9cfa027af75b443192b00b3aa603122976c6b0 -70dddacf525cb173d8d630c467b10b63fb1dc47f5128e3b237f82be73cf51926 -801df925957c01f696d2ba60ef285c0b0883e5a4efc82fbf007b7bc24be53cf3 -c27fa5c800fb825c0caea257cb6e666426a2a141b353ff4194aa245f2b8353be -d443478918939a1c8107d8a80926fdf43cb10480472d6bf185a121cd2dd77be4 -53f6b8f8694d3624fa4a8dfe5e1f75bdc841bb5f2d2785d992c03ae02e0d4b05 -b04a1c27d06921a228ff5be300554eda56d4e3a1463e9cec82f14939dc6200a2 -bdce7bc078f5de2c51402de5b80a2bf134b68170e1f2bcfbb27cc65e4084559c -f970493feb377ce5b51b69bae3472113446a0931249bc70c763dac4cb1123916 -8fcdec0e834f06b1ab508a78663bdb1a17e05a7095dded1790083bf2d4199a80 -760b5b09b81d60b552e17979d74e64d99b606778c07c1e2e2498882534866842 -562401b57032406bdc1b3a07e8c4230945b7759545d77d9998e9cf8980d25242 -96df3775fd46e228c7ad6ce1d0145ab11001cfbbfb2f0a4a4573ff636e497058 -c7d5e835fe4c5651a2759084849f7fceaddc32c716146e89e4fd43162eee74a1 -40cdad639907c4b711e167f085ce205a87fe439b5dacaefc3e5ceef80fa9ad67 -9b593ec53c29b437b808179b3e03c3c2c61b98175db3ec5e97e1afed6136dbd0 -bfc461be85de4c40b041664876456d179d8988b3dc849e7cd94734b9907b91b5 -04312b37f83cfc50fd9b5174312995b1748cbcc31ba3593ad27ace426f50b2b4 -69538141069617e389374bbf7a790253aa9fdb0fbadde62e117d9de2117c5ca6 -1f33365d73ec21d6bea6d4ae694da4c635c3ea1656f48015aaa810879f467ee9 -5f58beb35659c59ff33d79ad6be7b9b2214e71039d3a33ee8d4e3d786d7bb4e9 -6e9b05fcea4bf31b982643f8ed7086df60e2e8a96cb791a8a6b7db402dcc261e -a2fb759ceff7339764acd4bfa3ab699325b29c48e133f07af5aa9b5862c54676 -c90860a29a2a124f7464a0eb570a3605f3f1f4e2a564348cb40bf8c51752c8ee -4094f82199700c3ee01034adf38ed7d44f1d016f2186fba410a3da169c4b7d62 -23c3b9f0fa2f2148dd8ae9dc0e94edc1948fd4ede27b0163ef447b49e9288bc6 -91c47105f1158631498184be4572cbd8fd5e5a00b107f176bf01b288819b47f9 -e4d77cb96ce62218e3ff7bdff1789a43c53e3807b924cc6671d871dc3f294780 -c0de4423d6e0755c739468c45bfc03c00100dbbbe1727d83f41e6a375881e511 -99e319e79e3fa28000bc6bce1d14d4d841b2889b1bbfa9664fd4d7712ac4df71 -3972c153d6feb521cce90c5b2804702c904d13aaccac02edf02eb6acc1b4c108 -f2f0752e63c023b83bb0861bfd7aaa9e3159da7f3be0fd1ff6c3c6e9d56f585f -a01de89fdd6c29595f705e720c3074324ac6a72d1c556b4b59188c7cdcb0d105 -af0234141c27552fb74dcd88c51720433d5eb183652907b575aeb5e3976d5342 -894ebd34ca5cf54a154fcd58d4b9a9806e2d76e52c2bedea296a25e8163d39b4 -86e6d3fb64c73288c8e71fc27041ee16d5117b93e7d8f0074ae8e1ac24cb23ed -a75b001727ca89b86987fd98ceb4f03b70c7cabd5c50aa3ade826fe3f3a9bd14 -7679c69427581eae0650322769829eb112240bbde0b158c97fc0b46b3e8ab914 -1d4e4f9a6694ea08db53bcb13c545d1e5f5d6ea986c73977c4315a2639071def -ef36370575fdb61c6889dfd035d5231b095f8704cff45648980324430f3a6c62 -5b63dd274f1d87de3b1e3b24da015a60a225c4735c4385ef408321044231ce02 -5f1949c7e2388d29176c548890cfc93821d8d2ac6944441cf3d3209b56fc972d -29fc3ae13215c98c853b01ab1f9a8d9b30439141cb3f545a6af40ec146d2d008 -6a3105cd70cc380889b7af609f4c133e01e16c4fc2215d73b519f890141df725 -58a7e3d11238edbd420554bcd732967687f54dc91be1ad917deb5eb1e08c9867 -3bd1cf0af4cdc543dd699bb5d9df7384ae148b646e76d2cd50f8163833a4227b -c6188fab9ad5d223040f4c2765ea353bcc962ad208c68bbd0e4a46d099ac0a7e -c1d709e087b331ce59ff3f8778eb3093df6a408fd32d23c2f7fceaf8719b11bf -f3e7d0e1071d008039175b88cfb011cc3c3b7953446a4ae0552a1a7152fafc87 -038609a99b748b21cc86ad5f6284ebb4e620ec95dc0dfba9d127774b91405b3e -3257d883692f3d364c38eb606fc2445b2b4a0f6f69ea097784b3859504266b0a -10e1f8f11b47d219f1e71021e55e0c5184a66584928b437a7251503dee725dac -33b8134dde2b23145b696b23d2b9b06d8ac66a2ba926ad3b7df6f8ff6d430a9a -7cd2c45a3b2359438ecac1b7b45ae9f0d90f9e39f8758018020586890a02d87f -7d683d7dcb9b490fdd971a2f372fb292b199b2cfe3d469367a4752aca8b9419c -6ac973eeabbccd6d2b47686a568ea15ccda43f234451e74a8216972732696fa3 -c658360e597e3afa42df4a2a0e26886db8c7a1cebcbd01901d1a212ee8d9a03f -4bf47f9cd47a496bf7c5a13fa0b292bafe80683c0f705598575539181b65434f -0c9c6bb4a3dc538e7654ce286a68c4530003d6490fe093b7d8d6297246ca7bc8 -300463a8005db6477892abae52a97c82da0a13bd63887efc0ee782f484577be5 -fe1f6916c75277ba966d1489d42185437023c45c0962afaa1144f60f71cd8cb3 -1b7f6d3dc06be128d21b1875bf1175839fc6377c6fb4e485b22020b2df76a5b9 -e795757ffce8f1e3c6793d5cd9c80cee2a834c6d0764a8e0b8f0751fc7dd3807 -3b460b265e9adb93141912148a5de598005e078c2189effce12c647a271ed9ec -c08308290065a5e9bea330795179bbb06ff0cb7d81f6a05fffa813093fa03d24 -70a6e7dfc57bc3299b6e03effa9f6f111ad89956083da92bed432d1e7fc45e4b -ef54a003dd01e89ab797a48182047a38af270165df6ea462dec6e50081551733 -bceb428c0f42f47b2a5bc72cf90cd75f544915a42e70cf3c2123cacce601aff4 -b427eb69c6db73ec7e04eb42dd49822877f8946ee406618ab1d865e1e818d50b -2c97766fd431aea72d8f649ca5b49d2824c2b315aa3f96e15ba5d1061fda38d8 -fa30d45ad2cee1592f6f7e08de46b6a31a18d4303c31abcdf4599f96b80582c6 -e32a67faae19568af74898b8ff05ce6f2d5d2fe32632fce899f10bea6237d656 -5d7fe5bb3fe23829c1437d2ed09cc70a65dcb048985ba4136204812d011b6ebf -8b04410ceb1a1392630cd28fad5f97fb5f2da44140a4e549a2a46b04b400340e -7f56e62ec9df4ad6234b5860cf2d3112d4ef7df8a1667efb641a93caa620ea8a -38a0a3dd70a1aa04933dc86d21fd3e35dd0b84e3725a5f135eeb88be6942f968 -c7986108d000763c386beae76341ac329893d609e6d96e9e19d886cdce18e2dd -a526625c2d22de137b72f051b0833f42f396912c850f65af58172d278014e6b6 -78c8387af69c1968f0875653ea3de21a9d1c068ea239798f04af0ccbbf0f1452 -3957b4e1891e7fffad1851b47efa95afddec6754c57f40b671607d800d2b3d17 -8a1f66ecded1aec72bfda1f548c7f680fea29d1ac715b09566b669bf6a20940a -0425a8add1cd8ec7a2009391c517e0c9970160b7ccf4eedc3ffae708d5ea382d -79f5f26c6a5d2a572676f4d7acfc78e45b5118b5536058761b40a75685a3f76a -92a5616237d6f8234f8571bb6ae93dcfd3c89e31db3ce93f0e435b374a02f8bb -d44a3d8b5c6a963cfc4b375a67c209bf5f0d5ac661789f429a568b0b2864279e -4a7c5ecc7524aedae5d7222b474ef6e8610f981c3ad83be1970ccebccca9184e -34eace6d5c0afe47c0a671e33692c11167dd33b2a8c37a61d3643b392065a684 -3cd013154e0630b25d7ca3e6a07f6c0c4f0c9fc7c3cf98a90b595d33e06a530c -bf03c7484223debdbfc6e1f5a0c0dd96e67e488b386836e1ef0868d054a70199 -1b9cecf3428fe9f717d544bd6c4cadbf70e28be16b6bdbd405aa66f99c4c8541 -89a2c6241fe0be5a039184f86740a80dce185120f98025248c98dd27c85bbd2e -8a3029ec74467841c9a2f1572e6e373e25453fe22934d7b3fb77ff01e82ded42 -57702991f77957e19a4ab347a7fa1eb4e6517605c7760778439102ae5b8d24d7 -cb39be917025461fc7a4b7702bd77b7035924a1f5ac9c93f032e1e4400067558 -ea8628c5f2b7105dacb356519ca42c5e86976a4487b52664f005e8a8cb1e991e -f2b68ebc3a8ecf9298a1afc9cdba2fa129a674b7eb8059d1e5af915d47f570ff -873d0284290a01639bc71494ff7e8a64a4959e387140530c5e35389f0374d555 -2deb1ee43b2e0c6978b5de0ac21cd967479a998e5e222afe14a10420d54b21eb -931846c803ced26bd7e9c10e900a544db9915e0871bcbeb6998d0418e27e4cac -6609907a2ebf2e616c6328ec657c7250e9577bfeb0fd38ff99556da280251710 -ae8ff3ca06b375273ac4bfe6c05690ffa2cadbfd30c868d1f39a08f5deb3e709 -e0025e2d20c572fdc08e01eae126eec2e4ab9fe3675921bbca5c218d745c7e4d -c3069a1a5930ac49bc4b637fd4cb356930e4493e5f22253e2771e8afe03338c1 -809d8d5128927121d0f4ba0ea092c97b297829372bd6fca45b62bd030dd77fb9 -76f49ec35ed95f8a3d487bbee6e818c5ceb24b78d201e6073696b923cd662915 -bdfa2a2ecc1fd9fe8904f3f30de825c2870f2489b36732b18eb18b04c6baec7a -9c8a47978cbde08dd8324245bc29b13e63d8c8b99709ca27ae470fb0a2ea9061 -c270758e8c45bb005238ce3b072b5af444ec29431736d60cb4ea901ec6af98f5 -c43c6751b60e2f9f9d39f6a189ab66f34174f50d6f739b307af8ce32e4f166f7 -a651eeb2baad8b5430668c9c9740818fe6c2874b844672240be918bd89ab33c1 -2f2f2f0eb66430c5e61015f71d62f0189fef761d35675364f9a68688784475eb -d84b4de7339c159c3761afb73f9671b4e14ec91a622b25da97948b727d0b3f24 -e8e98fe9b96b34e2a2e59fb19acd8658809c324d499b28d87b325c3e156220b7 -d53834a7f4a3eeaa6140cced75eefbd48b29c2169fbbf8e201cc654ca06733e9 -ce49923d6f678b448786c8439ea3a8590b1627ceef3d6a5f1356a46d9e071aef -72b9020100fd8c4180bbac2bb9a8f414094d73a9883c338ea9bd264862c9762e -7f4e379d73710dec2cf740e45dd3c9ed4ba7e857b95623513d755351e18041db -a296ace76b02a41901e56d02ce3e0067390a423b5c9db53a5de8c3a4485429e6 -fe477472653b184599ad8cdf9908b7d2119cbe9f2b34fae6a35c728e7f93e9cd -d893c9a5cfe7c16f939391383c4e3bfe77898f5c479629b5cbcc0bf665c17275 -61a49e128cfc0e7f90c2093ea94ad4bd4c640eba3002df54d59b5db47de8eddd -8f5d89325d08c7ee41e4119866ed047b78ef942a3c3606d0d1f3ad001c1cdf4d -e74d078629986badc53fb80862e0fa8c16c4ca8ef02b1f1aac654ec2c608ac61 -6c6c5c653d9c05444362864ae02042c61f71873743ed8c1765d665d56ebeb4ac -c547e28b954d997cf6b6c1962444e1159c664e82074f25a17e812a3c85917f6f -ddd6ab172a30db10c47ed1cd1eff739d0d5559d10885c83b96d100abd032f83d -7e6bed6fd487854f48d5f1763dc5a4ccda76a84d8bb90a5d106c0a287ec17e26 -ea59e6c42e89ef3167697377495a0ff1209bbfa321e112651b866aae2775f76a -bbe4d2570e4bc5d03ceaf28a77943283d2cf2bf31b386af1544b7019005b9e6b -e3d6894b31082f5e83e224c9a0f20e6917ccfed422ec9f8bc37283356c2cb7d4 -94902499108d36f0620d7ddd545ae2ccfbff35ee2ea115f6e71638ca05c9ac71 -e7e2d14dab199baa62179dc1bbb14ed19ea92f9c2704ce37d1aee07b8a4c0915 -ed54cd5c82c9653cd4907347bccb11034980be483dc688aea4e0ba05b1ea04d1 -c5487b40c811e79196a4aa353ebd9fe6c6eb207e0054ab0782be388a1bfadf6b -8ffa6467bfbaa6a6d157dcf00553da4575b39039637469e97a0efe91556610b3 -e3a621a82561fc6908291c04fb57c4b6b210ee2455cbfc10443c34759a6c3ec6 -e0cee718596a723ac44c6a5bd08393880243033bdcfaabcaa1f91e47a204be7c -d21fad0a225f8f626f6443f4e13257f0177cde626bccc051b7e9b68969a0d791 -c1759b09a26836e75e298e1b5a4552bbcb51417a5127853f29ed9b22059057e7 -1fe881bf9e191cbf5c41940cbdc7761dd920e23842d7d3d9a5e72da9a0e15b7b -a86c84feced011e6f8fb317b8e572b01e7963f0fca714451192d6e1f1047a0ec -815fe9846545bf797fc096d5ebe25eb48fcfac7b65b8ce063e8bab60a4408e81 -43122b4b6c215802beabbdebcbc93f605db31d6b44fb2332cc8937c0cb8707d8 -73afc9737138325edae9833184c5d6030ff6a18a4238c82bd89fe3843761066c -1c6cd32a7594ffdf410cbec6656de6fbe60f88e1e86a9da6a1c5c89c1bde5c73 -86bfb4d204956ff4142eb36e1a70c58a77e04352723ad622ad8c0772f598885c -866d64430765dd5bf1337c607f44b1efbc2c57db701bb1e9745f7a5766032a56 -4a153b6cb34b6ba564480e9a4596e5675086d3948d174050cee5bf9f5a0998ab -7a6b29a35aa272c3e1f2b726a03dd34a6822ca2ab75eb302b1aaff9c90a60df4 -a9f5268b57389f5c5c2309f717bfab8a7b35597c53d0af6ed0cce7a334bebf2d -89dfe38739d0e9d774836283005ff83cae570770b414594bf201d658608d5d8b -c7e7deb67233a69023bf21a0c33cbe1ee56e23679950c22040a9aea0c22fb18a -d637518966d06183571b4f524dd308da8be58e6cb40d60162cf2020e1dadaae3 -f28a46e085eee74aef5dff7c7804657ba8fdae7b0b283844af97cc2216b31a23 -0fe05a295d986b17dd488ba36f4f3fc7da05cf320234aeafaa5ed870da8cfdb3 -e5863016334f0402c26d7ba70f6c6570aa5c83be15b796d29a2999bb6abd1428 -755c34ae8cdae01ad43801f070a41a57856e09a25e9ebd295fadc76a91521008 -934739bce7b354075b57ec30d8d2f93ee34ab8e47242feb43d1a110c416abb24 -eedfff9f14e57981070261e8234cad5d502091a64426f5db0868f553c601fc09 -5241edfbaa9f9c434fbc2a3d6008b902edad22ea0a4031b17610edc35ade65e8 -d658bbe79b6b96fb4be6ccb47152209988726c45dde4a33c9ae750a3fe6705fc -98953ef7fa65fdbda6413e32f2bd449fa9213e80eb82c306fdc7873750b474a5 -e6d6d47e30b5ec1deec10c246520e1d4323643c13951eb16b7b2e73a38fa04c5 -c5204e98915ca98e814d9eb82ca1f73d2fb8be637c249b776088c514ee47cc2d -bbc400dab767ffb03d7b6330354201560b576f8fc0a16f3b9c16526887c86af9 -4a6389bb0fe568a34518afcf19a0440c006e82d0a82f9cf72261e2d8b7cac1eb -0eeca8d92ef465dc00e0a9f9283ecfd9df9345a0b3fb64035e1cf7bb7bd1ebc5 -5ccfcfbf2de87ef43acb7dc435334eb8c707dc97333411e2cec53f7d9e0a7030 -fa5c851696227a07879dd5dbe9891864840d2848d56dd6cddaa4d7f93378ce87 -16009b18ed1ef7aec9d20f12f3246128b5f613f504a222a5b0209c5ad7367c34 -147cf482d8b81a4aec691abb755fddcb5ce8a3f0f75a943e5ae2776c085f1c56 -03523da51ed5e061dd42d913ec9243e4d8a8c28cc740029b0b89b5f50ff672fd -a16271b71dfe3bcf81b9cf962ed4fb07a9c33d225bd1bbc76a1028ac6400e5cb -14bf248dccef9467ce1d5069f206eff749099355522fcdaf018dc92d5883c5bc -40f520a5443f806dfa8e6df7fa43e2aeaea613649733bc13b8c7407fcba3bfb4 -dca954e168fcd399ed6178b013556266c68f085981ec5ace2b6cab1297ccb5a3 -5ce74def28ae9e1bcf252460306e827bb482ebe2fad28f7b8a9724bcb261301b -9f934fc03e0a73fc669d95a7d11d169be6291b2ad56c0820c38d3da6724f7288 -9e88517e468a38c7b18d1a78b3fcbbdb1b0440fc2d2e4304845067af4dee6969 -30882b4b4c0d604b127e4d9d39a03fac95e4d302ca8b2e503fc5e71a4df9a189 -f4f7bdf2222d7d8af1a3f72cf2becca1156c658202ddb7b514ffe9bbf15ffd7e -5e355d26f2323cc5cc9ea65d64854e77f63c633cb5c7f8d8fcab74b84c54839c -d844e95fa88912b390e7ddcbb5ea484c80c5a23dfd56ec685e74de7e08b33133 -eff947ce849f9474fa08eb217b2de554abd9f6e0bebe6b5967870e52bad78d1c -fbc2d9329da4d2242371cb6907a0ff43fb0760667daad3a94f844a6731cd4e0b -c822701640910c54571e71668f4985c8acee685c99a655159ccaae1b62a7c750 -c1b344a5661f8a03506b122ad9c764d43bcf35358f1a2e8db008247166d96fe4 -20fd8743d342b7c1dbcb77e10e034ff4abc17aa65fe8741b7355322d627f5937 -9a24835f0768f61e715feb5ec4ae617fc253a4d3235d0e730431dfd8915454f3 -e677cbe526f7c1d657b84a11b37ec1903110ec922d14e260552176b7c33b7a89 -852e1c3aa5b6ee7da91c299e1e315cb542085a1882e3bd2756a0719101668ffc -19cf462d1dfcaa3a932b810721ae024d615dc7cb2c73c8291aa40640c47046f6 -b2a0727a8594a310c142bd2b5805352b8cecd7298131a5bc27c59e7ee09f32b8 -472f95c7d15b13638c83a6f75806f016923a7623521452b5c1cf50b01f219fdb -4bd1f50665870e01e87fe5dc3ca456bfbc7aa7d39984969e8e6076735843dc2c -baa3818b4c14b9a8e95f38c8e1eeeac106105e9bbbe09fa97e962a6a973cb1a4 -ad4af5aec8d3f41ed1ba9b643727e666bafb707caae5e8344757fabdc61eeb02 -34be7900da9fec9a5cb18ebf5133c65426d8f6c1e8569bbd6bca5035a43f2419 -ee2235e47cf69d3f73acd9ec3c0e6a3f8bbab88f5d451d524ef87bab3bac683c -6ef13769614eedf714af67f0bd5d5441789456d61d09ac410e8480040aef32a1 -84b5ceab66be5dc476b989bb1ef4fceccb7796d7da42a13f7171d4ec79f0fd02 -f5410d9c8398843583ad9d7e7dbb1e1f00b2ab03cfc88adc1b388407a7f68f4e -30f1d39bc3d7619ed1d4c1cd6be0b3aaaae513bcb878a743a52417ff0e8bb9cd -98aea3993698bf78e004b8ed990bee80392edc6eec4a3d768618d8f30c7add10 -deed5a262bb23ad7e29027d2f4c3786c4b7e99c2a5465d89b9fd9a46cef8e534 -ab5d62495db35b52600c68aebac0d414b9721b93e315d4c1540b5cf91e496ab0 -59ca37542d61d3a8c47f5a0976e5c797f82275e27a4eff9f0d5e51253052af4d -e34364ce4c1ea9f59537986a5417a36336f8ed624a8e4a0acd4baeb2360c75d0 -8e39e8ddbe8ae8368c06c3207e88df90ce5b645f7a5f792eb125bbc1b3009074 -13e09464da1d766eaf70d36743d8d9dd3568aa4189d3c1f50c0fc8f9ca5fd2fc -70fec0bf2ec8178e0f36e3b4f387044628a3d13844aef07b4ab4bcacedcbbfea -77549640c79f078fa7277bcf08cb552cda4bb9c113a367ab860fda5fbb8bab64 -4f1adc050532a36117c80d3c1a50ad5c13276d1202238c0bb1189167d8b92f20 -604f4ca5b4cab3d20ed17667c21ca0e13582ff0006ba3c4c3652d6e2d4add119 -f34fe8381feeee629ee5b56cc0f7613defb3e3a61570865b03e1e2a6af79e19a -81966fd7d5f4b7a97c67b1818b498e32e2406d1dd08a973efeca4623967eac3b -c362a89e0cbd5ab38ce56684e45800a05efbf667769f3e4eaddb0b2e9f455aa1 -5ff1cd2470f386f6cdedeec9044f0fe8ece00cde988ef98ba0e9ea7d32e16627 -8a98bde0023b91801574e44bebf33bac8f816eecdbbec6a7b71288768cb34566 -f91be024fe6b6d7f3250ec89f31eea8fb719c72a4130ffe89af12355b5959079 -911c0f6071c4122441c12fdd404adb68c24d6adee8b6528d51dca93f980b9c6f -84c85d6c2ed62206bd3ba1caa80b0a9ae7e2a97f93ecf40a550e3043dc9196d0 -78927c6bd5799052605acf2ce5afd281a36f5f0d0e257bd965e4a33da6e52c4d -55b78eb2d81164dd3f9ebcd891ddc3097f2fe5a4dcac54d3954631ddc72335f8 -307f6fc018a54f0594f2f3efd265d754f88b2db70a0f2cbed68c969b8a46a0e0 -1b16124c04b28affffca36838695beb9eb501df5bb2d75c734e05a6f812ee355 -0ee5b435ed22dc144091aed9d8cc9d0167639a8c27ae54b47fef0c2d03c1cbea -45fe2f615f55248d12d6223ab37b6d2bfee6c22c97beb6a1889445bc4d580cd3 -a5cec3c32d16caa25be9fb60531c82df1d0ce27d47f2cc4ee467e11ab3059e36 -4050f78ea62f76eaad91c0e61791546a2e397c5ef717ba9cc8fc5677db96037c -e76d5e04f88c444f816317b085719913e2a17b1fc972ef6259cfdc3c5e5296f1 -d6837c826891f87c25e94bb2b7c467c9c47af3ae8f8b2d2f78db31bf70f6d441 -2b8a759c1bf95beb73486ea94a7dbb3e2ffef29348d83a86c7e881f1f4ee2cf6 -20e47fd71d878adf716dc5661872686339b04b830a71afc47aad8da73b4e528f -35e590921cb7aace547bf65026e95bbfb954bd61200505ae2fbfb1786b87ff29 -15fdc6728228d8df9908b4a9e0cc8e63ee8248b4be9515b43254ce741d121ba1 -da356bc2f810e1ab97a4a3989a74d1f756728f1d2939631a263f8982468e19d3 -89277c4ecb6a6722bf8a64ca61a9a24a7ad91712395ae0a5019167d36bcf321f -0a15fd2c8f5feba266431f9e69008e881946a0439b87b10359bb7512aea2dfba -0f3681e86b5b5d53a9e16edab4a966272af633965173d18d714119043fa51cdd -637fe373d28b1bb993f09f20011ab2498a1747a8d3d472af21ca33c97fb8aa32 -07dc6989da7d81b951a6d408365265c590a37ec5dd5849fe970252ed7004e7b0 -b5a5f458a3fcd438bb00307301fd68e9e3b6f28f446145c53b6cd7cc10520fd5 -e88259ce39940869a6b15c2410478f53dd59b93d68a798f479527bb48ad1a9a8 -32ff0b7256e9744f4a2ca2c057487259767ccb30abee8237de515677c6cacc4d -cf5814245ff60651707e85d9e1c82514a027ed9c6b487a9ee53cf5aba2f3df16 -4fbee3f9411359da890a379cbc0c3e63f150e5f3d50223b673f581af077dddc1 -38baa78428fdff0368531582453f9f3ed17ce9b8d65205a88e23a4c33cbdb3a0 -7b62e4f0589cffc50259e40a2df7245cb1e49d2c1fbab2643ecf7f4fff907501 -dccefd8ab9a8b3766061b536e7dceb4449480c098d1b7b215d774f4de6ab0bec -a7533c6334e0f0340a41cc432a5ce03c503ce4f619a2cc80f6aab99f5bca840e -928b564267a98b6539caaec93fdb00515ffe38752ab53d0005b4fb676d71bda2 -e803e388b9ff9edec389b1df8c970dc94703e76e49ea644d610f8df2494e5b1d -670ce13ebbc55d05a64b8aee0d3123ac49ef3aa251b98166bfe8d32a856da108 -15e6e93c8148159df46ed944bb06ec0931c863c19f600cb71ff138a726c2b9fe -40a71363367668b54e2971cf8eaa596808428d3a66bcb6b56a5263851fc4b4ea -96a4d4f2a687f2b08f5b22fab85ba0b1783c5b29ea3c0da7cacc53ae3cc1c545 -9c211adad5da6788400e2c9f707dd22558427baeab93a76ed81126594f11b8bd -097fd92770cc988cd9a29182afeac743fc6d78e559628cd827b041ab515ced1a -a6c836ac89287624fbda6d8b17cad34e7082b492bd5f564b3feaa80ac642bfe8 -66ce3b80de0a155d07ba8ecb8979ddcabf2d6d875304295cb5aa678e17a7703c -e58990f471248670ebf53c27b6c5de6ba5cea7d8b9199475fcbc29e88ac42332 -c9d9399f8ecf73ea3f2449e91c9e49c0013b71f03fe6aa346d0ed73aa295e799 -399895da22f920aa78e0de030a8aa258a9a8adbf57503a55269bf4bcf7c3e0bd -e78cb546424c713d39c21511edb1679fa4f0a142d6225ee8f51ef2042c09099f -b715e4d9cb9f240de1233e0a8df6ca17d3aade3adbcc8211d16a5615f4817149 -ace7352c3308692da82dca88442aa329643f50f957ce7ddf9e60c5d646cfa4b9 -4845ac53842cc63858cd6764ed20b60af6188aa5d1b2af30e5d8b93332acafc9 -3fc6e34293b35bc3c55dbc4821c8acbf77db79b6d645c8c57ac4ee35a7df70ab -a2dc8892444b05abaf70fe01ff76e8d6eb53d2a630256395a7a37100a3e27b15 -9f537168599456f0b8351361d65e9a7cbad5f1c8cf135407c4ccc5a63b745bca -5ec67c707c4439c1a4c4e12757665b6175a421aefa238d2905347abaab9e09c3 -70560b8225c3ab2245673f72454b0d5de1280b6e1a74ed538333bc9ba5dbf55e -5248c56469b879ddd427ca95dbed730606c83d06de427ec717fa976f3fc7bad0 -8d3b067d47abd223d4e84ce5b121cd8079a749c4d4682120811e745eee4327fe -9d32138185e9e2bbb035f38929c955941834dc3d97db08aa0a8ea6280ba6ebd8 -e10340d1697c9f006532211c085505e0c8e630a2407ae908c1c08c6d28133bdc -b4d7ef02242474285d171b1a45bde9cf44d9e310fc6909072a27e6cb2d380237 -26fd5904a4860e93084b449d42769900bae4df9d0fbf8d32a388bee3cb768f95 -4f31b5f5575e9ee29735ad0aa69b6995cf5e16240838575c071e3699f56bf392 -c9fc6d17369dc6269cf13c5c2c24dbf908d45c76c24fc9a56da318673f09a38f -ba3d915761f15a4549f0379448bb8ce4c6814811e5067f05dfa0088d20deebeb -3b66229d876e15c9de62f4204bc22e311d2e453b635df66bc86758059f93428e -f2e07d4b54dbd5654b3587b0391114aaecec317e0c4e231f11d4448e0605b385 -585d81d88eff71d680315dc7f8902d44bb1ce2b413efd8819eb797f1d879ff40 -db2323e159f612792c68ca6efc3bb729bbd441417dbaac830a4fd5f39a7982d4 -4d175a5f65081b61ba63cb32da9ddb28147579bedcae0860e76916be726b2a2c -0872dd9f957781ba37f197c1a787d2c94b6d6885c1ecec87df60d1332ea860f8 -fec010d9e17850b6a705ced2677204352ea78d5ed768348f4b61b0f58cb786a6 -e95b86711c2eea4cc71b2a2aa215f23807300446f850ddac2645246a77b9d30b -fed01e070a03bf90e42511b36fe93a0e45fc5698ccb6fd1670abbe2b2bbd6070 -7f4a60a7f02f226f26d5b5613489af37eb6bbc03d2a929cdcecaa01fb81df875 -1d26772bbf19adea6c4f5c3db9f7fce89f8877b1e86a6506975d501ed60f6fc4 -8a892e3f5e4476f8fc63f33d644136c35f6f19ee6dce0cc3454052560bd421dd -f0c83d2ae3dcfa5bd3dea878e1c835453a257a52e2c3b0e4bed7739eb9a0526d -1f18f60236955365ecf71894fea767df1edb08f6b4763abc3f1076c76995cd8a -5fc7dfa1a70f2eaec68454fd5fdcb820b05be4a26702e2c297230be969b35e42 -96c5a80d8472ea335cd4711eea45e9a83089486a4280dd2c778b76fe88117c6c -1f20b7598ec92e3315b205a17a2754d0420775b14ec1dc3765305caf15f60ad5 -0903ed6577de3b00f421cc295358c7d23bcd10b92906290cf409ff3d08974444 -f3975ee10aa9eb793b5b9281b2442a00036ee57d04412e8ba2de230e81ef8cc7 -77f2ef1076f805e32e6cc81404ade720763a24b3ce97a3e97a796c3731af3b1d -188ec7f6ce0ad969d187d18e87d36d32e8d56b1ba67bc1f26588ba7a5de5a8c3 -2db53d2959b7e9e21ed7f4838d6a8da7610897d9c79ad4cab96b88d2addf724a -790de164aa6c4e1084fc37e3778c12ee1ab5e1b45ade59dfb54050f7aed12d3d -43c1e89f747f26802af9fefc7a09e392fec618079e180ded067f267ec8ccd810 -25b35a65e05ee7fde8fdefe9438fd9705ebce6e7885fc7aec4c18f8ead5e50a4 -4b29984d6e7599bf8eff738d5bd7ea0b29cdbc804bc6c92314c413c6f9fbd013 -5af956c0ec7c927c4947da81e5d97650e7ba10890af1d338072e575602649157 -8f64a18a5748106434e7354ce4d0be25f9d867801d204f82faaabcd6f57345a3 -7b81b75fc9adc100403a8868d37d347ad4045ddcac3fc80e846a1c54d0e7047a -4d9d911dcd086757688f3f485226a3e5551683017ff0ec0a4eb94524bd98234a -c4676b12009ffb04993ea1358e6e189fa552814de8ef7d558c39bd110ee1b823 -f92cf7a2bd13a54a7b9d548f0b780cf978a1b60ace40f77410837f43f2757464 -0f3ce9e0c16f0598d44f276a63d294eca9ab485d3704f0f786ca4a243481fe83 -4002f7401319cff93eb16bb72a47f51c300845780d27d81edef84b4871b6dd4f -872e39707d9092ce18fb071c58e7bb01771b5272596e203e1ffc47e33efa0a9c -fb73b12729f4294fbb1efdfcf6719dc41ca146593ffbdd1e1f586b906616e281 -4bbdeee5b4ae01d076728f8e27bf34ff7c0ee32f69e6596b54806da5888188e3 -1dfb9ef997613106466fb23055df196e79aac1da1e757608d04097870dd64f0d -3d1516d02b91cbaabaa7659f8460a93f2491b97d2854bff9cdbc6c9c9f17cb7c -fe88d5e91a63a3b668367999d0ad0925d22848b2521fbc2724e160d797fd5e40 -4e0fd2361595aa1ad5e9b06856b36e3b2f05aeef0c4e7a1ea4cc7f4dcd7014c9 -64f192d576d70438bfb352430a507a941ca7521dd869da6c0b0ca783ff67ef8b -a160b16070c5e7fdcb8a487e4f2274940ff32d6c33919510e473034bb04f1dde -60c72d9dd5d7c939c886c818e8c1a64ebf589fee9abc1d22cc5b8340f37d4289 -573fac5a93f80a18e93edaef6982c412e6b001c11b355434e79ed88bee588caf -1795bf249b95f4a3c2532e60819b61a888f357c12d91725d15e66a5d3807d21d -0975a1e891ef88b5ad8e7967b7f13264c7e55db3fcfb7393bcfe4dfdf4936457 -b60b8fec5f9d9ee526f6aec3f2c9888eff4e709136c5bb916cd63df1364430cd -2be80757446e82f02bb1252281a337136e59d863d03635b2617cafddabeeea57 -77acae289c3a4e9ca4090f63d7770ae89f5da664baeb6570d157110ba1fc8fab -7b9353c29318d06b690d3684aed6690073bcf78cf9157f8bdfb51225f902e512 -8e4320767948e384d45436e5cf9846ddf7cdf11c4637625b9fc8ec8b74128b40 -bc2171068b897a5a3f23f8e58aee15f5a94462d8347c283a8da42449ed674bcb -e1cdc0b27a61af1a9ed9ae2c679d5fd92d44a781c655df2ee386163b6dc261af -c01a6b4ee4ab5548540781877b366d3c1cfbfb0cf08021accc1fe9cf89cc0f84 -20e86d28ba7b69a1692e84fe7845a2fc65fef4f5aa8696d8b2d01b6365591b91 -192a0725bf84d6be2362e0412e2a34ff5c253451debf45e250098231c0b00f38 -717a2ebe59516586c12efe459576ab48eb0bd4119d2e336d0ad276bcb854c0f2 -ec3f29e901cfe13551a6936e631c26541acdb42092b90389c61a35f417dd5beb -cb0d44575b48a687c6725a1ead3fc30eaab5935c2bd56e2db7e9975bde495bca -e7d76f2beb0c3ece576b136ace6208c4d26fbd0882c432fb6475733d9595b198 -be484d34ecbd5dc9f4eed403b7d07826648436561f969079b03888a66318c0a4 -00304321c7726e8dc672f1d632d804b07ef133a34fd1d247f20152f47f116295 -93ab91a25bb98ba7945c4d9f8f5aa3514beab8e0062379677272befe49015351 -6832c2d5577214282c8874ec5e9a9331193e1af4730586c5c8f666930f34e0f2 -e2a442fa357e74f8cb5df4232fb1add221e3157f17f92a4d7c34025d73f8c6e5 -d7f4fe55d80bdd37b1d59784eb6e464d59e59fd8ac8e3e60fe8f2a56b129abe2 -0f9d077dca0675352c3aae70145d76df1e0161af26106832929b20abc1baa47e -03dec456c03cf75402da5bf5df58d56e15a511b26d2865b956413f934438638f -2d43328686fab8aa76ca4c1c915cea3fb51d198b4464b51a3b9c48783aea052f -fe75d4c51dbc5b728b234c3c23401f56f7c6442dde7d2191b4d152106ff3dc14 -accd34a7910dd6594d10b476b4b8ca0e761d4d50236c3fea18523ea4c8b7db8d -954a871e7454f6baec989155f8c5824492a7158d5d25718524bb2248e4d1bec4 -0fe5cfa8bc6456d761c8bdd0b0fb6c8c2b412382d844e9aba3301801482a7ef5 -564b097730239058bcf35d8869e49d77ef97308fcc50e3058bd9ed198f86fb61 -4ac7dc40ffb26ea4671c4ba45fd08841fab81dec0225eee2b93169067deafc0a -3f6150a89532471cd4685746ce085c1ba32e377f5b59f6c2b38c70ad0bc37e28 -41e3e27a8a0f3762823c025cb103c7d44aa3b4ce3051f3794e15f74c80ccdaef -99978b708e65a0312b1afb84f26c71d365a32ed4b7a89e9619f59a0d8a855125 -f6ac31e3e51bd0e08ddbe05bc9c1c39099980247641d0b7d1af738cad8bd8b48 -70b0c1dbe95d44c12df1e60fafc42b5f2df824711f30df3e6469c7786054c3f6 -3a65d6bb81f6fad927bac49441de854b90af24d968157da20031be8a0cd9f711 -5b36c1095abe3dbeb0e984eaafa024d31410d25a8d51d90cffbb3d2d8c05c8a7 -27aedaa02e25670f537c6c30307deb9652e87bc047ddbe375cdd153056a0db9c -575fd3d834a4fcf948f96e7a3ca2691c2106ae550accdc6482b0770722274bc9 -1e8dda7cc8e1084869bebab4fda9e05c42e3757c1e8d199c57b49751c3b101af -51eb614f0adec15f47bf28cd7488e0c53dd1942239fd9e5279ce97566239101c -24a59788f47bbdd525ffe2411a6d1ee74e6daa5ba9ee220eb9e8f8f5ef4590ef -ca1aa95fc5b551745d4ff2242f733897fb9b7e8a39744ddec82b2306559cc9e7 -e6258bced3bba0434327ec925349b8a60b1aa52b1f4b8a4e2fed58a3c5a06bc7 -3d19406a20fcd069d71db1c7361d3e8e37c56104bdbdce0caf6de48156067cc4 -fc2cfb22feb744bfd4e58bf732a54893b7e7c101b31076388281cbbf9a29a2ba -cb8fee6ef9f82eca761f5deaf401e7eeaf6d6befb77ec9b3aaa3d24c7e32a59b -a6124da1cffc414a691b7ee27808efbe6f0703fe9d6708355170c50d7593c78f -f7a4338eb4eee56c7b8932117a83b5a836c2f86ce1b181adef149e402f3f4bc4 -fb49cebc10569ef0bd4ade63e77c06f50237e161802d4b1706b4aad1014c96e2 -f7a710188ca7314f7ebf16af27e0557580d8e2e2106e669d41abc9193d3954f0 -265a556dea64aa306bd96360fda78f451ad152a8022755e327f42dd606acf5e3 -0bbbf1fbfc35c27f6e6096d08b93c64c34a6e2dba1e5b6eeb1ac3dce832f2f95 -2fdfd7ceb37512e8e4bbcb57c3a707a9b4cc7b027eb1efc42a4bf865f4b5d8cc -15e41f02f48392c6ede7cf2d970c26c1105f75ee9d3841dbff430301677d6b4a -cb207ec39ea8610679203f4b8ef86be77a84a34df41ed8ad04870f2ae8d7a249 -ccd91c8848eaea7f026d6be7cd98a2d8ea5995c88a50a8d8c25c5f7c5ef1ebbd -6c7e7955dfa6b3ac682738cce738338646d576094995a0a016c557e371b471ba -66efcf969d4f5aac72f1515987310d72f63bcd9b7883aa04dcaf8914fdaad0ff -837ffd1e22f0022373c9364bb22bfe532c2481d42b9e18ee15f7c5cd8cfbde5e -908f37bf3ac26261d4297f4b3356f7c685ff8838151fac00f2a4b7cd50ede439 -20665006e7c40ffbb888a7f4023873796a11520918ad529532f05486e23cad81 -f3db64b0d911bde6d18efcdfc447dbb132f1ab8c91003ff01bbad69e7ce198f9 -24ae214f03711535ac13773ba34e600edb88f40f41686f7689290bd7bf4201db -d698012994d14b11c6248062c23986b5c746f9e316da4b5254f78d8dac23c7e6 -5a757e3cc3332a910ac6602fe4a26e2fd1dbac970fe93666d5f0ad943d94a405 -b7eeeb1feb27a905c4afe46cfa80f5ae0fefa08b00a29e1b74406d2403a23631 -bd6c816ef7f1daf83b6055ddebe467e56f0a7538b8abb32c906f07415a4b7553 -81ace6e37990be14a6130f54cd4921a61c8298ce628189aff1dec9c4ae3cce8c -46e7cfe7f95989f346b85a38b0cb5ae21289dae12d541b5d4a8408830ce7a471 -6d3582a5b51ad348d286783f7e37bae597eee8005908bb552d28cabf1e5eebf2 -b5b9b54abac0a3f9ffbd3107c1e7cb4c8282351926dd255f7c31406bee3a268e -134cca87b17ad8089da8c4985a67fc05f426193e231197cecb1459fd33071d83 -a975cd13c617adfd7bebe3cb04b35d7e37ad766f3aa9d7138a21f8378a784c33 -a92eb38558fbef27895846be99f9bcfde3497434d701e3d8e738a23004b5178d -a105a0fd3c7b32c13fa7a371553397c6379cfa31d70b6bd985aa7a8e939fc88f -d6aa38c4ea9511df341a9a5281b2fee56c72821f797f1c1cca0c7ae447479e8a -49222488ad2ba09d2cc2b2972a680a6ae4bb595a531f941cb15c60a0d4995156 -e80461e93c5261f1984532f95d44f3d3b4ebfd5dfc252a65397aa6cd5cfddbc9 -6817b46b8b748d48d0778f527fea35a7315b9d036ed8b115bbec6a7a28eac153 -5c5230810da99ec76f5bbcdcb9f368b33fecafd01d045385175217684b06d0c0 -ac6360f0cd335c9515d54da7239015fbda1c455245c07c4dd7eb06eeb65ac291 -9f94b50749157f476072589075f43512387172f7e3f9f9c2f2e4fbd57858dbaf -af10076723c701c45d82bafee496146bcfee936e915adc92e9d1f71d3d3ed359 -4bba84299bc83de2ee2aa4cf24b5a137a188f01f5cee1a614fbf0779260ed511 -f03f39fc993b3e62e09c9a059439997c376edeb8bc048ccdd5fc5358202c67f7 -2f474943a6e6c5f8f560754bbcb6bf2ba9470c5d7f31ab21769a9b9f9d705e3a -17bcb6661e87856ce06f36a37d31acab734e77822232244f7a8498ced52fdb6b -68d7941d8ab7a89cbb54077b5a41b8c29f29592d1feff8f2af3b11f918b4c121 -159b63dca2416dd078393114398807b1b0fc5a314c2241d357aaefa3b1de6922 -4ef3f074aab51faca68bc3346379ccd323ae443189874f17174c967c5df27f38 -0bb4cf61c66a1d58d038e06480514cc964c0ebb77859a35201590b0c1fac07e6 -d0567d38487c669b0edd637065a815ac693102129db0c7d9ca41836830cbb7b0 -0832a60fe237451f567197d89d6b51a81f9dfeee26601c2315eaeb4d8a3dd7f4 -3ee624d776bb3f0d3331b77e5abd01b0c1ebd00e67949795e6010ecd14783f97 -7ffd18660b310bdbda83d2719d71eb6261567d924efd1dacdc1adb6001dcb5c3 -ca657713c5befca5d64107d7267a8b318d43f4d723bca3cb29922a63ff5ad630 -c0bf4dca4f87f81a7456086bfd6efebce51d2660a2e8e90618f14fe3c44de334 -875d2aa8a80f5fb70da46cf60d24a510501319aaa8b72abe84d95e758fe95e73 -4fa8594c4f9602e9026e7b96d2a874fecc61691b33c2b5eeb97f66e4a1fc7ebc -975f57c3a52e759124b60798e67398a5f7c3550147f165b53dd6294c91e922ce -8553fa08c65680aee9232954d26a22909fbdb33676a25db3d471eb6ca04d7ea8 -22b0796b3d2ce3606da7d9e3ab883f5072e47d516994222edb0f939149bd16cc -b3f86df1830e76ec1abe005138476281e8cedaffc54faf37ecc0916abe3ced99 -1de9402caae32f4d1e421e52fbfffc3801c3214d3ebb4cf9be920e167192131b -47eb36da2f3530dcaa6e478ef92112b07643071d33c6fef397fb2e88b04a0942 -9cfe922676ed1043ee2855e7fef7a8405413a354ae800d10d9acf00605f46356 -2af27cc095435c9efdd72b78fef3ade3ca7ee729e07d158ad0cdf2b863ea50cb -c9cddf381ec49c0670928e2f312762e3904229e8c7d6e0a8fbd8960c06da4049 -c5bf531a5d1b4ff992e7100ef4c157012be3885d7b74f384dd3b483ebbdfb238 -e2bd1ea743d08c2dfc3972ab3eb00745048929506677d7f60947a5540cfb2183 -ac7a53a11e5e53406007f0956e52237be05a288b087cfc21c87558f86f948154 -cc4899fa27172ebd6c5b82d8a7789316c261fa9021e0ddf19912a38d07e4f4c4 -c5476fb3db933d5efb6ca046cec85488e5a790e32e32f67bde29e574197c59d2 -2187ac1742c0fdd75708e002b392c0b3e2e72f1e290f8ff25bc0b438aea6df92 -a55437730683a2652027629f604ef9b3e3af0ad4cfee874c7879e430d5a63633 -58291c1b21faeba26debb282d145e36a4bd8eef37d8d3c3ee1377225f2d10852 -cf5812b7c756f71e2319dca8c411d0f604c3cf44426d8a13368531cdae4ccd7a -1a5f8ece4719d122babdb331a7c66978edd63fab5f5399dc1d35fa836e17fc60 -35cc782f29354eadd6994580c756e73d43ff14ac06f95c0fc096e404a7f6dc76 -215c5810ff9e061120affa3902818e2ca51ba1be1984535fce287def42e90d1c -61a738c9d1700663041a19e4985f8c2eb58de39d93596e8347e44087fa8cf013 -302e38dc1e4e0c5a3109320cd9d46186b53d69e7000dda34a155064607e9621b -8fe4352c6ec90bc0a49518bb090ee10ff9ebff078da49eb4d73945fb0d9c8aa4 -0ed9aa8aeaba26c8f48443a364738adb35f6ebb95b480942c13efe571328325f -8243cbe8d50962f200159c0131b981ecb58e2350ee08eb23aa75d1b1c02feeda -d16ad76c6697e5a559dd686f7d4a29f56e48ae3d9572321a1a328327750cb86c -737a872174c73837e51713052213e9c26c5f2024400d21ceb54465afb4a713af -020813e11046c1a94f0b80896306245e92697e5b4ee839a37c51234b80364112 -090bbe8da7662c41df4ffe2db8d3332265d86c5884ee8e8e49420ab4aea01045 -5d44cf8224993b8e67ff311f8bbda2f73926fbb22b367c77906f02cb0fda26e6 -a0d17e3be74d880e9377f4be63dc10805b2affe60dabfc1794b91ae2c9b739cf -6bfae915d780f3bbb9f07a73484c4449eac3c4765ad5214f557a875566b546f0 -c18da167a9ea6f4a321f32371779f68dc38cc2c4c0c852e9e424b4d8fda753f5 -119d214a3ed3366b258bdd04cf63b666fbfea6a3372043a4343dc8401d09624e -9925c60d83214650a977115cd8cb8bbcb96aa4ebf7436bcdb92a98ba93c19af2 -f4491445b2bdafa1c8b91aa0b2fbcc6bc2d345fa051fede59be544edf6041f49 -ffe465d3550c4c989482b59b2d8c9ff8c63513252c6956c0e3c812067c8835eb -3b60960ca4147e1fe3a9609102d883ad63f8484168d33a5f60f05e4e08293a26 -80e989a62b88257debd857badaef4b4baff2f76f917e6ceb654267e2a3ff8e61 -f6b691950ea160271c81cb460133312980c3fb3ed34abc666b53b34af56f2ac4 -6e85ac0a5b78fc3c04c73466ea0fa7a5737bef5451688738bfe7656cc9c84a8a -9c478944eb771ec53aa5734849da181056b709eeb2700a128ab4609d893accb6 -cfa37ca51324c9f9faf10ab8a0c295ea0d74db9d785ebe6db254f03aa0dbbf6c -a3cbbddd1c7b0a71110ab1da66c546c47a3a60fe89cb74c12b58e27a98f75b80 -971a37f39f18185c980536986367b3066818f3c29b136be81653e064ba022105 -0cddcea71565e599c1f23ba707544f877e3eb4f90547fbce282e24c247d68587 -abe5414b1acffba7fc560a61a6499807d0e4076cc1e6363aeba0cb418fef15b3 -b3f7df7ea8668c25933c37abcab0eec0fd378a621499fea96207779a12134e92 -0dc32206a70e8ea8b24421daf469cc85f0cad6f0747b64b891161868cf6919e0 -917a48ea6f99075fd98eab3d5c027ee2d1bb645d5ea033cf4ea639846962125a -391f8dcb248e99aae6338ebf2ab0a7e189cf09bc2ba7868879a7d4ae8d4359f6 -ac8a7a11aaef9f0e002482c55510fa8ee1443082ec63d4dcccfceff9d306c070 -0a51dd3845a284b31555e597d7b281d5c50d5729487145c7a1f5e4cd3114e39c -cf1dac7b22b9f094972c9c8621b19edf1b0257afb30dbcddde8edd39b73d99ea -f4ebe0edda8f2a307348e890ad661e2e7b123743b9c7faedc92040df6826b07c -de9685363587058a3b8f8a589dca30d268113829e70a14797aac8b62be8a3a6d -f84531a61933e5ff5bb8a123f6bb18a382984c6c08ed86ac6e9665c88fd632b2 -494c6613d4b2e5f33b3d85dac3028b82b72fbe7cdb716fbd0791462bbc7d5b78 -236b77ad88c0c9f4a854e1144ced5c9321479bf971d759a38bedd2e91d82c862 -43308558ea85373781186e050e788923030c62828df57ec68f97b50636be710e -2530e58c6d3b9eb52cbc91a96543e346432bcd0f1307d7bbbb9e3e687118d9df -c8c58864a92da78d54c5abd338726a76210b5f78b120813cd6906784446cfa3f -c966796b301b47bc65a8a21549483d288cb164963d88551a7795a1f2327405fa -3063a6b14eef4026d26a94a212106f93e2ded3b574c67981b573678add48a0e7 -5b7641ccdb5549d88715672efc5486088244309e43897ff002b0160401a39840 -09b1666db4ae35caf108b03e9c85185acbeb98f098b474cd3b52047a342c335e -00bd6f4344512e670c28a7ba793a976c15479ecd6b07129879a0264a924165a5 -df7369456ecb5ac96c164161939d414a2600947a1e0769915c6140941a170179 -a232c1036c1ebe860acdc11daca085cf6d6a3a4138c5dafb60e77b12dd1eb048 -69842e09783b321a3c7ddd1401afda46d69193a2e6dc9212da029169d2b17f27 -52dfaca4c532c9ec0b9ab979480c6c9adaf60a9f7a3bb3bd073dc04d8194c6ed -d8b9abacb2949df81b3bd4cbeeaa97cfd7792fe4fe955070a7b8170d06ae2637 -b0bae9b73dbb00be09006e369c20d1f8ac6c25c6d7730c4270205c58246c2fda -73493d17c452cc2b81cd46a01082e10cfb17dd06ef0ffaff950f6abd382ff731 -390a2ed24764c3376df2ed991fae3666335d794786ec2df2a4ead6d8e4d423b1 -50ca63300cbfe1795f26fd41ae220f3ca39af9aa54413d3b56725946e280dbc3 -6a1ecfb4b681773b7d35ee7b6459294289ef116392bb27ea330f398bc6f0b34d -ea52af7c364ad155a4785e1022cf013416d4f28eb290db851c646ae041fdc58e -0de194a700e78414351e6818ac09aa8561909b91f0d82453ae264c1cb81447cd -2bb8c198a3fbeb4e16f57e455e94655914d50801b11db14b65b00ffe46b91222 -a5790ae407f33c18175fc9e309098b55f5df6a75090e25126d869aa99871fa91 -13aee1639c0b1564224ad4ce0b9366f911db07f060ada2495b3a79c167cb639d -4b45698dd4d618a5ecc8c0c8a741b1d259b0f685a4f7ffb82d986612e6a36b47 -69030e27a9fcd1f3adee7a3ec4269e92a40400c9fab3ab0a3d4554b5a2c6911a -7fd6e301b52220cd3ebd7168eb2f06dc87be7cdab2fcf7df155d1e534eb1dea1 -7141d840438283df0639e5ec8139818763912466ead8d4a76eeb4531f85be1d1 -1dadc02fb0dc471496f6042ca993fd4cb809add0e0406ca04aca9d5368f846ae -cccc71379d72ab23b0b415e4cdb37b9346369bcf102105b9d5919a0a0b498ed8 -66ddb1880fdb86ac79cfe88a282b04839522282ee7e4edfc5a394e1c8c50e667 -57eb291bd63f30a6ed63e7505121c12bd9fd75b448ecb802d81c43c8d7f35a18 -e108c8a0d8dd9148b45ec10208593706d5b34a7ea8119de61c40c7d573be44a0 -79ef99934a3044e0bd89bbae43a050632887ddc0abfc60cd17316b4e6ad04958 -b5275e1e597e4a95a9a939cbad483cec62003baeba0bffcc67f66acd1738e6fe -c2adea69895897f37c13ba6058cdb72dfefb0cc5b4d5ab0b04e09e1447340c4c -b56d1284870f284ebba7e469b25638d5c45c00f4c23b3e990fdaf540e786d2dc -2aed6d22c0ef86ff711ceee97fc3a06205658df477226c4d3d623e9d612ecdaa -c503046d6e7a2c04c606c682d7d571b69f92a2d68a14c590719852f6167b02a3 -542d68726c83f47d31023f060f164bbf3565ccadd705225482c67a53c1135f9f -4a728a0a1d5d874fe8c6d274f1348ac78e60f0196246082c93f11d6c24239bba -b37a5cbc1512eb562b74f34e19361e4b72af288c63809030350b17befeb8d758 -70323da7c5dc8f641c09383731688e1cf56e5fb9f3b2c1ac63b3f76c42297ef8 -4cf4db77630694147e1a6d39ecab7bc07a3fb1c2832746b28af97f7358b2bc14 -fbcd57b6ad6e540547d0107d1bdc6971acae2642f3ab29907d886fbc95d33be4 -6ee7aa92143da959b2db4fa6a3cf9517cc90f30342bf790b9e3cf4d14a093a1b -2adb8aa17ef4fe7ebb0d3b61d7a55e0b66952d68fa3f1769a625ce95ade063fb -c8f46aed3fb5b4172d5498411c28d6df55c3a1028d79d77940342ae2ec96dff9 -4cae2479a896cb33f537cbe5b615ce942e4a13f14d0e6a3f8046443a9aad60cd -132858a6c97debb000ead8b575a96a47633c0c278ae97957557633482fda5a50 -9ab00c56a9e4ac03a1051fefba26d04cc0c8a4cd041d00cebc15aeb6bdb8dcc0 -9a419467e543bd23d908f786cb51095e2c754ddfe38b38ffae5331a4e198586b -5c9fdd128f64e4a7690170e84b1789958236814b29bef4f0bb3d57929cdea74c -94721807409e4d2468a5fc0a9944d4ef73dc1769a0469e03b97c9d52db106f40 -56ca9b45163159e9d38c2ece489ac44aa6d6799819f136778527ea09d56f3895 -b3959b3b580c676028e4142a025d69a4a2fd5e4680c0d9ab2eb405c75dd0b244 -b12327acef6ae92c1931fe4fafcde67972c8d4b76549d15f5022b64ff877bbd8 -db29c32e78d61294d6f8b04297889c27f88d0eead47ca6689bb548bd5ab568f8 -7f4e5bb42a125c463855e8acee73f33e3dfebd251732320b7be56b8b0c51fae2 -a67903ef6a821a10e97006b71364bac0c22c88341f201ca0c061f2063c6614a9 -a2465fd99f97b986cf7f8e4e333ce406ae4f4ebfe1aed93f11acebd76a4cfd28 -6c998a2ce5ba07c94263a2beeda56d4d01d7b26637477e177c1e6989b077916c -61f42baaa46c889bcc305dcb569bbe8d0b34cf7e8182ca971092ed0a11cd888f -e4407782a3da06cfcc4dfac4da1acf394080f70bf40324b93c54438ddb62501d -8046cfdf7efe19e318d58cfbd80644a260365ee37f76bd28198e66c6afb7b9ae -6331a202d07255165bde32b1d957ebe0de98866819cd4b2431820dd571e71cc5 -0fddc17c279ed731d6690550acc48a49b2840957f05bb891c9377a9be93d6f30 -40372657cd6150819bed309330e8201ca57bb8027c89f6160acac8aaf917e05f -fb88b5fbd3c2db18543e70c47e8e18c4cc0df46ca4fd008640f263e79f04a7fa -73382814a30c202b7cccda7ba5198753df9b614921f52790edffea4f1a6cf449 -8353ce1c399d25c057a8a9b7dacafb681a80e4edac1cbe8c96b2d785b6e4ba3c -ebae1068d3b9e111a9bb98b083013f3440195bd98de352281a66bdc408213fb5 -4df108fc84d4d49e2be00f16a371e43bfa82a232b4f3275be4e25a2bbf1a5d21 -75eac3318e3d7e26db1428f0f3aac4d59398bb601ae67d54a039df093ad8ed8f -4d228a998f788abcf34287402a34e39d879b866daff544d7391fbf23548063e5 -3084b072b26370545b9398b69cf0bc80a45651858de020f1a48e1a91b50dfd1d -ca15c5909162336aef84d342addad7c402cf0748aebd617e2e22792cbfa03b94 -63a5797219421330cf29fa56457d8bc4d2c1ca2778ea70ac126742190f07fae2 -c52bd7f91f3d06836976ad18963081eeed2c575995b0d853d63ff3258a00c7fa -18da3e2d93df84fd72dfca9ec1b492d95d05d962a7c68ed66bc26808435d7938 -6abe9ed2cb96faa219a06de798b435a89f92a9b8dd92c7602d700815d68c6679 -b982c0485079588996f252548bd07d9776f1925a680fe50fdf6663488140ea50 -6ee8e3672027706caa923f5928d84fc534dff97351253e1a80f854f963110b52 -74fc5511ab8cd1c087cef2f2cd964d6058b80dbb1c54adc7ad66ad2f7389b461 -3ed32f57b560f12f687a738bb8e842739fbd69e583939724f7185f9c45d55dce -ccfbb2d035649e0650e514ff241fdc720b856aba9ee073ea0083ea0efbcf71e2 -b712c6d9c307177c213fcb696a95b12a1ca467363761c95eb8bebe1bcdc4f65c -994ca89a47d35e961651a41f1a55bf2db7f56312fe8d5d9eaf895c804b9d1576 -73b81488476f02d9c1a0a9067483b81896b053e0346bb6659898c5c3afd4ccca -482c6832476b042aace2a1e413be10119b4ccc3863ca4d45129889f776aecf34 -769d24b5747c1f29547daf3581c7d2326d14969f2a8e75618aa2f8b38480d000 -fa749c2bcfa9b847e7975920a4f35eb76bb6281052e2360d0d2af2e11ece282d -75e0deb2c6a45901b9c2e56bedb9f430e08bfd8bff6386e52adfd5310a708f7f -5384b1d3fc71f7adf427945002f630eb3125594830582b20bc359fe1eda97b23 -0004dbc941de0b6a9ced100ae85d1e1482cbafc69cae14de60c28f5b741999cd -373224e51a118438c72746591de646d1880de8f3897bb2d2c41524cb9ff403f3 -a75ac202870cb171cc94ddd494e6009f17ccfb397c76457df4d928f2ace30e5a -0a306a3dbf580609ca3fdace1f6f258df33cdd242389747ec9beac4cb6dc76c7 -4853aab26b6963174ed0edb2613e46ffee7bd0f7590b3a4a4f08a8bdd46b83cb -3bf7b264eecddf2a50c4b8d138db9abebb89818dbbc970f54ccfed801e1ee2bb -f0e2cf4bd09bcfc26579e965cfa1e51a609c0fe0492a40c7ead19ebfd6081ec2 -88d16e516eda7284c86f6f534a743de27037039909b73a93b19e851420079083 -e2e64eee7781d5ea8f8c09a1d39ba49a0238683130d9005e5fd72c013f2d8f4b -c0674880729040ef65edeadc43fbaedbfc0be2980bb470b2c883c417ff41addb -f691606f88790c30f9845c0b7a8f37452aa8511573fa2b99dbe6eab54ddb576b -2086f4ff5a8d305b65fe9298b790b5bb3f4418a9eee3194f64c882630c938782 -59faf61079a71ae52eada524008a22686fcb2f22faa4797243f67772f333f0b0 -791bbb4ed1111781a18b6b06d36877760ec82db7dd4b3ee268e04c5dbcadedfe -1a4bd187c25d49a77da090345bcee476b9a7df9b7da05937ba953f25559c88c4 -c6b345d56b144ead5c59cb8ea513c646cf707643e38a53f24e4c299b761fbd18 -80761cbb5a9af3a1dc43bdd568a2e9688780535e165e198c62e336ded9740fa9 -098ad7ded92eada6525d30bd5a936ead3aa0c3510b0f77f7bc3d1165e07f6f0d -fad611578267f188554f9052dd877e322f493c27729fc6f5333c8bf0a698ee6d -ffddae0a87551a5eb27555f37bf29d2e1c686393b00d3967b38b03efce1c5ec8 -5663a7ef1c8d5a76617afb9f22614362da769a39dbaf5d2e4ef673a3c7b84b87 -1cfcb4701051d7762fcd540bca01aee8c785ffb3ff4b0b7e62cf0f785ad11c22 -c8fe0a151fcf1f12838ff35b1fe88d05cd6ce8a30653aa4c0ea1e01ba116cd98 -1da15d8f30f96b3980e1c142fa96a51586e9acde33065c484fc9ad9636aba935 -24e83625484bdac02d36d296848f8b73aefaa1b16ee6436c662cafc97ea4ee6e -9be05844368b213cf4cfa253cb56a6c61e541ba3b2560e6728826568128ec564 -2fd80ca7feb73765393d83cc60a3dc4d64acb37b97e728d0be5ce37ce106adba -e11c0df2733594a91549627285385b74ca30c61b32bb23f265dc4365f18873e2 -647035714107348ca9779071a5ccc80a56f09512f027d93b6f244b3d4dc10d22 -4900d6cf1f09c34036640ebdf95f3f91dc89abf2e99f39f9ef1926ea6de991c0 -94fa0b845171b487df0af40bb58969142223aac4120e37a67f9da49341d688ee -7eac5285b6a2fbd264d9d85d81ddd5b59d462882e2c7c11e90d5328e340036b4 -445b2f9c79d59d9762d5efa7b77d1a5c5defd9c78a2f8e1d1c0fb6de25a8183a -19e1e9b6c38792157ac064fc173aa0d9fbe9a4f61546e3de52c9d54cc9eba988 -3cc6b1c5ecb3376b23660cc4aafcc086388c691f8cab36f82f9ebd904a07842d -8bed22c5bba7dbdceb85dd12fb9ff85fcfa8011a05090d7a5bf6616fed097b05 -a5743334e88da65e0c2c1ee34ddaa3c01199326fabc2176ee97b78857a955c60 -76bb219fa1162aa8a4f7d6565c0dc8123e090e7b5be396afa7b26ef7937744c1 -e8fcd1bd3975fc3e5cd060baa24cf7560e28f1daf701ca0f1d005e799c94757e -1bfbb5d04f5ef6850a44271688c7c4aac12df14533d7a57b7af37f37560f538a -5131f3fc0e5b7880b6652e1de449061fb371e7c831f2415d628a6b2259092dc0 -fb7b344313b0aa96bf057ee94c9829a2e9617e81efae4f9ec643cd8f2034bb74 -24e964992cae7b758e162e8aadd3644b961a2cf52298a9e945fba3a6a5d00c64 -d6bf786bf61444a51b72a90399c71fb15473e7b3c83c9e07a117c43f91f6a343 -46d08cdb0c386c34b9b75a8b145603795a28b3d740a469e65255cc21eb233841 -d08122eaa6d44de6c096890e0e50d6b9c68aa59b109b85b0f4e7d34abead7376 -6173543701f0576df00e56ed08a636de2b4b159742d22bdb0ff3ff41ad88ae5d -7e026b98fabd6c023d1f5366f2d843f10eb4838ee2eef343ac7a2c9292f4c430 -7121e7fab9e4fdf2c327c7b102cf5b6b33544c3fda542b294719421f17833dba -ae8b64cdb64d8460157003a178fadc58dc0edfe44d31f43f7b351ea7ea9df707 -a30f8d23fd91e36bcbfb24ae456a87f2b1d8f2c7012a36bae7d1018f9bd4c29b -5493b38b3d7bb08facb9e8c7bcfdacaa77971123a7d9a66c613d28f06203c4a7 -aa83740d390c5d3d5ec3152ceb88f8b9f5e58235d99a8cec8888bc5806eb4668 -1a63c712119a361c458747228daf2dd22bc853935da06552169f0afe5b1b9001 -20bd44ae7736b5991f99b1ef56920d75de68c730c62f248d12a3717e7e6f7623 -140331276ec49053a8728f93cd194cb119776cb505232e5de66ecbda6e60165a -0d34dfddb7a36d6f76185a2325bbc46efe1e99839963541b3ef91dd0483e5fa5 -6ca161225149ef58858c8b78526cb7ba19ffb97f37be8d4ac70bf5271c42b30e -1583f4e2d25c7207e0d50aa16309efdfc99ef3497fdd9bda0a38cbb0e666eb04 -2a9d57cf6c791bec4846f3ec8fea5b2c87670f2a6290f282548c6762d667c5c6 -e40bd385698b309d9f7c50e1308d82b65239d89bd8fd24c71ee04391196ab80c -ecc4b3b33a86a3489b0ac7638a49056ac186e16c0705fa9e90a578bb590c0124 -55360eded1c1eac39250fc78b79b16a5ecdc203023b111e8528b8d8cc1b21ed5 -14e44db4b0e47982b936cf6ebf9f0dc1e5ad7c29e6ae705cf8fb15067f4f9e27 -f6a7976629ccdb833220477ba49c9e1abd5eaebe9236996069a9f869f152f817 -0b246bf270fa5a3d4674e7e790a46c5164c89052082f4e1f546a90751c807904 -cdabd5003268d80f2b699c29df43fb17ee6bdd6ff420d7c3db3b4342293f5ed1 -5c9c36628adab0c80bb93efad51d828db4dfab1eea900476a9a36720544036ac -fb4887f1600004c51a0b2ff8720e827f8dbd3ee95f7eff761ae703a3d144c294 -d96a6e1d5e39488f327c50280efb113fa5cc4d16c32232e708ffc2680c54be5d -7273225c2c79f71496d6d873337575ebb32d89fb0798f263aa234947c23fb694 -aeaef254220ddbdad03848b13c785d78a3a3d708cfde29ed68b6c2426d2b47c1 -9578fe7ce5c610ca3527398f5eb9bbaf486145d96926b558a403ea7530427716 -3aee3e58113db3dcd943226b5b5bf48985b941cc4febe086b55864dd732f5113 -574e809af732760a0fe1bd62b43a44f7024d15f6ffd83b43f7aba7b63b746e9e -8ed1810c4529b78cdedc1a3fe69b77e7245272de16c013c8726233dbddcfdde6 -e21c3cf40ce64d202ad48a76feed84543729cba52cf1622446c1b6cc15db062a -b535a3801bd08d27d8d9d230cb4fd45ea2168d109df0a4328219a88f8a7b274c -d7b87fd26e9fe93a6b75cbb153fb9d41bcb235c8f66dd981bd6462dc30197fea -d13b25c96f1a25a9bb0e92c196b45860b3af177ecbd4f945f9dc0ed4e08e11dd -a4a8ee92a2089c5d2d70fcac2fac89a9b077d8cef2921941c0966710fdcb773e -894d95cf8829e14835d8baedaeafcbdc4473e927df8611ff9d9aa6c012eda04b -78eb01115a5173c9a6ebf86f413952daeddf3641c86c66024de8f30831e228b5 -d0aa1082597fe8f2643be8691710da10cd536e33574ca62b5e9378fe125cf7db -bbe806af9718d98718e07ad277c87efeb92cb7d8c05dce8955c8678792650a56 -8b9f2b0b3cace96de0377db16cce1cbe41149c5c493e4dfab91d72863b5bcad9 -420b9d7f10c39dc17c638c18c37bfad72d9ef65998f62a37c3b0ac9fc6d13cfc -f158561317b37b5b48e0d414dac27810d143b9a4f43ba083e6148e871ea189a3 -7573e3574a3ca89af142864d628a580df38e66b684a8ed86c8372898bc5b94e3 -313d48e36b812d870554b4fd8c1e294df3595cde7f7e1b971710fe42be7f918d -4ee43cfec1647e67d52b2f3f972ead6a0a970cab351f1689932a63105bcdbc9b -b21b1e3db5e259fdae49970bc64924698104be7aa3569b16c55a12de52d2c1b3 -ef9c8309657b011cc3066de624b9ac7574a005a085c2b5d04d526ab4aaf8154a -9b60306d0d5a0dce74f64d1be006962178aef72fe6bd07fe71c1a34f31e82a19 -1133aff4d47818075f6ee9b319fb8ef3907e915cfaa98529e1dba3b91a04d092 -65aa3f8aa3c1452763c4acba7d71383c07756cb2a5230e9af05144100c839a49 -21b6112ede6d559e36bb946a773bb748378fbbfb2d1d8c5837fec8594681204a -476b6159253ed79935034b039036caa2e3e51fd387154e9ad27e0a7b02ab476e -9efc2472af5b74ba454db2e0411b1fa3196f717d1c210c3873964d019fa06edb -a145f9fc9dbf773f046db91b0cc7c63e42db0c821cef2aa241a23f95f8ae1aa0 -de25c97c03a8878c07be664b748105c11a74b65d4dea09049d6adcf7311d4b06 -90b6c7c448efe6d7ecfc6ce3f3524ca8dd8072c74669dad2c7129f38313a5dbe -21fb977760a4539e47c20c23fa9aa4e6a6762f68b6c3e9b33d914a7dec476fec -088695f936280a3b375c0ebb32209a856e764a09ed0dcde368baa885eae37ade -42cc08d2ad2e0501a0cf09794410823436de989aee5959da1c1ca92dbb3a32cf -c0606819278de417cfbdbf09cacdd34ae0897e8659fe35901b4edaab4340b17a -28f334e6faf5a5ee8e57da0240ab73e0b594f083e6039af2aeece1dfddfd1271 -7991647d149b1e88a0ad49bfa3ed82d09f88a0dfc85f972facaa2cf05291b07f -5758cae25bedf439fbba355e8650f3710589b90b37b3df6b340837f16033752c -6036deb87ff05c55ea36a5000af224f3ed8594c0e39ab0a66233d27e377065f4 -f268b5ad1c3074f4bff8d3a329c5a08b64c5ec4e13a497240d925ae890f505b8 -2559b8d4d122bfca3d4e9ef1feb647702c3a4d7c6598de1e9ab0c3b638530cf2 -7c350ebcc33b807bab749acba3cfadd6ea74664d262f2a51283b07f6edf02e0f -5922b566cb216326888c3eb557a46b12bbf295c4b0d46ffc41dc16526c97b96c -8bb4271c89e5227ca1e06fadbddb0b29bbbf33bf0d3cadd04accf16951ba4085 -15013bebd8984b227723580099cb1703cde01c807bfca394dff954a7efda19f7 -7113427f263da91bf3c1ca83a49dea388d12b487139135bd29ebfca171ebf442 -278e1170393c881a8c8eaa1be29e9b6056ac4f677d4a5acb2a62ef19136e80f3 -a52644c3f0b0f472463b9b763b850b4b89898f409ec732edcd6ac6019d21999c -4689bca732afa171fe6daaf966373f1eb0a6de104d432453501ce5bf1a67e776 -04b04b6c32b477ce31da8eb59ba93e80b9a55bf0e1deb99701a0b8e1de26047d -bbf3258c25e28614738532a8f915ea344f1ceee9cc63b5861826605671b30800 -0f84405627190ffdc02bef5b6265897aca682a667295b096864483d1489a4a11 -a6014c9fed23562788b4151ca03a6a2e65965683eb89715edf8ee153704cfc16 -97f66227c3512d4c51a678aebf135e5219fdf5e38210fbb7296b911a11f3aed1 -56736753a0c1c5ec84d7d682d96adb7322a479db8a4de2c80026157e2ad874b3 -3fb1c0259ef747377bb90d5e533af94c7e699e3903251b0e8e5c9a2e158e422f -f81c0d18dc53fe3b45e0c2bf87f9c8d07c389297892ae79c6a50cf53f6794a6c -29bb02c98f4db5127c2ab053853a9f6e8034ffe25a3594285803a54e12f13324 -4399609a9015eb605934d67b87541ece25d797608b2f65904e849611690a24cd -243ccb05c41cc43a7e57970458966f0f530e981bce85777ef050b0421a564ad7 -d1206f8621a674121ebbdb1827574605efcb8fac90d02488d62c9db830c70e3f -77ab6640672c0215589c6efd8a30289d5f8b80c90142a027ef84b8761ad0ac43 -863e9e8ef04d07b4423e4e955fe340c68dec4a3af6085cf465aabe242f861e9b -cc28de8b2ded6c6ed211f3d7a9494be3c9775dfb71eec0fe6fda28eb680238f2 -8af58e5c2a2278fcd2bf1214b118e51eb16cd1b315be277caa5c85b093e3e460 -72c9b20535300fdcd709a520f0ad03bfe57cd5e7ae61d37cbe13290b512a905c -57aa2e58832e847c8b6953f7365c5fe1ac59b8cb732b65df0f81b0157911d907 -2c4fda4fe290e0704e23c618241c228bc16c2a98996293b8714ffcf327db8064 -30b4705fceeaa1b6fb901ade9d1299b5525de2a6001140ed2e6413b22d328a32 -99d4d713ecd5d1e0f869e2209324a0c8608aafa26ebbbeacff2273f7bf4d8c9e -c3efea2a89533d804db1477c3cdf44f05360b52b2ba8eddd3a925ca190fb9bc6 -865414d272368955ebd252f5a0ca3b886312aa0ed479b4ce3ea8d609c229f335 -60355c2ae3f5c702ec6a2e7c0d154fee0ba5655b18d532691e3d388fd667beb3 -ac919c610b0bd86330edc6345df35eef2293d1b0b80be17195a4070ec4e2ab40 -76a454bea04c7a7c1562bcbe61cb83678e31700d20f3726ff94f3f32758e5e4f -d44abb803d45c021edc94d8b5bfa377424fef3e208da80019ef609eacbbb2016 -16b1c2796148360fec21e48ec7f46b80c5b9afe892925aca73a864e4be2717b7 -7c10140aa12df0876cee2104d7e5b979d750ed57daf3c6ffcda5f19add609e40 -ba275104cfca0bf2b86c8921b4283afd2ae2d4c6d8e5f61d8b07bd5b5df896a7 -1d3cc058b30c1f83f2ffb379dfcff7fb978d5681682ecc5ae999967141ab6a15 -0f2e6a72b25d9b975009616c64781e10308a2c9aa24109c683db3b24b37eb451 -505161fb91a2e7131c7fd39bf1ac89a3d5db40fbd4c62f85e6286f173d577ccf -758edb686ef00b7d463041e64799528572c1f7d3783cd158361a679ae7f0e0c8 -cc387a9bbefe8b8f635abcb4b53ac5b562f3fac6016e6e612ac4e0004a12d800 -661b5ca82290fd7e83599d6686a059ec7280bc1299b6026f818705de20efb7a1 -ae2588651f47d988ec291ca7a9146ee532409f89b28c87abc82e1d12dd051a3d -cf996e262012ec63d40fc7700166edd28b17c7bbb91d7f8ab0d5c76daae75c98 -521418a1668b4c81cd4ccc59eccc6742d74b69608cf1e99bc9b105874bc90af0 -7e6a36f8f88b4a8d4f3eca2c614c7af7fb49424d8eaf7ca51f39c623ad600656 -0d7905718066d2e9baa17efacb5e60d249a1d43f4ddf2ef4d9b9f1c6b5221b01 -21aaf98dc87055a9b33464220c2aec542b94045327a71e57812cc508e2cafccc -059c56eea35662ac83da4394ff7c084b09d281fd7b5450d10a08e63df65fcb2d -3c9151fe7f58cbb53b6017028c70558cc8f18324f36a0a28680ad6bf4709aeff -59fe29e623f301dc0a92ddd4915254a915ac408272257ee1a626abcfd0c39ffe -c4067e1bd46618c1e575be188f0cc145971c20ff7cec79d768326d4ae60cc8e5 -9101aef20236ca59298307c37c60d55cba1be22fd80620c16c41f027a86de7e7 -272a747c11d55af96994fcda4c1cced895773ee1cf5bfa42286744ee0da9899e -34981e2d8abdcb8a7500539df77beec5b3c2552275e982bb5e24223156257df2 -3f1e866ed8d0401b98b0ad29d9ce1359f9798d49240fcd54e4fa3854af96cd3e -1f4e68d47d96af757d7ce8db92820a30ef46f23f0bcb12e94697345ad3bd7e74 -9d5cc6cc3ab1e153633d6c2c32294abd4bc9a0d4a59e615e2a8e3c28b3796188 -51b6b4b2f9060275e65e29341ddba62cf3214957827aa04da89eb58a1cfaec7d -dc93ae001236b11a1b343edcba3fe3fbccd3d4cc7c97f6d81828c6d663a6ea00 -95d872908038726571c91acb0ae980ac2b91af8c18ef5d3ef96da5c5a5fcf69f -76d42cf49804f80a3b038409476902e5a6a6146dcba79335f676b2d3e10484d7 -a55f928549f1c8440e3b60b9ceb41d24e627660b660ea72c543684053f429fbe -86979b9c608428eff9bb69f5954c5cecd1d3a762e985dd6641feab10cd70f7c4 -5944050d1e9fde33cdf9c7fb3c8e93a19df15ff8131b56b66d8dacebcb05116d -a65b93f40b4d184e0476ff7b3ee8387c713fa5b894af0cc3729d7e5853607859 -9b8e354d39d3d58a2e9a6d0a2ee7efddcd38e2ca035b2bbbdfd517ccb09f48cc -4791530a39577ee028dde54248d4d5e7fe6d758b02692b7de8a6bb5944a220d1 -131c22cc2fb5b26341b9ec75cfd36fe0a831c5131f36716fc8ed06423b973555 -997b3a0e04b0ac579e1f1a6de499984e40d0dca346a129e6588dc9bbed9e71d8 -3a30006d908c37ce2741dc03b255ea518f406c96a95662be9f08f85d2cbc68e3 -1d48f613a7d51adabffe255dcb3cfe06e5f3fe407a46dc33ccdb2f7a6cb84e73 -1910fdb8148bb7a9fdbaf2affec3b266b6212f7db937198d9a3e40239dfbe576 -d0ae42b5916ec5a4b8cfcbeda5756801a9d79e7f45d1f9f1b88ba0fbe0b4d15d -2aa894631cc3e02451f117a367a708f829eea618134e7c7ae8be7d111aeedd6e -fa1a06f2e33501c8a52f8df76beece224dbc6be1779d00434fa564019e52b6c2 -0f569a4ceb1fca4f4508eb05616b2d391b4bff25aaf3df1da1aa89a2cfc008ee -a436bce5d654a84ce95863f6164d52fcf1b3a82e05e814c8ce49436f7877f434 -55be5970a685efba726766b02cb029ab5bfa1408b87dfc0a94d887080a6bdf24 -9c4cb81a11316422fb8ddba6712900ffc471b975092080acddf789402631b043 -652db8f00c247bac537f0f154054e6e1b557402c1eaaaec0f6a51f479f45166c -874925078dd102ef289324e72cc09036369364c20c5a087db5a4471befe6a3b6 -32c8051d03a45bbda9c22564e1f5e68b050bef932f364bbde9d3abed3cf89784 -568d53f5606d4c8db965da89041bfcc3a865eef363d1a411242e6cd8b02d3c58 -44ca6afd4031671e78511bf9852a56a8f16fa4f78b293b6ecf043cc0156851d1 -9671824815edfae530de22f9162ed826f060800efbfb5d2249f13772415b1794 -aed9a67004682177a95bf0afcf61ee3b154779368ae3540631d999741d580afa -b572aae83ad65e5989d412a085093f4084f25eb91ff7d49e6ad7e9aabc2f96e6 -7580fc01bd67108c2e794cadc54e1498cf468caf55db71420f3d79ff5a9ee2e8 -f5a359aec1aa46b97fc3bdebb6cd35c8400a52893b9b64e369cde267ef9c77e9 -8b4898db7bf90145ba3f6c3f5a7d5699fcc6c2cc2b18be2a4264039b60a29b0d -c3e8053f62ebf2ac6c665ae4f681e68e39cb2bc5d91d9651b3e4a3675da340f0 -51b1e8db5dc8123ae21e65414ff143ecf3bd11f9734721d98ffe2392acb93600 -8741502b90103a6e32ae37ee85abdacaf2530a4afd536552bf8dc374dc304f65 -89a23d3749d91caac7e58a7fffea5b0c07f394c9188a2af3a5d457714be00097 -3ae27c46f22b4e70f22522bb4e7b00ecd2a11c9ff4209b7beffbdf1ba1f4f0b2 -eb027597f3596436f6f1fd44b945bc1e5aa4380b71eb1a41c61c35cf862eebd6 -0627f1a53e3c8e780f5c0d219187490282136bfb63d47c94d40465e403947416 -0a24b4dcee1c4d91f3d5fab52cf46dc3504b4c271999a78ea0ba60526348bcd5 -4c5061720f23cbf528b287fe5acf4208e6818fa7bcf278335b90ad04676d1643 -3c4e2cb9ac19566d6c7662d09a28a6a426f3d3f42b39f65fdbb0c8052a855935 -a4c99d03a3a14ebdbc700d63dd01effec5007c7f5c710e5abb0cb3b76aded23b -b3eead4dff9fdf2d3f5fd9fcee41843e66681e7bc2f53125dc4396662929ef8e -ed939888230beb4a935fa05ae94db849ce3a3a4d835d84cd9d12ea6e8a63948b -a15bfdeea22437b2429e5d94201eca5c9ae6b348436a819d7110a277ba5c8b93 -bc28bb834cdab990302f1da43c4395d6c20ad8f93fb909aea60d260e928c0536 -214db3b7c4dbdd21d56c30d3521110c3d36d7607965f69789bc1927f44705372 -0dd295ed5f40407028b9cc8d008a6716a55e8f211e03843971b27329957fb950 -36e8eea482e83ad3f332864d4896410bba5afe921c2f83237cab4d16c99c281f -fb2d85e16c4a044b9f0bb7557e308889fd88ecbedd2815eb664fa67a5938ee06 -03fedc93bfe594ca2322a9b1397fdb328faf7ab82d869ec7fda9ecfa3a3d2ce7 -bcdf0cb0e827d0934aae8d15e1a86b1fd1a3cb83aa5e9d4a695297def0fa17c2 -edabbee9e1bf418eb3117a0212ac42870bba9def15a24657fba3e819ad412cfb -6b5d8cf6596751a7cc78ac8a61d44725b9c773a8a71f85967940a748fd64d72a -d5d8b985dcfc0e0936b66f22c6faf0869fd6dd37fff9f95d3cc585a9a1c92533 -5f18662ab6840e377a350b2e47209ac10def4d543307ab7edee41847ab462b4a -58f4c2688a12bfd156fd7332de0be49d527508b0d8ad6cde470aeb0197a2dcbe -d5f84aad66cc799f14248321e72a0152c2ef458ba140d93b117e632a5a3cb5fb -83fd4530af1b1049ac30aa207b4ec1b7e597f7669384748e02b54fe78719ccac -ba7f12e14f6021ca59b24fbccce61ab97197636fd0919af26f021988b4b7ddba -b1bac4c632a416281ae2a1aeac7a5dfb09d6e06721b1d39a78ff7374465203ea -fa8e8a063d2f432644ac8897d7e835a7ed47d7b66485a0503f343f3c7cb8bf7e -dba37b19864b1d126fd5f7b912e82740b6692566d107c18116df94a16c02ecd1 -07b9e94317898d62d8cbb76c31ea825441bbeb67cd7afa1a39e336015a4a03fc -49dce6b2d46870ca3844b07fb740f8eaec125f98349539b1dfebe6a8c82a28e5 -dad27399e40b4b3622caa4bbc635e79e4dc9192884e36c531baaa1bb03f769c1 -aea3076277a78598887f378ac2ae1f822b4fb13cd8dfc52aac6d395ccbb72c3b -2def6a16001bcda1d948eec43ba603bc11dece000c031ba72ba404575bf1156c -eab347fbf635811bba24d07ecc750fb6b4e0abea4fde0e0c181e3ce8afeb2742 -2653757b2dbb328ba33a60845d29e7c576ae7dfe85d6f1c8b7e83d04f11f016c -8f61bac2dd93818a6c8b1fd8b85879d67c50f366f1c8c55e31a9b8f63258c93c -886357262e9376d0d01df8951c8d1b4b0945f8317361bbd88c6e598077e04f75 -2eb35913b7e42c245e8a346ab6cb10dc4f8b43bc67909bdddf97eba3e458c3cc -ac62fd6d1c1d6e468307c45ba12b96b5f6996db868f98a8b92b66b7fae65ba3b -e6c08bdbd6001af1a023cb08873e905fd61e7891a3754134374f82c186e19691 -97a86ffc8d732be4df8f25f04fe0590ae229cee6cbd991ee9d9c1cc264222903 -3507e0ea0cd7f9731bd25ec7001f0f955baa79b5cb1d8a0dbb0d5b0a7c646267 -79d69b5042ef706a358fe2bcb5affb1703b9ac5b4a337073359a738abe2783c5 -c5435e77da447e03e87d36cf7d27001bd4b807be0020648ef057acf94a57bbfd -898a419dae2f2c6f72b2e227ab2fe454ab5da801cb63e5031b4f4e2176cd7f4a -f1eeb88efe9792aedb317270a73fc62881e32998b14fb9dda4508dc5390625db -76701ffe7d06fbc1b31335487320df91bf1d0e25ba25b32e73f4a38a5b9f8701 -45aa76bab62304fac2a365dada44ebbcfb104a203d6936945f84fd02710e9839 -9fdfd0cac9aa7998d1254bd93e2e0c6273efbae4d5646268c545ac6f0cd901ad -1da19c180ccd169ec6083588db6001ff5ad9fb9cceb78eb1ac9120993ec68740 -193281b27a41ae3c53c97e96e24d24dc92e23e40cf5198bf73e639e0d59aafdd -e53af489df1be777e3c1057fa8a3f71c980a9a788afc240c4eb1be0c78a8fb5c -33bf95563fdcd9a228b75be786dd79a85f28e43d7326f9a1c4b16fea2781fabc -f8f667d09e43419ffb6f0e52329314f1249b7d47ecd55db7eea5d7e59c566315 -5737af961d74508bf86d8535ae9b16ccc9b767c46444b7e25cd94270bd1a7da8 -9cf72fca9e596f1d190efbe78c92cef4d694056022c5acd0f0df4bcdb1ad7544 -d3e0b27d4f21e712dd7ca5e353fadfc11f07418f5b46170c1285dbc327edd17e -2578ccd5dbb6054168140a75be2810811bb9c804693e7a973fd5e523f09535cc -bbe1bcfe37de08eabb2ae720eefe0fd3ebb03ae6d32b1f3cad60fcaf288157e3 -7ef3f11f5d671fd3f93f53195f4f4ab46d00d573ed3b77dcf545510dfb69e6b6 -cabdcdf79377bcacaae99f7d6bce94f9bebd478569cca7b044f34506032f7340 -96acbd5f6e099b3edf725bec53aa71aabcff654c4388ebab887299b445db9b06 -bc2f9b6c1e485fe77551b66ae141b8eaeb36bec9e4930acf3763a5d407fd439b -6fc5a627aa61a76d2898da06e46df26cae6ae19cf9c77b726903289747c6ca87 -94b82b5e69137141a288f10e7933f98be5f670bd333eb1a70491596505734033 -30d236c9a273bb54566a2187924f44b3a5db08957fbaa0225190cc99b6018e99 -ac7ec24dd24d4bb9056eb73d7e1778869e4d80400193402fb25d31970136d7e1 -0eb9ca839b856d2a927c1fc9bdf20835cc6cf6b6acdab5370cb7e1afbf1989d2 -534361b2f1fb1a9cb12672d5e2c247370c1e7da42e479ed7889638b8027f765d -ae49494f9bfd0637197ed7406eebda0e1ea2c95ac4cab010ba5a2ebf6978f131 -d492b170754f4236cec263601528c9389687263ff02ae343df05cc37ffa62289 -bc48a3b69cb9a5d11c4cbcb0dd678a44a503b2f9e3a0d7763d3860a72ad0c09c -6137964506eca3b2cc8941ebd1ce305b1eb673fbbc284c9376f78bd3e1b37ec3 -0b7c187e5ea4c26feefffa884eca976fc71308c51df94214c332e8bc19a9898a -a8ddbeea21cdf1b4b232e95c4302a9433074b9537adfa1cc28db297b4c4bd21d -0cd27935fe27f2b9a2a380079e52de79cf437e48723d12e78b07079d63432a00 -69200271534086f78c8230ba5e845794ca384f30c36a7d34bce3ab8ed405d39f -85cce5a525987b1324312926852d5bbbb3eb059471221ae99305f46a35a395ea -a79ca5c46e2da5b517324a7ee9e60b571b6d8bcd086b1ae2065d98802e074bbc -d21c8afa17c4bd78f32493318c3980e99362b7b819efb4f2d6810ee40deca93c -015a542faa160598ba0a03fa1f8c3283d0bec6bade807248f50ad57ef3154df4 -eafd3d592414208ca7da1a6851a740e9ddb4667a351900217d9b0253fe9b3729 -9d71aa0e4c7775bcb13dada5e8369483bf8b5c899c03e6db9453ada55999d65c -aae5084d16b2cbfd7ae36b9e07212d32502f2ea7156e9bb92d61f73939cb1f4a -633b535448764f4a69132e081b22fde18fe324cf31267fbf9635b7fb36d7a81e -d9a65407239c6c3cfe10e1570594f8d5665d8bb3dcfb7b8dfbc78507c44d13e5 -5716f7385766dce6b6522d33996c3635eeed219ad78a0d76f45940227dde598f -57c859537d0d0d6b69de8b81f2a931eacb6aaff85aaa20665b3813812eb819cf -5dc07b903e379b6dbfa74c71f1728eff5768c78e1a83ff132b278c1ecfd413bb -d4a5ad7d4fcb8f237d643d3ab9f84fc24d6a2fe10a7077b82181b9ceb670c0e2 -518ef897e2923cf7a6fb43eae70a291b9c903df30c0ff3512426a17ef4cbac1b -2f4a0c581964b7dd85659334be464f37c74684543665cfa6f8ac5cb9661f1835 -238567e6ebfaf90e71c221035768466a89d45fa6da9e9e65d55bb06a4f8460a5 -97e45d3737b3c9bcf2516ed4831c69d5e4b97d8c4544bed87085d08de7d1b4e6 -2bc923291b577a2078576486bca78a12e4153e3fdbf9edf37207fe2e4a3be9ff -e0599e9bd08b9afd4cccf49a9e118dc991e8afa3c634d05ca33e2b76c04a4562 -84dc91af1e19997d5b7cadf6dfa309ff7a5342e3230dc35fc29e889899917f7a -f1772f5a491ab52be1f6dec30382cf7b73e5ec0cee3951575af46ab02858806c -27161563ffc45d832a9a32f27b21549618194487a20a9b8d1eee0abb4f38abd1 -660e90517e85511077eaa526e632e4a96b031377576e299f38c346fac134eb8e -ba0e53a89f4e2481e7b600c3a20ceec4e3288af921546bf3b3362e43db8d2361 -5bf8a9f4578ce17e7959f6dfff1b197c254db7001e83da9cfd9a70c15d76efa2 -2281a0bea332debb710b649aa5702aaf324ef7342ea5f117ade2893f3798a7b3 -1eefcc7f209ce80c7139f5e6c39a8b958606b90adedf30ddb1a6508fa39381df -c7651d68e5cf8209ef1ff9d92c7a0986e0dbf8a6339cfe5f9dc3299a8516de77 -4bc754ae88419ce427a9e66dc2a314d8fe602559e642711431d254cef1d1f70c -5fe1f505673bdeae5fc9a4f8089f30600d82aa4932283916c26f4b82cdd348e5 -9a58597e517e46986b38bdb7cc1bbf06ac61d5a62caad5abbdb4d8602d7fba5e -69309518cf09ea8585e6c76f423568ef3f1b4d9762d4cfad2eae773ef523f58a -ff60429965aa87564bcfe84bf2a9031735252ca48e228c11fc08430bd2dbe04d -c70ca98378ee7e7c965e497070785be386c3521f73fb3c3d6f48ef6e5734a49d -3a65010e663a95bc50a4afb89d469c45f226f8e545393d57d22356265bad906b -d3489ace0a30b45b556ecfcf68a008c87bc489dcddc6cc0b3465197ff105b77f -3ab47742b4af656dda2a1bbc4e0d8cfd1bca38120df1f1507c7ccfdf067bf405 -aa0e7fbe51e90afe8c162344d2b61bde996e641e0e3e381b0f194f40b01da6b3 -57d6ce3a4ee63f26da4fff7bb2470bf317ab2e8ffe8ee4577ec328bfaf48e779 -8ea30d4a3a95af58c4b4bdb62b7f9b81d54c0ce6bb5e3b9aee7053a98467cc1f -82d60dfe78e94944f7da343df10ce8038f715c17e9701b28d8387b6c6fc99336 -3018f165e30205d6fab677944f734eaad2f1f41ebde770d002b89d806728374c -1281bd82f8bc932c30201190c019eb75406522ac6be900faf9c71f4adca459a7 -d216a764c08176415f3651d4f6b4fb48a32171e29200436aa0697b82fa0931df -3e22af1795f9e4eaf7a63d3b402685b440be25045c4978862dad39565026b9ea -c06e770029d5943ac15503012ba139b77501d26a89de03873ceae14db0df2305 -ea53a3bb95ae87b9650569d983c8e4b6659e26fdeb50bb1e445b0b5671869640 -ea3af6e87b24d58dee3b63c2f638980b78ee645fc346ccdf203d77d3a91f0714 -7ebf1456a96ceb817ea0cef96388b819b6d78477f9f42eb55ec6d73bf0947d76 -76d8c5c6bf26ff54adec31c6b0dcc0e48336865df4f96e3ea3ff335e6ee91514 -eae888924a2fcbbb4a20e49b604535e40d5100951766c3b02eabb316481cbc10 -500f24d833d4d9570873a4cebde7eba2cae6b959c9ee7149425a4adb4d010912 -afe9905ee201fb555330db8f942b2a0de8e68c652f016b3015bbfe265db267c5 -bc53a3958a518f4b4dfb856f88e98bddda8d1e8b46c5f010f44ccb28eee1245d -96759df65a5212ceffdbf2405532563bc94997dd27fac24cfb80c14ab70d3f0a -0abe0a726cedb8fd2324da08fc6754734638fe8a9138894a68e89f34516fe204 -ebf362e8966a816097253169bf73059ff62e73d284952ac896dae12a0a483da0 -349825565791025cd4672e06790d25febcfe825d38c86d8974ceb7e934e82cf1 -d62a8949abd2dfcc56854e94ead7e099db1bfb2187bd0e20f973e4b5d1680e95 -85669fe44b868c004abb773d4fc9e2fbcc9ba58f1c8ba44089b55cdf232921c4 -b66c38f5ba8af61c028ee7eb23c3767f9aec657026fb8fa697163a22dfe5183f -7efe23cf0c556fb0b5f3a55cba45a4d2c22c7858b2485cc5d4fd107135f4e8fb -e0d3d3c1b68113a537f1ae29849022585918afeb922876f99f5d910bf736f503 -102a0b0ba4d24e585c04c2c7919690bb9bdd27b6e0b3bda34f1bd935f77ca4d4 -86df2a63b8e94c0595f5fd6cb4f4666fe0c93856ce55b3fd98b6f71f1105d586 -30469e4c2fb85f858fd356200c87b9cf03407c2f6bb4c5402a5511958904c94c -3e89483ff2cb81f0c9c9f31df4402e41df1d518f3c6bcfbd73811e51c8bde621 -44d86f9a52290bf8fa878d16b9580547462b7600ca3bae6ddb16e12839fc3508 -fb0c3c965d280ed0e258261e7edf0054a9c24789876eca215ec8518849d0f542 -cc01ddee9f5b075fd9f1d3d51ce65ed4994f66ac0472f31a17b2cf1f0b4c20e0 -3b8f40519efbc7d46242e43ba5f046e5fe6f4dc88bec1855f46ab63b564dd49d -12bf5491ce1a0814569e29cde10ca7b75de4a7fcae36695b5c66123b5f47799b -5709b945efff410f6f01cb873218006e075fdbc1399473f5c13a0180c3295636 -80fdc1030032978f3c1b5b4fa8ee9e3b51ffd478c2bb79989b505897f359ba18 -dd59c5aacc1cc64cab87461756220fa45e5121679afb31c9638b9385a3b9dca6 -b132d56be3b83cda0b4ba73c8fb4f33337dd7319b78f18cc32acc1a04cf21e32 -1d87c15a138643d417d11494d048543538c1e5cc168dd83534d45c9b0e78fa2d -5f4b5963b1eb68b2ef24782209bfd007fa93092f365942497db629908161c027 -0f3516be5f358e3c73e3d3fb41101fe9509f7f05533ca34678febcc245713ace -fefd58efda6769ed3148d0e011f08dd657b42b7a22cace148e5755e4695ea6b8 -cf85668e8a2dd8ab0389b0c26b67bd7e9ba287368cc74e3831a28f84a6e262ac -9dfe46b9bf39c3e396829be8b8795fd9c15d3f5e2dcff9f5231fd2f85ef08490 -8bfff58c95eb7b7111ab7b663818a93c0294bacc255c694ee5065011783f6799 -cbf3b161fe9842958de23af20234ea5f80ab40d86052d18d85f4da4f2ab6813f -69a3d4eb015638a83b57e8ab0528f4b55e4e06350144acbcbd6ab83c4a9137a7 -d777be8eaa15241a2c50b39f081ad07799deac2e003bf2f38222ce9d82919f49 -ffe3046a67c71d7c6f674904717893e8479eb32a861f07962b6e205d77611918 -6e0121806bae73e4c26cf33ab91f8efc31917f3131ebc3fb354c029d8256614e -0fd0e7e23b1432bae649d9473109462a5b53188c5cd86ec4d405bab9354b9aa8 -bfac290090a58457cef0155b39b10449cbb6295e8bbd9b2aa7afe083b298c794 -1c232d0851b67ee0b9dc62bfa3ec673e862e6c40b80563ad832774258bc9e566 -bcb547497b62aa4fa312221bd3510b6d35aeda4691c50d9d798ffa333217d9dc -e4882ab67b59e2b172d2f67952a2527e7f432734d856a7665b51a57cb6ce70e2 -baca0750926ca2ab72e9316748bf6b2140313213bd73908c77da419a767aa8ac -fd8e248f1a4474e60eed1fd76da0168bf43d4ea5c7d32013a79403f49e93040e -e346062b87823ba47188a40d8baf73ce87e46c820753975f8ef0167e2a258f9a -b14f8f2deed72c1949bd5faf6c25bdda6ddd27a54311b7f6b28b7c8d6853cc3c -a61736e3dd9c4b6a68f48465013e8bda5561f3c5af6dbda331141a0343c35b01 -f2e0d653c87048d64fdc0e30808a1755873bb1ea0d028e83fb17e2b88bb78992 -9a33546e3198f8483970bf7e1d7cf4f35d055841be6e21a83f390bf25482665d -e8cded3680ae431584f23573c49f27b4ed3ac1e6f62ef66f1adc287eda488894 -46df4b71582b0e4beb853159dbdca03066144f02f5be37a91aa05d6f1c8d4373 -0e4ed23d11c86cf1240077316b942f05d9dd2c7e78c19d48f5128ce53e847603 -88d0b3f4025d1e7dbbebc8046ae97825962bfcba594a2f4409deb2f2ba331fdc -309581855b76a9b89fcdd68deda31bd0f57ca62cd61d0effd13d051d74e0fb4f -3e08ddf7b04c76e2207317086fee4deec5c6814fe56123b3542ec66fa975ae90 -4f35e126fafaa43fb5620dcf26343b759f2e5851bdc1a39f61476616dab31eeb -9031df447af79cde54ca4fc9c873b0d60bee1887f301f114994ed756dd6c36e2 -f99993bd78b19a152965064df8afd815fe3cf1f9085c0ff00dbd672d09356c28 -6e0687dbd1d8e5741bfbfc4a904914196ed643f859c4e76570e494b4bb5ae37a -393d2602a61b9c7cf178ebee302bfac9e3e67845376b63f04d6833af1ab67e24 -dc4d5dc9e6855e727f415c62ffe22586156b521f1fbddcb502c36690144299cc -861f964427a1067be18692ca97ab9d7750f603fc535341584be4cf258fc06bc1 -3027f42f2de85251b04d6c603d9e2daef287ead66803c780b65ea413cc377cfb -95fcae3e62b9e1c6d4acfea86f3e556db549a4cf34e33956c251b57401f719e5 -66dbd3a65374d2c0efb8396979d57afbdb139338a973240f77f680fff4c96192 -6b51f41c58dde2e59ad30017d580eb59ba5d4f835279efbccc7d6aed078dea7d -dd2b048e0b0f248cc54a57c377c2a7f96b9381be0ce99d090330cfbeef723440 -d4846a19f37560fcafeffa48352aa7ee6a8478e9605e2e5f1b255bd6b63239ea -c4bbd7a4fcffc41f1d6dddaee0a7f952b046dcd6a39f6b33b90678ccb8849b1e -3a56e87fa30737328b9296a28f74f78d55c16629578a6c866051ca8bb17c24fb -f6ee9a7aaeba68fc3b734effc48dd949927046a2dc047317d375030626eec1c3 -15a7d6bfc81dc087d78e4546356935fec0a386299e6fee69e00e3aaa2d5fa1cc -ac2bab07a4a4fcd40b8f890b0487f6de33ff17628d4b6cfe07e21c72622a0a23 -0f2a77dde5bc2a85c8645248437c95cd501a7a7d8e420db9457a681b30f0e354 -ecc6d30c24dba103b8f5df8669cb1b46750a869e0f2dfd2c786153fa6baf6b1e -cb55a93c3703e913eabb6efed853c909c4d42453aa4a5ad45856daa3e4f89fd0 -101cee10e0177aac18b8a24c5815e1eff8ed74d4b43d99401ec4c833ece197bc -7c4603d3bb4a22403b6590e45ba5643030c4a9fb8a138be1c1dd5d2b80b6392b -99bdfe20c7a112d93a34dddf29b25d817d316c03fcf9accd54e4f41dcfb03da2 -0c5528f7f06859768df6b8665a98292b139c12b29979c33fef56a3d8cc46be2f -55f90f34ff965d4df7dfdd5f6a0f4447ed41cf2f602150b578d3156b6275ef16 -22d8ebe0bf6bf13f0e4d6bc09fdc35b4f5e7b881c8187a4c5c0aabc532ffc957 -c7b0a5a5383947507feb7b3b136beceeef54608132e8f585441f4cbdfe7a91ea -09c1af47a1c0a22116b2d4f0de6f6d6858ab656a501f58c3f7077f9b02793da1 -911ac2bc3eaa038d817f485b3ecf17b39566f7a496a122a8e8a7fef4eab41052 -80295a59bdfafa019f92cdef4b80f8e39b1fde0aac73ea626ad242cae85476f0 -96cdb9a80f0e3ad241525e81929dcfa074624e81ccf027dbcc85e29cfa46a78a -f4aeac2f2769274093e1cbcd729dedea78042f128b7d3cd22966f885b49bc33d -7dd52f2f7514f5e63bb712baea332c7257b75b0d1127bf666b2a96b953fafae9 -3086e764ef6206101eb1053c7d8000f2c95759420290506d3b51c2969d70f94f -e3b8be74c4a6d695297b236b9da1b33c2370137d278f8173d936032da8d54445 -25e5d15c1a890d2f364d3efe001788b15ae8f9394d1f1ffdd496e093bb45fb0d -8d651407da67056ac0eb3d0cc3ed5ebbb35fca59c65fe06a0e339574daaea39e -a4bb084406178321ec73e6305b8e7b0138509482aee861e1fdeafd4366e5e8b5 -8f5637999610789475016abd54a728302399ca7e1edc7f75ee126354114fddf6 -c24a3485329e8be9e547187abddab3d236dd42a68f779f6727a8426655572eb4 -341eae97071010c2606672910ee8370ed2f085073cf43c2ce01c022db85d2393 -71d9de999b867a019a2a20c94da35f7cfb4b3471cb0195b58fadb9ff05e9a605 -90360912606bd7f4e0a9172454ee2d74b0ea8c8f089b44a6640f9401aefc9601 -649c0aa1aca6ef7d046fa4bb7b37d62d37629ce5b6b45aa255515415bbfa8ab5 -d7b3a97183ee58dec55446c5d46802d82cbf2b37ba5076ce0ff122f470579c59 -5da5bd08568568527d7115f5f6d04deebf5ca18cd3d0b07d8090fb128e109633 -94a165077f61c9ae8a2a27cc3b48bb305ec194ee55b70a9501572a45ab38498e -6e753b4fcf4f3b98c1cb348278d612c8fcc9a1974231bfdd418baed5409cac5d -ffa096b4bd740a76621c0c42ce5a535b252c1bff9fb00fdd9fb114e91cef2950 -7867df6d54ccf36d4b6ac7d2d705eaa583883ccd90887bc74775f8b9ae183a8d -7280a908b43f0aef66dc63e6a4b93a89d488cb9ab6c43f712a73f118f9337a25 -f263da8f5fdaf4c78031b4ddcbdacc6e0b9d465c10f76bf4b161ccd7ee2f64df -817af8da86bb922a507a80e44657413ea098c3bce048893283b39a3750bba24d -9156cd714da99c65d85dedd0c67b6d38030bff0dd50244e1972b5438d4b28ae1 -ba39a352fe7cd4df51742ad1c45dcaad6372d53b00c151a1502110cb22f8109b -40f630bf5e552a5fa6473c19a3c230562a8fa2ca1dbf7d040ac849fd7887ba0c -09cb7e9f344221763f621a467766ceca08571e30774591e220754069fbbc9696 -1c0b075abb9551300003258a9e0f1bdac9cbd891036ebacf68a700ba4799d899 -9bd90db9eb9dde8574d7b794155b07731160f5c7bf4673e55c52454f3de0a577 -f2d239471c86745df2e6847a21db1a7b00d7c8ba430b92b626e894a6b3755ec0 -3a3c2dafac8c74bf59f919cedd68cf5f8bfe09a31719dcfa8aab85834b48916c -9709ba59bbfbac863e709212670a3f598f9343f797ee91197c28d0b500eb7424 -d30661b791f21df9314d948846d9339708d14c8c76ef765f3e05ba2ea7bf663f -02deb465dbbfca57456dbed222578389a86a9e67ed5834ebeab77c36889456a7 -0a8ac0aa4473a140344416a0743867d839e9ef8a0a45fd6eebf0960c059ac345 -8a97aa8f095762dc79f2a12a9d0140889d8d094c104e38a4f36ffddf082a55df -0fddeddba4f340d6122e1b38174801f9c8a13299057b89a25df2b6ed09ccffc3 -360f911b222110b2eef6ec58998557f6a218c15e55c02aa762993a7af547f567 -dcf338c13777ed7117e1125bdcd89004218a4579eeadc8e36ce251c65ec305d4 -c74e7f72a29a406401b2b026ee6fdc3126a700f16aa488736ac517ccbc4091fc -4eacd41261679c4f8f0bfc7b1804d98526b80de5eb39a200051dac043b0b1e37 -87a955da2aa12066a07d8c9b6aaf1e179076a07199198205b622c68891a61b9c -f600c0acd9833603e22954a751cc88b473044acda04a308259bec5632c56a3ef -fee96190446df55a6c4b728c8d9cdaa6d2bc8472e3ff8954c0fedb033f119b6c -248bf951524ba7fc5c468f95faf7a02b9b604b852bcd991fa41c4ccd206d3a80 -5110520e84121d2358af8f0a50b65f50f6e8cc4b7eb9816b7df5eff605b08204 -cefeaa6fc6669d5ef80aa49a8aa6a68e7a1b2339e099cdc0d7bb1610ffd4549f -0019289101e1e9a64860f2c1f3f731b5447dda2b617ef732e13ac354be05e7f9 -c150cab3c5c9cf3a24fb2d0bf3d1d2fd86ff8121b950c02e777db12427f5f0b6 -09884aaf6c89466994a391fca24a693694e1dde5f1fab9c53aa8a55f54f5e1fb -5c39673f3ee55b1ea03042c33fd38f27d6edc96bd9c8a84b9a7b2628db01b2c8 -ff701925c8e55dd4223dce67c80cbd1498393b16f9d2bd333c9ed2904a878291 -177e4c78f6f7fae9d00a9cbea22c8c3247e3982976a05aaebde8335ab54ed974 -0fe78893da3e2b565bd42f28ef262fcf0c2bd07933ad2acae38f4b52eda12f6e -07d1a4d630d790e79c6070b0040fda35053f7d2a1580b633a8c929476df2a9f8 -d91603610918648547e2733337cbed8f2e106cb21ef9651d909c2d118bb48b2d -f9c15dd12f25fa6f85aa7c5ec2544c0833e7857ad0b924bb8e02fce84aba3583 -65a8f10088d27edd207a35ca33608e334bef8818ee648607605f35e6c7060e46 -c2cd4589fa4fa74f8cca5f28ef7c13afbb538dc0302936a725e8255fd7edaa97 -004fa91e78671868af95b4da4cd5796dbc85f553adfd53ce4d75f5caa4ea8fee -f2dc1f78cafbf8fae7dd2ceff79b60ce18f1f13aba6b61d11ce2ec0b7055c64b -dcb4968b8b68b5b889810825e95580153924fc7ec452fd260bfd4b7ac93e1d53 -7bafe6afa99d4599c5253042300bc2f16ced86ba5c13d884a5dccb7c43d074c2 -2df358f5a28932f4f4196f0b07fa34adc02a4919a61bba5b3204ce85f112d30b -3dce323bd2db881f1825e3276f04a5fb7a84d93e84b31769c622c84f4259d6ec -15669e52ca59d2865809a0692b7921ff22b7109e0946383f55121c5a509242b0 -e8499599cd7401074ef238dd9d34f463c0c4472d8973c19e01cb1fa136fa6e65 -0fc72c18b4ae646485eb2b8c8598d2fa516c03018286aa8181ca5d8d3aa7f178 -efaf5058d7d533eaed8ccfcd7b4eec2c0231fdc8dbc093828f2eb9042322c1f6 -a8a848b4a777970e28ba977043d459678507e9ff965cb251deed747aca3b242b -b9789abe795fd4775f9eaeb19e5d7b26530c39ec7a7c02a3b8fcfb215a989e38 -6a5d4d2cde27afb2495cc6634526d0651bf89b90f9b2dd940c67de0474daf715 -5781226d23506f20a183408c73eb10d167921b32634f188e42cf45dcb36b2b8b -c9812c185e84df64b5def636b89d1253559d231efc22ca329e9fc61a2e299e8e -8315a69a54bdb775913d1a1ec2f038924775e72f0da7900f93c4f4c1eea91019 -6889848500bf738a816d82738d57d51cd45b2b101a4be9383d45f4825d61e059 -dd95b52df4c61ab5531daf15367efd75436004a5ad334b5fb24510d40d05c30a -3292c57170cb67d8b6158fdf370c29ed4e45e1b0407ba33931dfb270ca6234c9 -9f891d00dc5c5257a37ccae0ead4baa806dfea9f7ae9a366618ec1ec7efca867 -50e1e1540a849b8de8f9c539a74dfb6ff147f5d444ae3ac049075f712b526691 -89cad9dc91e09f4b2f113ece9550287cef96c3e6c11a9c6bb9dc92f3eb003f09 -e60ff0fb368b10edd094e67365456d848c47049ed740f76df24f137eb6efa231 -e3985f7242a00759787b1b4389660e1356bc7f4cd79ac7b424f07e279b690701 -a606beb20457391abc8f618e4cccee5d548ecf24f311e92568a1800f70078bb9 -e0a9a770f6dc639d5332bc6f30a3aa1da9c5120d0195700d5d93d62bfc66e4fa -ee2f1d8d97b6c1de9d5cc8cdb95b396f39e3e802690b70917c5dc4528b6eafa2 -76079977e4dabe14262166e589d27653c7a85619e6b3038e9e015f5a00f563a9 -aff1b87301afb999d1edf2d0c0a340f0ff403407a14def8314af43e8fb280061 -09a28ace70dde4f73d76854aff9450ea6ebd2d3856c609b674b510ea4cc8a5e0 -2dfefc599da30f35ffddfadd7ade0f570129aba4a6696e44ec9e78774a4d5a12 -71a39172fec308dd27654ccc092b7f6cb6ec5b256342ec2085818c1214a38514 -ebaa915cce5a2664429a36ff02004c9e4b381d58e6607230936e1d9a07584d9a -205b86fb522236cf610fa7f32b62afd69f5982fe6db8a889bb22cf647196a88a -b41a7a6ac456d444fc5623dd702152187481d280fa2c39f3e3aa15ce2260bdb4 -bd23f5499c1b0e744d40e60dca73b40465702665c01951d2ff28a1a8075158eb -527da642f7813d3dfef193536c5674baba30c196b2d4ef3327f90371e4632ea9 -412cdc52523c9bdd16c48d928e59da71a174de453ed6a91e9011e11b16f64c95 -b987c2bde18f56e371264916f1e6d9f1a2a08a17c264300723bf75504ed7d9d9 -c12d1d6451b14d8387db0ea0fa79d367caddffb902794d849f52517f67fe54a4 -910dab61e79bf9e017e2f762df4165bdf2ae7ecc2ddbcd19e956bb1eb2eee7e7 -55dd3af2ab0bacfcf809949c2718e4bcce6c161caa147d7fc19d02a0b32eb752 -7b9e5497a7fce2789a0481cb0e3d57bd2c5ab440d2bdd6e80c5e4f2be3a32f24 -d0a190841e541c2728a042ef14ee9813d633a55eea408e649e1b155b7765b923 -06904419d5e1c7e4f2a6b7834fe1a909a81fd79e5863f9fe565fed09902a9021 -99792a7a7a6dd6e544584a28d4c8d00796678ad4ade4bba10ea75a01264b0511 -6b40fa46fd4737ef2247b7ffd5a8ce997655318e55b0d66f4dad72fa277f1dae -419ef1aa04c1a8e88a39e026810812931e5071fe27aab0456f04e5b74e4e3377 -261958c94e232249f2681c1ad71935966699a747e2400c61ce5b7bf7e07a47e2 -97b129711f0b944bb4dcdb6e6e65ae037d62779a3c1ca995799f6141b7cc87dd -931f9f4c1ec8f16450403778d745ded53a82555413b2aa45a0facc9e1163c1f0 -ce542196e54e13f7c2a94c54cd63af6c09a22b8a7b2c21a05517e3f9803128fb -efc655e9793cfd843d933612052376b773ea32f27e5a32df8b2201794d73bc92 -60de102f8077d4a1c2379cfb3fa07cc0254cf68af0821db3269ca7f549bf3db1 -deb7d6a3b9760cd4cce37c33384affc05e312789a0774f79ab36a71b3fe01c1e -8cb351b02c8e283abfe13bf0b6b07aff603243158283e12991321b0bacce3dc1 -395f6b1aa740f93b7b46e4b47d0bb69ebb5d1d8eee5da4d7961dbf77535a8540 -493159dc577bfd05d151a6c19449723409bdb7d11875446cf7016be5ad01fe1f -a594c0d74639b8dbfa63cce85009e254d01f9d33294d0e55f05a9b5bd1e09d79 -3105368cef3bdaef7d0ed590f63c0bd735fe662c35df1cbfc2f873f0ec592732 -d76b0e8f13a9a7930bcd28a84d20c3a2eddba62f07135685678f0df5729101e5 -7083bedbc979122c7e8530d78a806715ee9f446e2fd8fb03cb3c4838c9d97485 -7562e4235667aa51b2851804b73dbeaf09bcf9bf1f01cbebe784585512a0cf2d -7054a936f34b539a2593f99857824aff7ddf9b37e250194779d8bd17ca85dcaf -c7ae8fc61b5dc4ae94c0f4ef508761e68bb2c417f4bccea07763ccfe491ef1fc -983ff34bea22c07ea93314c07b21a52abe2196984e19e38ad02b312c501ca332 -0d24c589983378a6ed46cff75e1e81db2cb676855d5a6cfbea9f75406e768a89 -6d7feed29ee34a7f28e3db2164985636984826640b527148d8078f1d832cf333 -4a1925b5945fb305d7d2147002ce962df41c102420d9151e345d6636d6b5de24 -2e3b27c3cf8981e6a43875dce7f14dc4ece37e11d57c706856fa96ff156d4011 -f987423797251044685016e6bd49d53b3c234f29a520d9f2fb8d714d7e50d8cd -26a40ac21d8e35a9433f46a9d9a7fc56449da6e284e7d16523887b06280df6d9 -d632cf83a792fbd10ee2c5ab9e79982c1d03270eb8771230e2d9133b61f2840f -657e7f28db9dab594bb09781a7659f024d8338ef83572457f8c4a6d911d361ae -173d65ef68adc623a5856d7fb0691e531d7d769e4de36ca16e90d3e82e051a04 -9d3af8e9a15a6c2003f396abd27dd67273f58558099ef96db27c9ad6c5f7a7eb -d088c76ab32c480f09884f5665add93c28fc0a25143b37e8905284c975c91dc1 -cf06010dc485f8cb3e6345d75fc40deee33d8f66258751b24b831b9a5078517d -f1b1923cbd7a4b564d2a30b8b1cadabf985d8279806f98c20f43542e6fb06af1 -2556a1d976ba39fdfdaa4fb655c9ba9d8164e7c0126305c1eb6acac79d7e02e9 -61ecd4b235525c02b6ef50980728526602a0cb8d06231a5ec5d6244798cad643 -d0a2fe80f35485ae43e2e322d918517290ba1714e18665f52d39a1e4a751689b -21100e7336b0be00ded97aabbe2494a5fc49fee5fa377020520a7a4de0f14cfc -73910ee1156ed9d58c72206198e047564e5bff8a207e4acb3dfcc3ece95a6a13 -e9bb98437f7e511000b813638ee464d1c8b71b39fcaab8584f1abcfb6c9aa836 -68293c3616e5803b88013d8f155da5748602867d02999db7dfde2a6e9f2b76a7 -d300344d1f52fe8eb845fa929f4b05adaf78f3204c6609e8238179d80fed0421 -6cf0d64d8659d076e49f040820aaaab8058d10e74d55d4c58a7302a3aa541f94 -8c122ed59f3036c8ab4929100c52a0af23fd5d70829a0db500f089a0d908c421 -7f23aab6fd305d25497b4c2ce6fd95849cacc1aa38710b3536f189848e6dd8e3 -90d765588f768f9625383ef85345e41f407361dda234cee869e795b8639df4bf -2f2e9c1f6d9a8c185fdf3e8ac9811ae3e894b464d5616e3fc9b39b3365b93a27 -4b9d76fd498ea3ce682ee95bc6b55fd8ebfe660374ca6284baabee8ef0adff91 -31e7c3821bf0ad5c11b3e9a6f3b23f90bf3ce077a1bc97432726e542d540dcf2 -9ac389af2a79d75b435101288ff85a22413cefea6b256673f4a8d619ab89b3ea -8e9b2fa9b6437a3a19c8bb2ec789feb4e9c98228f07a6b9fdb16e16cc7bfcdbf -ea42d2105d7494f4be85f1759398aba05eb7f9c9d07290a08792d973a2d5e694 -20c05a379653ba5c992a9c2420d8ee1befabee2d47e312f1c2c728da864c24f1 -b2ef62c8b73deb211936a8bbc2fa3664e1c6eca3faaff6804fedb7cf7f4d9361 -35b9f1c11de1b3eee1261324cd5e3bf90db51d67468dbe97e679e01c79ff0603 -c6802860f89cc950b111e8b526742c2b023499200e877be8ca8b76126ac46806 -61ab7de1ab7ab1b28480e2a54b09618d01ff83b36b3cef1e0ce288f60f3cf265 -a43217c0bfa87d0481d9b41263944cf33bc05dd374ff5846d57b12741101179c -8693d2265d340f6dd8de0251f5eb77ec7f8a2deda14775241fab991b45d209d0 -d969e7426e99550ee0ab4951d1a6eea42cce997c81cfef42dd2d6b3962c12b0f -9d5a1d7ec198b8e7dc7fa12633e138156df426939893d9c94fa22d7d6775105e -46d0a56c05534ad1d56e046748b2e5f7881a81f16972febb781d10b82b74cbcb -e04e72013fb2a715c9b966858d6610a5d0090a2b17208396636a44f64d3216ba -e3573c7de2dba8f7ad67eefcb10553daadc387d3d63cad07b4ff3f71228234df -956b1521788f1b6dc5ae94eb3269666c8062354ea1839b9155ececb54ac0d8ae -085928c09dc4f7a1116ac5d109a5ccad4db23bb4bf501b91be397005a4518f59 -d8a104883fd924b12ddb4dcaf962de30e1a0fbe4cdad0e32b02f9a0ca5860db3 -cbf4e43b9d970ad29283feb693d60d03c5976bbed5dd3e8f1290fce8924c1f11 -884a604bb3f8c235cbd5e60b877b38b97c70574befd7f1a141f0d382a268b1e3 -a42e6f7969e099d566186fe33b50b8d6d3cd6ed7cce827907e80ae6cf427d1e7 -3e5b8d39a49225d0d5ac309bb64e6bc0aaf4920254c5423b5f1eb5a1d037827e -b9ae40eee909916e54caa7d0f6c98a101bb30133ece88600567705f1f70c865c -cd28dbd66cf2e4e8e4f1a42036454f776ee8a61b98a71caa182198df399c0b28 -8e85853254cbbc864590b9d742ba6182d9ae6698b4610038be8bd1af3edb8c16 -061e26f548dde5d0599febe374a8322bd7e4070063f75449fc3953ae7e4fa23b -bcb83ffc22fb2763f3e2813578dd9787982afff1b6c1f4f769ef9b8b5a671ce9 -136a0bd2446c05e21bb77bc5a460c5bbfa1e392a203ccb3366b48a003e444a29 -e8e76e2c86ed499139f7ccb7de5ebd603bb05dab260e384fac8624900b3bb869 -e5ae170e4cc5e0648516f028833f97dff92231d357334f82bd6d92ecadecf0d3 -919b5420c04fe3a589a25b6b62fce2421c537d9912a6e67952a72217605ebeb5 -62864031648052a57ce5ecea79d5e2511c07dc415e496d103cbf7c1a3ac1c431 -e57e6a622ad4612dd2855525d17551eea92e35a9344b0ba2638f0b8b2c472b52 -ffdd30fa77321bddeeb531e1eb17d8209aeb88d991dfb60caf7737dde50ffa80 -67b1f4fc36886c5c7379e4446a8de0a302ab29525ae6b5889a2dcea75b98ba9b -bd0ac3d172422768dee5a73be484f9d322660ac6e9acfef7b93e6fda2f54fd8e -69df0fe8ffbe0fdc712d7d8b4d6edb4d5d191fc29e83998ff08059a975637d22 -0d2fbda086cd43c4e4114c1dade00ed02f0a4ccf9918c5e699841cae99e47fd7 -f10809f233aca17fee9103f7d19f815e61ae480091e339f48405b504bb06cdb5 -adcad025735e0934627c31b5a94b18423a964cb6498f1757370470c8ec279bda -463cb1741e8e412a8cd67c090f3d4129eb9ed187ee0cd0fe87e35299f40c7e23 -a3760b9ed6cce32d3399f5c0831f40ad770f588583cfe2b2113fdb888e1ce982 -4539f912b94caaa466bb7412e7b98f3dbbb0194327523aae9bb76a7ccae6ed32 -00a128fbe34cd3aa17db4cd3fbc6899b6b88e7134559ada907e38716319bc6be -24ac332a238da0fb4bbe7abed2cb006dd2836c1034884724384ca60c79fb19bc -713eaa3e3d490fb6e901cdf36bcdbe4f83f181602dbf42b44ddfc81d04cfb969 -a3fdfc5269d319a38776173642b5d5a5c9b415987b8438485e3409735f2de832 -e7a639953a6faa6990fd48c924036d5b2b5561fc55939f833698df78d1cba5af -d0a2b37978033388cc1e8730be406d3d22a1f2b2075b6f60ba3b8f4b740437ea -23ddd825f7e3922a10c5a1a565f75e339d492aab181f3695e017b203bec601da -76d1994054ca7b6a3c692a31d8abe9eb8fdd560e4fb74f1808188d1034e3aed1 -2ebd4cae1d81fbe0b0115a4fcdaa0b2df45f4d347e81de58c47a8e6f89ab8049 -02362e817be1e3a261176dcc26089d3d85047f5537c6230e42b69d81f2f9db3a -40059dffeddc1fe7f895a4d344d34371aced901afe4100fd5c69630cb42ea04d -e4903aee91fa4cceb1f24c571283abb1d48d88f980b316cc296506a64f2dba7d -5a28344bc6d9ac31a3504ac608894f84d14d49df1136f0322a2099fe7a6126da -cd2fea85a84085a9efe20fee561549e42232f91d3089f514cf79602347c94b4e -9b11aa068f8c286059f42987825d020f42355c6a5c568fe1188a0c8c31439e92 -acafa313e72d4d9b63041585e0717478c010c6430d1ce6cc07c7b95c136bc18d -448fe259616ef3f7cda1d5581a12013de8fdd2ac80c8454df2f81caedf7769fc -db0e94f7f004c7db7dc1ebb56cefbc3d0d9265bbc8f5b21494e770cc62022328 -0ab4badade9142caa242db06a82eaa4a76ef05dce72ac488d177cec5addec911 -3230b2d0ef20a624ee883c15ef4a19d9218de01b4fb4f3237248ec4478f91f19 -ec37976474325555a4e0222a95ff66dad7c0a282fab5d17d4ef0e9a2551023ca -7b5aa6bff98b1cc8d0f67a252af55de00670db9f312f3fb192d27f2fc3f6c1c0 -7dcce0592cb72dd1907b7cac26ced348b45f7230e6d9f0b3b5cce4b394623ab5 -4492e89216f6a03a8875e416f331538a3217a10f234197140818b7397d2fba1d -52d91bad8e3f4363498aa1be0274ce36e157eec980b213c4beb265b968cbabcb -4d96e78a6297bf79c0beb9f4724e2ac2cfdf9e80a86dc6266e8f4576caa38132 -7c50d1f43d3dc3af099e5fbe958fa0fe78f81528c6e9dc3820d0bc0eb1bac803 -1c4c098b5ebafce664dc173cbee0607169c76bfe5efe110f66761cc60bd9f83c -e12b983e1469146fba20cfdcc85553ec0feb4fe4df5b2c291aabb80d58f14c59 -4a50c933ed198d7028fcd03a15fde740be224dd5c8f9c7bd71e976f1d3f0909a -1cb9e613e23b5b4ebe89228ead527bddc88109997e74711463e63e7befc665cd -8306a506c9819060209d4a7e7f683b3a22ec6a1bc843924170f23466d62e44d9 -71e18d90f1f4155f8b40f110b5289eff1588ba6a1165ba4685d90cc1c078b07c -fd15575d0e1d61581a20d2751d7d97774f30279001663c4c1d6c9a62ad13feb1 -00dd85b496254ee7f985c472f64a9eec66c4e2e322560295ed1d18872ea27b2b -82188ecfb2aff7c7824675daf32a22db2be6b2b75f0284782a1d3145ec8c5f16 -9c9dd2e49c1a8a07d739e4b0709409a9a462aac75252d53a9967e0bf33d61274 -da149bcb004c44ba0f70f2bac9d00245187f2206662d159497323dedf67529be -132f300c278e169462dee3cd07cce93187e90062862810262b7274ba1521e445 -e80df56696acd9f2a302f1d64f32b41ec9804364306a304b6c2c4fc7de5c50f5 -ea008b692b60c1fac05dda51f3fc61e151f7640b1e9eb017dd9265a7280506c6 -c0f90a8abb98e172947174cf9061688ce6d6efcc01cd109d13269e12a4dac854 -88ba080c39364834e5613993a3d3b5999ebac4d41cb108a3453dca5ac8676602 -adef5f3a48a03292ac49f28a5a9e34fbe8552ce3a58d399ef76d2f2e35200882 -d70451502d4f172fb3b29e15717ec3465e2b3f03418f1498adf766e42d2bcdb5 -23be1ab961342cbb1adf366a0bcfbadd559de33aef4ce99f25b83235acd05c3c -981ec3a601ca593d5a50bff439ba7b33789272bcd0222114cb5798fc61354b1f -f1587975bc6d4a5af2c3bf0da51040cef58e563d1f4f205a873a33e5033e148f -e6901370f29821eca75643e3da2d250e9eaa54e9add4597ee6aaf7b8613bad65 -206465f333e67814465b41c2e8e5032270dad0620e7802ed1f927c55eeb38dd4 -3b7fab36d3320ca9b4ebf5df6810e83c4ea386597e02ceefce8d6ce88f6c97a8 -26e7c988dbf1d35d6d865b19ce453055d5960fc6dd510c35af6ab864b3b037d2 -e6442550d542db56d7637790b70ac1e9f69002ca5e9127dd655828a69bafa5fa -31e9c2a3f43ccdfdfa614145517181e0ae902903af25a4c15c81bf03474aa123 -094160f8190840dd8bc7ba4c5b08268d611058cd5294c2bc98161b80c701c87b -05fd6f950baa1d4df20a3b2719b923fbbee146390c9533d911d4c7f21b19b1b7 -69bc63ae6c54d23053d328d7823798b12078555834490886a255a4ef772b9ca5 -b4ad0d6e920f115ee3bf03c63ad031f200abdbe73214b37a138c3122fbdd337e -cb4fec68b8f14ad6c21415bcae6a97e32e57b2cd4063b9dbfb9bf98917a2d730 -a268e9062e57af64f3a621d1abe648a840e0e9813be90d9950cf310266d4708a -5b19d6d9b4baf035710b7992c1ad90b874c9d89dc44bc6c6c0e1a24f88e610e5 -c9b84ddda24bd46bb3c2eb56acb5bd8495582c99a61394ea20c1bd9c2ac84396 -38fc30f0c73a7944904390ba5e0333ff254407566a7c7da03f90a104c39e8040 -2608ad2fe6cdd262f2fa636cfd2767a6c2726b9575b8e9438bc7b2dc329d70a5 -49791e16dd28972ba9097f9e3740633bf1507930c6106a60902a15ba6e926cdc -bdaba399adb069058aeff222f768204b2c49f574ddefcf3229b70c21ea504e16 -eecc0bd4e304bca5daaa740b17df8f9ac955706df25a3ec2def6507b7d167401 -06a5bde6698f0bd75131bfd469c0b0eb8a8984f64deecaaafeecf4dddf54d30b -787a72d7a6e2da75b4b2ffb0f652d22c6e209858f307715dbe74cbdbdc597832 -97e647fe424fcec0b134737901f4c07fd64b4cba94cb347894ac38f077780ec3 -85e82c194ac5617dd430cb0e473da9ba78f7b4de9897cffacb61eb4b72599fdf -592ec3ce96422a19c8ed01dd70b278b4730be031472b50528c47093ee848017a -2aa2aaedfe6dfdf298b0269886d3c503f6a143b0ee535c137a5af16644390f26 -216ccaadfdd77fa2bb2eefa1b431e9022c726a1eee12808fbd0da74d9fe32879 -4afc1a09a4caaeb64757f921acb1bc03a4fae0d7a66ab6be40d09dd77fc9a62b -fb311b9504bff9b9049de7946b9b7d5a97c7df0816a62409e814445979a33956 -a577cf67268cc196e63e5550f1b0d3b2105657058951f8e7ff7d8915b3b1f12c -4eaafc23bc846315f8f9d4b9500c836b315a1aad412f8849d3bbeabcdba7ee12 -ef5192e9775f3098b2fbe706ce3e5571d070b62fbf9b4b53bb79655cdc8a9a15 -6fda69f8f276521e254103cfbfebcff818f17c72ff4b47d42a603529db453bb1 -b4216d80ab405b226b177ccaf0e7ef73f1e12c20bb5f72539742a6ffc282aed9 -983fb5f67c9ce652ef1c624596033bbc5525e440b99c71a8a65b37e74505aac2 -ec587070eb22fcc6ed624f949b8d1874648c7c05fa9b16ce2183f5fe20f62623 -0f58a9703e3604d1d8c198e55ed1628932b04eae20f25318238802bc1b1a9317 -8bfda4213bd6ca7a7443665efe7f4ec9f312491c6ca5c0f327548b23f55ed9f2 -a58ab6291a30df3827803069208258632da7ba63a973eb29a6b0439f8c7f90b3 -1ceb9d0ff568a144edd30134c508f247127e355c4742562c89f21c32a1546ce4 -67ca4ca2868850e1b7ef40d0de64f08470070e59cfb78a312b7eb7e1e843faad -7713aebec6dc9f59a315bace85f7b979f101125d188022d488e8303e0ad84820 -ccf18f097ab5f34b683167104025f07a2f9b49fba6b6c3bd7bb6bf946ee87500 -c12913fb842d8b9461cfd2e400d0a039bd9f39353e6aec958f217e1085c011ec -ce437754e492c3e19abcb6bfacdc64cc2a793ec6edf215e92b634ce5d6c3b5d8 -7ac5cd5e72e7d797b8ac7f9526935373763aafaa2bfba19d3ea25a2574137c69 -5aa5ffa52acd308271740adac4cc5c4c0fc63bb2d3cc4408545fb14efbd3e687 -6ad817d980d28665eaaf85e00ba2700d4c7642def5361c978af07ae3880e93c9 -342ba7d442cb882b99283c7dd0df1f8f8d45d1c5c20fc92207511b29dc009bed -d97815af8b0b6b52b782a143788eaabd6f4456db592e8bba74fbb4bf47987c50 -660ed3163b803c5a53d39391b55bd8297d25cfc0ab3cf77c013f0a1192e9b941 -db6336681cc776e4ec5bb0ad475429ddf171f066413001aa33b2c72b09e68d61 -c182be5971eb20c42a75175a0eddb139289f2ee8cf27444d1594b92e7fab1f85 -f89efacbad9984957a9c7953a4cdfb9fd8dcf758afbde395ce3be4e37749a2ca -98f6aa45a0cbba0b09c665673c57c4b53e2e2b9daa046c501b2f7427da962576 -9b2bc229a60d1643b7913cd9c9982a955fe20c39e71e177f4795e78ec9ac930f -ab3bf1d2cb31b9c3b9fb7fd6fb8eeecf3628e3816936a99225ffea9274231b1e -2342ccb527439991d301d338245a0d708c6f163a63758fcd611fdb83a67e7ad2 -6adf3eb9492cd744c5ff951677f4e2a48e963188a9640f7aa94de6b259bcb6e3 -96c9e5651c02f0db58bcf1128a5ce4d0b5e7ae79528eb7a68da7619cbd328387 -a55e0af7f998bc729d6a600cca188cf0d23daffa5e72568313a85a88007956d5 -e9b8612a45bfa4dd5337433d12a011e230deeb4691eae4f2f05b2a7f1a3b2fdf -813e8a4d9fba8abff8388ea5a306d9b490727c67d5cfe2aa2377481c1d44afb4 -3181be66fcf8e57d36f9b9c45b6401a2cc709811b363cecc3e5f2f1c2c4ee294 -8111a20cac66056382002f455ffbf3beeabeef461efa4ed7c46430c190383ada -97ee7779755762f706d981a7fe7ab9d2864fe4dede4f18293e166878789534a6 -5c5b843bf1401b955162254bb62ae5732e333a764379da8efdeeb706f3b60a3a -d77db1d44d0fcc5b8b12f56de253518dd118f735de0347a6a5736b5aa3b65e52 -c6a283c2a51babbab4ba30e567908bd15f3618c0366950288699838fd80edefb -c17e6885122be2e6a73ef7dc55a0e0e128bc281756335fbd8da08420f168189c -b1d84bb386243e9ab873493a982bf63d7f9c811921b20db9e3815e847997adea -f81f868dcbb6b9f358de7ccf971a713cba3b224078e6cd8993da4b9a5a61dcc1 -ff3d184c8cd5cd7c9325d54d5f3c2b06297e93ebf6cb6ba8588f8d8e5911af0a -c2c58e87adc8a997ac5a080e6f4c801e284e2860f4ef84ca1c3134b9194f5d33 -58086a052d4de0858d227a84c59e14c407944db11c6beee69c211d272ff15bdd -e24f79cb3c1ae8062d2884c4c36aed67be4a08d951bd96766cb623cc955087a5 -8a4ce11cbec400c83ed9b0f64ea4f614daeaa1b469c32cf2191e605dba2e9bb1 -fe1f9f713b5b46d9f9be04d1232d4150f5bf02acbce666ea443205ac69ef7389 -c5cde945e9fb5ad1b7e397ccd5340fa8f26f174d414346c0207c9176bec906e1 -93620f6524f5df3c396466cfb37172ed79782b8ab560610d0249de04c8fe966e -211a2fdc0130dd166cde276fcd8f3d9f8cb6de66bfa4e2d5d8af917e73d775dd -899f23bbb30263ee13c1fd7b1e92fae3dd386499c87f8d798f4ab6efda2ffacc -4552058dadd59908e3d0d6a18dcac0ff65796ee7894d92508407bc3f70349936 -91c097663dc6c5166e7f498ac920460d1b9b7c506e3d3301b7d038ef08aeefb0 -184057b6dc277de28e1df90ec630a3eef6bf161d5ffc37f567458d50744235f3 -ea3b5b02e0e9a510d387944c0625a9e827e922652fa38e8c97b87529e7ca126d -e6307239801ad8dee1c9bee66ac8b7d4e3e160e28127bce8bf03d8e5d9eddea8 -6a2e97997ee1b5e77735038b3614cb9287beab5dfb79b2be6d4c56c4823a4500 -10b1ec61da207a41c374f111819ed240009215715d23dba3219a6c39af237c95 -bc7c81597bf3395d5f4e408f5bcfa2cd25acb73d1ce139c802bffcb640559d84 -c5d447c1e58fce0cd18721d31127983b81473c3e4649ff3c072c42b813048ddb -8a507c3ec82e4f0783fa50bf95b00223c8e4f31d8771b4d41865543f796a1f60 -4287a0583233c945c96ec16e85045841d8de2c1eb6319deab2c03dd13adfd50c -3093f235af3f268af07cb772f9ff9b756d703916ee3823684c4da3ac36a5fe13 -9d7ee194fd7773de23ec17d48bd55670cdc7b17a86f49b51f6e1c325d1456501 -be676f60b9266fd563f03142a9088a1848a85df2f7358e013413c4df95ab9869 -bee98b062ce9e309bb040ffbd1bda7ffd94d960fa93b4a661d1b8aab7f7a6479 -287dbb4cf837a17accc57fe5e45f728cc81a2456a4f8514046cdb754f6e0d218 -a89db4014875a8a61f0a568443e0aa2fb16e287c0771813ab1e05624c82129c8 -6cb375e160550931f8e1af9c7f39096f36aa9e5c1ef09d51438b9cbbe2202c84 -1f00443222783d8af071a8eca1196173a88bc13a9fb92f40273cfcf9e4099929 -11715d6c8629e6df4dccd8422e5d154c0e12eb31669ae951843cc4a1875077d3 -b9e5d19bf7b92efb1ddcb7bdb001c787830cd117c431bb1dcca0863e8747045c -7d4db8be390a248198204a4c84560955192ab707aa18757e5b35ce0489393714 -a65df9c00054b1c67b3018e58ed4d9956185f106fd4bd37ac3249af84cfb77a2 -5802080b0fe9ec0d949a2a2d270a651a4333d25080794af7b7168882127ce61d -ed1b323fe333166dacdbd1af2e8b3bfa8f9c642a8e7c5e066281eebf93d44ee7 -e49c0f3031f68ef5f0dbf236284f7e9795f12c922ef11ee146a7b6c390346458 -d2f2c5900f3f3dc9eca680faa8950e82e182eaec9dd3837357f91c1d429a0da8 -4d0d3d75c559da0355436a81aa261688f9a6dbbfac2f636b69da29b0c6f23294 -4c7867335872702bcf7b9039529edafd1e054fa757f465efabf0a36bce33ec86 -b4553ae3e943e5dbbb3d730feabd7e0af2b41e8fbc69981d13d1502240b8aabf -2cf50f9930aac5f407c0482d628cba9a655302a352ecd4b255fd6f5a67713942 -6cea35c9217f44b2aaf6b2639932eccf05b586b08b3ddf01a466f123e43980e2 -33d52ab5810ec782c3aa7aeaed8f14da1728033bb119dbbd8f016d0babd4e6ca -37df983395652767f1ed79572203737f2ac0218dde40f98f7c4b4566be788d89 -2489991ccc2741c8460e8ed84f47c04c0b49c7f5549ca621db971ff87816f73c -20043426ba9c6f8fb25fdef5e5dc8f1dcf895f40bb9f3a8da354796d0efeafac -22d097da989b9b0b363c977d9a4f53d89a99c5f1bfacd0f9ec9176a7e48f3651 -95e1dcaa4a15fa978aa1e127887a6ee49b17bde9d43910b88a011366d5318656 -f5496a09396381b26a210c29b5517fd912f22952ca727dcce0dfc3bf2a8ae891 -c6005c542a14b26b49c1aa66834b34f2da4c4b55f49c7aa3dfedff808dbf20d6 -7ebb709ab8e0ed6156be8eff6a9d0189a56bcfcb6c5fe2ade551c40d47095657 -3c899e0ee85b4331f9c87bbe5eea09b9105d480df6aa8d281d9ebaa9d6fdaf22 -f62fb7297902b2a5654e7b4ef7392d93caedd4390b9d11f22450c772a1897e1e -ee3ea533c36cfa580ced420bbe2e47088c923f4dc6b86f02f42e3493c8d68a95 -70ea63be37e71e7570c3ddd6dbaa01c2005ffa4ffb4392670c8f4c18304221a2 -f47030b2ecb555661e36f9c38fe8ac297087450333b5f1bbe44518ec138c1ab3 -1bf07b6c67f227f41d24d497bf889acba0f666bf8b1d281fdf21896d5da11acd -f3bfb5e91b0ab4721db71b1119aef399c9823b8eb6dae01606448409afe7a30e -42d9c59f65fe22dd0da2e886ee34773437f6a29a17424b4bc7b9d66d754426e5 -c1945acbd8691ad21e721b83d6193be9d0f735a78543d6b819c7a78e39519bd6 -309f9a3d8fed07257a85ebc21c66be00016e66b020dfa54f42d0f649e7d5c0a5 -5841602f37b8e5429b233f04efbaaa486b5c3922c56be435fcdbf1d363f76b9c -8f60ad7ff6d2ea3f2995f30c0fb90ad81e84417e38c4552f4136dc7831cae454 -56c18ce677f6fb88cedb933ecb3adb484a8aacfad870947f148ca41ac1088cb1 -c87ca418c28383ffaeaae371ff5baf295d74f58529037d22b192cebbb2a372b8 -c1d39fbb37821d2a604fad47a69d70ddd0056d13c3f7c29863469bbf01fcd13c -fe63188de0df2da10e5173807a25db97664ce761314c5ff5e1185a91cd9bdb01 -6347f2837beedd8ccb3c10e7202d1752edf0085ff56b7301ba49e2d237127d8f -59bd7ae5bd02ba3562508eddd09c2dc4674618545dda89b3853fdb031db4e97a -e463fdddfa027f86b8a219a160a64aa2f96b898ccd3667d9b197e92d7ba31bfa -945b5fcfcca962fecc2a70744a253d8d258b444ab9db34eadcb672b28aef11e8 -063bba5b2f7c49fce2527eb6f7be3f1b6a86b88f20a69fc254d34bae3ba03981 -9726d3f584c5c10c606343d9b57d887e8d96a634a2c7a75f62734087d32d6a24 -d7790e3c4cb345a3302d586f3e52ff223d1cc4bbb43dda3d13f9009554618ca5 -cdc0dbae18f7b7b9d488a2dacb35e95dc3c47bb1db088a3bb7b40ef39e559f73 -bcb53cad5b8d3e49fcfbdb476004ec4cd47398248639038bac44619f676a0aeb -033ee4ad5e2ffd7a69c6addc5feb6625559478d1a620184bf0d1499716a82380 -44f88eaa63b21a9cc63971219414e8c76da289999fe2d4cff28ab98f59fd6454 -07cae69a03e421fb7366fb7f42d05fc785d8a2a27cdae938717d46d0c186b817 -7d59fa283ade2160882c917cf395e6c6c885e6643cacc8f4f48cb165e76a7ccd -534faac44677096fa9f6757ecfb6ada57e2e1a18254e0a623fd83e0e3a6d0e46 -fc53483576b55909d4c0126f3e8b86142b382e2f7b93e2eaae0b558048ef47af -9a55a3c6821a78a7fd7e5467b8191753eb83ba54b824636e20b3adc8dc643e2f -34fd1f27c80870ab49c114cd9da31691dfe8b082d911b4b0ddcfe042ed98fa65 -62ebc2959ae235f195dac567e03b2a16b96b260d1b3882e5c2e90f6d75117e08 -df01cbcc1549f9764e8da22bb5f3363aaddb2ccaedfc8ee665d0a59c44772084 -ac15750da4f05bd93499ad2b51e3fdf427fb818b5370ff08e5584cc10cb7cdb6 -b5d7d45a4f9e474aa56f7d3359bc09f34f830b2aa5e4cf00f7ceeca21e310a42 -c876d3fc476e6523170472a7885224d3b1b9d305c66c27ee115b4b9e9a2707ff -505f58acb9ffa1454129854679a6963e112da922ceb67893cf5789f0aad8a4b5 -1ff9297567796011855dcc48f161ea09a85fc748ba5a0b1eeb0b3e59240e855e -6a97c5b1df93b64715eac3e58495155ebac81879249e13f1b1620c6aed8bf55a -5c7885bcfe5049fe0b038ff375c46c928867e5f3f8f225efd74fbeaa3ee2af5e -60801a1069eeca3ee9e227b8d1a10dbc2d122dc2b07821fa9014684be743d7e0 -97dd43d88bb4d86c027fa7b6cbfa3d0c752de72c56a3d36e8d993677af85e350 -82996bbad99c593d2effb6c4ea9d67ed3b3cf39a9524f39133436ec361665766 -3e4bfff6db42fc79135afa9afbe83a9b1d598710d369948bee092996721dd052 -79b6871d7580365133b5e25ec00f76d14498282bd9e7a5fa68442463680fb4bd -4e82f71b159d232435ef0ee49d9d26d60c82652b3fb4864167560c1d22f53785 -073c296318071dc0534889f106759966032bfc58746b8348f1b3d3751684f196 -b62c87cd8ed439defcb05872401ce8442562d749bf4cdf52687e91568ee469b5 -f110de556304fb061a1b67bf080b9a1e2ab2ee79837835a15e81fae3a93c1e0b -ea3628e5f41cb99dccc73f8e95413549b4a8b449fd798d98c9e8089c7d3ba1b9 -c45ab18f7e02bbb2693781f47281f53ae0c26de6b1d9d18a91454e73fda5f60e -795a1858e52f6889c4e4298cbd491bbd6863e217888862a357ae8dffacf942be -662510b8e02ff8ec2eecf4f2831496d4764f658f5ff44e30abed1ada24b0c4da -d6bc72204d0e2c7ba11b8c941d819a97f884a9cdecd056baed5ebcd4389bd2ba -73dc65e6c9e908d7ae30c8afaa40fdd3b5dc6cb9b09b092ae3ad9630c73ceb4c -06e0ceb9b508085885ff3ca6c2422a3d94ca9d9d56603d18d196e612dd910f46 -732fc016b4554ac1cf1f916e6221e504f649c22ef50e9e11c4f8ccfbe76a4bc8 -5d0fcba94e8a6cf7c9227fb80c2c24147e835ec6cdec9fb77092de597f0628db -7df7e462acb7a3208afb01a303f85b36ca6d648c107bab4ec43785611044ac16 -d051122ade9b5b49cdcd995b3436268b9233cd63995dd2ef7637ea7b8c9c4c8b -fc204aef6fd6983739fe6b2e880eae828e81349dfedda4366815f59cdb1a62b8 -c2abab5e1bddbbbca15f7ac9371ad49cb7d56eaa2eab343e5ffab9db17e0ae91 -3637286b1f4c0257b2b73bb17ebbecf4b7d3f5199ec9463dca05a27fc5ea174a -b6662f16c331c59ce06b362c130c96d2a41ace5f50800975279598fa1c68013b -e17e5f98dd8f872e10a5405ee4a08c47661cb85cb263c0a6de7c8f1970efaea8 -e7b926e800a76035a7eb392770753737d1838c4a6a3f4e0a9fd2b66767a2cf2c -f86db07754783622f3a0b3b98b54c4aa75afd87bccc790b384d6f1228de47d66 -6f6b9858900a6de17d969d4b5ce017805505cf4feb2d098cc63ac4a45faa3696 -359e257ff8237faf1565fa718b66451c4ae10d5106c6923262e26801a1fad79f -0496f9de8f2c2d97da8cbdd3adf686df6de9bafa9fbad49e1d98b937a5ba5bd4 -dd45abf4dff63d34694315849c25b365d2b1deafbdc8fd7065c718681492bb6e -71a2f0f09fd9c973bcd8df9a18deb850263013152e80e6de813404defc894b66 -1c49c59eac2a48c0e30f065c495ca8a96e5934797ee3c0c0d091770ac9f7fcd3 -93c8fe6c67d56c47eb5c65f19979a5213ec9b78468d0b819f6ce8c9d49751fd7 -0c9ca9f6a53ecd9899b4159012d75011f64a66b24f32ee687dd5d2836fa39e77 -0e49f5426b3d798124bf36679597cffe1c6b89e1f3c3f5fa5258859582997e33 -795a0fd53c9af8acb025a01ed935c37111b4ea5431ad5d11c45585f63f05ea0c -54ee6f5921e9f490d445c6bc7a6b2bd4f68a8e48d645bb1b4d34023dc923fc97 -1469dc6ba62331aff0d89e2d1bd87660a686d793ed7f1c6beeaf9bbbf23525ff -5d73300912af188b94b9d39eb4765c0d92efd067e90484e17a683183b522ad5a -2c1da93c5468c5fc38164867501f93b4f55cc930582c1842e272311639487a75 -333e4a5fad6ec0d37ac32aacdcc71bd1ca1315d153c5ad6cf64e01d182e85d9d -f4393c5509d41435d37ab2c3f2e196917962e5c2b71ce6863a50436f1a66e77b -ccaec88d375d5627ff38ca07c89b96433b4f679ddcc20258f903643c6804973f -baab49a16241a7779927f62b7355efde4bd7fa3709960d7b398b4ce1cfcbaa7a -848b2581690012019732528ca4769e4140bb9e3619ee0ff4fd018297efffae2f -9f65d193ee4039973192bf0d6389dcb1b61d7fc86bef7711e95ed174d4d92bff -379d1ed8c8632821b0fcc5f37decc5e84e7d66e2f292cb7b08052e912136dc5c -644547494b448b7ac87d662f86acf17c2548d93d5a5385fab5c5c5044de27fdc -e4fcb1974569c9b13f13f6ec1111b5aaabd0a5be4dad97f312f155bc27e4c038 -5be433973147615a69072a93260ca8abf6dc11aa5a47504a8bc945dff9cdcd92 -4c7e430e07782437c96e692eb8013569c636f102110c01833909584004176edf -7999334ed928cfa61bf39ec108b9ee245791c83672a911cb6a08d78b6d065275 -bf7d64344e60db4bf56ea643394936f1ea7c8ba517426d18a995fd8f0bd73bc6 -9cb42f1f442be8876c1b375620cf790de1f56b4260901ce85e014df30faecbc3 -2e24ace951f6fcd1f57db65fd3c2f4bbe3ad37c275c0fbfa43650a1248e5233a -8441f1f101353b46c188417a6cfcd62fd10d93e4843335fa3ace7d3d199d7685 -0088a79cbda67cd872380a3611f3881b4d79a88c787a5afdfb395dd4b2e6d4a7 -aa52f5bd0f9d4d6529f14f11dc859090498b360bb5520ae8ccced5a2e867a8a2 -70b1f9fa82b48c316b9007d0a8a3ed426b5ff428b9a094ef9745d2f5fb73e598 -e0a1538a02956919116e31ac95f319cb5a2fb7fa31d162fbde882b3663c984d1 -dce7ed0bedc9cd7926aa6df22b945f631101ce138e840a6e00cac935c403c98f -569100d8c5f65b240e837ecb1505576c95daccf32a95479d14015e331cac5012 -97d990249bc70be41bc78013d157d7e41d7e51e7044b98fba8eb27308f061bc6 -9a538c11136baf9f29b8fb02ad70607273cb7a5e52671d8a1d989878596aa3a2 -8e313e33da19ab119fa4f1c66b505eebb0a931885479efc6caa3fd5c3e00a0af -45b5b0d7c020f903d5a7327c5f2a043354faf1be9f1abd9e4f4983f4bd08fca7 -7d160d28fc4107e1973b4343811940eb67d8c694edbce9f5973fe517b2b8b08d -8f1eec96075c00d08e22e94498aeb6dee6ea8ad82aa41f6e0e76c4f7222cf52d -fd7cc9c0d64939823fa4da12f841f318a4fd6ed47e87f7d288b2ca13b7086462 -f4f7059d47c2edd36888c3e85da700cfc9f03a846c0c4babc8cbce63d567d9d5 -8530b8513021e859a5c25b720c36d7711f9796eea6604995410aec2b7db3457d -dc81516e0d37853418eddb2bb2a76fdeeb4733c3b04529c03994e1fdd7e0d7be -ca21783392eb2f01c1d7dc27f73e21af6f54f8951d80f1d2fdf59509d557ce24 -a59f81351279a32eb71cdc7d25455ae181de109b6f250914d76bda9d84ab62ba -917956b506c3f414c21e4e5e099dbb1e4e638491447770c67b792129a3f1b746 -3d2a93e2fe966d94e32eddbaad3ba7fe46c47468cd965149c5a120d973bf8216 -7843e27ea135cc57c09acea0174f8984f8285e86f82a5f345cc021729335bef9 -d138ef5d310fd7c1ee23b459219d6ba7b57c97d0b5b3becba667282134b0fbc1 -226d45579e88a70c998dbc3da57736dcee21a65ec9d4bcd00d1a0911e678c37d -72de83951199586dd26bc70d75a1b5dbae839dd3a8a4bb146c9b1e7a4db3c62b -c8c0c3d4fabe7766ae6d08b024be16f15ccb1aba389f9ec6386f2509c0681526 -772fd3ac26f2e7ca1c29ec1d7ab7d0a93fd7c3776c11f141519875128a194e21 -9a29d4fab32923bd5c852731b3c68f2e23d821b240b61c0d0d0bf1808dfee51c -0e75620938e0f04caf535f3750f4ef083a8b3d0f8e301fb33827992d15512850 -57667e0289e59513c9c5691fe76951931c148f9a93fa7605b38d956f5e89a27e -f195a3e9ef95e62a4164be18322dac8fbb801c6f5d4f10096b88ab525ded9eef -fe983dd78b6606d2d3ecc290e2d0a27bf176b077802f1dd96b5ed03df0aaaacf -f6fd2393939ddba57198ed4cff5353dc49f6233c43b8d2649f21cddeb150f60c -0fab764f312a18afda3e783c957ecba147eafcd90d057b85218b6ba1655bb86e -4f4c38ac7d8b1ec7639f612c6624831479061c74db29ae00d6df42d42df4f521 -2013e2a59ec89770cc09124b7bed12138f042b437987b060141f3cef8b48308b -141e7af1a8ec44b7ffe3fa46215e30309801edcd5f85951d76daef951efcd36a -790e99d00b159937c32f767b3ad2a97fb699a5ac4d8339d181a1ae3dc2c37a1f -65db7b02a1415a0ced8686ecaa1a281b2ad8a820f34e5b14241b7b324e7d9e7e -90fb4b5e3d08585ac74c8653468b0401f8d010f27eb401ca1a5c7ea92c91ef81 -b6ee0304cdfa76e250fe7af2099f599017a8e3b9de066feb8f74d5b151f60883 -4b81313b4c15aa879a89e127dcd41fd9a0e44a0cefecd3a0ec79a379ef1a7734 -830efd299db81973dd75ec77177abeb4b14f2faf77332c472351c30b45742a4c -514a9633393c7ecbc1e5d70f650ee8664a7736eade06f5afb343e662f192c037 -9b27e2181b77ce49b5b79f78b78680ff0c3abc3feeb2d7e96da2854c6e1477db -593132b7598172faffc80c43695fac5dd18360dad5372539f0c13e9c23fd4986 -5af9019282ddc765e740a742e54411b4a6ffe56adb177e5dda317c4997e3bcaf -5d42530ca5bbb0a875d3905c5e97b46ce9ad248679f9551503a383cbb6b37331 -f64c0b8f817e5fd47f294e6b27cc7995c19197e4da2238fbab752ed3085cbfdc -fe7d4ec886c8377a4573a4f43fb9c042f3aa0e062eea5f4d1dadb48b522eaa65 -c01fbe0df1ca4f0e463efa5ca5e782c69d472a679f28299ed0a8b1675b31f935 -179ceab7f52a9e2c02a251698adcd3ba1d3832c0cb1e68eb4cc1464b7ec91b7c -8b79aee0ce52941a1b653bba3fb2f4d871b023d959bcd4be25be1939374cae05 -4cef3165be6cc5bcb744e2ef01e80c1e0957da84721e0dbd630c132122883166 -054d0b45d374e21cdd3af1e99fab1f21a46c5d4ba2c2946fd1cc72bdfb4b8276 -11c898a833d94997d04266d59d56f79ca385295d00e3c1dee1910a44c51e03b7 -c42c4b6435937d3b3cd958a77434b7593d490a33159d7b3b44b55801ed69016c -8323e4cf97c6359cdf2cf91ec5bf1cc7eb0ba5d57a02d20f3f12925e60fcba3f -b62f1d1830e83356646cc50d801669eb337b9a1ff064cdb6fcab7a30254a72af -59c5383c0e75af51f46802630a38969af16fb05e299dcdf5447ca28e2aed9575 -3dda994a57c2134bf25df8f980734f2c8a8778d2f62a796f9366dc15ab43d096 -58c55085b46944ddf89320aa0fccd65849a48b028bc15abe883a03f230bc396b -fe558dbbc732ba424a3d506c7ca11965772ec883a977f9580e31edcf07640f20 -163a411ef04669824183f8b194b21d1a6a0a73c6b3cc28932c8ad4213739fdf6 -1317a560002cb777fd4d983fd17f597b67fe52905f3225050a5a6e393c8cc0ba -b5e863e192b0f4d61b060dbba36fc6424e6c28c1c8a39deaac6f1ac4cc0d7cb7 -02a10815bc9df08d37cf5e3aafae90fc36d2d35931b7dd496b32fcabe4ed203a -da589f9b6a6c7b1c9c726bf6b8c6f85bd278fa801464eb8dfcdc82d931c33af4 -b4f780f65c7eafe685df9d3793bc5f3aa34dc911d833409c916f4d0c34af1206 -1fe992fe5da22362697af67edd3541bc1aad9804dc2e529c68b757195b153145 -878fe20d8c916b96169575f25ef69cec89060492d5b3578200bc13063aebaec8 -e3bba384cc8ebcf90428fcfbb790f4c0ba8da3acf603b1855b837333c060f2f9 -6179a30bafa79a376bc29b5a81ef05b798faa2ecc87f6e9ce0c97afe441ce90c -5017f37c9a53d2effb466eae848af2c93539a2b587a56e27107a46e79d1460dd -44efd1d62cd518be386e3983a055bbdf60a38a348c7f6777405e35b716448385 -79fa16a540bd48ae97fe96da8f240b35e558e5a62262fe4301df31087b84689a -d82ef7c7ee5b1e2f0de9ba0ee7837685d46d950986958941fca5e8a60246934a -a964513cad79589537eebe4b2f7b0efaa995170c8df418c84b2415a786f69f06 -5887ecc62dc258f30616f0b6317346aae1f2fda171ed29d9a26e88fcf13cbed6 -693d094ffd7b27b899c89291928e9ce3999b6ef7423ef876417dde7e6c6ad6ea -09433f2480ae50f06421b8b9fde068a6b91d6267b1d7659d90fbbb34538991db -dc8e44e328f6233c98befa51ff16a9a35be0050800bcc79ee7ed524a06d1da57 -9d0e9fac0395390a101ead1e05754a1d7006e34b1bd4ffe27b70905742cb156b -06b4992071ef4ddd7c9997635afc94c2ac235bb79fc033f72343990f618f09f9 -8f5eb45544547d8e9203f3402d1d971990fb5c3061699c8cb8185523794dc98b -14e5e341977377c13c7c72bb0eb7a77dec7ac6020a147061a36d8d4c7ea0f70f -78f0e1bf6dbb419e6ffda05e0dfb7ccaf19cd9e5b11022759d4591337c972a32 -1dfe1f6558effa62b9443f63f33f619c47cd4d942f92012bc583921eb17ab661 -40b9e2ee097611ef68059048f911894c0ce1f6cbd7fb3469177e7dc69b0bd207 -04619bce4feacec410a905214ece6f5db6787179976b05c66cdce14d1726341b -e29a4ab5cfdfe1ad33955f7b71c82da07b86ea3858a0d1fbdca0f58fdf22a4f2 -dd707cba1ea34d970ff6f53a2f56c9238b67880ceab96f8d07b23561ab984dc5 -17df712641ceaaf742cb5986b6784292f30609ec4086fd9e9dfc25aa85e07d8a -f7506bdd7500e15cb1b278a1f5898399cb4d10c7a81ddded565ea3cb8993008b -306dcda3539db19af26a2cc165b19c771c1b1707951d43e3a8bec158b96c7901 -95e8f2fe75662d94f16aa9901e8d867f9c0924c5cdef5ed212f3b4a5ca378ca9 -fb0aa61f98ed8806b105674f249812d88bf9da06a198ad04ac5d2ba3a926d03c -21f032df11ee07d2b73383fcf8b0d060c9bcfaac209f5b4ae48c22711e17d75c -864bf81007237b6949377b31d6d5e73faf1dc4296e22b9d998054371e4137883 -7f895bc38e395316fa9707edccf566a50ec905082f603b6268597c8a5b201608 -7a874ed05e9eeb8bc05ef244217a6b898d4290e7abffab0e7def4290871e146b -11376e257e28d301cbe9a020e6560bff8e239033783eb1ed471d2b06c9ff0a3f -762fb30725a6d29b60da0220a5b5111c72a99c4d4f1dbd1a24bc6e8fd018f5cc -d7a80378f7562b4da7ee34d6c5aa4af68fbf0a2a9425137dba180dda2c980e4f -9f4a0b8c8ca42040c748b9a4753854261c2a566b9668d703659cfb1ec3a8a25b -564cc75a185226a8b559bf91ed5bbdeba0e4ef24ab3137bcc4307b53d50bbdd9 -34f8e16fa6141cc0945398aac8fe67910d6d91e60a5f1b6fedcc2c61722018f3 -856d55b32854a79fcb7db6e1c9f341f1c25f7fc6a21c45389b96cb9266c9fecf -190db28cc0b9618eb418a03885f6ac3871282b61a74ffb1c2c4565548b9f1006 -c2293a2f63649d3c644c3d77f23aea06c77c5b6bb1da5a44c2d816451c1bbf60 -07d2e6b04b1bd2b0f2afc31c81b2e365a5d2ddfcd08c9c1584272c6915c5891e -9556f590c9dacdae09b1479b6d93321d1d44dbbac960c32e0d556aa053528cc5 -d04c873ff5c038edef693207e21187a824d0f4afa9842f4a7ed93b7e43557236 -624ac3729465e5a84a1eec80f1cfacc29c8908f788c1f04959b99331c397181f -241309fb2c9d68a9e3ca5c9f9d490d2dc3cfe38f93997fb89c37926956a8813c -cbeba67678f78316327adaa3c62c375aa2820affd65cdfec2e1a96810618f538 -5992e941e1d4334fde3d8e787a279419a46bb963dfaee0f647aff5b5680b0af4 -cfa7c02209b3ea2ed8fa48b9c62498895c7cc30c0667c1ebf465cb57b93a1fe5 -70747381df93b1db78ce0e38539de7cd852a28583c297dd0949f6527c8acb769 -81d2a07812e8addaac4483010392822a32ff6703e6d1efcc4015ec402cd5f1df -11bd0305a51e75366d39f934bf42cf068ec01e246f670800dda2a2a8fa27d4ee -0cea8f920d8b62d760a950dca26e9dc96f3b6cbf2a77bb7f10441478cdeefab0 -eb76f22887522b0fbb9436ae67a2a9235a40eb1d8cb54449535fe9853c82a37e -46acdaeaf1bf58c22a318b375901422388634c45e5e0eed8fe722c41b813f606 -a8b3546522ffb1c78bfcec27211685591ec575ee829dd3f18cd3656ba7598d28 -107d3598022ca9dbaa01e1579b0433135d8ec0d9177b45a249afd1f496215ffd -18072ee41c121bdc22a61d1c1eca47773a43e5a8834d99c335cc4ce9844fd148 -d5b8227e4f9cc9f272479dc08f14c78e8e9ec89006302f7b399b72591e43bbcb -e46efb4ba01c5931b52d5e4b19bff3e0de01808524422cdec1dafcc193761b96 -fb882bfa3ccaf8cc2966c6d92efdba0a9b5ce889d3fa8f86c69b1cba6548e656 -aa0db0d44ec8a7661e17b22e44656d87ff136b19cb8395cc2dd9911a72703c72 -ad0ae2db8af0df3f9c9b0df65d188ed5d6450277c1ea574d00e1d132dcd2daa0 -a696c2f9b41db19cf91dabd3cf82ae48b7764220168657ee3f66bd84e787755e -e4c8a284bd0b21e6b70257736c8fd9e53a4085e985a3cc544763ea7139a3c5ac -ad32566bbe7cf7752d9f35635f883f48218c16b4a5c6637566e691920c49d1eb -85641619ff3f6c5b86f75fdb21ee74a524f17f9f00abae7cdf6a3250bc47aa96 -0bfb0e61e5aabb5ab2be744c2c676b9614cde5dff1ea318b83ca8c1081ecb01c -798566e1c610df85e775127b6e3e33cb91d7673bbb0b680d35a0885e9a88fb59 -c7c10d3ee35401650bf1e33eeffd5cf3d201e77b663a3e844aafcbf486fa5c88 -e27f504a4834366b76ca3006c2c64cedd814879240c63e73049689941536ff4d -b2f157986e982480123676f41fa43d5cbae7bdbf83a98ac9fc671cc0f2522668 -89d733921ddc82dc4c1d64d34ad575bb499982958ca51622421d121278e2b7b2 -f3a471c600b54fe022e9a5cf69311f0e30955ac146cd8037deb0091080ca416d -8e92aef084c2251113786ec2623b94c5061fed5931a778c83cea6679c057ae04 -dd14ef3fe9647470d66aca24dfb09fb7effb6aaa3177e001cafa377012e8bf71 -bad1f39219c55e54a75ceb68a582c57c054c12dd5548e8a383c3649d7019f001 -b6333a6e87a6b3d4b4575ebcd28b7164743540bc6f292711dfa318fce8ae2433 -ff0308b5c85f12be9fe8b25eccd1d39960e25d872cadce8c07d86d8d21ba5226 -30e51c3ba775ba2dda124913850f7c34ba5348b512ac3eef783adb375b1194b8 -d3a3454795f99dc0ca4a4fab9f05a2955a77765bcfb1fe02bb7cf7ac814c1b13 -ed649a090caa309f70e4a08b7e1e7cdad982deb73372e646fcde57fc1a90ceb6 -b9c502d451b1e73e7f190d9f5f0053c49b8c8d1beef0cd0b97ccc8afb68306ed -045c1d48dd19c3361ee4acfeafe54e173e8041950274324a47f09a5872513244 -a631e191e2eaf036ec95f0066eee8b9ae0d09e38e3252454d49614f5cc941b5a -76b5fed2f450bc9d412340172be0b12f5425ff0eaa77ab6ab3c18ffd509b747e -1f5bd862ce60ae29b0b74068b72b492b6c268732e4913c1dd186602387f13dde -dc228a4e4931eb46c27b534790c96ccd6b6ad8ec0b48ab60f57f4d461440e326 -41360dda4e4cafee29fc4532e49cb927fc2938560e37e6df065b4344bc757871 -cf78662bc5982b66d48267402fa6a5de5e012367feb753e93f3e25d7d0e3ca92 -441bb078f49f8b9226cd9ffb3fa894820986d264b2c3b97913c3c19923300356 -52a940e23fa99e713a050ed87a6c1a31ba5ce348a7a3c5319469e79e17587405 -0a5dbd529fbe67be8b905504743f91ad12e76e573e3013ce06b9749d470d7338 -e35d260376e28ef6479512182eed3551efc7338724ecfa2322e7a230d4ad3e66 -0c7836f657310ccf4a100312989fa274c5ac062d8a53c9f8ee8d59983b2f1c98 -91346c0f15147dc8fdeb5f933c05ca65c6ef174cac1a94a563a63fd57247fc60 -76ac80492f2a3139d439b4c950833379ef83fe87101c9b9c7ab04b6cf3577c37 -4f18598861a2e40e5be0cda49d39fafb462b6a1ba48f70f7d0d70aebdbd80dd2 -16a8e4c61aaee06a6a430695fd1e0536fa1c9258b5d6be7c85884e01e1d804a8 -6a688ea6ef4d4bc32074cb397332f3479743fa4408f817ba8c6cb29042519557 -7edc3e4154a0929c575dbb1a18789d245d965f631dcb191eabb1d44418ee4107 -19241204ed7951bbb14e0e6b69b82469b3e12e1a1f60427f724d1125a3a4a308 -77b14b427933d964873c8eddb169b9bac85e12a98e3b08e3e2524b96f6ab46b2 -a9549ecac64ab035f0e1cdf8313c28ff17256da4e282eebc81afaf9efafd5bb9 -87a88522163b5fa9a7b262c1ab485cf0e2f9b03aebbb1d06581d644a2ce7d236 -c3ae29e457eca4d7176679f36f7ab59c3f8b3203712319c20614b3a3ac179d2e -6725fc01fc6ec2a060c79d37ebe5030a030bb09cdc0edb50038b7f85159b8b37 -370acfac57cb7c00004586d17b8be2bf28fdc9b26f87f862054773aefabf0897 -770055ff9f7c1029c83cc43bfa2971c5480d8aca3b62ecd2328d52c04b07c875 -650110473878698e50c279e820d74855af0ce4d92b02076aafd21e98858ecceb -c4ba318c671bf4b2276e3464b2dd3ca1fd060e1c561288998657a40641dbb57f -1a3884a3adabd1e13e37b4374e11a5e7054aa90ba83be9949f9342ca6282329f -70ab7d5312ac48a855efa3bc4673e009b18273abb66140ba4f574591cdaad01b -d3f4ad60cd5e4bf4e87194056b0033de8679de90771b01f5bd56c568180b8226 -30503ddb304ea66225f93cc10acdce743715b4ce91b2fc1f131d57770c3bb53c -ed70831a08d4e02f5d761d38053b40b23d2d8dd07c06fcfd45acc3dc9ae280ce -9fbc027bc56e1c261f24ab91648cf7888724a9f383fb59b6c6e6d45a26e41397 -245d9f34178e53fa4e77637f3208661568820011e029ff9b4edb369ee3f8b11a -92ed6abfba2782222992198a6b7af1f551bac0bbc42176b55bbc80a4ca64f8ea -ee0bbb50775c32081d28251307845caa5b046c2277bdf55ffc3f137f97f053b1 -d6978c235a47e597ebafee1d500e9fb556f5093c98bc734dbaebead4e9f6b576 -69ea0f8452a3f5ad58ac7579c5cff14cbef88d4769f07d82a82ab88ecbd8721a -9fcea26f1163c1de0501649c59139c6687c7fcd24ef11a58dbcf18ef97558c02 -709bd5a53271ad820832937fc61b7447b0d95fb9d4fc127e78f30c47d5715898 -db2efed8461d3b8235467f4fee18275bffaddd5a9d50dd2b94ecd86446d58c97 -3c9d38fe3875118edc8a776f41555e5e3be682a878cd141f7cae7d8746a41c14 -357a20f7688d0b7bea35f83df4910a2e4aaa1b2d4a5227367f3c06750c929f7c -50f6c54694c38b864453c3eb6c531cd2eea443b4f49e62c1af7af95debb13eff -2e964777443c0ee5794a50f3e9073d2edd78ca01fdea50f77b1ac924c81d8683 -cd31655bf910c25980b775f17aa1bd9f117e0fc00891e1c84f3823143bfa2287 -ba682e6206a18bbbb574bda2a0901765d4f4144b7ea938c952dcf10c288080c7 -f4f8d80b432501ec1038e3d95554f9afff99d3fb013da1bfda3d79f6ecdd84d8 -811d188a5aa469e4fb1a2dd9ed583f0bbedacbf50418b01637d520f22376f5dd -c3a0c5c54892d929e856935b0f329034848602ed54a7b0ee9df30b071fc6c648 -4da6d733c91edc518fe757a5e771e6c57e7c3576aa4e59ff23cc31a5c31c1596 -3dcf24b6a88720f56a51481a853abe789d950de7019db50df28e2464c3c3c49d -1f36efff386ea121a891adfe592f590712ab7dea619edcf08ef145bff9c4a2fa -cc4a252100778ed90b2dffe0e9b58d9090e4ee66c93db8f88a8d4adb7326284a -0984e895c503811e5cbc127a6dab0698338c17ea83511f96ed8e0f69bc688cb6 -e60f16a9d7fae793e090ca7288d04bc9b614366a481e0247e25900884643f417 -f01575da6ac627fb760a355243138399804504fe7cd504c5c24ef1326b19db0e -49b1b95b7d1f5d60c21c790fea449a25591c12f1e8c1d1bedc33be3f0362ec56 -20fa0f1c53f4a9ba98ecb52221fc103168f6692de428754c5644f83628718755 -4427276690b03e193bd52a6f5e258f774c139572d1eabfcf4837d1bd0af343d9 -5b8dadcd2e3c6a5c8042c362ddeee659dad2d9b03ad0c03b5e8284225078ee7d -0e5fcfb8ac37ec1b720454c24deb713a469ba767324df8687904256e9521bb53 -c53b2aa35dfe4bf0e7f0ce592b396a5e6d16c7f8202c00bb20b53059e989f4d0 -4f283c18b231d3344f6e8e59378ceec12e7b43b1942a81d0c1df4a290ec240ee -a3e3edac3df0e3d524baa72054790e8c51415673b4818a5c4f2a3abff8e49fcc -1c01d04b8e4118326e45ead4ee954b7cbf6126243086d8803390f68a05c5feaf -1dc07ebe6878ade943fe1e0c61199cc87ef7995bbb638186f6ad950ff0f1ce9b -299faed70f25b9a8164832ba06b196c747bb2c1559a147a5d5e5c7814430c6b6 -12a1ab4f7c2ed86b61b592e9f426f8569854ca59f462b804d0c9de9d399b8979 -72abb6b26bd2b44bd2f5e13e6ab49d05ce4abbdb6f223887210a5d5cfec55181 -2af2a8b162af7a09974c733778eea8172f0c9dd7e72ad743a6d423e6e178cb5b -ba9282d3bec7bd6dd3dfec6dedd99f596f34c3635d42c8f2c591cdd0b6f38423 -79fa877c603849c2069ae7789ce97dd5eaa278c60785b58a4ab98fa4ce468ce0 -f1c607533366732971f4226c664312df10462e14129e86aff43259be59da7286 -d865bdbcdb2816c297a399cde5b0e12d0191fd839bbdb2f2956c429ebd2692a2 -c29a8ae4abacac8704d37a7bb5849a6213534d705097766fd1222291f3fa0bda -2c939f26b3d1be616a3c3ea10ee0d2bc316f722afd8d430949186bb386b4afa6 -ae50ba43d8376cb545b1317b7c7beba4fa2047340f8c9ee2e67e66d486347b85 -323715a7d002989585d0d2b986b963656c1d5229b82df7789815862d04c117f3 -c78bdbaf52fa70de9d9baceaaad98735c6bfd5f8e2d001760d8838e90532edc2 -b63150dcbd3e1ecf079d33534aab77e2c3084d1492c4890b982ad2b9889c7c65 -07a78a1cedc537d472d39716d82d76d86ec8767057c1b99b9ac5d96477302247 -f3059f0bd076cc5a5a6519e997f266307e007416104e176deea7f2aba3a11a04 -bb7b807863c250a61128a472cba2e1334a93cee2f77f92ba30954caccb24d57f -ed73143ae07526b93660e471410954baf1817429eebe49413d5e7b5bce1145b1 -c3e58020aea03d75d587cae501737b23ec3b2d652a996f1c61517b2a266fc2ee -92b16eba34f723e45b40df77a443e84cd5ab88c89b93ab1f13d02d3e35f213d9 -0a68e41dcb321dbff55223a6d35cece6d031dbf5f57f347e6e3522e166dd812d -b303a4f85573a84dc57a7b17cf6041d717b3a3d2c1ad7d2592f614985f617ea9 -3bf03489708573dece92a80809483397a99be26c00356df93add280d2a8cfe2b -a8c446fdae967966286b91568a634c042a391c92848967f6476809c0d019dc23 -1afd9682147eaad9412ae20a9559ddd383b684b8ba280bb623fd1b641231f587 -824b6e4ed3d0b1324f3094807cb7b1c54f561ed252fb2534d6cf52d60568abe0 -f9527b2bb694f1fa3ce42ee120a60cbdd6a2448594e759f01bdc6b7d1eb2047a -99fa99a76f71b0dac00efadade1476272c14d3f06867a476b589bef9739d0a74 -a135f7bf2f1b47fb74d606c43865b719e9c8033c0b901900057bf3f4b8e4840e -d0c77f29ddfab3dbf243d3ee069ee7ba019210d80fc8120b338437fa5ab92c20 -b49b08c954cbf1e29a09139be66a236c6f456fc6a687e714aa030673b700c9dd -0448807be652cb266f4b970d5d2374cbf6dc0829054aaf7ad02b226c722d4180 -9c6dcae0def051f7941af2d8579b79f8825b9a997c81a9c12294b79827ec8d42 -5c65d363e2e81341670a672a61976c9733a79683965b725d971c07fe7fbba172 -1bd33040a7192bb16aa4b0e63741d98212228a2553b61f0600196798a9d3f385 -f0f6754ca0b7105d0c1e834145cd3c2afd75fe2e60a945093279dc95967384f8 -9be6a281a3a7745315d9a280bd1cb52d5b9759a1c1e79080d7fe74b1f7bc2a02 -34287e887549df5e9dcc552da41f7dc82f57ede381723894253a488f51733079 -7fa00b0b04cbe63fbc024b6a584d2a036401cf8e192669f451f7bb415a909c16 -d36a5a7a90dd7a9db7bd7890c73ceca06dac02752d95f975fd1a9a14cfb33410 -6218ba550ac336686170e3b290458c3b572ca65565b8e73fcd6c4608147654dd -3f4bee30d909e323544a36ea3b35ed3c80fad5bb915a5fc3949bf486e451e065 -f4ad1c08aa9ecb137f77c7d36cbd7c8cac62447542afd5038bb47c50827630d0 -d608a72aaf0f38d90c4b7f2e375da2185ee6d59837568669f006e63b0a369f11 -0f14a587ac88d8188fe17f11b2743bfe9a0852591fae743bba8a479fe1623129 -10af4d9dbb53163aee25eef5478a0f2a5822db7e3fe0750569012f36bec5e968 -b2fc05a9c47c07b3112dd66b85a40fa97d4fe6d5ec7d32d21efaa5cc0455f1d0 -aecf06ffd2fd12bb9e4cb9b74fa15ea47bf9c5c86d890e588258af2199a5ae19 -0d0404a9ec89d0ecf78a6e1f3fb0087d7c1035515a95b0f1ffa8fa6f090ec12a -712012cb50201c5ba59cda4f499589c05439d6240a624505ac9b8e2397dcc242 -e9acf082eb6dea7e1e69641b5b01e5635c6c3921756749bf41e3e604482af391 -8824345d31c243cd938c28f639e77d3b6a4a6a6c6ca7dbf81241ca1fa9cc5a7e -1ec2c80f1e9a7bcaf6d50cb60c73640b72ce7443d6d63e7a64119b9497e61b5d -e5d2f7b95397d11d866bb690cdafad89ab671279f637f7fc46a3b779d45b29ec -bb6b19e93e41a7f79e7b337a195de87923cd029ee173ecee1522d4087f880923 -0ea7ca843b0633941713f6bcf0166a346678b77ecc832626e9395f949d366d69 -620d213917dcacb3ea9cd4c91fd33a8300fea3ea2804fce32759da695c8a5bbe -540ee9375869d4b6d15d97ffd151b7e5a2d216e9445fcdf10f6b03af1546910f -a42362147d6ae96c4857b18c19480acf4406c0e7cc40b8214f9190ba94885a11 -66f479b272840620c2060e5da9ab803a3b83d76adeaabb6ac42f2feb3e81770c -ce682aacd764ff1496270dd4c6053938b64e323946167699f8361b31e78aec76 -972fa8f8030abe04998d6c5f24c417f5be4019949af2fe84903d178a925d89d4 -8df1aa32ebb4d317fe8e8e46a553fa40c190f33007479c3054e4b76f7bd36888 -5cbac06a433f63792a5b50457d4566fe17e0f96b534a6e6426145b25573c0792 -1acb4ee54326b923289c51fd005c5536207f480a8663cc90d9659ad5f0290934 -61463f3e32e1d643c7738dbffff4d48bbf94d361d9de1fb0506dc5a4e6bacd20 -d9aef161dfea354e783509a4837934bce1b923e4a587398bb349df12058341a6 -4f4187fe93999e86182a70377d812ad5665b6cf71f285930d9b87f390ca40eaf -a35f3f24a053b2e6e198c0a182ac28616a00122145bc2881051abc4293e3f819 -d29ceeace030161d76aaf67130eddb949698f437808219ef8d86d67c8d8a2af7 -366a7bc8f53e6cbe7602bc3bc0455fe63c2e6f960470906dbd494c3194b6adf9 -3d67ece4d854db4bde3e1dfad708daf3605c04c1a7b815f3a30ba18cfadde988 -c6a39aa2d6b6c68f9d8a89d3f572b59fd426d6ac89d81178cf1632daaf467867 -f412db318d2e712da4f5cbd0801d63bb18f7d1a93b52b1941cbd42a3e0e93bdc -7c31f85dc4aaa1be45580a46f76c2f652723c108d1ad6bb62dc12d1c5e2f59dc -61584ea3cb8bf5787cd4de9590662e4222646b0dd5c2d913754aa1aaa2b50e9b -234ba7b95add9c88992fa821adfb87bffa78f9bc1b7b361b78be6a2c9488bf4e -c1d4473a4ac2d3a9b97eb54e081ffc12b6e0a0fd147726550f5e9ee47500ac8e -58cf4bbc1dbe1f8db20f6155fa5efc2cc7949b26c3e53ca99f5d1559f97f2766 -c3f3e6aa984da191047a1a4efe99221d8b077286ce5dac50e7de1f3f287a39bf -cd972bf0913ae0d65d194125d47f54599d69aaac9004dd1e9aca08afc23f3c96 -2a3fb0689242d8dc58d20d8d9487d387c65a683020dd718eb421acae8a7e260e -f1e8a395151f010886bd62894ab29f7ebdfe427bf8db5fca4c2366fb8d6afe5e -b6e6720b181e7afc73dc6ae803988d382f7280dfbbe30758d0b917b0f6c126aa -f6ada6608015833a4727f104b7d9d1821086e216bc1e3337c6762a7d2c86b6d4 -d6895108ba23a498e34f45006a62e27076d4a9005a1aee905120bb150c352df5 -549946491df5db5f69a7b24cca649d67ffc97ef3f7039aa68fbb091391e517d4 -2f34d0b02c43bb5d27af2915d44a200e4065aba8f9a36a4da366010d5eb7cb5e -386a369cc918211b7702b969d67bb0dc8f81a08f0ea391f6c4ddb04253d3abd0 -9e854ec23db9748c01c317a26e9344ed17908210746a67a6eea2b2b9cf4c88f5 -3fc1bda1c7f187ccfeacc2ab28025c0d1c3f7770b01e065adfd1ff791d21a338 -4ed77300b8623de605ad4e44011846149c3e9d3c43a2cd4b2070c81e1dd92f58 -de3b894646190ecbd18e1560d0026e2b5e2969061da78eea43467d6793e3d141 -03825c0492fbab2364e5eeb587bca3890ec5ccfbef8f9ddbe40c21d1f39bbdf9 -13817234915702f69637bc045caa0404f88f403bd5f487bc3a3e39b1b0da9c79 -a30f3cafbd9755728c0d6fb34fe630740d96ca64b9c8a3382b069a7ecb428fc1 -cdcb242a7ad06278d68374b8c038bf31e10d15d1a78bd9e5c8c97c59872a846f -c3a76454b4c3226f33865dd7a574ce0f47bf8870569e2f235d583a485bb33aa8 -90f13ac96535f6b381ccc5645b80d19220caafa972eb3ca10e639310d8096ecf -a762fdf392741126df29b09f50e2f9a10c5db75f002a11b9fde75c62f2d21537 -d83a75e025092280d7a59e34f6b0a76b47a106178dd1cb994e50035e64abed78 -1e0a2c69dbc936e06a6951d55b00aa5a3eb1376bb72aade0317aa10c7ba4e2e7 -555807f8b2333a4f40bc9317ed80355ce64ef2744b8a1d07d473908f78dc7f74 -f821ad77fba428905ef82eb8ac07fb2808979de10df7827c85fa78e03ea5b122 -1b1a7f933e6f0b6cbb96925a0ba87567b5927ac61303f4321d84376655d025d5 -e553546cb1befabb80fe9da5a8bd6f2cc78654d05868ae4ab76d290b66cb7a46 -e7760e42357a0e3175815314a699fd8164d72bf3fdeeea60ad6e0b340bd9424f -8836a8c65d56a9854b438390c370e1e1428736dae56e8f09ca1f2ad77c13c386 -90b0b4b00697444a9ed3bef461264189107802b868db970591f33fecfea0ca08 -147b20a1352b1bad7ebb2f8a38c0f93c4c8c05fd7495e20a01a6883a3d5e9854 -f1598861317c3df9852d790b3b45aa4b0b96f9341ffb5ffaf96ee7d98643afea -e9efa6a54ba36e28b278e839df596fed5e1484ae60f4c6a41f26661c601a9c9d -f9bae11050dd6e36d00489037637a7dd9eb7a05eda953bce54cfc3dd2e6bc792 -ef3d87077a1ded135e7bb89c1e685dbd7bc5fe0435087cd310f4cb989fd394f5 -dddbf46209df6f7365c4f54b76d468212a9d5ced9678a6062f35a2fa07db69a6 -f9d54d4570914ebcddf8fff765ccbd3f3edca4b3ae793b4a979db9496f5029cd -03f085f32bdb390bcb8c789eb8e54bc0388bdfff99692634b33f8ab1152a131a -758ba2a25736d9cfce05a0a8818235313934d5cac307bb6343fb10c592261757 -3b4df3465845a253c829d4bdfc62356aa83c72dfe77094a955b9052694cb7b86 -fcfc70c5c53eb4079d5f3ba4fbc67bb6998d85c1c9b0f2208757da234670164f -c40bad995c8d4eb88c7f5e3ea10eed4335e375ab9f0c6e1d4e01ab418643c20e -9d56987d6c94ef1543bbf9627d1b2bf79c016a8fd44e00d78f89a1d1c975d04e -1190bd452c38a65258734cc04407ad39c4437492be436bd5a269591eb60332b4 From d09e8ea10f13e9c05738889ef86bb49f338559d2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 16:46:33 -0500 Subject: [PATCH 167/339] This is needed for now --- src/notaries_staked.cpp | 133 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/notaries_staked.cpp diff --git a/src/notaries_staked.cpp b/src/notaries_staked.cpp new file mode 100644 index 000000000..db1696ed5 --- /dev/null +++ b/src/notaries_staked.cpp @@ -0,0 +1,133 @@ + +#include "notaries_staked.h" +#include "crosschain.h" +#include "cc/CCinclude.h" +#include "komodo_defs.h" +#include + +extern pthread_mutex_t staked_mutex; + +int8_t is_STAKED(const char *chain_name) +{ + static int8_t STAKED,doneinit; + if ( chain_name[0] == 0 ) + return(0); + if (doneinit == 1 && ASSETCHAINS_SYMBOL[0] != 0) + return(STAKED); + else STAKED = 0; + if ( (strcmp(chain_name, "LABS") == 0) ) + STAKED = 1; // These chains are allowed coin emissions. + else if ( (strncmp(chain_name, "LABS", 4) == 0) ) + STAKED = 2; // These chains have no coin emission, block subsidy is always 0, and comission is 0. Notary pay is allowed. + else if ( (strcmp(chain_name, "CFEK") == 0) || (strncmp(chain_name, "CFEK", 4) == 0) ) + STAKED = 3; // These chains have no speical rules at all. + else if ( (strcmp(chain_name, "TEST") == 0) || (strncmp(chain_name, "TEST", 4) == 0) ) + STAKED = 4; // These chains are for testing consensus to create a chain etc. Not meant to be actually used for anything important. + else if ( (strcmp(chain_name, "THIS_CHAIN_IS_BANNED") == 0) ) + STAKED = 255; // Any chain added to this group is banned, no notarisations are valid, as a consensus rule. Can be used to remove a chain from cluster if needed. + doneinit = 1; + return(STAKED); +}; + +int32_t STAKED_era(int timestamp) +{ + int8_t era = 0; + if (timestamp <= STAKED_NOTARIES_TIMESTAMP[0]) + return(1); + for (int32_t i = 1; i < NUM_STAKED_ERAS; i++) + { + if (timestamp <= STAKED_NOTARIES_TIMESTAMP[i] && timestamp >= (STAKED_NOTARIES_TIMESTAMP[i-1] + STAKED_ERA_GAP)) + return(i+1); + } + // if we are in a gap, return era 0, this allows to invalidate notarizations when in GAP. + return(0); +}; + +int8_t StakedNotaryID(std::string ¬aryname, char *Raddress) { + if ( STAKED_ERA != 0 ) + { + for (int8_t i = 0; i < num_notaries_STAKED[STAKED_ERA-1]; i++) { + if ( strcmp(Raddress,NOTARYADDRS[i]) == 0 ) { + notaryname.assign(notaries_STAKED[STAKED_ERA-1][i][0]); + return(i); + } + } + } + return(-1); +} + +int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) { + int i; int8_t retval = 0; + static uint8_t staked_pubkeys[NUM_STAKED_ERAS][64][33],didinit[NUM_STAKED_ERAS]; + static char ChainName[65]; + + if ( ChainName[0] == 0 ) + { + if ( ASSETCHAINS_SYMBOL[0] == 0 ) + strcpy(ChainName,"KMD"); + else + strcpy(ChainName,ASSETCHAINS_SYMBOL); + } + + if ( era == 0 ) + { + // era is zero so we need to null out the pubkeys. + memset(pubkeys,0,64 * 33); + printf("%s is a STAKED chain and is in an ERA GAP.\n",ChainName); + return(64); + } + else + { + if ( didinit[era-1] == 0 ) + { + for (i=0; i Date: Thu, 12 Dec 2019 16:53:19 -0500 Subject: [PATCH 168/339] update security contact info --- SECURITY.md | 106 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 23 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 6bcbe7706..97a9a68ce 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,30 +1,90 @@ ## Reporting a Vulnerability -Please use the below [contact data](https://komodoplatform.com/.well-known/security.txt.asc) to report vulnerabilities. We kindly ask you to not publish or exploit any found vulnerabilities. +You can use [Keybase](https://keybase.io/dukeleto) to find secure contact information. + +You can also contact Duke directly via SilentDragon wallet, via "Contact Duke". Encrypted sensitive data +in memo fields in highly encouraged. + +We kindly ask you to not publish or exploit any found vulnerabilities without at least contacting us first. + +Fingerprint: F16219F4C23F91112E9C734A8DFCBF8E5A4D8019 ``` ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA256 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: Keybase OpenPGP v2.0.8 +Comment: https://keybase.io/crypto -Contact: security@komodoplatform.com -Contact: ca333@komodoplatform.com -Contact: noashh@komodoplatform.com -Encryption: http://pgp.key-server.io:11371/0x379287998EE6CF47 ------BEGIN PGP SIGNATURE----- +xsFNBFU/8aYBEADf7eIcersi4Fbxdc2O6fuy3F9eoW6ap+bBz53fvZFMgBrKcUoV +2q6HkTQr/CWgPjx1LDwwBo7CBxOeg5FI8W5NVmVA+1XQ0TSa1fx8COpkPOAyCeDa +6aNQI1ciZS9xJeWy65gF2Mn+iJpgdkQj7xFxxaQpg8Uadq+jKzKp8BIMFyK10eSa +Pdn1xRDN3Bp5Ze2KUkv59nUc+C1Qx8mE5taXspSdHhrIL/78saGUZ4Q1bnlNex5u +aiAGRr5L/Qr0e5oEmfId56aQiCBqfvZmgUoun4djLdkAdhMW9bR8msbL/AycFvBn +C7fNTvic/vOw3yShd5jlr92OfNfHSgzJ5oa+BvMxPDbY4be8GPiTEvaGlPeEAec+ +HyQQHD2yzkhDCLPKbf6WDyRfnUTe3YoAEEmZWkgyP36ggB9gpoW5QuGC0P0Oz8Gz +jeqBdtnSwR30cwkH535ChjDP/W+KR1yoKZgenV5KuyA6WOZTkdFnDr1R33CkWA+q +NlZixmSYXZKPeL/z95ZDOiMTuUpG2/fqJsZMSfJ4GcMuF6UtWT5jM+/pzxPg0szq +8vEu8UZJD4UnUKJAb8XgfQbTXgmG3C+xAxPO2nrUD4etr375yyLR922mc9IRNj3v +oJqGYsYUfPwKS7ZsJU1N8bAtjdaxRHs6BL0r2sqEyvLwJLh/CdaNCK4HQQARAQAB +zSlrZXliYXNlLmlvL2R1a2VsZXRvIDxkdWtlbGV0b0BrZXliYXNlLmlvPsLBcAQT +AQoAGgUCVT/xpgIbLwMLCQcDFQoIAh4BAheAAhkBAAoJEI38v45aTYAZ0q0P/17Q +URAJGiJqQF7Lqon8bHlvM6jdnHhkv0We50pU+aLXGwaSTy60uj7sqPte6TxWM5BD +2BGi2viXuJfP+NrM8WJyRqZ0+SHlGM7vHwrHhfGC3sh+Bvh/T9ToXBRDPcp/zbvD +dqoF4KyI7qUH69mrf9THn+5fM3vF2PNwkEaXLvF7KAHZcFza2tLcEu8kBpTBpd5w +ZwVGfOTGTw5mbUwB3P6k0pY/SVF31cynCbIszr6YA0p0EUHirzPB8faHfRxzkyt3 +U6MFSHD070vqFu5W9QdwEFlVKn4G5RP4bD/i4Omjt8uHt2oWm3CqmJc+CVsEsxLz +gLXQmsTZTWYPGQcFc/oUTfBdfeXMsB2tZbuw56Ua/rFH03wgB6pp9pCKb/UDUC1R +tUQxGliQCA23444i4Pq1aGeTYVEBVHDw6xsp7lXDQi1AzhjXxzrf0Axt7khEX6Z8 +OilDT3ChhCkFacWt2YhudEU4gS1mAbnl1H2bn41FquoLqHCc4vPJlc5OzdhkDaeT +NjNCEgiCu8F42vfRaDQOeZdC2Rh1vJoe9GAv7OPg9nRv1caJQvIWHRIWkBotNAMz +q1vQaTB+LDnBpz3gG07EW60WYzuvOm6dyK5PH2BBMHS7J7UyRXERjmB2+5LvK1my +sDLV2qk+ToQgU8h2dJt+phyzKizVt9VfKTEFN/t6zsBNBFU/8aYBCADN9oyrBJam +Ly2QLBgihg/yifPoZClq0Z6M86M+VaeWKAKwdNE4r9bBR0ze8f6wuCMix5J+p+lb +UMFn5GubNgMLzcuuJ2nLqAKInAt3TxbYGz/MQm77DnuW0/b6XfniUKTe+Nf8vOBZ +HH7cyuhZdV549JaT2BOFXWFayLZF986atPN+NuX8kOzqD0InzEzbDwH1OVxhpeFV +r7W9s7HUGEDmBDXOLhdLmqx5mEcjumKUSWbMnwgHkR203RGY4H15/jSbpthE8/hH +z0FgRZWg69f/mZckyoKmjFeiNs5FaQKj2C1q6CEawYyzPd9P1WpCH97t/Y3//XRr +98bwOT8Rb6R/ABEBAAHCwoQEGAEKAA8FAlU/8aYFCQ8JnAACGwIBKQkQjfy/jlpN +gBnAXSAEGQEKAAYFAlU/8aYACgkQcteVKUeHcFho5wf+Ma++R1tGsmrI20sA04jz +jYRag7eVLnC9jhby6T8qIjOR13QaqZelZ0Tr0GBM0KRjU+ehmquw2Mx+NdE7+H60 +h0/D8sPHcOoabYztHz7EPto/lWGcjbEGNLx9Go6049XbTGiL+UfKWfHEzNdEeRX6 +0n1X3JOS67esaJg/ch7cgFrc/5V9Er2b+MBll2doPLh2QTtS7ECfxLzjkiRjwk9u +9warhCVqZd11xz1CCT+/8TRSSkJYgNkCAtogmrWiJ+HWAhlpr2eRdq1ESMmC4myP +oElx3FQWBdAY281aJ6EOBjwjpmPLElgltdQ5+yatlLR/j3E2J7jguXIzOEpGgFoO +i7HsD/0XQYgZ7/HtFka4xYBNHR1tw+F7uY3UzaQ8214sfRWoTtJmSPLeAFQZFh6E +OoGFPbimDTGttKPfIorZsUnGkZLcWrEqAAieFRmiL8Eyq98zQSEb4S/mMFYcgYMf +qYWm0dpX5sNQxZfw2Ny4JMPUFRT2LHlk1CC9dpdMvpkK5EqLBb8HVCwW+NFkwZBB +rzUtyWeSRd8HSDPqdy8T6BG0zTwZ+axIs7VH9nyo4Wyc+irVWctqYkAGyuJRci0s +C0lb9xgP7gwlEc/o0IpcAwCdSh/4aH4YTYyGOny1TQLWW6vYKwMMLtfdhqrD1Gzw +SnBo/6vfsELjt1IexEoAU1AaGRf4n7AyRPmhd3SFqtqXhv0bosv+oxi1WVbs4vB+ +rbfMpv4mq9CjbJQRr1gE9NAohqKLTlV5ADDcBc6uN6G5uUsgxzLdPo987rqQxW26 +XWpiJ309vQlgvkJjkOzS1YeDmsLnpSy/i5vocDs7G9XgI0CpuCs3C5kh+6L/ipB3 +78opGszS6yXFvVIPmklA57+F5pbZu4KlONCdlAoH3szZpDjUBashkvEKbbk25JVV +382WTLLbUz+s2rDAiU0eXCpkI/Zrkt1R8YYCCe09OeUAK1cMfm9v1QQaJaMFMA0L +mNXQ98FHvgfVa5vo/jxzKH4HqPPpTyKyKWhDJKCHJVmWfnec387ATQRVP/GmAQgA +wG70Vd4u64nHmAzLUe3dLuOIIIxBX6M4MYe6QXLyjsQ5vv8ScsF9QTRw3SMIw2Aa +9SB3I+bt6DKRUQOyWyUH74XZdEHveUip7GYglm9+rhiVHT3QfhiVWJo+84j9hG3J +C4gg3jkB0VzYUSU3lrRX0hRIl5C0oLa+ce80PM0MlmuwnJtRKCi5cNSjQKLi6PEu +ZlaKwkJvO+hbCguxtfuCK9qDd+l8vY63UM+Crqpc1QTNuEgD0MmOKqk/jyt6WUOC +Flep1zOMrbvpBYj3a01TdvG3J+5uuh9d2aKH3IhZyOPwu651DNLcRatF/36QmGQ0 +HFHYvM40UF0F06iHcDFw5QARAQABwsKEBBgBCgAPBQJVP/GmBQkPCZwAAhsMASkJ +EI38v45aTYAZwF0gBBkBCgAGBQJVP/GmAAoJENA7aXPDXJizlg8H/1SP4CP7ZCd4 +J9ptegCvfpcB1KRyIuIUxjDi4XuX6g+QLyZE98eSeoDj6JlYVVHOwACXcNtoBzIm +7/nk7afFTVYHVEyOCDFprml8qTmQ6aXOgv7z1Ib3Q8rw7EyaMWifsD3f757TSOKw +H0JBeQYrnhC0Mg9YunjepvamvTvHwZrLNNMltAznXQ2NGqS7dokPNGOmusGmW29a +EvK8K+AqSuCk2DB4UkaQul1UVmRhMjpKj/nQ9ubEsTDODbouRuLELqOLWmVAyE2V +WRq3VaGm23N/7w2FlsfPzfElHhmA3znx+2NllNB4nRHforu3/bmUJljozwBwDAN1 ++CfAct5LTQbn+w/8DtEiEZ3BMFU0WWo6W/NqvF5R4x/Hyns50L1GIA6UZqfs9Pdj +94EgoCVBGzgwUAl241HT7R4Kys58KlFNhlq3fFxlAADAY/ToCyNCK84PR10EDN6I +Q0jWZaMzMSSm6fJT75br93Sp4TNpTuVhGijR4ZehdDmclbShS28jrJo3u0vfOBoT +Sy7IchvuudIonnL5UKlA4a1KZOjuEfQfUId/iiIzRhTF+cPsvjqRv6lxLNjdbrDr +BMCsvwqZl4Qst2Z2kAZYND6gSSQAlef4j3EGtoVrS46maPTimv1KoLsgCQ4ycFmP +4uU+2KebEY1IdJW50gAEipajiqwH0Biy+H1muanSluZLeC/LYRdH+ebXuguhYZbI +m4qCbO5rupke0gBFZ7rmqmnDhDg7riVUWvIrtL2YtWX8y8u50TCaQaRjyf0Fqyv8 +G76/DUCUCYcwNkm2qJdHpjVqOU+7E+iWfooA4obfGyPLtuLw2fpVDEDgn+csd+M4 +KlRY6butx+NDUqHtx1Axf6aC9Dl6LAE33UY8nlQWWFvJbQBAY54IzU0WehSgrJSB +tnKq9uroBB7qDoJExmOnlUaAsmJWjkfxsQS9lFam6lf1UD01AFiIql0rQTcacxrF +NvQ1HJmZvDZF/K37DrE72NmkYz1aJhTokGFHOGoCqLt146bA2IRkpQRXCv4= +=YSWs +-----END PGP PUBLIC KEY BLOCK----- -iQJNBAEBCAA3FiEEVez5U2AlPa805zvqN5KHmY7mz0cFAlz6EuMZHGNhMzMzQGtv -bW9kb3BsYXRmb3JtLmNvbQAKCRA3koeZjubPR8cIEACP+JjyXDIzjgIewMMi/02b -tsYswPyQ+9bAoEJnis3r94d1FP1rqXmt4oNz6VwFTqQLEa5opW+gvvaxBTFJSPb0 -UzbS+1PjfAOox5cnT3Dnv9kcy4ECslnW/G+mH+85BUgz1HuqYc8A3kNQJL7KqLoi -YeD0Hd09KtlG+B4PWdnqLw/uvfbavSKdMn6WSIU6adNZWX0ewSubWPXvrWea5cI2 -yKDdMcDqB8Sc9J4JR2L9zW8NqPQuaxfLQbkCt2tg9QjlClrAqQgb8OZQJgY9f1T/ -kBlVXoA4ZUZeifvjSKxQ/3TdRFP+jbV9xsb6sr14zTx+Wcoqtgsh3l9F4+T3V2m8 -/c/iS4mFlK31pJtwYyrJAq9hpggqymdCVi0Pa3yLZsEj3orBPaPWbmq2v7xeF3J8 -y8vqAkt3M3T6251aZAKEcaN5RXYJW70CTseadwp0tmrAL2nIVmziNCMOF+Bufyxi -HddkasTcNX8VYfPCLWqBwrocx8d3n3E7dBGeS2x2iwuRVQ85pH5d+imxaMftcbqm -YrNuiqcI/0XDGk9pS6f1gpu5Eh5Q2QXGmOoRlfosfkAEfgFxfaMvmcu5Ay1s0gSR -MsTn0PrQyMYC3t3KpyP47C8ui9x7FtJFltR/QT4yzBF1QyDmINnK86ldQqSui402 -2+gQFt7YFvLIBUiy1fh1Jw== -=UITq ------END PGP SIGNATURE----- ``` From 8f46f4cc68af2ce3a515345e7301aff7f2d07da7 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:05:17 -0500 Subject: [PATCH 169/339] src/rpc/blockchain.cpp upstream updates --- src/rpc/blockchain.cpp | 207 ++++++++++++++++++++++++++++++++++------- 1 file changed, 175 insertions(+), 32 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 8b65b8249..21c0ca254 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -341,7 +341,7 @@ UniValue blockToJSON(const CBlock& block, const CBlockIndex* blockindex, bool tx return result; } -UniValue getblockcount(const UniValue& params, bool fHelp) +UniValue getblockcount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -358,7 +358,7 @@ UniValue getblockcount(const UniValue& params, bool fHelp) return chainActive.Height(); } -UniValue getbestblockhash(const UniValue& params, bool fHelp) +UniValue getbestblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -375,7 +375,7 @@ UniValue getbestblockhash(const UniValue& params, bool fHelp) return chainActive.LastTip()->GetBlockHash().GetHex(); } -UniValue getdifficulty(const UniValue& params, bool fHelp) +UniValue getdifficulty(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -484,7 +484,7 @@ UniValue mempoolToJSON(bool fVerbose = false) } } -UniValue getrawmempool(const UniValue& params, bool fHelp) +UniValue getrawmempool(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( @@ -525,7 +525,7 @@ UniValue getrawmempool(const UniValue& params, bool fHelp) return mempoolToJSON(fVerbose); } -UniValue getblockdeltas(const UniValue& params, bool fHelp) +UniValue getblockdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error(""); @@ -548,7 +548,7 @@ UniValue getblockdeltas(const UniValue& params, bool fHelp) return blockToDeltasJSON(block, pblockindex); } -UniValue getblockhashes(const UniValue& params, bool fHelp) +UniValue getblockhashes(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 2) throw runtime_error( @@ -621,7 +621,7 @@ UniValue getblockhashes(const UniValue& params, bool fHelp) return result; } -UniValue getblockhash(const UniValue& params, bool fHelp) +UniValue getblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -646,13 +646,83 @@ UniValue getblockhash(const UniValue& params, bool fHelp) return pblockindex->GetBlockHash().GetHex(); } -UniValue getlastsegidstakes(const UniValue& params, bool fHelp) +UniValue getlastsegidstakes(const UniValue& params, bool fHelp, const CPubKey& mypk) { + if (fHelp || params.size() != 1) + throw runtime_error( + "getlastsegidstakes depth\n" + "\nReturns object containing the counts of the last X blocks staked by each segid.\n" + "\nArguments:\n" + "1. depth (numeric, required) The amount of blocks to scan back." + "\nResult:\n" + "{\n" + " \"0\" : n, (numeric) number of stakes from segid 0 in the last X blocks.\n" + " .....\n" + "}\n" + "\nExamples:\n" + + HelpExampleCli("getlastsegidstakes", "1000") + + HelpExampleRpc("getlastsegidstakes", "1000") + ); + + if ( ASSETCHAINS_STAKED == 0 ) + throw runtime_error("Only applies to ac_staked chains\n"); + + LOCK(cs_main); + + int depth = params[0].get_int(); + if ( depth > chainActive.Height() ) + throw runtime_error("Not enough blocks to scan back that far.\n"); + + int32_t segids[64] = {0}; + int32_t pow = 0; + int32_t notset = 0; + + for (int64_t i = chainActive.Height(); i > chainActive.Height()-depth; i--) + { + int8_t segid = komodo_segid(0,i); + //CBlockIndex* pblockindex = chainActive[i]; + if ( segid >= 0 ) + segids[segid] += 1; + else if ( segid == -1 ) + pow++; + else + notset++; + } + + int8_t posperc = 100*(depth-pow)/depth; + UniValue ret(UniValue::VOBJ); + UniValue objsegids(UniValue::VOBJ); + for (int8_t i = 0; i < 64; i++) + { + char str[4]; + sprintf(str, "%d", i); + objsegids.push_back(Pair(str,segids[i])); + } + ret.push_back(Pair("NotSet",notset)); + ret.push_back(Pair("PoW",pow)); + ret.push_back(Pair("PoSPerc",posperc)); + ret.push_back(Pair("SegIds",objsegids)); return ret; } -UniValue getblockheader(const UniValue& params, bool fHelp) +/*uint256 _komodo_getblockhash(int32_t nHeight) +{ + uint256 hash; + LOCK(cs_main); + if ( nHeight >= 0 && nHeight <= chainActive.Height() ) + { + CBlockIndex* pblockindex = chainActive[nHeight]; + hash = pblockindex->GetBlockHash(); + int32_t i; + for (i=0; i<32; i++) + printf("%02x",((uint8_t *)&hash)[i]); + printf(" blockhash.%d\n",nHeight); + } else memset(&hash,0,sizeof(hash)); + return(hash); +}*/ + +UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -710,7 +780,7 @@ UniValue getblockheader(const UniValue& params, bool fHelp) return blockheaderToJSON(pblockindex); } -UniValue getblock(const UniValue& params, bool fHelp) +UniValue getblock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -823,7 +893,7 @@ UniValue getblock(const UniValue& params, bool fHelp) return blockToJSON(block, pblockindex, verbosity >= 2); } -UniValue gettxoutsetinfo(const UniValue& params, bool fHelp) +UniValue gettxoutsetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -862,7 +932,7 @@ UniValue gettxoutsetinfo(const UniValue& params, bool fHelp) } -UniValue kvsearch(const UniValue& params, bool fHelp) +UniValue kvsearch(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue ret(UniValue::VOBJ); uint32_t flags; uint8_t value[IGUANA_MAXSCRIPTSIZE*8],key[IGUANA_MAXSCRIPTSIZE*8]; int32_t duration,j,height,valuesize,keylen; uint256 refpubkey; static uint256 zeroes; if (fHelp || params.size() != 1 ) @@ -918,7 +988,7 @@ UniValue kvsearch(const UniValue& params, bool fHelp) return ret; } -UniValue minerids(const UniValue& params, bool fHelp) +UniValue minerids(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR); uint8_t minerids[2000],pubkeys[65][33]; int32_t i,j,n,numnotaries,tally[129]; if ( fHelp || params.size() != 1 ) @@ -976,7 +1046,7 @@ UniValue minerids(const UniValue& params, bool fHelp) return ret; } -UniValue notaries(const UniValue& params, bool fHelp) +UniValue notaries(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue a(UniValue::VARR); uint32_t timestamp=0; UniValue ret(UniValue::VOBJ); int32_t i,j,n,m; char *hexstr; uint8_t pubkeys[64][33]; char btcaddr[64],kmdaddr[64],*ptr; if ( fHelp || (params.size() != 1 && params.size() != 2) ) @@ -1036,7 +1106,7 @@ int32_t komodo_pending_withdraws(char *opretstr); int32_t pax_fiatstatus(uint64_t *available,uint64_t *deposited,uint64_t *issued,uint64_t *withdrawn,uint64_t *approved,uint64_t *redeemed,char *base); extern char CURRENCIES[][8]; -UniValue paxpending(const UniValue& params, bool fHelp) +UniValue paxpending(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR); char opretbuf[10000*2]; int32_t opretlen,baseid; uint64_t available,deposited,issued,withdrawn,approved,redeemed; if ( fHelp || params.size() != 0 ) @@ -1067,7 +1137,7 @@ UniValue paxpending(const UniValue& params, bool fHelp) return ret; } -UniValue paxprice(const UniValue& params, bool fHelp) +UniValue paxprice(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 4 || params.size() < 2 ) throw runtime_error("paxprice \"base\" \"rel\" height\n"); @@ -1142,7 +1212,7 @@ UniValue paxprice(const UniValue& params, bool fHelp) return(0); }*/ -UniValue prices(const UniValue& params, bool fHelp) +UniValue prices(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 1 ) throw runtime_error("prices maxsamples\n"); @@ -1268,7 +1338,7 @@ UniValue prices(const UniValue& params, bool fHelp) } // pricesbet rpc implementation -UniValue pricesbet(const UniValue& params, bool fHelp) +UniValue pricesbet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 3) throw runtime_error("pricesbet amount leverage \"synthetic-expression\"\n" @@ -1301,7 +1371,7 @@ UniValue pricesbet(const UniValue& params, bool fHelp) } // pricesaddfunding rpc implementation -UniValue pricesaddfunding(const UniValue& params, bool fHelp) +UniValue pricesaddfunding(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 2) throw runtime_error("pricesaddfunding bettxid amount\n" @@ -1325,7 +1395,7 @@ UniValue pricesaddfunding(const UniValue& params, bool fHelp) } // rpc pricessetcostbasis implementation -UniValue pricessetcostbasis(const UniValue& params, bool fHelp) +UniValue pricessetcostbasis(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error("pricessetcostbasis bettxid\n"); @@ -1345,7 +1415,7 @@ UniValue pricessetcostbasis(const UniValue& params, bool fHelp) } // pricescashout rpc implementation -UniValue pricescashout(const UniValue& params, bool fHelp) +UniValue pricescashout(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error("pricescashout bettxid\n"); @@ -1365,7 +1435,7 @@ UniValue pricescashout(const UniValue& params, bool fHelp) } // pricesrekt rpc implementation -UniValue pricesrekt(const UniValue& params, bool fHelp) +UniValue pricesrekt(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 2) throw runtime_error("pricesrekt bettxid height\n"); @@ -1387,7 +1457,7 @@ UniValue pricesrekt(const UniValue& params, bool fHelp) } // pricesrekt rpc implementation -UniValue pricesgetorderbook(const UniValue& params, bool fHelp) +UniValue pricesgetorderbook(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error("pricesgetorderbook\n"); @@ -1401,7 +1471,7 @@ UniValue pricesgetorderbook(const UniValue& params, bool fHelp) } // pricesrekt rpc implementation -UniValue pricesrefillfund(const UniValue& params, bool fHelp) +UniValue pricesrefillfund(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error("pricesrefillfund amount\n"); @@ -1417,7 +1487,7 @@ UniValue pricesrefillfund(const UniValue& params, bool fHelp) } -UniValue gettxout(const UniValue& params, bool fHelp) +UniValue gettxout(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 2 || params.size() > 3) throw runtime_error( @@ -1504,7 +1574,7 @@ UniValue gettxout(const UniValue& params, bool fHelp) return ret; } -UniValue verifychain(const UniValue& params, bool fHelp) +UniValue verifychain(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2) throw runtime_error( @@ -1593,7 +1663,7 @@ void NetworkUpgradeDescPushBack( } } -UniValue getblockchaininfo(const UniValue& params, bool fHelp) +UniValue getblockchaininfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 notarized_hash,notarized_desttxid; int32_t prevMoMheight,notarized_height,longestchain,kmdnotarized_height,txid_height; if (fHelp || params.size() != 0) @@ -1723,7 +1793,7 @@ struct CompareBlocksByHeight #include -UniValue getchaintips(const UniValue& params, bool fHelp) +UniValue getchaintips(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -1847,7 +1917,7 @@ UniValue mempoolInfoToJSON() return ret; } -UniValue getmempoolinfo(const UniValue& params, bool fHelp) +UniValue getmempoolinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -1874,9 +1944,81 @@ inline CBlockIndex* LookupBlockIndex(const uint256& hash) return it == mapBlockIndex.end() ? nullptr : it->second; } -#define ORG(X) (X - blockcount - nNotarizationsDiff) +UniValue getchaintxstats(const UniValue& params, bool fHelp, const CPubKey& mypk) +{ + if (fHelp || params.size() > 2) + throw runtime_error( + "getchaintxstats\n" + "\nCompute statistics about the total number and rate of transactions in the chain.\n" + "\nArguments:\n" + "1. nblocks (numeric, optional) Number of blocks in averaging window.\n" + "2. blockhash (string, optional) The hash of the block which ends the window.\n" + "\nResult:\n" + "{\n" + " \"time\": xxxxx, (numeric) The timestamp for the final block in the window in UNIX format.\n" + " \"txcount\": xxxxx, (numeric) The total number of transactions in the chain up to that point.\n" + " \"window_final_block_hash\": \"...\", (string) The hash of the final block in the window.\n" + " \"window_block_count\": xxxxx, (numeric) Size of the window in number of blocks.\n" + " \"window_tx_count\": xxxxx, (numeric) The number of transactions in the window. Only returned if \"window_block_count\" is > 0.\n" + " \"window_interval\": xxxxx, (numeric) The elapsed time in the window in seconds. Only returned if \"window_block_count\" is > 0.\n" + " \"txrate\": x.xx, (numeric) The average rate of transactions per second in the window. Only returned if \"window_interval\" is > 0.\n" + "}\n" + "\nExamples:\n" + + HelpExampleCli("getchaintxstats", "") + + HelpExampleRpc("getchaintxstats", "2016") + ); -UniValue invalidateblock(const UniValue& params, bool fHelp) + const CBlockIndex* pindex; + int blockcount = 30 * 24 * 60 * 60 / Params().GetConsensus().nPowTargetSpacing; // By default: 1 month + + if (params[1].isNull()) { + LOCK(cs_main); + pindex = chainActive.Tip(); + } else { + uint256 hash(ParseHashV(params[1], "blockhash")); + LOCK(cs_main); + pindex = LookupBlockIndex(hash); + if (!pindex) { + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found"); + } + if (!chainActive.Contains(pindex)) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Block is not in main chain"); + } + } + + assert(pindex != nullptr); + + if (params[0].isNull()) { + blockcount = std::max(0, std::min(blockcount, pindex->GetHeight() - 1)); + } else { + blockcount = params[0].get_int(); + + if (blockcount < 0 || (blockcount > 0 && blockcount >= pindex->GetHeight())) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid block count: should be between 0 and the block's height - 1"); + } + } + + const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount); + int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast(); + int nTxDiff = pindex->nChainTx - pindexPast->nChainTx; + + UniValue ret(UniValue::VOBJ); + ret.pushKV("time", (int64_t)pindex->nTime); + ret.pushKV("txcount", (int64_t)pindex->nChainTx); + ret.pushKV("window_final_block_hash", pindex->GetBlockHash().GetHex()); + ret.pushKV("window_block_count", blockcount); + if (blockcount > 0) { + ret.pushKV("window_tx_count", nTxDiff); + ret.pushKV("window_interval", nTimeDiff); + if (nTimeDiff > 0) { + ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff); + } + } + + return ret; +} + +UniValue invalidateblock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1914,7 +2056,7 @@ UniValue invalidateblock(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue reconsiderblock(const UniValue& params, bool fHelp) +UniValue reconsiderblock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1963,6 +2105,7 @@ static const CRPCCommand commands[] = { "blockchain", "getblockhash", &getblockhash, true }, { "blockchain", "getblockheader", &getblockheader, true }, { "blockchain", "getchaintips", &getchaintips, true }, + { "blockchain", "getchaintxstats", &getchaintxstats, true }, { "blockchain", "getdifficulty", &getdifficulty, true }, { "blockchain", "getmempoolinfo", &getmempoolinfo, true }, { "blockchain", "getrawmempool", &getrawmempool, true }, From 1f03e53f38b5589df5d569c0e276db492314fc2b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:21:54 -0500 Subject: [PATCH 170/339] rpc/net.cpp changes --- src/rpc/net.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index f7d7c90cb..39e080d86 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -36,7 +36,7 @@ using namespace std; -UniValue getconnectioncount(const UniValue& params, bool fHelp) +UniValue getconnectioncount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -54,7 +54,7 @@ UniValue getconnectioncount(const UniValue& params, bool fHelp) return (int)vNodes.size(); } -UniValue ping(const UniValue& params, bool fHelp) +UniValue ping(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -90,7 +90,7 @@ static void CopyNodeStats(std::vector& vstats) } } -UniValue getpeerinfo(const UniValue& params, bool fHelp) +UniValue getpeerinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -229,7 +229,7 @@ int32_t komodo_longestchain() return(KOMODO_LONGESTCHAIN); } -UniValue addnode(const UniValue& params, bool fHelp) +UniValue addnode(const UniValue& params, bool fHelp, const CPubKey& mypk) { string strCommand; if (params.size() == 2) @@ -279,7 +279,7 @@ UniValue addnode(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue disconnectnode(const UniValue& params, bool fHelp) +UniValue disconnectnode(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -301,7 +301,7 @@ UniValue disconnectnode(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue getaddednodeinfo(const UniValue& params, bool fHelp) +UniValue getaddednodeinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -417,7 +417,7 @@ UniValue getaddednodeinfo(const UniValue& params, bool fHelp) return ret; } -UniValue getnettotals(const UniValue& params, bool fHelp) +UniValue getnettotals(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 0) throw runtime_error( @@ -463,7 +463,7 @@ static UniValue GetNetworksInfo() return networks; } -UniValue getdeprecationinfo(const UniValue& params, bool fHelp) +UniValue getdeprecationinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { const CChainParams& chainparams = Params(); if (fHelp || params.size() != 0 || chainparams.NetworkIDString() != "main") @@ -490,7 +490,7 @@ UniValue getdeprecationinfo(const UniValue& params, bool fHelp) return obj; } -UniValue getnetworkinfo(const UniValue& params, bool fHelp) +UniValue getnetworkinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -557,7 +557,7 @@ UniValue getnetworkinfo(const UniValue& params, bool fHelp) return obj; } -UniValue setban(const UniValue& params, bool fHelp) +UniValue setban(const UniValue& params, bool fHelp, const CPubKey& mypk) { string strCommand; if (params.size() >= 2) @@ -621,7 +621,7 @@ UniValue setban(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue listbanned(const UniValue& params, bool fHelp) +UniValue listbanned(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -647,7 +647,7 @@ UniValue listbanned(const UniValue& params, bool fHelp) return bannedAddresses; } -UniValue clearbanned(const UniValue& params, bool fHelp) +UniValue clearbanned(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( From d26465b0d0db5048aa33a4a8d5ae2f6ee7fb8249 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:24:33 -0500 Subject: [PATCH 171/339] rpc/server.cpp changes --- src/rpc/server.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/rpc/server.cpp b/src/rpc/server.cpp index 24f6344ef..fc186c67f 100644 --- a/src/rpc/server.cpp +++ b/src/rpc/server.cpp @@ -206,7 +206,7 @@ std::string CRPCTable::help(const std::string& strCommand) const UniValue params; rpcfn_type pfn = pcmd->actor; if (setDone.insert(pfn).second) - (*pfn)(params, true); + (*pfn)(params, true, CPubKey()); } catch (const std::exception& e) { @@ -236,7 +236,7 @@ std::string CRPCTable::help(const std::string& strCommand) const return strRet; } -UniValue help(const UniValue& params, bool fHelp) +UniValue help(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( @@ -264,7 +264,7 @@ void GenerateBitcoins(bool b, CWallet *pw); #endif -UniValue stop(const UniValue& params, bool fHelp) +UniValue stop(const UniValue& params, bool fHelp, const CPubKey& mypk) { char buf[66+128]; // Accept the deprecated and ignored 'detach' boolean argument @@ -429,6 +429,7 @@ static const CRPCCommand vRPCCommands[] = { "nSPV", "nspv_spend", &nspv_spend, true }, { "nSPV", "nspv_broadcast", &nspv_broadcast, true }, { "nSPV", "nspv_logout", &nspv_logout, true }, + { "nSPV", "nspv_listccmoduleunspent", &nspv_listccmoduleunspent, true }, // rewards { "rewards", "rewardslist", &rewardslist, true }, @@ -871,7 +872,7 @@ UniValue CRPCTable::execute(const std::string &strMethod, const UniValue ¶ms try { // Execute - return pcmd->actor(params, false); + return pcmd->actor(params, false, CPubKey()); } catch (const std::exception& e) { From 94e2d1aedfeed72a006159ede4a60e65c4a76de7 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:33:26 -0500 Subject: [PATCH 172/339] src/rcp/server.h upstream changes --- src/rpc/server.h | 648 ++++++++++++++++++++++++----------------------- 1 file changed, 326 insertions(+), 322 deletions(-) diff --git a/src/rpc/server.h b/src/rpc/server.h index f594b0fb5..1688b0f67 100644 --- a/src/rpc/server.h +++ b/src/rpc/server.h @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush Developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -34,6 +35,7 @@ #include #include +#include class AsyncRPCQueue; class CRPCCommand; @@ -132,7 +134,7 @@ void RPCUnregisterTimerInterface(RPCTimerInterface *iface); */ void RPCRunLater(const std::string& name, boost::function func, int64_t nSeconds); -typedef UniValue(*rpcfn_type)(const UniValue& params, bool fHelp); +typedef UniValue(*rpcfn_type)(const UniValue& params, bool fHelp, const CPubKey& mypk); class CRPCCommand { @@ -202,340 +204,342 @@ std::string JSONRPCExecBatch(const UniValue& vReq); extern std::string experimentalDisabledHelpMsg(const std::string& rpc, const std::string& enableArg); -extern UniValue getconnectioncount(const UniValue& params, bool fHelp); // in rpcnet.cpp -extern UniValue getaddressmempool(const UniValue& params, bool fHelp); -extern UniValue getaddressutxos(const UniValue& params, bool fHelp); -extern UniValue getaddressdeltas(const UniValue& params, bool fHelp); -extern UniValue getaddresstxids(const UniValue& params, bool fHelp); -extern UniValue getsnapshot(const UniValue& params, bool fHelp); -extern UniValue getaddressbalance(const UniValue& params, bool fHelp); -extern UniValue getpeerinfo(const UniValue& params, bool fHelp); -extern UniValue checknotarization(const UniValue& params, bool fHelp); -extern UniValue getnotarypayinfo(const UniValue& params, bool fHelp); -extern UniValue ping(const UniValue& params, bool fHelp); -extern UniValue addnode(const UniValue& params, bool fHelp); -extern UniValue disconnectnode(const UniValue& params, bool fHelp); -extern UniValue getaddednodeinfo(const UniValue& params, bool fHelp); -extern UniValue getnettotals(const UniValue& params, bool fHelp); -extern UniValue setban(const UniValue& params, bool fHelp); -extern UniValue listbanned(const UniValue& params, bool fHelp); -extern UniValue clearbanned(const UniValue& params, bool fHelp); +extern UniValue getconnectioncount(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcnet.cpp +extern UniValue getaddressmempool(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddressutxos(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddressdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddresstxids(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getsnapshot(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddressbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getpeerinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue checknotarization(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnotarypayinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue ping(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue addnode(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue disconnectnode(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddednodeinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnettotals(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue setban(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listbanned(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue clearbanned(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue dumpprivkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue importprivkey(const UniValue& params, bool fHelp); -extern UniValue importaddress(const UniValue& params, bool fHelp); -extern UniValue dumpwallet(const UniValue& params, bool fHelp); -extern UniValue importwallet(const UniValue& params, bool fHelp); +extern UniValue dumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dumpwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue getgenerate(const UniValue& params, bool fHelp); // in rpcmining.cpp -extern UniValue setgenerate(const UniValue& params, bool fHelp); -extern UniValue generate(const UniValue& params, bool fHelp); -extern UniValue getlocalsolps(const UniValue& params, bool fHelp); -extern UniValue getnetworksolps(const UniValue& params, bool fHelp); -extern UniValue getnetworkhashps(const UniValue& params, bool fHelp); -extern UniValue getmininginfo(const UniValue& params, bool fHelp); -extern UniValue prioritisetransaction(const UniValue& params, bool fHelp); -extern UniValue getblocktemplate(const UniValue& params, bool fHelp); -extern UniValue submitblock(const UniValue& params, bool fHelp); -extern UniValue estimatefee(const UniValue& params, bool fHelp); -extern UniValue estimatepriority(const UniValue& params, bool fHelp); -extern UniValue coinsupply(const UniValue& params, bool fHelp); -extern UniValue tokeninfo(const UniValue& params, bool fHelp); -extern UniValue tokenlist(const UniValue& params, bool fHelp); -extern UniValue tokenorders(const UniValue& params, bool fHelp); -extern UniValue mytokenorders(const UniValue& params, bool fHelp); -extern UniValue tokenbalance(const UniValue& params, bool fHelp); -extern UniValue assetsaddress(const UniValue& params, bool fHelp); -extern UniValue tokenaddress(const UniValue& params, bool fHelp); -extern UniValue tokencreate(const UniValue& params, bool fHelp); -extern UniValue tokentransfer(const UniValue& params, bool fHelp); -extern UniValue tokenbid(const UniValue& params, bool fHelp); -extern UniValue tokencancelbid(const UniValue& params, bool fHelp); -extern UniValue tokenfillbid(const UniValue& params, bool fHelp); -extern UniValue tokenask(const UniValue& params, bool fHelp); -extern UniValue tokencancelask(const UniValue& params, bool fHelp); -extern UniValue tokenfillask(const UniValue& params, bool fHelp); -extern UniValue tokenconvert(const UniValue& params, bool fHelp); -extern UniValue heiraddress(const UniValue& params, bool fHelp); -extern UniValue heirfund(const UniValue& params, bool fHelp); -extern UniValue heiradd(const UniValue& params, bool fHelp); -extern UniValue heirclaim(const UniValue& params, bool fHelp); -extern UniValue heirinfo(const UniValue& params, bool fHelp); -extern UniValue heirlist(const UniValue& params, bool fHelp); -extern UniValue channelsaddress(const UniValue& params, bool fHelp); -extern UniValue oraclesaddress(const UniValue& params, bool fHelp); -extern UniValue oracleslist(const UniValue& params, bool fHelp); -extern UniValue oraclesinfo(const UniValue& params, bool fHelp); -extern UniValue oraclescreate(const UniValue& params, bool fHelp); -extern UniValue oraclesfund(const UniValue& params, bool fHelp); -extern UniValue oraclesregister(const UniValue& params, bool fHelp); -extern UniValue oraclessubscribe(const UniValue& params, bool fHelp); -extern UniValue oraclesdata(const UniValue& params, bool fHelp); -extern UniValue oraclessample(const UniValue& params, bool fHelp); -extern UniValue oraclessamples(const UniValue& params, bool fHelp); -extern UniValue pricesaddress(const UniValue& params, bool fHelp); -extern UniValue priceslist(const UniValue& params, bool fHelp); -extern UniValue mypriceslist(const UniValue& params, bool fHelp); -extern UniValue pricesinfo(const UniValue& params, bool fHelp); -extern UniValue pegsaddress(const UniValue& params, bool fHelp); -extern UniValue marmaraaddress(const UniValue& params, bool fHelp); -extern UniValue marmara_poolpayout(const UniValue& params, bool fHelp); -extern UniValue marmara_receive(const UniValue& params, bool fHelp); -extern UniValue marmara_issue(const UniValue& params, bool fHelp); -extern UniValue marmara_transfer(const UniValue& params, bool fHelp); -extern UniValue marmara_info(const UniValue& params, bool fHelp); -extern UniValue marmara_creditloop(const UniValue& params, bool fHelp); -extern UniValue marmara_settlement(const UniValue& params, bool fHelp); -extern UniValue marmara_lock(const UniValue& params, bool fHelp); -extern UniValue paymentsaddress(const UniValue& params, bool fHelp); -extern UniValue payments_release(const UniValue& params, bool fHelp); -extern UniValue payments_fund(const UniValue& params, bool fHelp); -extern UniValue payments_merge(const UniValue& params, bool fHelp); -extern UniValue payments_txidopret(const UniValue& params, bool fHelp); -extern UniValue payments_create(const UniValue& params, bool fHelp); -extern UniValue payments_airdrop(const UniValue& params, bool fHelp); -extern UniValue payments_airdroptokens(const UniValue& params, bool fHelp); -extern UniValue payments_info(const UniValue& params, bool fHelp); -extern UniValue payments_list(const UniValue& params, bool fHelp); +extern UniValue getgenerate(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcmining.cpp +extern UniValue setgenerate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue generate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getlocalsolps(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnetworksolps(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnetworkhashps(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getmininginfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue prioritisetransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblocktemplate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue submitblock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue estimatefee(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue estimatepriority(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue coinsupply(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokeninfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenlist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenorders(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue mytokenorders(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue assetsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokencreate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokentransfer(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenbid(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokencancelbid(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenfillbid(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenask(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokencancelask(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenfillask(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue tokenconvert(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heiraddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heirfund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heiradd(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heirclaim(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heirinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue heirlist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclesaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oracleslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclesinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclescreate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclesfund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclesregister(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclessubscribe(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclesdata(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclessample(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue oraclessamples(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue priceslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue mypriceslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmaraaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_poolpayout(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_receive(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_issue(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_transfer(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_info(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_creditloop(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_settlement(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue marmara_lock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paymentsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_release(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_fund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_merge(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_txidopret(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_create(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_airdrop(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_airdroptokens(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_info(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue payments_list(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue cclibaddress(const UniValue& params, bool fHelp); -extern UniValue cclibinfo(const UniValue& params, bool fHelp); -extern UniValue cclib(const UniValue& params, bool fHelp); -extern UniValue gatewaysaddress(const UniValue& params, bool fHelp); -extern UniValue gatewayslist(const UniValue& params, bool fHelp); -extern UniValue gatewaysinfo(const UniValue& params, bool fHelp); -extern UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp); -extern UniValue gatewaysexternaladdress(const UniValue& params, bool fHelp); -extern UniValue gatewaysbind(const UniValue& params, bool fHelp); -extern UniValue gatewaysdeposit(const UniValue& params, bool fHelp); -extern UniValue gatewaysclaim(const UniValue& params, bool fHelp); -extern UniValue gatewayswithdraw(const UniValue& params, bool fHelp); -extern UniValue gatewayspartialsign(const UniValue& params, bool fHelp); -extern UniValue gatewayscompletesigning(const UniValue& params, bool fHelp); -extern UniValue gatewaysmarkdone(const UniValue& params, bool fHelp); -extern UniValue gatewayspendingdeposits(const UniValue& params, bool fHelp); -extern UniValue gatewayspendingwithdraws(const UniValue& params, bool fHelp); -extern UniValue gatewaysprocessed(const UniValue& params, bool fHelp); -extern UniValue channelslist(const UniValue& params, bool fHelp); -extern UniValue channelsinfo(const UniValue& params, bool fHelp); -extern UniValue channelsopen(const UniValue& params, bool fHelp); -extern UniValue channelspayment(const UniValue& params, bool fHelp); -extern UniValue channelsclose(const UniValue& params, bool fHelp); -extern UniValue channelsrefund(const UniValue& params, bool fHelp); -//extern UniValue tokenswapask(const UniValue& params, bool fHelp); -//extern UniValue tokenfillswap(const UniValue& params, bool fHelp); -extern UniValue faucetfund(const UniValue& params, bool fHelp); -extern UniValue faucetget(const UniValue& params, bool fHelp); -extern UniValue faucetaddress(const UniValue& params, bool fHelp); -extern UniValue faucetinfo(const UniValue& params, bool fHelp); -extern UniValue rewardsinfo(const UniValue& params, bool fHelp); -extern UniValue rewardslist(const UniValue& params, bool fHelp); -extern UniValue rewardsaddress(const UniValue& params, bool fHelp); -extern UniValue rewardscreatefunding(const UniValue& params, bool fHelp); -extern UniValue rewardsaddfunding(const UniValue& params, bool fHelp); -extern UniValue rewardslock(const UniValue& params, bool fHelp); -extern UniValue rewardsunlock(const UniValue& params, bool fHelp); -extern UniValue diceaddress(const UniValue& params, bool fHelp); -extern UniValue dicefund(const UniValue& params, bool fHelp); -extern UniValue dicelist(const UniValue& params, bool fHelp); -extern UniValue diceinfo(const UniValue& params, bool fHelp); -extern UniValue diceaddfunds(const UniValue& params, bool fHelp); -extern UniValue dicebet(const UniValue& params, bool fHelp); -extern UniValue dicefinish(const UniValue& params, bool fHelp); -extern UniValue dicestatus(const UniValue& params, bool fHelp); -extern UniValue lottoaddress(const UniValue& params, bool fHelp); -extern UniValue FSMaddress(const UniValue& params, bool fHelp); -extern UniValue FSMcreate(const UniValue& params, bool fHelp); -extern UniValue FSMlist(const UniValue& params, bool fHelp); -extern UniValue FSMinfo(const UniValue& params, bool fHelp); -extern UniValue auctionaddress(const UniValue& params, bool fHelp); -extern UniValue pegscreate(const UniValue& params, bool fHelp); -extern UniValue pegsfund(const UniValue& params, bool fHelp); -extern UniValue pegsget(const UniValue& params, bool fHelp); -extern UniValue pegsredeem(const UniValue& params, bool fHelp); -extern UniValue pegsliquidate(const UniValue& params, bool fHelp); -extern UniValue pegsexchange(const UniValue& params, bool fHelp); -extern UniValue pegsaccounthistory(const UniValue& params, bool fHelp); -extern UniValue pegsaccountinfo(const UniValue& params, bool fHelp); -extern UniValue pegsworstaccounts(const UniValue& params, bool fHelp); -extern UniValue pegsinfo(const UniValue& params, bool fHelp); +extern UniValue cclibaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue cclibinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue cclib(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysexternaladdress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysbind(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysdeposit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysclaim(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayswithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayspartialsign(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayscompletesigning(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysmarkdone(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayspendingdeposits(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewayspendingwithdraws(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gatewaysprocessed(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelsopen(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelspayment(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelsclose(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue channelsrefund(const UniValue& params, bool fHelp, const CPubKey& mypk); +//extern UniValue tokenswapask(const UniValue& params, bool fHelp, const CPubKey& mypk); +//extern UniValue tokenfillswap(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue faucetfund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue faucetget(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue faucetaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue faucetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardslist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardscreatefunding(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardsaddfunding(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardslock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue rewardsunlock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue diceaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dicefund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dicelist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue diceinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue diceaddfunds(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dicebet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dicefinish(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dicestatus(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue lottoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue FSMaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue FSMcreate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue FSMlist(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue FSMinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue auctionaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegscreate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsfund(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsget(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsredeem(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsliquidate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsexchange(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsaccounthistory(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsaccountinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsworstaccounts(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pegsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue getnewaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp -//extern UniValue getnewaddress64(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue getaccountaddress(const UniValue& params, bool fHelp); -extern UniValue getrawchangeaddress(const UniValue& params, bool fHelp); -extern UniValue setaccount(const UniValue& params, bool fHelp); -extern UniValue getaccount(const UniValue& params, bool fHelp); -extern UniValue getaddressesbyaccount(const UniValue& params, bool fHelp); -extern UniValue sendtoaddress(const UniValue& params, bool fHelp); -extern UniValue signmessage(const UniValue& params, bool fHelp); -extern UniValue verifymessage(const UniValue& params, bool fHelp); -extern UniValue getreceivedbyaddress(const UniValue& params, bool fHelp); -extern UniValue getreceivedbyaccount(const UniValue& params, bool fHelp); -extern UniValue cleanwallettransactions(const UniValue& params, bool fHelp); -extern UniValue getbalance(const UniValue& params, bool fHelp); -extern UniValue getbalance64(const UniValue& params, bool fHelp); -extern UniValue getunconfirmedbalance(const UniValue& params, bool fHelp); -extern UniValue movecmd(const UniValue& params, bool fHelp); -extern UniValue sendfrom(const UniValue& params, bool fHelp); -extern UniValue sendmany(const UniValue& params, bool fHelp); -extern UniValue addmultisigaddress(const UniValue& params, bool fHelp); -extern UniValue createmultisig(const UniValue& params, bool fHelp); -extern UniValue listreceivedbyaddress(const UniValue& params, bool fHelp); -extern UniValue listreceivedbyaccount(const UniValue& params, bool fHelp); -extern UniValue listtransactions(const UniValue& params, bool fHelp); -extern UniValue listaddressgroupings(const UniValue& params, bool fHelp); -extern UniValue listaccounts(const UniValue& params, bool fHelp); -extern UniValue listsinceblock(const UniValue& params, bool fHelp); -extern UniValue gettransaction(const UniValue& params, bool fHelp); -extern UniValue backupwallet(const UniValue& params, bool fHelp); -extern UniValue keypoolrefill(const UniValue& params, bool fHelp); -extern UniValue walletpassphrase(const UniValue& params, bool fHelp); -extern UniValue walletpassphrasechange(const UniValue& params, bool fHelp); -extern UniValue walletlock(const UniValue& params, bool fHelp); -extern UniValue encryptwallet(const UniValue& params, bool fHelp); -extern UniValue validateaddress(const UniValue& params, bool fHelp); -extern UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp); -extern UniValue decodeccopret(const UniValue& params, bool fHelp); -extern UniValue getinfo(const UniValue& params, bool fHelp); -extern UniValue getiguanajson(const UniValue& params, bool fHelp); -extern UniValue getnotarysendmany(const UniValue& params, bool fHelp); -extern UniValue geterablockheights(const UniValue& params, bool fHelp); -extern UniValue setpubkey(const UniValue& params, bool fHelp); -extern UniValue getwalletinfo(const UniValue& params, bool fHelp); -extern UniValue getblockchaininfo(const UniValue& params, bool fHelp); -extern UniValue getnetworkinfo(const UniValue& params, bool fHelp); -extern UniValue getdeprecationinfo(const UniValue& params, bool fHelp); -extern UniValue setmocktime(const UniValue& params, bool fHelp); -extern UniValue resendwallettransactions(const UniValue& params, bool fHelp); -extern UniValue zc_benchmark(const UniValue& params, bool fHelp); -extern UniValue zc_raw_keygen(const UniValue& params, bool fHelp); -extern UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp); -extern UniValue zc_raw_receive(const UniValue& params, bool fHelp); -extern UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp); +extern UniValue getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +//extern UniValue getnewaddress64(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue getaccountaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getrawchangeaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue setaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getaddressesbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendtoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue signmessage(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue verifymessage(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue cleanwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getbalance64(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getunconfirmedbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue movecmd(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendfrom(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue addmultisigaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue createmultisig(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listtransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listaddressgroupings(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listaccounts(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listsinceblock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gettransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue backupwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue keypoolrefill(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue walletpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue walletpassphrasechange(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue walletlock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue encryptwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue decodeccopret(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getiguanajson(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnotarysendmany(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue geterablockheights(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue setpubkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue setstakingsplit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getwalletinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblockchaininfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getnetworkinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getdeprecationinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue setmocktime(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue resendwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue zc_benchmark(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue zc_raw_keygen(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue zc_raw_receive(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue jumblr_deposit(const UniValue& params, bool fHelp); -extern UniValue jumblr_secret(const UniValue& params, bool fHelp); -extern UniValue jumblr_pause(const UniValue& params, bool fHelp); -extern UniValue jumblr_resume(const UniValue& params, bool fHelp); +extern UniValue jumblr_deposit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue jumblr_secret(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue jumblr_pause(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue jumblr_resume(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue getrawtransaction(const UniValue& params, bool fHelp); // in rcprawtransaction.cpp -extern UniValue listunspent(const UniValue& params, bool fHelp); -extern UniValue lockunspent(const UniValue& params, bool fHelp); -extern UniValue listlockunspent(const UniValue& params, bool fHelp); -extern UniValue createrawtransaction(const UniValue& params, bool fHelp); -extern UniValue decoderawtransaction(const UniValue& params, bool fHelp); -extern UniValue decodescript(const UniValue& params, bool fHelp); -extern UniValue fundrawtransaction(const UniValue& params, bool fHelp); -extern UniValue signrawtransaction(const UniValue& params, bool fHelp); -extern UniValue sendrawtransaction(const UniValue& params, bool fHelp); -extern UniValue gettxoutproof(const UniValue& params, bool fHelp); -extern UniValue verifytxoutproof(const UniValue& params, bool fHelp); +extern UniValue getrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rcprawtransaction.cpp +extern UniValue listunspent(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue lockunspent(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue listlockunspent(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue createrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue decoderawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue decodescript(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue fundrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue signrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gettxoutproof(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue verifytxoutproof(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue getblockcount(const UniValue& params, bool fHelp); // in rpcblockchain.cpp -extern UniValue getbestblockhash(const UniValue& params, bool fHelp); -extern UniValue getdifficulty(const UniValue& params, bool fHelp); -extern UniValue settxfee(const UniValue& params, bool fHelp); -extern UniValue getmempoolinfo(const UniValue& params, bool fHelp); -extern UniValue getrawmempool(const UniValue& params, bool fHelp); -extern UniValue getblockhashes(const UniValue& params, bool fHelp); -extern UniValue getblockdeltas(const UniValue& params, bool fHelp); -extern UniValue getblockhash(const UniValue& params, bool fHelp); -extern UniValue getblockheader(const UniValue& params, bool fHelp); -extern UniValue getlastsegidstakes(const UniValue& params, bool fHelp); -extern UniValue getblock(const UniValue& params, bool fHelp); -extern UniValue gettxoutsetinfo(const UniValue& params, bool fHelp); -extern UniValue gettxout(const UniValue& params, bool fHelp); -extern UniValue verifychain(const UniValue& params, bool fHelp); -extern UniValue getchaintips(const UniValue& params, bool fHelp); -extern UniValue invalidateblock(const UniValue& params, bool fHelp); -extern UniValue reconsiderblock(const UniValue& params, bool fHelp); -extern UniValue getspentinfo(const UniValue& params, bool fHelp); -extern UniValue selfimport(const UniValue& params, bool fHelp); -extern UniValue importdual(const UniValue& params, bool fHelp); -extern UniValue importgatewayaddress(const UniValue& params, bool fHelp); -extern UniValue importgatewayinfo(const UniValue& params, bool fHelp); -extern UniValue importgatewaybind(const UniValue& params, bool fHelp); -extern UniValue importgatewaydeposit(const UniValue& params, bool fHelp); -extern UniValue importgatewaywithdraw(const UniValue& params, bool fHelp); -extern UniValue importgatewaypartialsign(const UniValue& params, bool fHelp); -extern UniValue importgatewaycompletesigning(const UniValue& params, bool fHelp); -extern UniValue importgatewaymarkdone(const UniValue& params, bool fHelp); -extern UniValue importgatewaypendingwithdraws(const UniValue& params, bool fHelp); -extern UniValue importgatewayprocessed(const UniValue& params, bool fHelp); -extern UniValue genminingCSV(const UniValue& params, bool fHelp); +extern UniValue getblockcount(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcblockchain.cpp +extern UniValue getbestblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getdifficulty(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue settxfee(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getmempoolinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getrawmempool(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblockhashes(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblockdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getlastsegidstakes(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getblock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gettxoutsetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue gettxout(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue verifychain(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getchaintips(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue invalidateblock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue reconsiderblock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getspentinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue selfimport(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importdual(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewayaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewayinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaybind(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaydeposit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaywithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaypartialsign(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaycompletesigning(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaymarkdone(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewaypendingwithdraws(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importgatewayprocessed(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue genminingCSV(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue nspv_getinfo(const UniValue& params, bool fHelp); -extern UniValue nspv_login(const UniValue& params, bool fHelp); -extern UniValue nspv_listtransactions(const UniValue& params, bool fHelp); -extern UniValue nspv_mempool(const UniValue& params, bool fHelp); -extern UniValue nspv_listunspent(const UniValue& params, bool fHelp); -extern UniValue nspv_spentinfo(const UniValue& params, bool fHelp); -extern UniValue nspv_notarizations(const UniValue& params, bool fHelp); -extern UniValue nspv_hdrsproof(const UniValue& params, bool fHelp); -extern UniValue nspv_txproof(const UniValue& params, bool fHelp); -extern UniValue nspv_spend(const UniValue& params, bool fHelp); -extern UniValue nspv_broadcast(const UniValue& params, bool fHelp); -extern UniValue nspv_logout(const UniValue& params, bool fHelp); +extern UniValue nspv_getinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_login(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_listtransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_mempool(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_listunspent(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_spentinfo(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_notarizations(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_hdrsproof(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_txproof(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_spend(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_broadcast(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_logout(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue nspv_listccmoduleunspent(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue getblocksubsidy(const UniValue& params, bool fHelp); +extern UniValue getblocksubsidy(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue z_exportkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_importkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_exportviewingkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_importviewingkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_getnewaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_listaddresses(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_exportwallet(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_importwallet(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_getbalance(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_gettotalbalance(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_mergetoaddress(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_sendmany(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_shieldcoinbase(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_getoperationresult(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_listoperationids(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue opreturn_burn(const UniValue& params, bool fHelp); // in rpcwallet.cpp -extern UniValue z_validateaddress(const UniValue& params, bool fHelp); // in rpcmisc.cpp -extern UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp); // in rpcdisclosure.cpp -extern UniValue z_validatepaymentdisclosure(const UniValue ¶ms, bool fHelp); // in rpcdisclosure.cpp +extern UniValue z_exportkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_importkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_exportviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_importviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_listaddresses(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_exportwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_gettotalbalance(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_mergetoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_getoperationstatus(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_getoperationresult(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_listoperationids(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue opreturn_burn(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp +extern UniValue z_validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcmisc.cpp +extern UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdisclosure.cpp +extern UniValue z_validatepaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdisclosure.cpp -extern UniValue MoMoMdata(const UniValue& params, bool fHelp); -extern UniValue calc_MoM(const UniValue& params, bool fHelp); -extern UniValue height_MoM(const UniValue& params, bool fHelp); -extern UniValue assetchainproof(const UniValue& params, bool fHelp); -extern UniValue crosschainproof(const UniValue& params, bool fHelp); -extern UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp); -extern UniValue scanNotarisationsDB(const UniValue& params, bool fHelp); -extern UniValue getimports(const UniValue& params, bool fHelp); -extern UniValue getwalletburntransactions(const UniValue& params, bool fHelp); -extern UniValue migrate_converttoexport(const UniValue& params, bool fHelp); -extern UniValue migrate_createburntransaction(const UniValue& params, bool fHelp); -extern UniValue migrate_createimporttransaction(const UniValue& params, bool fHelp); -extern UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp); -extern UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp); -extern UniValue migrate_createnotaryapprovaltransaction(const UniValue& params, bool fHelp); +extern UniValue MoMoMdata(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue calc_MoM(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue height_MoM(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue assetchainproof(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue crosschainproof(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue scanNotarisationsDB(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getimports(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue getwalletburntransactions(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_converttoexport(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_createburntransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_createimporttransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue migrate_createnotaryapprovaltransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue notaries(const UniValue& params, bool fHelp); -extern UniValue minerids(const UniValue& params, bool fHelp); -extern UniValue kvsearch(const UniValue& params, bool fHelp); -extern UniValue kvupdate(const UniValue& params, bool fHelp); -extern UniValue paxprice(const UniValue& params, bool fHelp); -extern UniValue paxpending(const UniValue& params, bool fHelp); -extern UniValue paxprices(const UniValue& params, bool fHelp); -extern UniValue paxdeposit(const UniValue& params, bool fHelp); -extern UniValue paxwithdraw(const UniValue& params, bool fHelp); +extern UniValue notaries(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue minerids(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue kvsearch(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue kvupdate(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paxprice(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paxpending(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paxprices(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paxdeposit(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue paxwithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue prices(const UniValue& params, bool fHelp); -extern UniValue pricesbet(const UniValue& params, bool fHelp); -extern UniValue pricessetcostbasis(const UniValue& params, bool fHelp); -extern UniValue pricescashout(const UniValue& params, bool fHelp); -extern UniValue pricesrekt(const UniValue& params, bool fHelp); -extern UniValue pricesaddfunding(const UniValue& params, bool fHelp); -extern UniValue pricesgetorderbook(const UniValue& params, bool fHelp); -extern UniValue pricesrefillfund(const UniValue& params, bool fHelp); +extern UniValue prices(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesbet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricessetcostbasis(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricescashout(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesrekt(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesaddfunding(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesgetorderbook(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue pricesrefillfund(const UniValue& params, bool fHelp, const CPubKey& mypk); From ea12ce2c85aaf117f3caee5437b7d54a37d90eb1 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:36:15 -0500 Subject: [PATCH 173/339] src/rcp/rawtransaction.cpp upstream changes --- src/rpc/rawtransaction.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 1594043a8..0fcb5411b 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -1,5 +1,6 @@ // Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2015 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -422,7 +423,7 @@ void TxToJSON(const CTransaction& tx, const uint256 hashBlock, UniValue& entry) } } -UniValue getrawtransaction(const UniValue& params, bool fHelp) +UniValue getrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -611,7 +612,7 @@ int32_t gettxout_scriptPubKey(uint8_t *scriptPubKey,int32_t maxsize,uint256 txid return(-1); } -UniValue gettxoutproof(const UniValue& params, bool fHelp) +UniValue gettxoutproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || (params.size() != 1 && params.size() != 2)) throw runtime_error( @@ -692,7 +693,7 @@ UniValue gettxoutproof(const UniValue& params, bool fHelp) return strHex; } -UniValue verifytxoutproof(const UniValue& params, bool fHelp) +UniValue verifytxoutproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -725,7 +726,7 @@ UniValue verifytxoutproof(const UniValue& params, bool fHelp) return res; } -UniValue createrawtransaction(const UniValue& params, bool fHelp) +UniValue createrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { string examplescriptPubKey = "21021ce1eac70455c3e6c52d67c133549b8aed4a588fba594372e8048e65c4f0fcb6ac"; @@ -885,7 +886,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp) return EncodeHexTx(rawTx); } -UniValue decoderawtransaction(const UniValue& params, bool fHelp) +UniValue decoderawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -980,7 +981,7 @@ UniValue decoderawtransaction(const UniValue& params, bool fHelp) return result; } -UniValue decodescript(const UniValue& params, bool fHelp) +UniValue decodescript(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1034,7 +1035,7 @@ static void TxInErrorToJSON(const CTxIn& txin, UniValue& vErrorsRet, const std:: vErrorsRet.push_back(entry); } -UniValue signrawtransaction(const UniValue& params, bool fHelp) +UniValue signrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 5) throw runtime_error( @@ -1331,7 +1332,7 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp) extern UniValue NSPV_broadcast(char *hex); -UniValue sendrawtransaction(const UniValue& params, bool fHelp) +UniValue sendrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( From 0202e3436dcccf94a3f7559b9ec3b20e929b8991 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:49:09 -0500 Subject: [PATCH 174/339] src/rpc/mining.cpp upstream changes --- src/rpc/mining.cpp | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 5354b7d07..b107f179f 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -99,7 +99,7 @@ int64_t GetNetworkHashPS(int lookup, int height) return (int64_t)(workDiff.getdouble() / timeDiff); } -UniValue getlocalsolps(const UniValue& params, bool fHelp) +UniValue getlocalsolps(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp) throw runtime_error( @@ -117,7 +117,7 @@ UniValue getlocalsolps(const UniValue& params, bool fHelp) return GetLocalSolPS(); } -UniValue getnetworksolps(const UniValue& params, bool fHelp) +UniValue getnetworksolps(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2) throw runtime_error( @@ -139,7 +139,7 @@ UniValue getnetworksolps(const UniValue& params, bool fHelp) return GetNetworkHashPS(params.size() > 0 ? params[0].get_int() : 120, params.size() > 1 ? params[1].get_int() : -1); } -UniValue getnetworkhashps(const UniValue& params, bool fHelp) +UniValue getnetworkhashps(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2) throw runtime_error( @@ -163,7 +163,8 @@ UniValue getnetworkhashps(const UniValue& params, bool fHelp) } #ifdef ENABLE_MINING -UniValue getgenerate(const UniValue& params, bool fHelp) +extern bool VERUS_MINTBLOCKS; +UniValue getgenerate(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -196,7 +197,7 @@ UniValue getgenerate(const UniValue& params, bool fHelp) extern uint8_t NOTARY_PUBKEY33[33]; //Value generate(const Array& params, bool fHelp) -UniValue generate(const UniValue& params, bool fHelp) +UniValue generate(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 1) throw runtime_error( @@ -323,7 +324,7 @@ endloop: } -UniValue setgenerate(const UniValue& params, bool fHelp) +UniValue setgenerate(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -390,7 +391,7 @@ UniValue setgenerate(const UniValue& params, bool fHelp) CBlockIndex *komodo_chainactive(int32_t height); arith_uint256 zawy_ctB(arith_uint256 bnTarget,uint32_t solvetime); -UniValue genminingCSV(const UniValue& params, bool fHelp) +UniValue genminingCSV(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t i,z,height; uint32_t solvetime,prevtime=0; FILE *fp; char str[65],str2[65],fname[256]; uint256 hash; arith_uint256 bnTarget; CBlockIndex *pindex; bool fNegative,fOverflow; UniValue result(UniValue::VOBJ); if (fHelp || params.size() != 0 ) @@ -433,7 +434,7 @@ UniValue genminingCSV(const UniValue& params, bool fHelp) return(result); } -UniValue getmininginfo(const UniValue& params, bool fHelp) +UniValue getmininginfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -471,14 +472,14 @@ UniValue getmininginfo(const UniValue& params, bool fHelp) obj.push_back(Pair("genproclimit", (int)GetArg("-genproclimit", -1))); if (ASSETCHAINS_ALGO == ASSETCHAINS_EQUIHASH) { - obj.push_back(Pair("localsolps" , getlocalsolps(params, false))); - obj.push_back(Pair("networksolps", getnetworksolps(params, false))); + obj.push_back(Pair("localsolps" , getlocalsolps(params, false, mypk))); + obj.push_back(Pair("networksolps", getnetworksolps(params, false, mypk))); } else { - obj.push_back(Pair("localhashps" , GetBoolArg("-gen", false) ? getlocalsolps(params, false) : (double)0.0)); + obj.push_back(Pair("localhashps" , GetBoolArg("-gen", false) ? getlocalsolps(params, false, mypk) : (double)0.0)); } - obj.push_back(Pair("networkhashps", getnetworksolps(params, false))); + obj.push_back(Pair("networkhashps", getnetworksolps(params, false, mypk))); obj.push_back(Pair("pooledtx", (uint64_t)mempool.size())); obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC())); obj.push_back(Pair("chain", Params().NetworkIDString())); @@ -493,7 +494,7 @@ UniValue getmininginfo(const UniValue& params, bool fHelp) // NOTE: Unlike wallet RPC (which use BTC values), mining RPCs follow GBT (BIP 22) in using satoshi amounts -UniValue prioritisetransaction(const UniValue& params, bool fHelp) +UniValue prioritisetransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 3) throw runtime_error( @@ -543,7 +544,7 @@ static UniValue BIP22ValidationResult(const CValidationState& state) return "valid?"; } -UniValue getblocktemplate(const UniValue& params, bool fHelp) +UniValue getblocktemplate(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( @@ -901,7 +902,7 @@ protected: }; }; -UniValue submitblock(const UniValue& params, bool fHelp) +UniValue submitblock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( @@ -973,7 +974,7 @@ UniValue submitblock(const UniValue& params, bool fHelp) return BIP22ValidationResult(state); } -UniValue estimatefee(const UniValue& params, bool fHelp) +UniValue estimatefee(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1005,7 +1006,7 @@ UniValue estimatefee(const UniValue& params, bool fHelp) return ValueFromAmount(feeRate.GetFeePerK()); } -UniValue estimatepriority(const UniValue& params, bool fHelp) +UniValue estimatepriority(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1033,7 +1034,7 @@ UniValue estimatepriority(const UniValue& params, bool fHelp) return mempool.estimatePriority(nBlocks); } -UniValue getblocksubsidy(const UniValue& params, bool fHelp) +UniValue getblocksubsidy(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( From 43f984eae04c28de88bbecf6eb2ab696216fbe9d Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 17:56:11 -0500 Subject: [PATCH 175/339] src/rpc/misc.cpp upstream changes --- src/rpc/misc.cpp | 50 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp index d27826ec3..602ec38ec 100644 --- a/src/rpc/misc.cpp +++ b/src/rpc/misc.cpp @@ -97,7 +97,7 @@ int32_t getera(int timestamp) return(0); } -UniValue getiguanajson(const UniValue& params, bool fHelp) +UniValue getiguanajson(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error("getiguanajson\nreturns json for iguana, for the current ERA."); @@ -137,7 +137,7 @@ UniValue getiguanajson(const UniValue& params, bool fHelp) return json; } -UniValue getnotarysendmany(const UniValue& params, bool fHelp) +UniValue getnotarysendmany(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( @@ -165,7 +165,7 @@ UniValue getnotarysendmany(const UniValue& params, bool fHelp) return ret; } -UniValue geterablockheights(const UniValue& params, bool fHelp) +UniValue geterablockheights(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -191,7 +191,7 @@ UniValue geterablockheights(const UniValue& params, bool fHelp) return(ret); } -UniValue getinfo(const UniValue& params, bool fHelp) +UniValue getinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 notarized_hash,notarized_desttxid; int32_t prevMoMheight,notarized_height,longestchain,kmdnotarized_height,txid_height; if (fHelp || params.size() != 0) @@ -413,7 +413,7 @@ public: }; #endif -UniValue coinsupply(const UniValue& params, bool fHelp) +UniValue coinsupply(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t height = 0; int32_t currentHeight; int64_t blocks_per_year,zf1,zf3,zf12,sf1,sf3,sf12,sproutfunds,zfunds,supply1,supply3,supply12,supply = 0; UniValue result(UniValue::VOBJ); if (fHelp || params.size() > 1) @@ -478,7 +478,7 @@ UniValue coinsupply(const UniValue& params, bool fHelp) return(result); } -UniValue jumblr_deposit(const UniValue& params, bool fHelp) +UniValue jumblr_deposit(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t retval; UniValue result(UniValue::VOBJ); if (fHelp || params.size() != 1) @@ -498,7 +498,7 @@ UniValue jumblr_deposit(const UniValue& params, bool fHelp) return(result); } -UniValue jumblr_secret(const UniValue& params, bool fHelp) +UniValue jumblr_secret(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t retval; UniValue result(UniValue::VOBJ); if (fHelp || params.size() != 1) @@ -516,7 +516,7 @@ UniValue jumblr_secret(const UniValue& params, bool fHelp) return(result); } -UniValue jumblr_pause(const UniValue& params, bool fHelp) +UniValue jumblr_pause(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t retval; UniValue result(UniValue::VOBJ); if (fHelp ) @@ -526,7 +526,7 @@ UniValue jumblr_pause(const UniValue& params, bool fHelp) return(result); } -UniValue jumblr_resume(const UniValue& params, bool fHelp) +UniValue jumblr_resume(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t retval; UniValue result(UniValue::VOBJ); if (fHelp ) @@ -536,7 +536,7 @@ UniValue jumblr_resume(const UniValue& params, bool fHelp) return(result); } -UniValue validateaddress(const UniValue& params, bool fHelp) +UniValue validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -630,7 +630,7 @@ public: } }; -UniValue z_validateaddress(const UniValue& params, bool fHelp) +UniValue z_validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -741,7 +741,7 @@ CScript _createmultisig_redeemScript(const UniValue& params) return result; } -UniValue createmultisig(const UniValue& params, bool fHelp) +UniValue createmultisig(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 2 || params.size() > 2) { @@ -783,7 +783,7 @@ UniValue createmultisig(const UniValue& params, bool fHelp) return result; } -UniValue verifymessage(const UniValue& params, bool fHelp) +UniValue verifymessage(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 3) throw runtime_error( @@ -839,7 +839,7 @@ UniValue verifymessage(const UniValue& params, bool fHelp) return (pubkey.GetID() == *keyID); } -UniValue setmocktime(const UniValue& params, bool fHelp) +UniValue setmocktime(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -933,7 +933,7 @@ bool timestampSort(std::pair a, return a.second.time < b.second.time; } -UniValue getaddressmempool(const UniValue& params, bool fHelp) +UniValue getaddressmempool(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2 || params.size() == 0) throw runtime_error( @@ -1005,7 +1005,7 @@ UniValue getaddressmempool(const UniValue& params, bool fHelp) return result; } -UniValue getaddressutxos(const UniValue& params, bool fHelp) +UniValue getaddressutxos(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2 || params.size() == 0) throw runtime_error( @@ -1092,7 +1092,7 @@ UniValue getaddressutxos(const UniValue& params, bool fHelp) } } -UniValue getaddressdeltas(const UniValue& params, bool fHelp) +UniValue getaddressdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2 || params.size() == 0 || !params[0].isObject()) throw runtime_error( @@ -1242,7 +1242,7 @@ CAmount checkburnaddress(CAmount &received, int64_t &nNotaryPay, int32_t &height return balance; } -UniValue checknotarization(const UniValue& params, bool fHelp) +UniValue checknotarization(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -1272,7 +1272,7 @@ UniValue checknotarization(const UniValue& params, bool fHelp) return true; } -UniValue getnotarypayinfo(const UniValue& params, bool fHelp) +UniValue getnotarypayinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error( @@ -1318,7 +1318,7 @@ UniValue getnotarypayinfo(const UniValue& params, bool fHelp) return result; } -UniValue getaddressbalance(const UniValue& params, bool fHelp) +UniValue getaddressbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp ||params.size() > 2 || params.size() == 0) throw runtime_error( @@ -1377,7 +1377,7 @@ UniValue getaddressbalance(const UniValue& params, bool fHelp) UniValue komodo_snapshot(int top); -UniValue getsnapshot(const UniValue& params, bool fHelp) +UniValue getsnapshot(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t total; int32_t top = 0; @@ -1434,7 +1434,7 @@ UniValue getsnapshot(const UniValue& params, bool fHelp) return(result); } -UniValue getaddresstxids(const UniValue& params, bool fHelp) +UniValue getaddresstxids(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 2 || params.size() < 1) throw runtime_error( @@ -1518,7 +1518,7 @@ UniValue getaddresstxids(const UniValue& params, bool fHelp) } -UniValue getspentinfo(const UniValue& params, bool fHelp) +UniValue getspentinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1 || !params[0].isObject()) @@ -1566,7 +1566,7 @@ UniValue getspentinfo(const UniValue& params, bool fHelp) return obj; } -UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp) +UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp, const CPubKey& mypk) { bool notarizedconfirmed; uint256 txid; @@ -1592,7 +1592,7 @@ UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp) return result; } -UniValue decodeccopret(const UniValue& params, bool fHelp) +UniValue decodeccopret(const UniValue& params, bool fHelp, const CPubKey& mypk) { CTransaction tx; uint256 tokenid,txid,hashblock; std::vector vopret,vOpretExtra; uint8_t *script,tokenevalcode; From 0cb8318f415f0eca7cf0eb3daf49c0235a57a162 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 18:02:08 -0500 Subject: [PATCH 176/339] src/rpc/crosschain.cpp upstream changes --- src/rpc/crosschain.cpp | 60 +++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/rpc/crosschain.cpp b/src/rpc/crosschain.cpp index b42a08f62..7e72e21d2 100644 --- a/src/rpc/crosschain.cpp +++ b/src/rpc/crosschain.cpp @@ -67,7 +67,7 @@ extern std::string ASSETCHAINS_SELFIMPORT; //int32_t GetSelfimportProof(std::string source, CMutableTransaction &mtx, CScript &scriptPubKey, TxProof &proof, std::string rawsourcetx, int32_t &ivout, uint256 sourcetxid, uint64_t burnAmount); std::string MakeCodaImportTx(uint64_t txfee, std::string receipt, std::string srcaddr, std::vector vouts); -UniValue assetchainproof(const UniValue& params, bool fHelp) +UniValue assetchainproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 hash; @@ -83,7 +83,7 @@ UniValue assetchainproof(const UniValue& params, bool fHelp) } -UniValue crosschainproof(const UniValue& params, bool fHelp) +UniValue crosschainproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue ret(UniValue::VOBJ); //fprintf(stderr,"crosschainproof needs to be implemented\n"); @@ -91,7 +91,7 @@ UniValue crosschainproof(const UniValue& params, bool fHelp) } -UniValue height_MoM(const UniValue& params, bool fHelp) +UniValue height_MoM(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t height,depth,notarized_height,MoMoMdepth,MoMoMoffset,kmdstarti,kmdendi; uint256 MoM,MoMoM,kmdtxid; uint32_t timestamp = 0; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR); if ( fHelp || params.size() != 1 ) @@ -131,7 +131,7 @@ UniValue height_MoM(const UniValue& params, bool fHelp) return ret; } -UniValue MoMoMdata(const UniValue& params, bool fHelp) +UniValue MoMoMdata(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 3 ) throw runtime_error("MoMoMdata symbol kmdheight ccid\n"); @@ -158,7 +158,7 @@ UniValue MoMoMdata(const UniValue& params, bool fHelp) } -UniValue calc_MoM(const UniValue& params, bool fHelp) +UniValue calc_MoM(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t height,MoMdepth; uint256 MoM; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR); if ( fHelp || params.size() != 2 ) @@ -178,7 +178,7 @@ UniValue calc_MoM(const UniValue& params, bool fHelp) } -UniValue migrate_converttoexport(const UniValue& params, bool fHelp) +UniValue migrate_converttoexport(const UniValue& params, bool fHelp, const CPubKey& mypk) { std::vector rawproof; uint8_t *ptr; uint8_t i; uint32_t ccid = ASSETCHAINS_CC; uint64_t txfee = 10000; if (fHelp || params.size() != 2) @@ -243,7 +243,7 @@ UniValue migrate_converttoexport(const UniValue& params, bool fHelp) } // creates burn tx as an alternative to 'migrate_converttoexport()' -UniValue migrate_createburntransaction(const UniValue& params, bool fHelp) +UniValue migrate_createburntransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue ret(UniValue::VOBJ); //uint8_t *ptr; @@ -540,7 +540,7 @@ void CheckBurnTxSource(uint256 burntxid, UniValue &info) { * 3. migrate_completeimporttransaction */ -UniValue migrate_createimporttransaction(const UniValue& params, bool fHelp) +UniValue migrate_createimporttransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 2) throw runtime_error("migrate_createimporttransaction burnTx payouts [notarytxid-1]..[notarytxid-N]\n\n" @@ -599,7 +599,7 @@ UniValue migrate_createimporttransaction(const UniValue& params, bool fHelp) return ret; } -UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp) +UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error("migrate_completeimporttransaction importTx [offset]\n\n" @@ -641,7 +641,7 @@ UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp) // checks if burn tx exists and params stored in the burn tx match to the source chain // returns txproof // run it on the source chain -UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp) +UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error("migrate_checkburntransactionsource burntxid\n\n" @@ -659,7 +659,7 @@ UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp) UniValue txids(UniValue::VARR); txids.push_back(burntxid.GetHex()); nextparams.push_back(txids); - result.push_back(Pair("TxOutProof", gettxoutproof(nextparams, false))); // get txoutproof + result.push_back(Pair("TxOutProof", gettxoutproof(nextparams, false, mypk))); // get txoutproof result.push_back(Pair("result", "success")); // get txoutproof return result; @@ -668,7 +668,7 @@ UniValue migrate_checkburntransactionsource(const UniValue& params, bool fHelp) // creates a tx for the dest chain with txproof // used as a momom-backup manual import solution // run it on the dest chain -UniValue migrate_createnotaryapprovaltransaction(const UniValue& params, bool fHelp) +UniValue migrate_createnotaryapprovaltransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 2) throw runtime_error("migrate_createnotaryapprovaltransaction burntxid txoutproof\n\n" @@ -711,7 +711,7 @@ UniValue migrate_createnotaryapprovaltransaction(const UniValue& params, bool fH // creates a source 'quasi-burn' tx for AC_PUBKEY // run it on the same asset chain -UniValue selfimport(const UniValue& params, bool fHelp) +UniValue selfimport(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string destaddr; @@ -795,7 +795,7 @@ UniValue selfimport(const UniValue& params, bool fHelp) bool GetNotarisationNotaries(uint8_t notarypubkeys[64][33], int8_t &numNN, const std::vector &vin, std::vector &NotarisationNotaries); -UniValue importdual(const UniValue& params, bool fHelp) +UniValue importdual(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); CMutableTransaction mtx; @@ -850,7 +850,7 @@ UniValue importdual(const UniValue& params, bool fHelp) return result; } -UniValue importgatewayinfo(const UniValue& params, bool fHelp) +UniValue importgatewayinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 txid; @@ -863,7 +863,7 @@ UniValue importgatewayinfo(const UniValue& params, bool fHelp) } -UniValue importgatewaybind(const UniValue& params, bool fHelp) +UniValue importgatewaybind(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); CMutableTransaction mtx; std::vector pubkey; @@ -916,7 +916,7 @@ UniValue importgatewaybind(const UniValue& params, bool fHelp) return result; } -UniValue importgatewaydeposit(const UniValue& params, bool fHelp) +UniValue importgatewaydeposit(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); CMutableTransaction mtx; std::vector rawproof; @@ -959,7 +959,7 @@ UniValue importgatewaydeposit(const UniValue& params, bool fHelp) return result; } -UniValue importgatewaywithdraw(const UniValue& params, bool fHelp) +UniValue importgatewaywithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); CMutableTransaction mtx; std::vector rawproof; @@ -997,7 +997,7 @@ UniValue importgatewaywithdraw(const UniValue& params, bool fHelp) return result; } -UniValue importgatewaypartialsign(const UniValue& params, bool fHelp) +UniValue importgatewaypartialsign(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string coin,parthex,hex; uint256 txid; @@ -1020,7 +1020,7 @@ UniValue importgatewaypartialsign(const UniValue& params, bool fHelp) return(result); } -UniValue importgatewaycompletesigning(const UniValue& params, bool fHelp) +UniValue importgatewaycompletesigning(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 withdrawtxid; std::string txhex,hex,coin; @@ -1043,7 +1043,7 @@ UniValue importgatewaycompletesigning(const UniValue& params, bool fHelp) return(result); } -UniValue importgatewaymarkdone(const UniValue& params, bool fHelp) +UniValue importgatewaymarkdone(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 completetxid; std::string hex,coin; if ( fHelp || params.size() != 2 ) @@ -1062,7 +1062,7 @@ UniValue importgatewaymarkdone(const UniValue& params, bool fHelp) return(result); } -UniValue importgatewaypendingwithdraws(const UniValue& params, bool fHelp) +UniValue importgatewaypendingwithdraws(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; std::string coin; if ( fHelp || params.size() != 2 ) @@ -1074,7 +1074,7 @@ UniValue importgatewaypendingwithdraws(const UniValue& params, bool fHelp) return(ImportGatewayPendingWithdraws(bindtxid,coin)); } -UniValue importgatewayprocessed(const UniValue& params, bool fHelp) +UniValue importgatewayprocessed(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; std::string coin; if ( fHelp || params.size() != 2 ) @@ -1086,7 +1086,7 @@ UniValue importgatewayprocessed(const UniValue& params, bool fHelp) return(ImportGatewayProcessedWithdraws(bindtxid,coin)); } -UniValue importgatewayexternaladdress(const UniValue& params, bool fHelp) +UniValue importgatewayexternaladdress(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; CPubKey pubkey; @@ -1099,7 +1099,7 @@ UniValue importgatewayexternaladdress(const UniValue& params, bool fHelp) return(ImportGatewayExternalAddress(bindtxid,pubkey)); } -UniValue importgatewaydumpprivkey(const UniValue& params, bool fHelp) +UniValue importgatewaydumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; @@ -1124,7 +1124,7 @@ UniValue importgatewaydumpprivkey(const UniValue& params, bool fHelp) return(ImportGatewayDumpPrivKey(bindtxid,vchSecret)); } -UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp) +UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp, const CPubKey& mypk) { // TODO take timestamp as param, and loop blockindex to get starting/finish height. if (fHelp || params.size() != 1) @@ -1185,7 +1185,7 @@ UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp) return out; } -/*UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp) +/*UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error("getNotarisationsForBlock blockHash\n\n" @@ -1208,7 +1208,7 @@ UniValue getNotarisationsForBlock(const UniValue& params, bool fHelp) }*/ -UniValue scanNotarisationsDB(const UniValue& params, bool fHelp) +UniValue scanNotarisationsDB(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 2 || params.size() > 3) throw runtime_error("scanNotarisationsDB blockHeight symbol [blocksLimit=1440]\n\n" @@ -1236,7 +1236,7 @@ UniValue scanNotarisationsDB(const UniValue& params, bool fHelp) return out; } -UniValue getimports(const UniValue& params, bool fHelp) +UniValue getimports(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 1) throw runtime_error( @@ -1358,7 +1358,7 @@ UniValue getimports(const UniValue& params, bool fHelp) // outputs burn transactions in the wallet -UniValue getwalletburntransactions(const UniValue& params, bool fHelp) +UniValue getwalletburntransactions(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() > 1) throw runtime_error( From 791a1810988326c427f9f5e03dfaff27965ba4bb Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 18:06:18 -0500 Subject: [PATCH 177/339] mypk changes --- src/rpc/testtransactions.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rpc/testtransactions.cpp b/src/rpc/testtransactions.cpp index 849300a62..c41e97e10 100644 --- a/src/rpc/testtransactions.cpp +++ b/src/rpc/testtransactions.cpp @@ -53,7 +53,7 @@ using namespace std; int32_t ensure_CCrequirements(uint8_t evalcode); -UniValue test_ac(const UniValue& params, bool fHelp) +UniValue test_ac(const UniValue& params, bool fHelp, const CPubKey& mypk) { // make fake token tx: struct CCcontract_info *cp, C; @@ -98,7 +98,7 @@ UniValue test_ac(const UniValue& params, bool fHelp) return(FinalizeCCTx(0, cp, mtx, myPubkey, txfee, opret)); } -UniValue test_heirmarker(const UniValue& params, bool fHelp) +UniValue test_heirmarker(const UniValue& params, bool fHelp, const CPubKey& mypk) { // make fake token tx: struct CCcontract_info *cp, C; @@ -129,7 +129,7 @@ UniValue test_heirmarker(const UniValue& params, bool fHelp) return(FinalizeCCTx(0, cp, mtx, myPubkey, 10000, opret)); } -UniValue test_burntx(const UniValue& params, bool fHelp) +UniValue test_burntx(const UniValue& params, bool fHelp, const CPubKey& mypk) { // make fake token tx: struct CCcontract_info *cp, C; @@ -172,7 +172,7 @@ UniValue test_burntx(const UniValue& params, bool fHelp) return(FinalizeCCTx(0, cp, mtx, myPubkey, 10000, EncodeTokenOpRet(tokenid, voutPubkeys, std::make_pair(0, vscript_t())))); } -UniValue test_proof(const UniValue& params, bool fHelp) +UniValue test_proof(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::vectorproof; @@ -222,7 +222,7 @@ UniValue test_proof(const UniValue& params, bool fHelp) } extern CScript prices_costbasisopret(uint256 bettxid, CPubKey mypk, int32_t height, int64_t costbasis); -UniValue test_pricesmarker(const UniValue& params, bool fHelp) +UniValue test_pricesmarker(const UniValue& params, bool fHelp, const CPubKey& mypk) { // make fake token tx: struct CCcontract_info *cp, C; From 869409b710fb6c9e0edc71066b9b87b716caffb2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 18:56:36 -0500 Subject: [PATCH 178/339] src/wallet/rcpwallet.cpp upstream changes --- src/wallet/rpcwallet.cpp | 987 +++++++++++++++++++-------------------- 1 file changed, 480 insertions(+), 507 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 278ef77b0..169da27ca 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -38,7 +38,8 @@ #include "zcbenchmarks.h" #include "script/interpreter.h" #include "zcash/zip32.h" -#include "cc/CCinclude.h" +#include "notaries_staked.h" + #include "utiltime.h" #include "asyncrpcoperation.h" #include "asyncrpcqueue.h" @@ -115,6 +116,24 @@ void EnsureWalletIsUnlocked() throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Error: Please enter the wallet passphrase with walletpassphrase first."); } +void Lock2NSPV(const CPubKey &pk) +{ + if (!pk.IsValid()) + { + ENTER_CRITICAL_SECTION(cs_main); + ENTER_CRITICAL_SECTION(pwalletMain->cs_wallet); + } +} + +void Unlock2NSPV(const CPubKey &pk) +{ + if (!pk.IsValid()) + { + LEAVE_CRITICAL_SECTION(cs_main); + LEAVE_CRITICAL_SECTION(pwalletMain->cs_wallet); + } +} + uint64_t komodo_accrued_interest(int32_t *txheightp,uint32_t *locktimep,uint256 hash,int32_t n,int32_t checkheight,uint64_t checkvalue,int32_t tipheight); void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry) @@ -161,7 +180,7 @@ char *komodo_chainname() void OS_randombytes(unsigned char *x,long xlen); -UniValue getnewaddress(const UniValue& params, bool fHelp) +UniValue getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( KOMODO_NSPV_FULLNODE && !EnsureWalletIsAvailable(fHelp) ) return NullUniValue; @@ -255,7 +274,7 @@ CTxDestination GetAccountAddress(std::string strAccount, bool bForceNew=false) return account.vchPubKey.GetID(); } -UniValue getaccountaddress(const UniValue& params, bool fHelp) +UniValue getaccountaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -287,7 +306,7 @@ UniValue getaccountaddress(const UniValue& params, bool fHelp) } -UniValue getrawchangeaddress(const UniValue& params, bool fHelp) +UniValue getrawchangeaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -322,7 +341,7 @@ UniValue getrawchangeaddress(const UniValue& params, bool fHelp) } -UniValue setaccount(const UniValue& params, bool fHelp) +UniValue setaccount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -368,7 +387,7 @@ UniValue setaccount(const UniValue& params, bool fHelp) } -UniValue getaccount(const UniValue& params, bool fHelp) +UniValue getaccount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -402,7 +421,7 @@ UniValue getaccount(const UniValue& params, bool fHelp) } -UniValue getaddressesbyaccount(const UniValue& params, bool fHelp) +UniValue getaddressesbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -484,7 +503,7 @@ static void SendMoney(const CTxDestination &address, CAmount nValue, bool fSubtr } -UniValue sendtoaddress(const UniValue& params, bool fHelp) +UniValue sendtoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -573,7 +592,7 @@ int32_t komodo_kvduration(uint32_t flags); uint256 komodo_kvprivkey(uint256 *pubkeyp,char *passphrase); int32_t komodo_kvsigverify(uint8_t *buf,int32_t len,uint256 _pubkey,uint256 sig); -UniValue kvupdate(const UniValue& params, bool fHelp) +UniValue kvupdate(const UniValue& params, bool fHelp, const CPubKey& mypk) { static uint256 zeroes; CWalletTx wtx; UniValue ret(UniValue::VOBJ); @@ -715,7 +734,7 @@ UniValue kvupdate(const UniValue& params, bool fHelp) return ret; } -UniValue paxdeposit(const UniValue& params, bool fHelp) +UniValue paxdeposit(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint64_t available,deposited,issued,withdrawn,approved,redeemed,seed,komodoshis = 0; int32_t height; char destaddr[64]; uint8_t i,pubkey37[33]; bool fSubtractFeeFromAmount = false; @@ -761,7 +780,7 @@ UniValue paxdeposit(const UniValue& params, bool fHelp) return wtx.GetHash().GetHex(); } -UniValue paxwithdraw(const UniValue& params, bool fHelp) +UniValue paxwithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk) { CWalletTx wtx; std::string dest; int32_t kmdheight; uint64_t seed,komodoshis = 0; char destaddr[64]; uint8_t i,pubkey37[37]; bool fSubtractFeeFromAmount = false; if ( ASSETCHAINS_SYMBOL[0] == 0 ) @@ -796,7 +815,7 @@ UniValue paxwithdraw(const UniValue& params, bool fHelp) return wtx.GetHash().GetHex(); } -UniValue listaddressgroupings(const UniValue& params, bool fHelp) +UniValue listaddressgroupings(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -847,7 +866,7 @@ UniValue listaddressgroupings(const UniValue& params, bool fHelp) return jsonGroupings; } -UniValue signmessage(const UniValue& params, bool fHelp) +UniValue signmessage(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -906,7 +925,7 @@ UniValue signmessage(const UniValue& params, bool fHelp) return EncodeBase64(&vchSig[0], vchSig.size()); } -UniValue getreceivedbyaddress(const UniValue& params, bool fHelp) +UniValue getreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -977,7 +996,7 @@ UniValue getreceivedbyaddress(const UniValue& params, bool fHelp) } -UniValue getreceivedbyaccount(const UniValue& params, bool fHelp) +UniValue getreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1075,7 +1094,7 @@ CAmount GetAccountBalance(const string& strAccount, int nMinDepth, const isminef return GetAccountBalance(walletdb, strAccount, nMinDepth, filter); } -UniValue cleanwallettransactions(const UniValue& params, bool fHelp) +UniValue cleanwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1178,7 +1197,7 @@ UniValue cleanwallettransactions(const UniValue& params, bool fHelp) return (ret); } -UniValue getbalance(const UniValue& params, bool fHelp) +UniValue getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1260,7 +1279,7 @@ UniValue getbalance(const UniValue& params, bool fHelp) return ValueFromAmount(nBalance); } -UniValue getunconfirmedbalance(const UniValue ¶ms, bool fHelp) +UniValue getunconfirmedbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1276,7 +1295,7 @@ UniValue getunconfirmedbalance(const UniValue ¶ms, bool fHelp) } -UniValue movecmd(const UniValue& params, bool fHelp) +UniValue movecmd(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1351,7 +1370,7 @@ UniValue movecmd(const UniValue& params, bool fHelp) } -UniValue sendfrom(const UniValue& params, bool fHelp) +UniValue sendfrom(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1419,7 +1438,7 @@ UniValue sendfrom(const UniValue& params, bool fHelp) } -UniValue sendmany(const UniValue& params, bool fHelp) +UniValue sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1487,11 +1506,15 @@ UniValue sendmany(const UniValue& params, bool fHelp) for (const std::string& name_ : keys) { CTxDestination dest = DecodeDestination(name_); if (!IsValidDestination(dest)) { - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Hush address: ") + name_); + CScript tmpspk; + tmpspk << ParseHex(name_) << OP_CHECKSIG; + if ( !ExtractDestination(tmpspk, dest, true) ) + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Komodo address or pubkey: ") + name_); } CScript scriptPubKey = GetScriptForDestination(dest); CAmount nAmount = AmountFromValue(sendTo[i]); + i++; if (nAmount <= 0) throw JSONRPCError(RPC_TYPE_ERROR, "Invalid amount for send"); totalAmount += nAmount; @@ -1532,7 +1555,7 @@ UniValue sendmany(const UniValue& params, bool fHelp) // Defined in rpc/misc.cpp extern CScript _createmultisig_redeemScript(const UniValue& params); -UniValue addmultisigaddress(const UniValue& params, bool fHelp) +UniValue addmultisigaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1727,7 +1750,7 @@ UniValue ListReceived(const UniValue& params, bool fByAccounts) return ret; } -UniValue listreceivedbyaddress(const UniValue& params, bool fHelp) +UniValue listreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1764,7 +1787,7 @@ UniValue listreceivedbyaddress(const UniValue& params, bool fHelp) return ListReceived(params, false); } -UniValue listreceivedbyaccount(const UniValue& params, bool fHelp) +UniValue listreceivedbyaccount(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -1858,7 +1881,11 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe entry.push_back(Pair("involvesWatchonly", true)); entry.push_back(Pair("account", account)); - MaybePushAddress(entry, r.destination); + CTxDestination dest; + if (CScriptExt::ExtractVoutDestination(wtx, r.vout, dest)) + MaybePushAddress(entry, dest); + else + MaybePushAddress(entry, r.destination); if (bIsCoinbase) { @@ -1906,7 +1933,7 @@ void AcentryToJSON(const CAccountingEntry& acentry, const string& strAccount, Un } } -UniValue listtransactions(const UniValue& params, bool fHelp) +UniValue listtransactions(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2031,7 +2058,7 @@ UniValue listtransactions(const UniValue& params, bool fHelp) return ret; } -UniValue listaccounts(const UniValue& params, bool fHelp) +UniValue listaccounts(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2111,7 +2138,7 @@ UniValue listaccounts(const UniValue& params, bool fHelp) return ret; } -UniValue listsinceblock(const UniValue& params, bool fHelp) +UniValue listsinceblock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2202,7 +2229,7 @@ UniValue listsinceblock(const UniValue& params, bool fHelp) return ret; } -UniValue gettransaction(const UniValue& params, bool fHelp) +UniValue gettransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2291,7 +2318,7 @@ UniValue gettransaction(const UniValue& params, bool fHelp) } -UniValue backupwallet(const UniValue& params, bool fHelp) +UniValue backupwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2334,7 +2361,7 @@ UniValue backupwallet(const UniValue& params, bool fHelp) } -UniValue keypoolrefill(const UniValue& params, bool fHelp) +UniValue keypoolrefill(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2378,7 +2405,7 @@ static void LockWallet(CWallet* pWallet) pWallet->Lock(); } -UniValue walletpassphrase(const UniValue& params, bool fHelp) +UniValue walletpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2440,7 +2467,7 @@ UniValue walletpassphrase(const UniValue& params, bool fHelp) } -UniValue walletpassphrasechange(const UniValue& params, bool fHelp) +UniValue walletpassphrasechange(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2486,7 +2513,7 @@ UniValue walletpassphrasechange(const UniValue& params, bool fHelp) } -UniValue walletlock(const UniValue& params, bool fHelp) +UniValue walletlock(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2526,7 +2553,7 @@ UniValue walletlock(const UniValue& params, bool fHelp) int32_t komodo_acpublic(uint32_t tiptime); -UniValue encryptwallet(const UniValue& params, bool fHelp) +UniValue encryptwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2596,7 +2623,7 @@ UniValue encryptwallet(const UniValue& params, bool fHelp) return "wallet encrypted; Komodo server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup."; } -UniValue lockunspent(const UniValue& params, bool fHelp) +UniValue lockunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2680,7 +2707,7 @@ UniValue lockunspent(const UniValue& params, bool fHelp) return true; } -UniValue listlockunspent(const UniValue& params, bool fHelp) +UniValue listlockunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2729,7 +2756,7 @@ UniValue listlockunspent(const UniValue& params, bool fHelp) return ret; } -UniValue settxfee(const UniValue& params, bool fHelp) +UniValue settxfee(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2756,7 +2783,7 @@ UniValue settxfee(const UniValue& params, bool fHelp) return true; } -UniValue getwalletinfo(const UniValue& params, bool fHelp) +UniValue getwalletinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2802,7 +2829,7 @@ UniValue getwalletinfo(const UniValue& params, bool fHelp) return obj; } -UniValue resendwallettransactions(const UniValue& params, bool fHelp) +UniValue resendwallettransactions(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -2829,7 +2856,7 @@ UniValue resendwallettransactions(const UniValue& params, bool fHelp) extern uint32_t komodo_segid32(char *coinaddr); -UniValue listunspent(const UniValue& params, bool fHelp) +UniValue listunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3002,7 +3029,7 @@ uint64_t komodo_interestsum() } -UniValue z_listunspent(const UniValue& params, bool fHelp) +UniValue z_listunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3014,6 +3041,7 @@ UniValue z_listunspent(const UniValue& params, bool fHelp) "Optionally filter to only include notes sent to specified addresses.\n" "When minconf is 0, unspent notes with zero confirmations are returned, even though they are not immediately spendable.\n" "Results are an array of Objects, each of which has:\n" + "{txid, jsindex, jsoutindex, confirmations, address, amount, memo} (Sprout)\n" "{txid, outindex, confirmations, address, amount, memo} (Sapling)\n" "\nArguments:\n" "1. minconf (numeric, optional, default=1) The minimum confirmations to filter\n" @@ -3029,6 +3057,7 @@ UniValue z_listunspent(const UniValue& params, bool fHelp) " {\n" " \"txid\" : \"txid\", (string) the transaction id \n" " \"jsindex\" : n (numeric) the joinsplit index\n" + " \"jsoutindex\" (sprout) : n (numeric) the output index of the joinsplit\n" " \"outindex\" (sapling) : n (numeric) the output index\n" " \"confirmations\" : n (numeric) the number of confirmations\n" " \"spendable\" : true|false (boolean) true if note can be spent by wallet, false if note has zero confirmations, false if address is watchonly\n" @@ -3153,7 +3182,7 @@ UniValue z_listunspent(const UniValue& params, bool fHelp) return results; } -UniValue fundrawtransaction(const UniValue& params, bool fHelp) +UniValue fundrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3207,7 +3236,7 @@ UniValue fundrawtransaction(const UniValue& params, bool fHelp) return result; } -UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp) +UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp) { throw runtime_error( @@ -3236,7 +3265,7 @@ UniValue zc_sample_joinsplit(const UniValue& params, bool fHelp) return HexStr(ss.begin(), ss.end()); } -UniValue zc_benchmark(const UniValue& params, bool fHelp) +UniValue zc_benchmark(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) { return NullUniValue; @@ -3362,7 +3391,7 @@ UniValue zc_benchmark(const UniValue& params, bool fHelp) return results; } -UniValue zc_raw_receive(const UniValue& params, bool fHelp) +UniValue zc_raw_receive(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) { return NullUniValue; @@ -3449,7 +3478,7 @@ UniValue zc_raw_receive(const UniValue& params, bool fHelp) -UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp) +UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) { return NullUniValue; @@ -3648,7 +3677,7 @@ UniValue zc_raw_joinsplit(const UniValue& params, bool fHelp) return result; } -UniValue zc_raw_keygen(const UniValue& params, bool fHelp) +UniValue zc_raw_keygen(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) { return NullUniValue; @@ -3680,7 +3709,7 @@ UniValue zc_raw_keygen(const UniValue& params, bool fHelp) } -UniValue z_getnewaddress(const UniValue& params, bool fHelp) +UniValue z_getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3729,7 +3758,7 @@ UniValue z_getnewaddress(const UniValue& params, bool fHelp) } -UniValue z_listaddresses(const UniValue& params, bool fHelp) +UniValue z_listaddresses(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3853,7 +3882,7 @@ CAmount getBalanceZaddr(std::string address, int minDepth = 1, bool ignoreUnspen } -UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp) +UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -3963,7 +3992,7 @@ UniValue z_listreceivedbyaddress(const UniValue& params, bool fHelp) return result; } -UniValue z_getbalance(const UniValue& params, bool fHelp) +UniValue z_getbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4024,7 +4053,7 @@ UniValue z_getbalance(const UniValue& params, bool fHelp) } -UniValue z_gettotalbalance(const UniValue& params, bool fHelp) +UniValue z_gettotalbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4247,7 +4276,8 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp) return entry; } -UniValue z_getoperationresult(const UniValue& params, bool fHelp) + +UniValue z_getoperationresult(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4270,7 +4300,7 @@ UniValue z_getoperationresult(const UniValue& params, bool fHelp) return z_getoperationstatus_IMPL(params, true); } -UniValue z_getoperationstatus(const UniValue& params, bool fHelp) +UniValue z_getoperationstatus(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4363,7 +4393,7 @@ UniValue z_getoperationstatus_IMPL(const UniValue& params, bool fRemoveFinishedO #define CTXIN_SPEND_DUST_SIZE 148 #define CTXOUT_REGULAR_SIZE 34 -UniValue z_sendmany(const UniValue& params, bool fHelp) +UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4670,7 +4700,7 @@ When estimating the number of coinbase utxos we can shield in a single transacti #define SHIELD_COINBASE_DEFAULT_LIMIT 50 -UniValue z_shieldcoinbase(const UniValue& params, bool fHelp) +UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -4901,7 +4931,7 @@ UniValue z_shieldcoinbase(const UniValue& params, bool fHelp) #define OUTPUTDESCRIPTION_SIZE GetSerializeSize(OutputDescription(), SER_NETWORK, PROTOCOL_VERSION) #define SPENDDESCRIPTION_SIZE GetSerializeSize(SpendDescription(), SER_NETWORK, PROTOCOL_VERSION) -UniValue z_mergetoaddress(const UniValue& params, bool fHelp) +UniValue z_mergetoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -5330,7 +5360,7 @@ UniValue z_mergetoaddress(const UniValue& params, bool fHelp) return o; } -UniValue z_listoperationids(const UniValue& params, bool fHelp) +UniValue z_listoperationids(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -5382,9 +5412,9 @@ UniValue z_listoperationids(const UniValue& params, bool fHelp) int32_t decode_hex(uint8_t *bytes,int32_t n,char *hex); extern std::string NOTARY_PUBKEY; -int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33) +int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33, void *pTr) { - set setAddress; uint8_t *script,utxosig[128]; uint256 utxotxid; uint64_t utxovalue; int32_t i,siglen=0,nMinDepth = 1,nMaxDepth = 9999999; vector vecOutputs; uint32_t utxovout,eligible,earliest = 0; CScript best_scriptPubKey; bool fNegative,fOverflow; + set setAddress; uint8_t *script,utxosig[128]; uint256 utxotxid; uint64_t utxovalue; int32_t i,siglen=0,nMinDepth = 0,nMaxDepth = 9999999; vector vecOutputs; uint32_t utxovout,eligible,earliest = 0; CScript best_scriptPubKey; bool fNegative,fOverflow; bool signSuccess; SignatureData sigdata; uint64_t txfee; uint8_t *ptr; auto consensusBranchId = CurrentEpochBranchId(chainActive.Height() + 1, Params().GetConsensus()); if (!EnsureWalletIsAvailable(0)) @@ -5435,7 +5465,7 @@ int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33) //fprintf(stderr,"check %s/v%d %llu\n",(char *)utxotxid.GetHex().c_str(),utxovout,(long long)utxovalue); txNew.vin.resize(1); - txNew.vout.resize(1); + txNew.vout.resize((pTr!=0)+1); txfee = utxovalue / 2; //for (i=0; i<32; i++) // ((uint8_t *)&revtxid)[i] = ((uint8_t *)&utxotxid)[31 - i]; @@ -5443,6 +5473,13 @@ int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33) txNew.vin[0].prevout.n = utxovout; txNew.vout[0].nValue = utxovalue - txfee; txNew.vout[0].scriptPubKey = CScript() << ParseHex(CRYPTO777_PUBSECPSTR) << OP_CHECKSIG; + if ( pTr != 0 ) + { + void **p = (void**)pTr; + txNew.vout[1].nValue = 0; + txNew.vout[1].scriptPubKey = *(CScript*)p[0]; + txNew.nLockTime = (uint32_t)(unsigned long long)p[1]; + } CTransaction txNewConst(txNew); signSuccess = ProduceSignature(TransactionSignatureCreator(&keystore, &txNewConst, 0, utxovalue, SIGHASH_ALL), best_scriptPubKey, sigdata, consensusBranchId); if (!signSuccess) @@ -5577,11 +5614,8 @@ UniValue CCaddress(struct CCcontract_info *cp,char *name,std::vector 1 ) @@ -5664,7 +5698,7 @@ UniValue channelsaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Channels",pubkey)); } -UniValue cclibaddress(const UniValue& params, bool fHelp) +UniValue cclibaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; uint8_t evalcode = EVAL_FIRSTUSER; if ( fHelp || params.size() > 2 ) @@ -5685,7 +5719,7 @@ UniValue cclibaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"CClib",pubkey)); } -UniValue cclibinfo(const UniValue& params, bool fHelp) +UniValue cclibinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; uint8_t evalcode = EVAL_FIRSTUSER; if ( fHelp || params.size() > 0 ) @@ -5696,7 +5730,7 @@ UniValue cclibinfo(const UniValue& params, bool fHelp) return(CClib_info(cp)); } -UniValue cclib(const UniValue& params, bool fHelp) +UniValue cclib(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; char *method,*jsonstr=0; uint8_t evalcode = EVAL_FIRSTUSER; std::string vobjJsonSerialized; @@ -5733,7 +5767,7 @@ UniValue cclib(const UniValue& params, bool fHelp) return(CClib(cp,method,jsonstr)); } -UniValue payments_release(const UniValue& params, bool fHelp) +UniValue payments_release(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5746,7 +5780,7 @@ UniValue payments_release(const UniValue& params, bool fHelp) return(PaymentsRelease(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_fund(const UniValue& params, bool fHelp) +UniValue payments_fund(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5759,7 +5793,7 @@ UniValue payments_fund(const UniValue& params, bool fHelp) return(PaymentsFund(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_merge(const UniValue& params, bool fHelp) +UniValue payments_merge(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5772,7 +5806,7 @@ UniValue payments_merge(const UniValue& params, bool fHelp) return(PaymentsMerge(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_txidopret(const UniValue& params, bool fHelp) +UniValue payments_txidopret(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5785,7 +5819,7 @@ UniValue payments_txidopret(const UniValue& params, bool fHelp) return(PaymentsTxidopret(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_create(const UniValue& params, bool fHelp) +UniValue payments_create(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5798,7 +5832,7 @@ UniValue payments_create(const UniValue& params, bool fHelp) return(PaymentsCreate(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_airdrop(const UniValue& params, bool fHelp) +UniValue payments_airdrop(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5811,7 +5845,7 @@ UniValue payments_airdrop(const UniValue& params, bool fHelp) return(PaymentsAirdrop(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_airdroptokens(const UniValue& params, bool fHelp) +UniValue payments_airdroptokens(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5824,7 +5858,7 @@ UniValue payments_airdroptokens(const UniValue& params, bool fHelp) return(PaymentsAirdropTokens(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_info(const UniValue& params, bool fHelp) +UniValue payments_info(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 1 ) @@ -5837,7 +5871,7 @@ UniValue payments_info(const UniValue& params, bool fHelp) return(PaymentsInfo(cp,(char *)params[0].get_str().c_str())); } -UniValue payments_list(const UniValue& params, bool fHelp) +UniValue payments_list(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; if ( fHelp || params.size() != 0 ) @@ -5850,7 +5884,7 @@ UniValue payments_list(const UniValue& params, bool fHelp) return(PaymentsList(cp,(char *)"")); } -UniValue oraclesaddress(const UniValue& params, bool fHelp) +UniValue oraclesaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_ORACLES); @@ -5863,9 +5897,9 @@ UniValue oraclesaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Oracles",pubkey)); } -UniValue pricesaddress(const UniValue& params, bool fHelp) +UniValue pricesaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C,*assetscp,C2; std::vector pubkey; CPubKey mypk,planpk,pricespk; char myaddr[64],houseaddr[64],exposureaddr[64]; + UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C,*assetscp,C2; std::vector pubkey; CPubKey pk,planpk,pricespk; char myaddr[64],houseaddr[64],exposureaddr[64]; cp = CCinit(&C,EVAL_PRICES); assetscp = CCinit(&C2,EVAL_PRICES); if ( fHelp || params.size() > 1 ) @@ -5875,9 +5909,10 @@ UniValue pricesaddress(const UniValue& params, bool fHelp) if ( params.size() == 1 ) pubkey = ParseHex(params[0].get_str().c_str()); result = CCaddress(cp,(char *)"Prices",pubkey); - mypk = pubkey2pk(Mypubkey()); + if (mypk.IsValid()) pk=mypk; + else pk = pubkey2pk(Mypubkey()); pricespk = GetUnspendable(cp,0); - GetCCaddress(assetscp,myaddr,mypk); + GetCCaddress(assetscp,myaddr,pk); GetCCaddress1of2(assetscp,houseaddr,pricespk,planpk); GetCCaddress1of2(assetscp,exposureaddr,pricespk,pricespk); result.push_back(Pair("myaddr",myaddr)); // for holding my asssets @@ -5886,7 +5921,7 @@ UniValue pricesaddress(const UniValue& params, bool fHelp) return(result); } -UniValue pegsaddress(const UniValue& params, bool fHelp) +UniValue pegsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_PEGS); @@ -5899,7 +5934,7 @@ UniValue pegsaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Pegs",pubkey)); } -UniValue marmaraaddress(const UniValue& params, bool fHelp) +UniValue marmaraaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_MARMARA); @@ -5912,7 +5947,7 @@ UniValue marmaraaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Marmara",pubkey)); } -UniValue paymentsaddress(const UniValue& params, bool fHelp) +UniValue paymentsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_PAYMENTS); @@ -5925,7 +5960,7 @@ UniValue paymentsaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Payments",pubkey)); } -UniValue gatewaysaddress(const UniValue& params, bool fHelp) +UniValue gatewaysaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_GATEWAYS); @@ -5938,7 +5973,7 @@ UniValue gatewaysaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Gateways",pubkey)); } -UniValue heiraddress(const UniValue& params, bool fHelp) +UniValue heiraddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_HEIR); @@ -5950,7 +5985,7 @@ UniValue heiraddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Heir",pubkey)); } -UniValue lottoaddress(const UniValue& params, bool fHelp) +UniValue lottoaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_LOTTO); @@ -5963,7 +5998,7 @@ UniValue lottoaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Lotto",pubkey)); } -UniValue FSMaddress(const UniValue& params, bool fHelp) +UniValue FSMaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_FSM); @@ -5976,7 +6011,7 @@ UniValue FSMaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"FSM",pubkey)); } -UniValue auctionaddress(const UniValue& params, bool fHelp) +UniValue auctionaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_AUCTION); @@ -5989,7 +6024,7 @@ UniValue auctionaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Auction",pubkey)); } -UniValue diceaddress(const UniValue& params, bool fHelp) +UniValue diceaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_DICE); @@ -6002,7 +6037,7 @@ UniValue diceaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Dice",pubkey)); } -UniValue faucetaddress(const UniValue& params, bool fHelp) +UniValue faucetaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; int error; @@ -6017,7 +6052,7 @@ UniValue faucetaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Faucet",pubkey)); } -UniValue rewardsaddress(const UniValue& params, bool fHelp) +UniValue rewardsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_REWARDS); @@ -6030,7 +6065,7 @@ UniValue rewardsaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Rewards",pubkey)); } -UniValue assetsaddress(const UniValue& params, bool fHelp) +UniValue assetsaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp, C; std::vector pubkey; cp = CCinit(&C, EVAL_ASSETS); @@ -6043,7 +6078,7 @@ UniValue assetsaddress(const UniValue& params, bool fHelp) return(CCaddress(cp, (char *)"Assets", pubkey)); } -UniValue tokenaddress(const UniValue& params, bool fHelp) +UniValue tokenaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_TOKENS); @@ -6056,7 +6091,7 @@ UniValue tokenaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"Tokens", pubkey)); } -UniValue importgatewayaddress(const UniValue& params, bool fHelp) +UniValue importgatewayaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { struct CCcontract_info *cp,C; std::vector pubkey; cp = CCinit(&C,EVAL_IMPORTGATEWAY); @@ -6069,7 +6104,7 @@ UniValue importgatewayaddress(const UniValue& params, bool fHelp) return(CCaddress(cp,(char *)"ImportGateway", pubkey)); } -UniValue marmara_poolpayout(const UniValue& params, bool fHelp) +UniValue marmara_poolpayout(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t firstheight; double perc; char *jsonstr; if ( fHelp || params.size() != 3 ) @@ -6088,7 +6123,7 @@ UniValue marmara_poolpayout(const UniValue& params, bool fHelp) return(MarmaraPoolPayout(0,firstheight,perc,jsonstr)); // [[pk0, shares0], [pk1, shares1], ...] } -UniValue marmara_receive(const UniValue& params, bool fHelp) +UniValue marmara_receive(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 batontxid; std::vector senderpub; int64_t amount; int32_t matures; std::string currency; if ( fHelp || (params.size() != 5 && params.size() != 4) ) @@ -6119,7 +6154,7 @@ UniValue marmara_receive(const UniValue& params, bool fHelp) return(MarmaraReceive(0,pubkey2pk(senderpub),amount,currency,matures,batontxid,true)); } -UniValue marmara_issue(const UniValue& params, bool fHelp) +UniValue marmara_issue(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 approvaltxid; std::vector receiverpub; int64_t amount; int32_t matures; std::string currency; if ( fHelp || params.size() != 5 ) @@ -6146,7 +6181,7 @@ UniValue marmara_issue(const UniValue& params, bool fHelp) return(MarmaraIssue(0,'I',pubkey2pk(receiverpub),amount,currency,matures,approvaltxid,zeroid)); } -UniValue marmara_transfer(const UniValue& params, bool fHelp) +UniValue marmara_transfer(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 approvaltxid,batontxid; std::vector receiverpub; int64_t amount; int32_t matures; std::string currency; std::vector creditloop; if ( fHelp || params.size() != 5 ) @@ -6173,7 +6208,7 @@ UniValue marmara_transfer(const UniValue& params, bool fHelp) return(MarmaraIssue(0,'T',pubkey2pk(receiverpub),amount,currency,matures,approvaltxid,batontxid)); } -UniValue marmara_info(const UniValue& params, bool fHelp) +UniValue marmara_info(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); CPubKey issuerpk; std::vector issuerpub; int64_t minamount,maxamount; int32_t firstheight,lastheight; std::string currency; if ( fHelp || params.size() < 4 || params.size() > 6 ) @@ -6204,7 +6239,7 @@ UniValue marmara_info(const UniValue& params, bool fHelp) return(result); } -UniValue marmara_creditloop(const UniValue& params, bool fHelp) +UniValue marmara_creditloop(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 txid; if ( fHelp || params.size() != 1 ) @@ -6221,7 +6256,7 @@ UniValue marmara_creditloop(const UniValue& params, bool fHelp) return(result); } -UniValue marmara_settlement(const UniValue& params, bool fHelp) +UniValue marmara_settlement(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 batontxid; if ( fHelp || params.size() != 1 ) @@ -6239,7 +6274,7 @@ UniValue marmara_settlement(const UniValue& params, bool fHelp) return(result); } -UniValue marmara_lock(const UniValue& params, bool fHelp) +UniValue marmara_lock(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t amount; int32_t height; if ( fHelp || params.size() > 2 || params.size() == 0 ) @@ -6255,151 +6290,119 @@ UniValue marmara_lock(const UniValue& params, bool fHelp) return(MarmaraLock(0,amount,height)); } -UniValue channelslist(const UniValue& params, bool fHelp) +UniValue channelslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 0 ) - throw runtime_error("channelsinfo\n"); + throw runtime_error("channelslist\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); - return(ChannelsList()); + return(ChannelsList(mypk)); } -UniValue channelsinfo(const UniValue& params, bool fHelp) +UniValue channelsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 opentxid; if ( fHelp || params.size() > 1 ) throw runtime_error("channelsinfo [opentxid]\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); opentxid=zeroid; if (params.size() > 0 && !params[0].isNull() && !params[0].get_str().empty()) opentxid = Parseuint256((char *)params[0].get_str().c_str()); - return(ChannelsInfo(opentxid)); + return(ChannelsInfo(mypk,opentxid)); } -UniValue channelsopen(const UniValue& params, bool fHelp) +UniValue channelsopen(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); int32_t numpayments; int64_t payment; std::vector destpub; struct CCcontract_info *cp,C; std::string hex; + UniValue result(UniValue::VOBJ); int32_t numpayments; int64_t payment; std::vector destpub; struct CCcontract_info *cp,C; uint256 tokenid=zeroid; cp = CCinit(&C,EVAL_CHANNELS); if ( fHelp || params.size() < 3 || params.size() > 4) - throw runtime_error("channelsopen destpubkey numpayments payment\n"); + throw runtime_error("channelsopen destpubkey numpayments payment [tokenid]\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); destpub = ParseHex(params[0].get_str().c_str()); - if (destpub.size()!= 33) - { - ERR_RESULT("invalid destination pubkey"); - return result; - } numpayments = atoi(params[1].get_str().c_str()); - if (numpayments <1) - { - ERR_RESULT("invalid number of payments, must be greater than 0"); - return result; - } payment = atol(params[2].get_str().c_str()); - if (payment <1) - { - ERR_RESULT("invalid payment amount, must be greater than 0"); - return result; - } if (params.size()==4) { tokenid=Parseuint256((char *)params[3].get_str().c_str()); } - hex = ChannelOpen(0,pubkey2pk(destpub),numpayments,payment,tokenid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = ChannelOpen(mypk,0,pubkey2pk(destpub),numpayments,payment,tokenid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt create channelsopen transaction"); + } + Unlock2NSPV(mypk); return(result); } -UniValue channelspayment(const UniValue& params, bool fHelp) +UniValue channelspayment(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; std::string hex; uint256 opentxid,secret=zeroid; int32_t n; int64_t amount; + UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; uint256 opentxid,secret=zeroid; int32_t n; int64_t amount; cp = CCinit(&C,EVAL_CHANNELS); if ( fHelp || params.size() < 2 || params.size() >3 ) throw runtime_error("channelspayment opentxid amount [secret]\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); opentxid = Parseuint256((char *)params[0].get_str().c_str()); amount = atoi((char *)params[1].get_str().c_str()); - if (amount <1) - { - ERR_RESULT("invalid payment amount, must be greater than 0"); - return result; - } if (params.size() > 2 && !params[2].isNull() && !params[2].get_str().empty()) { secret = Parseuint256((char *)params[2].get_str().c_str()); } - hex = ChannelPayment(0,opentxid,amount,secret); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = ChannelPayment(mypk,0,opentxid,amount,secret); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt create channelspayment transaction"); + } + Unlock2NSPV(mypk); return(result); } -UniValue channelsclose(const UniValue& params, bool fHelp) +UniValue channelsclose(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; std::string hex; uint256 opentxid; + UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; uint256 opentxid; cp = CCinit(&C,EVAL_CHANNELS); if ( fHelp || params.size() != 1 ) throw runtime_error("channelsclose opentxid\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); opentxid = Parseuint256((char *)params[0].get_str().c_str()); - hex = ChannelClose(0,opentxid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = ChannelClose(mypk,0,opentxid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt create channelsclose transaction"); + } + Unlock2NSPV(mypk); return(result); } -UniValue channelsrefund(const UniValue& params, bool fHelp) +UniValue channelsrefund(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; std::string hex; uint256 opentxid,closetxid; + UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; uint256 opentxid,closetxid; cp = CCinit(&C,EVAL_CHANNELS); if ( fHelp || params.size() != 2 ) throw runtime_error("channelsrefund opentxid closetxid\n"); if ( ensure_CCrequirements(EVAL_CHANNELS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); opentxid = Parseuint256((char *)params[0].get_str().c_str()); closetxid = Parseuint256((char *)params[1].get_str().c_str()); - hex = ChannelRefund(0,opentxid,closetxid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = ChannelRefund(mypk,0,opentxid,closetxid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt create channelsrefund transaction"); + } + Unlock2NSPV(mypk); return(result); } -UniValue rewardscreatefunding(const UniValue& params, bool fHelp) +UniValue rewardscreatefunding(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); char *name; int64_t funds,APR,minseconds,maxseconds,mindeposit; std::string hex; if ( fHelp || params.size() > 6 || params.size() < 2 ) @@ -6468,7 +6471,7 @@ UniValue rewardscreatefunding(const UniValue& params, bool fHelp) return(result); } -UniValue rewardslock(const UniValue& params, bool fHelp) +UniValue rewardslock(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); char *name; uint256 fundingtxid; int64_t amount; std::string hex; if ( fHelp || params.size() != 3 ) @@ -6498,7 +6501,7 @@ UniValue rewardslock(const UniValue& params, bool fHelp) return(result); } -UniValue rewardsaddfunding(const UniValue& params, bool fHelp) +UniValue rewardsaddfunding(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); char *name; uint256 fundingtxid; int64_t amount; std::string hex; if ( fHelp || params.size() != 3 ) @@ -6533,7 +6536,7 @@ UniValue rewardsaddfunding(const UniValue& params, bool fHelp) return(result); } -UniValue rewardsunlock(const UniValue& params, bool fHelp) +UniValue rewardsunlock(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; char *name; uint256 fundingtxid,txid; if ( fHelp || params.size() > 3 || params.size() < 2 ) @@ -6562,7 +6565,7 @@ UniValue rewardsunlock(const UniValue& params, bool fHelp) return(result); } -UniValue rewardslist(const UniValue& params, bool fHelp) +UniValue rewardslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 0 ) throw runtime_error("rewardslist\n"); @@ -6573,7 +6576,7 @@ UniValue rewardslist(const UniValue& params, bool fHelp) return(RewardsList()); } -UniValue rewardsinfo(const UniValue& params, bool fHelp) +UniValue rewardsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 fundingtxid; if ( fHelp || params.size() != 1 ) @@ -6586,18 +6589,17 @@ UniValue rewardsinfo(const UniValue& params, bool fHelp) return(RewardsInfo(fundingtxid)); } -UniValue gatewayslist(const UniValue& params, bool fHelp) +UniValue gatewayslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 0 ) throw runtime_error("gatewayslist\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); return(GatewaysList()); } -UniValue gatewaysexternaladdress(const UniValue& params, bool fHelp) +UniValue gatewaysexternaladdress(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; CPubKey pubkey; @@ -6605,14 +6607,12 @@ UniValue gatewaysexternaladdress(const UniValue& params, bool fHelp) throw runtime_error("gatewaysexternaladdress bindtxid pubkey\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); pubkey = ParseHex(params[1].get_str().c_str()); return(GatewaysExternalAddress(bindtxid,pubkey)); } -UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp) +UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; @@ -6620,7 +6620,6 @@ UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp) throw runtime_error("gatewaysdumpprivkey bindtxid address\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - LOCK2(cs_main, pwalletMain->cs_wallet); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); std::string strAddress = params[1].get_str(); CTxDestination dest = DecodeDestination(strAddress); @@ -6638,30 +6637,27 @@ UniValue gatewaysdumpprivkey(const UniValue& params, bool fHelp) return(GatewaysDumpPrivKey(bindtxid,vchSecret)); } -UniValue gatewaysinfo(const UniValue& params, bool fHelp) +UniValue gatewaysinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 txid; if ( fHelp || params.size() != 1 ) throw runtime_error("gatewaysinfo bindtxid\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); txid = Parseuint256((char *)params[0].get_str().c_str()); return(GatewaysInfo(txid)); } -UniValue gatewaysbind(const UniValue& params, bool fHelp) +UniValue gatewaysbind(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 tokenid,oracletxid; int32_t i; int64_t totalsupply; std::vector pubkeys; - uint8_t M,N,p1,p2,p3,p4=0; std::string hex,coin; std::vector pubkey; + uint8_t M,N,p1,p2,p3,p4=0; std::string coin; std::vector pubkey; if ( fHelp || params.size() < 10 ) throw runtime_error("gatewaysbind tokenid oracletxid coin tokensupply M N pubkey(s) pubtype p2shtype wiftype [taddr]\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); tokenid = Parseuint256((char *)params[0].get_str().c_str()); oracletxid = Parseuint256((char *)params[1].get_str().c_str()); coin = params[2].get_str(); @@ -6669,39 +6665,46 @@ UniValue gatewaysbind(const UniValue& params, bool fHelp) M = atoi((char *)params[4].get_str().c_str()); N = atoi((char *)params[5].get_str().c_str()); if ( M > N || N == 0 || N > 15 || totalsupply < COIN/100 || tokenid == zeroid ) + { + Unlock2NSPV(mypk); throw runtime_error("illegal M or N > 15 or tokensupply or invalid tokenid\n"); + } if ( params.size() < 6+N+3 ) + { + Unlock2NSPV(mypk); throw runtime_error("not enough parameters for N pubkeys\n"); + } for (i=0; i 0 ) + result = GatewaysBind(mypk,0,coin,tokenid,totalsupply,oracletxid,M,N,pubkeys,p1,p2,p3,p4); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewaysbind"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewaysdeposit(const UniValue& params, bool fHelp) +UniValue gatewaysdeposit(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); int32_t i,claimvout,height; int64_t amount; std::string hex,coin,deposithex; uint256 bindtxid,cointxid; std::vectorproof,destpub,pubkey; + UniValue result(UniValue::VOBJ); int32_t i,claimvout,height; int64_t amount; std::string coin,deposithex; uint256 bindtxid,cointxid; std::vectorproof,destpub,pubkey; if ( fHelp || params.size() != 9 ) throw runtime_error("gatewaysdeposit bindtxid height coin cointxid claimvout deposithex proof destpub amount\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); height = atoi((char *)params[1].get_str().c_str()); coin = params[2].get_str(); @@ -6712,354 +6715,315 @@ UniValue gatewaysdeposit(const UniValue& params, bool fHelp) destpub = ParseHex(params[7].get_str()); amount = atof((char *)params[8].get_str().c_str()) * COIN + 0.00000000499999; if ( amount <= 0 || claimvout < 0 ) + { + Unlock2NSPV(mypk); throw runtime_error("invalid param: amount, numpks or claimvout\n"); + } if (destpub.size()!= 33) + { + Unlock2NSPV(mypk); throw runtime_error("invalid destination pubkey"); - hex = GatewaysDeposit(0,bindtxid,height,coin,cointxid,claimvout,deposithex,proof,pubkey2pk(destpub),amount); - - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + } + result = GatewaysDeposit(mypk,0,bindtxid,height,coin,cointxid,claimvout,deposithex,proof,pubkey2pk(destpub),amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewaysdeposit"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewaysclaim(const UniValue& params, bool fHelp) +UniValue gatewaysclaim(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex,coin; uint256 bindtxid,deposittxid; std::vectordestpub; int64_t amount; + UniValue result(UniValue::VOBJ); std::string coin; uint256 bindtxid,deposittxid; std::vectordestpub; int64_t amount; if ( fHelp || params.size() != 5 ) throw runtime_error("gatewaysclaim bindtxid coin deposittxid destpub amount\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); deposittxid = Parseuint256((char *)params[2].get_str().c_str()); destpub = ParseHex(params[3].get_str()); amount = atof((char *)params[4].get_str().c_str()) * COIN + 0.00000000499999; if (destpub.size()!= 33) + { + Unlock2NSPV(mypk); throw runtime_error("invalid destination pubkey"); - hex = GatewaysClaim(0,bindtxid,coin,deposittxid,pubkey2pk(destpub),amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + } + result = GatewaysClaim(mypk,0,bindtxid,coin,deposittxid,pubkey2pk(destpub),amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewaysclaim"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewayswithdraw(const UniValue& params, bool fHelp) +UniValue gatewayswithdraw(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 bindtxid; int64_t amount; std::string hex,coin; std::vector withdrawpub; + UniValue result(UniValue::VOBJ); uint256 bindtxid; int64_t amount; std::string coin; std::vector withdrawpub; if ( fHelp || params.size() != 4 ) throw runtime_error("gatewayswithdraw bindtxid coin withdrawpub amount\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); withdrawpub = ParseHex(params[2].get_str()); amount = atof((char *)params[3].get_str().c_str()) * COIN + 0.00000000499999; if (withdrawpub.size()!= 33) + { + Unlock2NSPV(mypk); throw runtime_error("invalid destination pubkey"); - hex = GatewaysWithdraw(0,bindtxid,coin,pubkey2pk(withdrawpub),amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + } + result = GatewaysWithdraw(mypk,0,bindtxid,coin,pubkey2pk(withdrawpub),amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewayswithdraw"); + } + Lock2NSPV(mypk); return(result); } -UniValue gatewayspartialsign(const UniValue& params, bool fHelp) +UniValue gatewayspartialsign(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string coin,parthex,hex; uint256 txid; + UniValue result(UniValue::VOBJ); std::string coin,parthex; uint256 txid; if ( fHelp || params.size() != 3 ) throw runtime_error("gatewayspartialsign txidaddr refcoin hex\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); txid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); parthex = params[2].get_str(); - hex = GatewaysPartialSign(0,txid,coin,parthex); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = GatewaysPartialSign(mypk,0,txid,coin,parthex); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex",hex)); - } else ERR_RESULT("couldnt gatewayspartialsign"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewayscompletesigning(const UniValue& params, bool fHelp) +UniValue gatewayscompletesigning(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 withdrawtxid; std::string txhex,hex,coin; + UniValue result(UniValue::VOBJ); uint256 withdrawtxid; std::string txhex,coin; if ( fHelp || params.size() != 3 ) throw runtime_error("gatewayscompletesigning withdrawtxid coin hex\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); withdrawtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); txhex = params[2].get_str(); - hex = GatewaysCompleteSigning(0,withdrawtxid,coin,txhex); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = GatewaysCompleteSigning(mypk,0,withdrawtxid,coin,txhex); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewayscompletesigning"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewaysmarkdone(const UniValue& params, bool fHelp) +UniValue gatewaysmarkdone(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 completetxid; std::string hex,coin; + UniValue result(UniValue::VOBJ); uint256 completetxid; std::string coin; if ( fHelp || params.size() != 2 ) throw runtime_error("gatewaysmarkdone completesigningtx coin\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); completetxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); - hex = GatewaysMarkDone(0,completetxid,coin); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = GatewaysMarkDone(mypk,0,completetxid,coin); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt gatewaysmarkdone"); + } + Unlock2NSPV(mypk); return(result); } -UniValue gatewayspendingdeposits(const UniValue& params, bool fHelp) +UniValue gatewayspendingdeposits(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; std::string coin; if ( fHelp || params.size() != 2 ) throw runtime_error("gatewayspendingdeposits bindtxid coin\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); - return(GatewaysPendingDeposits(bindtxid,coin)); + return(GatewaysPendingDeposits(mypk,bindtxid,coin)); } -UniValue gatewayspendingwithdraws(const UniValue& params, bool fHelp) +UniValue gatewayspendingwithdraws(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; std::string coin; if ( fHelp || params.size() != 2 ) throw runtime_error("gatewayspendingwithdraws bindtxid coin\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); - return(GatewaysPendingWithdraws(bindtxid,coin)); + return(GatewaysPendingWithdraws(mypk,bindtxid,coin)); } -UniValue gatewaysprocessed(const UniValue& params, bool fHelp) +UniValue gatewaysprocessed(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bindtxid; std::string coin; if ( fHelp || params.size() != 2 ) throw runtime_error("gatewaysprocessed bindtxid coin\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); bindtxid = Parseuint256((char *)params[0].get_str().c_str()); coin = params[1].get_str(); - return(GatewaysProcessedWithdraws(bindtxid,coin)); + return(GatewaysProcessedWithdraws(mypk,bindtxid,coin)); } -UniValue oracleslist(const UniValue& params, bool fHelp) +UniValue oracleslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 0 ) throw runtime_error("oracleslist\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); return(OraclesList()); } -UniValue oraclesinfo(const UniValue& params, bool fHelp) +UniValue oraclesinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 txid; if ( fHelp || params.size() != 1 ) throw runtime_error("oraclesinfo oracletxid\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); txid = Parseuint256((char *)params[0].get_str().c_str()); return(OracleInfo(txid)); } -UniValue oraclesfund(const UniValue& params, bool fHelp) +UniValue oraclesfund(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 txid; std::string hex; + UniValue result(UniValue::VOBJ); uint256 txid; if ( fHelp || params.size() != 1 ) throw runtime_error("oraclesfund oracletxid\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); txid = Parseuint256((char *)params[0].get_str().c_str()); - hex = OracleFund(0,txid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = OracleFund(mypk,0,txid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt fund with oracle txid"); + } + Unlock2NSPV(mypk); return(result); } -UniValue oraclesregister(const UniValue& params, bool fHelp) +UniValue oraclesregister(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 txid; int64_t datafee; std::string hex; + UniValue result(UniValue::VOBJ); uint256 txid; int64_t datafee; if ( fHelp || params.size() != 2 ) throw runtime_error("oraclesregister oracletxid datafee\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); txid = Parseuint256((char *)params[0].get_str().c_str()); if ( (datafee= atol((char *)params[1].get_str().c_str())) == 0 ) datafee = atof((char *)params[1].get_str().c_str()) * COIN + 0.00000000499999; - hex = OracleRegister(0,txid,datafee); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = OracleRegister(mypk,0,txid,datafee); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt register with oracle txid"); + } + Unlock2NSPV(mypk); return(result); } -UniValue oraclessubscribe(const UniValue& params, bool fHelp) +UniValue oraclessubscribe(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 txid; int64_t amount; std::string hex; std::vector pubkey; + UniValue result(UniValue::VOBJ); uint256 txid; int64_t amount; std::vector pubkey; if ( fHelp || params.size() != 3 ) throw runtime_error("oraclessubscribe oracletxid publisher amount\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); txid = Parseuint256((char *)params[0].get_str().c_str()); pubkey = ParseHex(params[1].get_str().c_str()); amount = atof((char *)params[2].get_str().c_str()) * COIN + 0.00000000499999; - hex = OracleSubscribe(0,txid,pubkey2pk(pubkey),amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = OracleSubscribe(mypk,0,txid,pubkey2pk(pubkey),amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt subscribe with oracle txid"); + } + Unlock2NSPV(mypk); return(result); } -UniValue oraclessample(const UniValue& params, bool fHelp) +UniValue oraclessample(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 oracletxid,txid; int32_t num; char *batonaddr; if ( fHelp || params.size() != 2 ) throw runtime_error("oraclessample oracletxid txid\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); oracletxid = Parseuint256((char *)params[0].get_str().c_str()); txid = Parseuint256((char *)params[1].get_str().c_str()); return(OracleDataSample(oracletxid,txid)); } -UniValue oraclessamples(const UniValue& params, bool fHelp) +UniValue oraclessamples(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 txid; int32_t num; char *batonaddr; if ( fHelp || params.size() != 3 ) throw runtime_error("oraclessamples oracletxid batonaddress num\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); txid = Parseuint256((char *)params[0].get_str().c_str()); batonaddr = (char *)params[1].get_str().c_str(); num = atoi((char *)params[2].get_str().c_str()); return(OracleDataSamples(txid,batonaddr,num)); } -UniValue oraclesdata(const UniValue& params, bool fHelp) +UniValue oraclesdata(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); uint256 txid; std::vector data; std::string hex; + UniValue result(UniValue::VOBJ); uint256 txid; std::vector data; if ( fHelp || params.size() != 2 ) throw runtime_error("oraclesdata oracletxid hexstr\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); txid = Parseuint256((char *)params[0].get_str().c_str()); data = ParseHex(params[1].get_str().c_str()); - hex = OracleData(0,txid,data); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = OracleData(mypk,0,txid,data); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt publish data with oracle txid"); + } + Unlock2NSPV(mypk); return(result); } -UniValue oraclescreate(const UniValue& params, bool fHelp) +UniValue oraclescreate(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string name,description,format,hex; + UniValue result(UniValue::VOBJ); std::string name,description,format; if ( fHelp || params.size() != 3 ) throw runtime_error("oraclescreate name description format\n"); if ( ensure_CCrequirements(EVAL_ORACLES) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); name = params[0].get_str(); - if ( name.size() == 0 || name.size() > 32) - { - ERR_RESULT("oracles name must not be empty and up to 32 characters"); - return(result); - } description = params[1].get_str(); - if ( description.size() > 4096 ) - { - ERR_RESULT("oracles description must be <= 4096 characters"); - return(result); - } format = params[2].get_str(); - if ( format.size() > 4096 ) - { - ERR_RESULT("oracles format must be <= 4096 characters"); - return(result); - } - hex = OracleCreate(0,name,description,format); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = OracleCreate(mypk,0,name,description,format); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt create oracle"); + } + Unlock2NSPV(mypk); return(result); } -UniValue FSMcreate(const UniValue& params, bool fHelp) +UniValue FSMcreate(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string name,states,hex; if ( fHelp || params.size() != 2 ) @@ -7079,7 +7043,7 @@ UniValue FSMcreate(const UniValue& params, bool fHelp) return(result); } -UniValue FSMlist(const UniValue& params, bool fHelp) +UniValue FSMlist(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 tokenid; if ( fHelp || params.size() > 0 ) @@ -7089,7 +7053,7 @@ UniValue FSMlist(const UniValue& params, bool fHelp) return(FSMList()); } -UniValue FSMinfo(const UniValue& params, bool fHelp) +UniValue FSMinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 FSMtxid; if ( fHelp || params.size() != 1 ) @@ -7100,7 +7064,7 @@ UniValue FSMinfo(const UniValue& params, bool fHelp) return(FSMInfo(FSMtxid)); } -UniValue faucetinfo(const UniValue& params, bool fHelp) +UniValue faucetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 fundingtxid; if ( fHelp || params.size() != 0 ) @@ -7110,10 +7074,10 @@ UniValue faucetinfo(const UniValue& params, bool fHelp) return(FaucetInfo()); } -UniValue faucetfund(const UniValue& params, bool fHelp) +UniValue faucetfund(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t funds; std::string hex; - if ( fHelp || params.size() > 1 ) + if ( fHelp || params.size() != 1 ) throw runtime_error("faucetfund amount\n"); funds = atof(params[0].get_str().c_str()) * COIN + 0.00000000499999; if ( (0) && KOMODO_NSPV_SUPERLITE ) @@ -7126,32 +7090,68 @@ UniValue faucetfund(const UniValue& params, bool fHelp) } if ( ensure_CCrequirements(EVAL_FAUCET) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); - if (funds > 0) { - hex = FaucetFund(0,(uint64_t) funds); - if ( hex.size() > 0 ) + + //const CKeyStore& keystore = *pwalletMain; + //LOCK2(cs_main, pwalletMain->cs_wallet); + + bool lockWallet = false; + if (!mypk.IsValid()) // if mypk is not set then it is a local call, use local wallet in AddNormalInputs + lockWallet = true; + + if (funds > 0) + { + if (lockWallet) + { + ENTER_CRITICAL_SECTION(cs_main); + ENTER_CRITICAL_SECTION(pwalletMain->cs_wallet); + } + result = FaucetFund(mypk, 0,(uint64_t) funds); + if (lockWallet) + { + LEAVE_CRITICAL_SECTION(pwalletMain->cs_wallet); + LEAVE_CRITICAL_SECTION(cs_main); + } + + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); + //result.push_back(Pair("hex", hex)); } else ERR_RESULT("couldnt create faucet funding transaction"); } else ERR_RESULT( "funding amount must be positive"); return(result); } -UniValue faucetget(const UniValue& params, bool fHelp) +UniValue faucetget(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; - if ( fHelp || params.size() > 0 ) + if ( fHelp || params.size() !=0 ) throw runtime_error("faucetget\n"); if ( ensure_CCrequirements(EVAL_FAUCET) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); - hex = FaucetGet(0); - if ( hex.size() > 0 ) { + + bool lockWallet = false; + if (!mypk.IsValid()) // if mypk is not set then it is a local call, use wallet in AddNormalInputs (see check for this there) + lockWallet = true; + + //const CKeyStore& keystore = *pwalletMain; + //LOCK2(cs_main, pwalletMain->cs_wallet); + + if (lockWallet) + { + // use this instead LOCK2 because we need conditional wallet lock + ENTER_CRITICAL_SECTION(cs_main); + ENTER_CRITICAL_SECTION(pwalletMain->cs_wallet); + } + result = FaucetGet(mypk, 0); + if (lockWallet) + { + LEAVE_CRITICAL_SECTION(pwalletMain->cs_wallet); + LEAVE_CRITICAL_SECTION(cs_main); + } + + if (result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); + //result.push_back(Pair("hex", hex)); } else ERR_RESULT("couldnt create faucet get transaction"); return(result); } @@ -7169,7 +7169,7 @@ uint32_t pricesGetParam(UniValue param) { return filter; } -UniValue priceslist(const UniValue& params, bool fHelp) +UniValue priceslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 0 && params.size() != 1) throw runtime_error("priceslist [all|open|closed]\n"); @@ -7184,7 +7184,7 @@ UniValue priceslist(const UniValue& params, bool fHelp) return(PricesList(filter, emptypk)); } -UniValue mypriceslist(const UniValue& params, bool fHelp) +UniValue mypriceslist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0 && params.size() != 1) throw runtime_error("mypriceslist [all|open|closed]\n"); @@ -7194,12 +7194,14 @@ UniValue mypriceslist(const UniValue& params, bool fHelp) uint32_t filter = 0; if (params.size() == 1) filter = pricesGetParam(params[0]); - CPubKey mypk = pubkey2pk(Mypubkey()); + CPubKey pk; + if (mypk.IsValid()) pk=mypk; + else pk = pubkey2pk(Mypubkey()); - return(PricesList(filter, mypk)); + return(PricesList(filter, pk)); } -UniValue pricesinfo(const UniValue& params, bool fHelp) +UniValue pricesinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 bettxid; int32_t height; if ( fHelp || params.size() != 1 && params.size() != 2) @@ -7213,7 +7215,7 @@ UniValue pricesinfo(const UniValue& params, bool fHelp) return(PricesInfo(bettxid, height)); } -UniValue dicefund(const UniValue& params, bool fHelp) +UniValue dicefund(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t funds,minbet,maxbet,maxodds,timeoutblocks; std::string hex; char *name; if ( fHelp || params.size() != 6 ) @@ -7246,7 +7248,7 @@ UniValue dicefund(const UniValue& params, bool fHelp) return(result); } -UniValue diceaddfunds(const UniValue& params, bool fHelp) +UniValue diceaddfunds(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); char *name; uint256 fundingtxid; int64_t amount; std::string hex; if ( fHelp || params.size() != 3 ) @@ -7274,7 +7276,7 @@ UniValue diceaddfunds(const UniValue& params, bool fHelp) return(result); } -UniValue dicebet(const UniValue& params, bool fHelp) +UniValue dicebet(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex,error; uint256 fundingtxid; int64_t amount,odds; char *name; if ( fHelp || params.size() != 4 ) @@ -7306,7 +7308,7 @@ UniValue dicebet(const UniValue& params, bool fHelp) return(result); } -UniValue dicefinish(const UniValue& params, bool fHelp) +UniValue dicefinish(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint8_t funcid; char *name; uint256 entropyused,fundingtxid,bettxid; std::string hex; int32_t r,entropyvout; if ( fHelp || params.size() != 3 ) @@ -7341,7 +7343,7 @@ UniValue dicefinish(const UniValue& params, bool fHelp) return(result); } -UniValue dicestatus(const UniValue& params, bool fHelp) +UniValue dicestatus(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); char *name; uint256 fundingtxid,bettxid; std::string status,error; double winnings; if ( fHelp || (params.size() != 2 && params.size() != 3) ) @@ -7390,7 +7392,7 @@ UniValue dicestatus(const UniValue& params, bool fHelp) return(result); } -UniValue dicelist(const UniValue& params, bool fHelp) +UniValue dicelist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() > 0 ) throw runtime_error("dicelist\n"); @@ -7399,7 +7401,7 @@ UniValue dicelist(const UniValue& params, bool fHelp) return(DiceList()); } -UniValue diceinfo(const UniValue& params, bool fHelp) +UniValue diceinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 fundingtxid; if ( fHelp || params.size() != 1 ) @@ -7410,7 +7412,7 @@ UniValue diceinfo(const UniValue& params, bool fHelp) return(DiceInfo(fundingtxid)); } -UniValue tokenlist(const UniValue& params, bool fHelp) +UniValue tokenlist(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 tokenid; if ( fHelp || params.size() > 0 ) @@ -7420,51 +7422,48 @@ UniValue tokenlist(const UniValue& params, bool fHelp) return(TokenList()); } -UniValue tokeninfo(const UniValue& params, bool fHelp) +UniValue tokeninfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 tokenid; if ( fHelp || params.size() != 1 ) throw runtime_error("tokeninfo tokenid\n"); if ( ensure_CCrequirements(EVAL_TOKENS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); tokenid = Parseuint256((char *)params[0].get_str().c_str()); return(TokenInfo(tokenid)); } -UniValue tokenorders(const UniValue& params, bool fHelp) +UniValue tokenorders(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 tokenid; if ( fHelp || params.size() > 1 ) - throw runtime_error("tokenorders tokenid\n"); + throw runtime_error("tokenorders [tokenid]\n" + "returns token orders for the tokenid or all available token orders if tokenid is not set\n" + "(this rpc supports only fungible tokens)\n" "\n"); if (ensure_CCrequirements(EVAL_ASSETS) < 0 || ensure_CCrequirements(EVAL_TOKENS) < 0) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); if (params.size() == 1) { tokenid = Parseuint256((char *)params[0].get_str().c_str()); if (tokenid == zeroid) throw runtime_error("incorrect tokenid\n"); + return AssetOrders(tokenid, CPubKey(), 0); } else { - // memset(&tokenid, 0, sizeof(tokenid)); - throw runtime_error("no tokenid\n"); + // throw runtime_error("no tokenid\n"); + return AssetOrders(zeroid, CPubKey(), 0); } - return AssetOrders(tokenid, CPubKey(), 0); } -UniValue mytokenorders(const UniValue& params, bool fHelp) +UniValue mytokenorders(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 tokenid; - if (fHelp || params.size() > 2) - throw runtime_error("mytokenorders [evalcode]\n"); + if (fHelp || params.size() > 1) + throw runtime_error("mytokenorders [evalcode]\n" + "returns all the token orders for mypubkey\n" + "if evalcode is set then returns mypubkey token orders for non-fungible tokens with this evalcode\n" "\n"); if (ensure_CCrequirements(EVAL_ASSETS) < 0 || ensure_CCrequirements(EVAL_TOKENS) < 0) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); - uint8_t additionalEvalCode = 0; if (params.size() == 1) additionalEvalCode = strtol(params[0].get_str().c_str(), NULL, 0); // supports also 0xEE-like values @@ -7472,7 +7471,7 @@ UniValue mytokenorders(const UniValue& params, bool fHelp) return AssetOrders(zeroid, Mypubkey(), additionalEvalCode); } -UniValue tokenbalance(const UniValue& params, bool fHelp) +UniValue tokenbalance(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 tokenid; uint64_t balance; std::vector pubkey; struct CCcontract_info *cp,C; CCerror.clear(); @@ -7510,7 +7509,7 @@ UniValue tokenbalance(const UniValue& params, bool fHelp) return(result); } -UniValue tokencreate(const UniValue& params, bool fHelp) +UniValue tokencreate(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string name, description, hextx; @@ -7570,7 +7569,7 @@ UniValue tokencreate(const UniValue& params, bool fHelp) return(result); } -UniValue tokentransfer(const UniValue& params, bool fHelp) +UniValue tokentransfer(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; @@ -7612,7 +7611,7 @@ UniValue tokentransfer(const UniValue& params, bool fHelp) return(result); } -UniValue tokenconvert(const UniValue& params, bool fHelp) +UniValue tokenconvert(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; int32_t evalcode; int64_t amount; uint256 tokenid; if ( fHelp || params.size() != 4 ) @@ -7653,7 +7652,7 @@ UniValue tokenconvert(const UniValue& params, bool fHelp) return(result); */ } -UniValue tokenbid(const UniValue& params, bool fHelp) +UniValue tokenbid(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t bidamount,numtokens; std::string hex; double price; uint256 tokenid; if ( fHelp || params.size() != 3 ) @@ -7695,7 +7694,7 @@ UniValue tokenbid(const UniValue& params, bool fHelp) return(result); } -UniValue tokencancelbid(const UniValue& params, bool fHelp) +UniValue tokencancelbid(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; int32_t i; uint256 tokenid,bidtxid; if ( fHelp || params.size() != 2 ) @@ -7720,7 +7719,7 @@ UniValue tokencancelbid(const UniValue& params, bool fHelp) return(result); } -UniValue tokenfillbid(const UniValue& params, bool fHelp) +UniValue tokenfillbid(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t fillamount; std::string hex; uint256 tokenid,bidtxid; if ( fHelp || params.size() != 3 ) @@ -7752,7 +7751,7 @@ UniValue tokenfillbid(const UniValue& params, bool fHelp) return(result); } -UniValue tokenask(const UniValue& params, bool fHelp) +UniValue tokenask(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t askamount,numtokens; std::string hex; double price; uint256 tokenid; if ( fHelp || params.size() != 3 ) @@ -7785,7 +7784,7 @@ UniValue tokenask(const UniValue& params, bool fHelp) return(result); } -UniValue tokenswapask(const UniValue& params, bool fHelp) +UniValue tokenswapask(const UniValue& params, bool fHelp, const CPubKey& mypk) { static uint256 zeroid; UniValue result(UniValue::VOBJ); int64_t askamount,numtokens; std::string hex; double price; uint256 tokenid,otherid; @@ -7814,7 +7813,7 @@ UniValue tokenswapask(const UniValue& params, bool fHelp) return(result); } -UniValue tokencancelask(const UniValue& params, bool fHelp) +UniValue tokencancelask(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); std::string hex; int32_t i; uint256 tokenid,asktxid; if ( fHelp || params.size() != 2 ) @@ -7839,7 +7838,7 @@ UniValue tokencancelask(const UniValue& params, bool fHelp) return(result); } -UniValue tokenfillask(const UniValue& params, bool fHelp) +UniValue tokenfillask(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int64_t fillunits; std::string hex; uint256 tokenid,asktxid; if ( fHelp || params.size() != 3 ) @@ -7878,7 +7877,7 @@ UniValue tokenfillask(const UniValue& params, bool fHelp) return(result); } -UniValue tokenfillswap(const UniValue& params, bool fHelp) +UniValue tokenfillswap(const UniValue& params, bool fHelp, const CPubKey& mypk) { static uint256 zeroid; UniValue result(UniValue::VOBJ); int64_t fillunits; std::string hex; uint256 tokenid,otherid,asktxid; @@ -7905,7 +7904,7 @@ UniValue tokenfillswap(const UniValue& params, bool fHelp) return(result); } -UniValue getbalance64(const UniValue& params, bool fHelp) +UniValue getbalance64(const UniValue& params, bool fHelp, const CPubKey& mypk) { set setAddress; vector vecOutputs; UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR),b(UniValue::VARR); CTxDestination address; @@ -7949,7 +7948,7 @@ UniValue getbalance64(const UniValue& params, bool fHelp) // heir contract functions for coins and tokens -UniValue heirfund(const UniValue& params, bool fHelp) +UniValue heirfund(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); uint256 tokenid = zeroid; @@ -8018,7 +8017,7 @@ UniValue heirfund(const UniValue& params, bool fHelp) return result; } -UniValue heiradd(const UniValue& params, bool fHelp) +UniValue heiradd(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result; uint256 fundingtxid; @@ -8039,97 +8038,88 @@ UniValue heiradd(const UniValue& params, bool fHelp) const CKeyStore& keystore = *pwalletMain; LOCK2(cs_main, pwalletMain->cs_wallet); - std::string strAmount = params[0].get_str(); - fundingtxid = Parseuint256((char*)params[1].get_str().c_str()); + std::string strAmount = params[0].get_str(); + fundingtxid = Parseuint256((char*)params[1].get_str().c_str()); result = HeirAddCaller(fundingtxid, 0, strAmount); return result; } -UniValue heirclaim(const UniValue& params, bool fHelp) +UniValue heirclaim(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result; - uint256 fundingtxid; - int64_t txfee; - int64_t inactivitytime; - std::string hex; - std::vector pubkey; - std::string name; + UniValue result; uint256 fundingtxid; if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; - - if (fHelp || params.size() != 3) - throw runtime_error("heirclaim txfee funds fundingtxid\n"); + if (fHelp || params.size() != 2) + throw runtime_error("heirclaim funds fundingtxid\n"); if (ensure_CCrequirements(EVAL_HEIR) < 0) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; LOCK2(cs_main, pwalletMain->cs_wallet); - std::string strAmount = params[0].get_str(); + std::string strAmount = params[0].get_str(); fundingtxid = Parseuint256((char*)params[1].get_str().c_str()); result = HeirClaimCaller(fundingtxid, 0, strAmount); return result; } -UniValue heirinfo(const UniValue& params, bool fHelp) +UniValue heirinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 fundingtxid; if (fHelp || params.size() != 1) throw runtime_error("heirinfo fundingtxid\n"); - - // if ( ensure_CCrequirements(EVAL_HEIR) < 0 ) - // throw runtime_error(CC_REQUIREMENTS_MSG); - + if ( ensure_CCrequirements(EVAL_HEIR) < 0 ) + throw runtime_error(CC_REQUIREMENTS_MSG); fundingtxid = Parseuint256((char*)params[0].get_str().c_str()); return (HeirInfo(fundingtxid)); } -UniValue heirlist(const UniValue& params, bool fHelp) +UniValue heirlist(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() != 0) throw runtime_error("heirlist\n"); - - // if ( ensure_CCrequirements(EVAL_HEIR) < 0 ) - // throw runtime_error(CC_REQUIREMENTS_MSG); - + if ( ensure_CCrequirements(EVAL_HEIR) < 0 ) + throw runtime_error(CC_REQUIREMENTS_MSG); return (HeirList()); } -UniValue pegscreate(const UniValue& params, bool fHelp) +UniValue pegscreate(const UniValue& params, bool fHelp, const CPubKey& mypk) { UniValue result(UniValue::VOBJ); int32_t i; std::vector txids; - uint8_t N; std::string hex; uint256 txid; int64_t amount; + uint8_t N; uint256 txid; int64_t amount; if ( fHelp || params.size()<3) throw runtime_error("pegscreate amount N bindtxid1 [bindtxid2 ...]\n"); if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); amount = atof((char *)params[0].get_str().c_str()) * COIN + 0.00000000499999; N = atoi((char *)params[1].get_str().c_str()); if ( params.size() < N+1 ) - throw runtime_error("not enough parameters for N gatewaysbind\n"); + { + Unlock2NSPV(mypk); + throw runtime_error("not enough parameters for N pegscreate\n"); + } for (i=0; i 0 ) + result = PegsCreate(mypk,0,amount,txids); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegscreate"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsfund(const UniValue& params, bool fHelp) +UniValue pegsfund(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex; uint256 pegstxid,tokenid; int64_t amount; + UniValue result(UniValue::VOBJ); uint256 pegstxid,tokenid; int64_t amount; if ( fHelp || params.size()!=3) @@ -8137,112 +8127,103 @@ UniValue pegsfund(const UniValue& params, bool fHelp) if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); pegstxid = Parseuint256(params[0].get_str().c_str()); tokenid = Parseuint256(params[1].get_str().c_str()); amount = atof((char *)params[2].get_str().c_str()) * COIN + 0.00000000499999; - hex = PegsFund(0,pegstxid,tokenid,amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = PegsFund(mypk,0,pegstxid,tokenid,amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegsfund"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsget(const UniValue& params, bool fHelp) +UniValue pegsget(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex; uint256 pegstxid,tokenid; int64_t amount; + UniValue result(UniValue::VOBJ); uint256 pegstxid,tokenid; int64_t amount; if ( fHelp || params.size()!=3) throw runtime_error("pegsget pegstxid tokenid amount\n"); if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); pegstxid = Parseuint256(params[0].get_str().c_str()); tokenid = Parseuint256(params[1].get_str().c_str()); amount = atof((char *)params[2].get_str().c_str()) * COIN + 0.00000000499999; - hex = PegsGet(0,pegstxid,tokenid,amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = PegsGet(mypk,0,pegstxid,tokenid,amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegsget"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsredeem(const UniValue& params, bool fHelp) +UniValue pegsredeem(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex; uint256 pegstxid,tokenid; int64_t amount; + UniValue result(UniValue::VOBJ); uint256 pegstxid,tokenid; int64_t amount; if ( fHelp || params.size()!=2) - throw runtime_error("pegsredem pegstxid tokenid\n"); + throw runtime_error("pegsredeem pegstxid tokenid\n"); if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); pegstxid = Parseuint256(params[0].get_str().c_str()); tokenid = Parseuint256(params[1].get_str().c_str()); - hex = PegsRedeem(0,pegstxid,tokenid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = PegsRedeem(mypk,0,pegstxid,tokenid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegsredeem"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsliquidate(const UniValue& params, bool fHelp) +UniValue pegsliquidate(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex; uint256 pegstxid,tokenid,accounttxid; + UniValue result(UniValue::VOBJ); uint256 pegstxid,tokenid,accounttxid; if ( fHelp || params.size()!=3) throw runtime_error("pegsliquidate pegstxid tokenid accounttxid\n"); if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); pegstxid = Parseuint256(params[0].get_str().c_str()); tokenid = Parseuint256(params[1].get_str().c_str()); accounttxid = Parseuint256(params[2].get_str().c_str()); - hex = PegsLiquidate(0,pegstxid,tokenid,accounttxid); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = PegsLiquidate(mypk,0,pegstxid,tokenid,accounttxid); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegsliquidate"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsexchange(const UniValue& params, bool fHelp) +UniValue pegsexchange(const UniValue& params, bool fHelp, const CPubKey& mypk) { - UniValue result(UniValue::VOBJ); std::string hex; uint256 pegstxid,tokenid,accounttxid; int64_t amount; + UniValue result(UniValue::VOBJ); uint256 pegstxid,tokenid,accounttxid; int64_t amount; if ( fHelp || params.size()!=3) - throw runtime_error("pegsliquidate pegstxid tokenid accounttxid\n"); + throw runtime_error("pegsexchange pegstxid tokenid amount\n"); if ( ensure_CCrequirements(EVAL_PEGS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); + Lock2NSPV(mypk); pegstxid = Parseuint256(params[0].get_str().c_str()); tokenid = Parseuint256(params[1].get_str().c_str()); amount = atof((char *)params[2].get_str().c_str()) * COIN + 0.00000000499999; - hex = PegsExchange(0,pegstxid,tokenid,amount); - RETURN_IF_ERROR(CCerror); - if ( hex.size() > 0 ) + result = PegsExchange(mypk,0,pegstxid,tokenid,amount); + if ( result[JSON_HEXTX].getValStr().size() > 0 ) { result.push_back(Pair("result", "success")); - result.push_back(Pair("hex", hex)); - } else ERR_RESULT("couldnt pegsliquidate"); + } + Unlock2NSPV(mypk); return(result); } -UniValue pegsaccounthistory(const UniValue& params, bool fHelp) +UniValue pegsaccounthistory(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 pegstxid; @@ -8250,13 +8231,11 @@ UniValue pegsaccounthistory(const UniValue& params, bool fHelp) throw runtime_error("pegsaccounthistory pegstxid\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); pegstxid = Parseuint256((char *)params[0].get_str().c_str()); - return(PegsAccountHistory(pegstxid)); + return(PegsAccountHistory(mypk,pegstxid)); } -UniValue pegsaccountinfo(const UniValue& params, bool fHelp) +UniValue pegsaccountinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 pegstxid; @@ -8264,13 +8243,11 @@ UniValue pegsaccountinfo(const UniValue& params, bool fHelp) throw runtime_error("pegsaccountinfo pegstxid\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); pegstxid = Parseuint256((char *)params[0].get_str().c_str()); - return(PegsAccountInfo(pegstxid)); + return(PegsAccountInfo(mypk,pegstxid)); } -UniValue pegsworstaccounts(const UniValue& params, bool fHelp) +UniValue pegsworstaccounts(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 pegstxid; @@ -8278,13 +8255,11 @@ UniValue pegsworstaccounts(const UniValue& params, bool fHelp) throw runtime_error("pegsworstaccounts pegstxid\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); pegstxid = Parseuint256((char *)params[0].get_str().c_str()); return(PegsWorstAccounts(pegstxid)); } -UniValue pegsinfo(const UniValue& params, bool fHelp) +UniValue pegsinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 pegstxid; @@ -8292,27 +8267,25 @@ UniValue pegsinfo(const UniValue& params, bool fHelp) throw runtime_error("pegsinfo pegstxid\n"); if ( ensure_CCrequirements(EVAL_GATEWAYS) < 0 ) throw runtime_error(CC_REQUIREMENTS_MSG); - const CKeyStore& keystore = *pwalletMain; - LOCK2(cs_main, pwalletMain->cs_wallet); pegstxid = Parseuint256((char *)params[0].get_str().c_str()); return(PegsInfo(pegstxid)); } -extern UniValue dumpprivkey(const UniValue& params, bool fHelp); // in rpcdump.cpp -extern UniValue convertpassphrase(const UniValue& params, bool fHelp); -extern UniValue importprivkey(const UniValue& params, bool fHelp); -extern UniValue importaddress(const UniValue& params, bool fHelp); -extern UniValue dumpwallet(const UniValue& params, bool fHelp); -extern UniValue importwallet(const UniValue& params, bool fHelp); -extern UniValue z_exportkey(const UniValue& params, bool fHelp); -extern UniValue z_importkey(const UniValue& params, bool fHelp); -extern UniValue z_exportviewingkey(const UniValue& params, bool fHelp); -extern UniValue z_importviewingkey(const UniValue& params, bool fHelp); -extern UniValue z_exportwallet(const UniValue& params, bool fHelp); -extern UniValue z_importwallet(const UniValue& params, bool fHelp); +extern UniValue dumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdump.cpp +extern UniValue convertpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue dumpwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_exportkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_importkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_exportviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_importviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_exportwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue z_importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk); -extern UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp); // in rpcdisclosure.cpp -extern UniValue z_validatepaymentdisclosure(const UniValue ¶ms, bool fHelp); +extern UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcdisclosure.cpp +extern UniValue z_validatepaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk); static const CRPCCommand commands[] = { // category name actor (function) okSafeMode @@ -8394,7 +8367,7 @@ void RegisterWalletRPCCommands(CRPCTable &tableRPC) tableRPC.appendCommand(commands[vcidx].name, &commands[vcidx]); } -UniValue opreturn_burn(const UniValue& params, bool fHelp) +UniValue opreturn_burn(const UniValue& params, bool fHelp, const CPubKey& mypk) { std::vector vHexStr; CScript opret; int32_t txfee = 10000;CPubKey myPubkey; if (fHelp || (params.size() < 2) || (params.size() > 4) ) From 2762473c5e988315e8a19f40a5e21b02559e4302 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:06:20 -0500 Subject: [PATCH 179/339] Use our own fork of utfcpp dep --- depends/packages/utfcpp.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/depends/packages/utfcpp.mk b/depends/packages/utfcpp.mk index 306e4669e..fb7ca044e 100644 --- a/depends/packages/utfcpp.mk +++ b/depends/packages/utfcpp.mk @@ -1,5 +1,5 @@ $(package)_version=3.1 -$(package)_download_path=https://github.com/nemtrif/$(package)/archive/ +$(package)_download_path=https://github.com/MyHush/$(package)/archive/ $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_download_file=v$($(package)_version).tar.gz $(package)_sha256_hash=ab531c3fd5d275150430bfaca01d7d15e017a188183be932322f2f651506b096 From 73997b39fc2476b35825be3b1d0b78c1959ad711 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:06:46 -0500 Subject: [PATCH 180/339] Fixups --- src/wallet/rpcdump.cpp | 5 +++-- src/wallet/rpcwallet.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index e1fc668ba..eca0fbb12 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -1,4 +1,5 @@ // Copyright (c) 2009-2014 The Bitcoin Core developers +// Copyright (c) 2019 The Hush developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -278,7 +279,7 @@ UniValue importaddress(const UniValue& params, bool fHelp) std::vector data(ParseHex(params[0].get_str())); script = CScript(data.begin(), data.end()); } else { - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Komodo address or script"); + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Invalid Hush address or script"); } string strLabel = ""; @@ -601,7 +602,7 @@ UniValue dumpwallet_impl(const UniValue& params, bool fHelp, bool fDumpZKeys) std::sort(vKeyBirth.begin(), vKeyBirth.end()); // produce output - file << strprintf("# Wallet dump created by Komodo %s (%s)\n", CLIENT_BUILD, CLIENT_DATE); + file << strprintf("# Wallet dump created by Hush %s (%s)\n", CLIENT_BUILD, CLIENT_DATE); file << strprintf("# * Created on %s\n", EncodeDumpTime(GetTime())); file << strprintf("# * Best block at time of backup was %i (%s),\n", chainActive.Height(), chainActive.Tip()->GetBlockHash().ToString()); file << strprintf("# mined on %s\n", EncodeDumpTime(chainActive.Tip()->GetBlockTime())); diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 169da27ca..a65347174 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -1509,7 +1509,7 @@ UniValue sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk) CScript tmpspk; tmpspk << ParseHex(name_) << OP_CHECKSIG; if ( !ExtractDestination(tmpspk, dest, true) ) - throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Komodo address or pubkey: ") + name_); + throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, std::string("Invalid Hush address or pubkey: ") + name_); } CScript scriptPubKey = GetScriptForDestination(dest); @@ -2620,7 +2620,7 @@ UniValue encryptwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) // slack space in .dat files; that is bad if the old data is // unencrypted private keys. So: StartShutdown(); - return "wallet encrypted; Komodo server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup."; + return "wallet encrypted; Hush server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup."; } UniValue lockunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) From b3d3a3cff9978b2418ed55986bd2f26856141582 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:16:06 -0500 Subject: [PATCH 181/339] async wallet upstream chnages --- .../asyncrpcoperation_mergetoaddress.cpp | 10 ++--- src/wallet/asyncrpcoperation_sendmany.cpp | 43 ++++++++++++++----- .../asyncrpcoperation_shieldcoinbase.cpp | 10 ++--- 3 files changed, 43 insertions(+), 20 deletions(-) diff --git a/src/wallet/asyncrpcoperation_mergetoaddress.cpp b/src/wallet/asyncrpcoperation_mergetoaddress.cpp index 82860d18e..afac9c6eb 100644 --- a/src/wallet/asyncrpcoperation_mergetoaddress.cpp +++ b/src/wallet/asyncrpcoperation_mergetoaddress.cpp @@ -50,7 +50,7 @@ int32_t komodo_blockheight(uint256 hash); using namespace libzcash; -extern UniValue sendrawtransaction(const UniValue& params, bool fHelp); +extern UniValue sendrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); int mta_find_output(UniValue obj, int n) { @@ -403,7 +403,7 @@ bool AsyncRPCOperation_mergetoaddress::main_impl() if (!testmode) { UniValue params = UniValue(UniValue::VARR); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "sendrawtransaction did not return an error or a txid."); } @@ -780,7 +780,7 @@ bool AsyncRPCOperation_mergetoaddress::main_impl() } -extern UniValue signrawtransaction(const UniValue& params, bool fHelp); +extern UniValue signrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); /** * Sign and send a raw transaction. @@ -797,7 +797,7 @@ void AsyncRPCOperation_mergetoaddress::sign_send_raw_transaction(UniValue obj) UniValue params = UniValue(UniValue::VARR); params.push_back(rawtxn); - UniValue signResultValue = signrawtransaction(params, false); + UniValue signResultValue = signrawtransaction(params, false, CPubKey()); UniValue signResultObject = signResultValue.get_obj(); UniValue completeValue = find_value(signResultObject, "complete"); bool complete = completeValue.get_bool(); @@ -817,7 +817,7 @@ void AsyncRPCOperation_mergetoaddress::sign_send_raw_transaction(UniValue obj) params.clear(); params.setArray(); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Send raw transaction did not return an error or a txid."); } diff --git a/src/wallet/asyncrpcoperation_sendmany.cpp b/src/wallet/asyncrpcoperation_sendmany.cpp index bc335fc4c..dca93461b 100644 --- a/src/wallet/asyncrpcoperation_sendmany.cpp +++ b/src/wallet/asyncrpcoperation_sendmany.cpp @@ -57,8 +57,9 @@ extern char ASSETCHAINS_SYMBOL[65]; int32_t komodo_dpowconfs(int32_t height,int32_t numconfs); int32_t komodo_blockheight(uint256 hash); int tx_height( const uint256 &hash ); -extern UniValue signrawtransaction(const UniValue& params, bool fHelp); -extern UniValue sendrawtransaction(const UniValue& params, bool fHelp); +bool komodo_hardfork_active(uint32_t time); +extern UniValue signrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); int find_output(UniValue obj, int n) { UniValue outputMapValue = find_value(obj, "outputmap"); @@ -375,7 +376,11 @@ bool AsyncRPCOperation_sendmany::main_impl() { // locktime to spend time locked coinbases if (ASSETCHAINS_SYMBOL[0] == 0) { - builder_.SetLockTime((uint32_t)time(NULL) - 60); // set lock time for Komodo interest + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + builder_.SetLockTime((uint32_t)time(NULL) - 60); // set lock time for Komodo interest + else + builder_.SetLockTime((uint32_t)chainActive.Tip()->GetMedianTimePast()); } } else { CMutableTransaction rawTx(tx_); @@ -388,7 +393,11 @@ bool AsyncRPCOperation_sendmany::main_impl() { } if (ASSETCHAINS_SYMBOL[0] == 0) { - rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + else + rawTx.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); } tx_ = CTransaction(rawTx); } @@ -521,7 +530,7 @@ bool AsyncRPCOperation_sendmany::main_impl() { if (!testmode) { UniValue params = UniValue(UniValue::VARR); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "sendrawtransaction did not return an error or a txid."); } @@ -590,7 +599,12 @@ bool AsyncRPCOperation_sendmany::main_impl() { CMutableTransaction mtx(tx_); crypto_sign_keypair(joinSplitPubKey_.begin(), joinSplitPrivKey_); mtx.joinSplitPubKey = joinSplitPubKey_; - mtx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + mtx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + else + mtx.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); + tx_ = CTransaction(mtx); // Copy zinputs and zoutputs to more flexible containers @@ -983,7 +997,7 @@ void AsyncRPCOperation_sendmany::sign_send_raw_transaction(UniValue obj) UniValue params = UniValue(UniValue::VARR); params.push_back(rawtxn); - UniValue signResultValue = signrawtransaction(params, false); + UniValue signResultValue = signrawtransaction(params, false, CPubKey()); UniValue signResultObject = signResultValue.get_obj(); UniValue completeValue = find_value(signResultObject, "complete"); bool complete = completeValue.get_bool(); @@ -1003,7 +1017,7 @@ void AsyncRPCOperation_sendmany::sign_send_raw_transaction(UniValue obj) params.clear(); params.setArray(); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Send raw transaction did not return an error or a txid."); } @@ -1361,7 +1375,12 @@ void AsyncRPCOperation_sendmany::add_taddr_outputs_to_tx() { CTxOut out(nAmount, scriptPubKey); rawTx.vout.push_back(out); } - rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + else + rawTx.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); + tx_ = CTransaction(rawTx); } @@ -1387,7 +1406,11 @@ void AsyncRPCOperation_sendmany::add_taddr_change_output_to_tx(CBitcoinAddress * CMutableTransaction rawTx(tx_); rawTx.vout.push_back(out); - rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) + rawTx.nLockTime = (uint32_t)time(NULL) - 60; // jl777 + else + rawTx.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); tx_ = CTransaction(rawTx); } diff --git a/src/wallet/asyncrpcoperation_shieldcoinbase.cpp b/src/wallet/asyncrpcoperation_shieldcoinbase.cpp index 73e70a9d8..6db4eb6c0 100644 --- a/src/wallet/asyncrpcoperation_shieldcoinbase.cpp +++ b/src/wallet/asyncrpcoperation_shieldcoinbase.cpp @@ -265,8 +265,8 @@ bool ShieldToAddress::operator()(const libzcash::SproutPaymentAddress &zaddr) co } -extern UniValue signrawtransaction(const UniValue& params, bool fHelp); -extern UniValue sendrawtransaction(const UniValue& params, bool fHelp); +extern UniValue signrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); +extern UniValue sendrawtransaction(const UniValue& params, bool fHelp, const CPubKey& mypk); bool ShieldToAddress::operator()(const libzcash::SaplingPaymentAddress &zaddr) const { m_op->builder_.SetFee(m_op->fee_); @@ -312,7 +312,7 @@ bool ShieldToAddress::operator()(const libzcash::SaplingPaymentAddress &zaddr) c if (!m_op->testmode) { UniValue params = UniValue(UniValue::VARR); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "sendrawtransaction did not return an error or a txid."); } @@ -354,7 +354,7 @@ void AsyncRPCOperation_shieldcoinbase::sign_send_raw_transaction(UniValue obj) UniValue params = UniValue(UniValue::VARR); params.push_back(rawtxn); - UniValue signResultValue = signrawtransaction(params, false); + UniValue signResultValue = signrawtransaction(params, false, CPubKey()); UniValue signResultObject = signResultValue.get_obj(); UniValue completeValue = find_value(signResultObject, "complete"); bool complete = completeValue.get_bool(); @@ -374,7 +374,7 @@ void AsyncRPCOperation_shieldcoinbase::sign_send_raw_transaction(UniValue obj) params.clear(); params.setArray(); params.push_back(signedtxn); - UniValue sendResultValue = sendrawtransaction(params, false); + UniValue sendResultValue = sendrawtransaction(params, false, CPubKey()); if (sendResultValue.isNull()) { throw JSONRPCError(RPC_WALLET_ERROR, "Send raw transaction did not return an error or a txid."); } From 02c34367bf38fc93290b99637774f634deb0aaad Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:19:28 -0500 Subject: [PATCH 182/339] src/wallet/wallet.cpp upstream changes --- src/wallet/wallet.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 41aa9eabe..2ae98fbe9 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -1681,7 +1681,7 @@ bool CWallet::AddToWalletIfInvolvingMe(const CTransaction& tx, const CBlock* pbl for (size_t i = 0; i < tx.vin.size(); i++) { uint256 hash; CTransaction txin; CTxDestination address; - if ( GetTransaction(tx.vin[i].prevout.hash,txin,hash,false) && ExtractDestination(txin.vout[tx.vin[i].prevout.n].scriptPubKey, address) ) + if ( myGetTransaction(tx.vin[i].prevout.hash,txin,hash) && ExtractDestination(txin.vout[tx.vin[i].prevout.n].scriptPubKey, address) ) { if ( CBitcoinAddress(address).ToString() == NotaryAddress ) numvinIsOurs++; @@ -3651,9 +3651,13 @@ bool CWallet::CreateTransaction(const vector& vecSend, CWalletTx& wt wtxNew.fTimeReceivedIsTxTime = true; wtxNew.BindWallet(this); int nextBlockHeight = chainActive.Height() + 1; - CMutableTransaction txNew = CreateNewContextualCMutableTransaction( - Params().GetConsensus(), nextBlockHeight); + CMutableTransaction txNew = CreateNewContextualCMutableTransaction(Params().GetConsensus(), nextBlockHeight); + + //if ((uint32_t)chainActive.LastTip()->nTime < ASSETCHAINS_STAKED_HF_TIMESTAMP) + if ( !komodo_hardfork_active((uint32_t)chainActive.LastTip()->nTime) ) txNew.nLockTime = (uint32_t)chainActive.LastTip()->nTime + 1; // set to a time close to now + else + txNew.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast(); // Activates after Overwinter network upgrade if (NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) { From bf3b41ace4529cb483593de79cb3340e2775ef49 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:25:11 -0500 Subject: [PATCH 183/339] src/wallet/rpcdump.cpp upstream changes --- src/wallet/rpcdump.cpp | 70 +++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index eca0fbb12..bd63638c9 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -90,7 +90,7 @@ std::string DecodeDumpString(const std::string &str) { return ret.str(); } -UniValue convertpassphrase(const UniValue& params, bool fHelp) +UniValue convertpassphrase(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (fHelp || params.size() < 1 || params.size() > 1) throw runtime_error( @@ -149,7 +149,7 @@ UniValue convertpassphrase(const UniValue& params, bool fHelp) return ret; } -UniValue importprivkey(const UniValue& params, bool fHelp) +UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -245,7 +245,7 @@ UniValue importprivkey(const UniValue& params, bool fHelp) return EncodeDestination(vchAddress); } -UniValue importaddress(const UniValue& params, bool fHelp) +UniValue importaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -318,7 +318,7 @@ UniValue importaddress(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue z_importwallet(const UniValue& params, bool fHelp) +UniValue z_importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -341,7 +341,7 @@ UniValue z_importwallet(const UniValue& params, bool fHelp) return importwallet_impl(params, fHelp, true); } -UniValue importwallet(const UniValue& params, bool fHelp) +UniValue importwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -473,7 +473,7 @@ UniValue importwallet_impl(const UniValue& params, bool fHelp, bool fImportZKeys return NullUniValue; } -UniValue dumpprivkey(const UniValue& params, bool fHelp) +UniValue dumpprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -515,7 +515,7 @@ UniValue dumpprivkey(const UniValue& params, bool fHelp) -UniValue z_exportwallet(const UniValue& params, bool fHelp) +UniValue z_exportwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -536,7 +536,7 @@ UniValue z_exportwallet(const UniValue& params, bool fHelp) return dumpwallet_impl(params, fHelp, true); } -UniValue dumpwallet(const UniValue& params, bool fHelp) +UniValue dumpwallet(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -673,7 +673,7 @@ UniValue dumpwallet_impl(const UniValue& params, bool fHelp, bool fDumpZKeys) } -UniValue z_importkey(const UniValue& params, bool fHelp) +UniValue z_importkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -764,7 +764,7 @@ UniValue z_importkey(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue z_importviewingkey(const UniValue& params, bool fHelp) +UniValue z_importviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -882,7 +882,7 @@ UniValue z_importviewingkey(const UniValue& params, bool fHelp) return NullUniValue; } -UniValue z_exportkey(const UniValue& params, bool fHelp) +UniValue z_exportkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -921,7 +921,7 @@ UniValue z_exportkey(const UniValue& params, bool fHelp) return EncodeSpendingKey(sk.get()); } -UniValue z_exportviewingkey(const UniValue& params, bool fHelp) +UniValue z_exportviewingkey(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -993,10 +993,12 @@ UniValue NSPV_spentinfo(uint256 txid,int32_t vout); UniValue NSPV_notarizations(int32_t height); UniValue NSPV_hdrsproof(int32_t prevheight,int32_t nextheight); UniValue NSPV_txproof(int32_t vout,uint256 txid,int32_t height); +UniValue NSPV_ccmoduleutxos(char *coinaddr, int64_t amount, uint8_t evalcode, std::string funcids, uint256 filtertxid); + uint256 Parseuint256(const char *hexstr); extern std::string NSPV_address; -UniValue nspv_getinfo(const UniValue& params, bool fHelp) +UniValue nspv_getinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t reqht = 0; if ( fHelp || params.size() > 1 ) @@ -1008,7 +1010,7 @@ UniValue nspv_getinfo(const UniValue& params, bool fHelp) return(NSPV_getinfo_req(reqht)); } -UniValue nspv_logout(const UniValue& params, bool fHelp) +UniValue nspv_logout(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 0 ) throw runtime_error("nspv_logout\n"); @@ -1017,7 +1019,7 @@ UniValue nspv_logout(const UniValue& params, bool fHelp) return(NSPV_logout()); } -UniValue nspv_login(const UniValue& params, bool fHelp) +UniValue nspv_login(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 1 ) throw runtime_error("nspv_login wif\n"); @@ -1026,7 +1028,7 @@ UniValue nspv_login(const UniValue& params, bool fHelp) return(NSPV_login((char *)params[0].get_str().c_str())); } -UniValue nspv_listunspent(const UniValue& params, bool fHelp) +UniValue nspv_listunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t skipcount = 0,CCflag = 0; if ( fHelp || params.size() > 3 ) @@ -1050,7 +1052,7 @@ UniValue nspv_listunspent(const UniValue& params, bool fHelp) else throw runtime_error("nspv_listunspent [address [isCC [skipcount]]]\n"); } -UniValue nspv_mempool(const UniValue& params, bool fHelp) +UniValue nspv_mempool(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t vout = 0,CCflag = 0; uint256 txid; uint8_t funcid; char *coinaddr; memset(&txid,0,sizeof(txid)); @@ -1071,7 +1073,7 @@ UniValue nspv_mempool(const UniValue& params, bool fHelp) return(NSPV_mempooltxids(coinaddr,CCflag,funcid,txid,vout)); } -UniValue nspv_listtransactions(const UniValue& params, bool fHelp) +UniValue nspv_listtransactions(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t skipcount = 0,CCflag = 0; if ( fHelp || params.size() > 3 ) @@ -1096,7 +1098,7 @@ UniValue nspv_listtransactions(const UniValue& params, bool fHelp) else throw runtime_error("nspv_listtransactions [address [isCC [skipcount]]]\n"); } -UniValue nspv_spentinfo(const UniValue& params, bool fHelp) +UniValue nspv_spentinfo(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 txid; int32_t vout; if ( fHelp || params.size() != 2 ) @@ -1108,7 +1110,7 @@ UniValue nspv_spentinfo(const UniValue& params, bool fHelp) return(NSPV_spentinfo(txid,vout)); } -UniValue nspv_notarizations(const UniValue& params, bool fHelp) +UniValue nspv_notarizations(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t height; if ( fHelp || params.size() != 1 ) @@ -1119,7 +1121,7 @@ UniValue nspv_notarizations(const UniValue& params, bool fHelp) return(NSPV_notarizations(height)); } -UniValue nspv_hdrsproof(const UniValue& params, bool fHelp) +UniValue nspv_hdrsproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { int32_t prevheight,nextheight; if ( fHelp || params.size() != 2 ) @@ -1131,7 +1133,7 @@ UniValue nspv_hdrsproof(const UniValue& params, bool fHelp) return(NSPV_hdrsproof(prevheight,nextheight)); } -UniValue nspv_txproof(const UniValue& params, bool fHelp) +UniValue nspv_txproof(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint256 txid; int32_t height; if ( fHelp || params.size() != 2 ) @@ -1143,7 +1145,7 @@ UniValue nspv_txproof(const UniValue& params, bool fHelp) return(NSPV_txproof(0,txid,height)); } -UniValue nspv_spend(const UniValue& params, bool fHelp) +UniValue nspv_spend(const UniValue& params, bool fHelp, const CPubKey& mypk) { uint64_t satoshis; if ( fHelp || params.size() != 2 ) @@ -1159,7 +1161,7 @@ UniValue nspv_spend(const UniValue& params, bool fHelp) return(NSPV_spend((char *)NSPV_address.c_str(),(char *)params[0].get_str().c_str(),satoshis)); } -UniValue nspv_broadcast(const UniValue& params, bool fHelp) +UniValue nspv_broadcast(const UniValue& params, bool fHelp, const CPubKey& mypk) { if ( fHelp || params.size() != 1 ) throw runtime_error("nspv_broadcast hex\n"); @@ -1167,3 +1169,23 @@ UniValue nspv_broadcast(const UniValue& params, bool fHelp) throw runtime_error("-nSPV=1 must be set to use nspv\n"); return(NSPV_broadcast((char *)params[0].get_str().c_str())); } + +UniValue nspv_listccmoduleunspent(const UniValue& params, bool fHelp, const CPubKey& mypk) +{ + int32_t skipcount = 0, CCflag = 0; + if (fHelp || params.size() != 5) + throw runtime_error("nspv_listccmoduleunspent address amount evalcode funcids txid\n\n" + "returns utxos from the address, filtered by evalcode funcids and txid in opret.\n" + "if amount is 0 just returns no utxos and available total.\n" + "funcids is a string of funcid symbols. The first symbol is considered as the creation funcid, so the txid param will be compared to the creation tx id.\n" + "For the second+ funcids the txid param will be compared to txid in opreturn\n\n" ); + if (KOMODO_NSPV_FULLNODE) + throw runtime_error("-nSPV=1 must be set to use nspv\n"); + + std::string address = params[0].get_str().c_str(); + int64_t amount = atof(params[1].get_str().c_str()); + uint8_t evalcode = atoi(params[2].get_str().c_str()); + std::string funcids = params[3].get_str().c_str(); + uint256 txid = Parseuint256( params[4].get_str().c_str() ); + return(NSPV_ccmoduleutxos((char*)address.c_str(), amount, evalcode, funcids, txid)); +} \ No newline at end of file From 421c069073226e8b369359554fd600f1e570887e Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 19:31:58 -0500 Subject: [PATCH 184/339] src/wallet/rpcdisclosure.cpp upstream changes --- src/wallet/rpcdisclosure.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wallet/rpcdisclosure.cpp b/src/wallet/rpcdisclosure.cpp index 19fb44d0e..cd0cc42a6 100644 --- a/src/wallet/rpcdisclosure.cpp +++ b/src/wallet/rpcdisclosure.cpp @@ -51,7 +51,7 @@ bool EnsureWalletIsAvailable(bool avoidException); /** * RPC call to generate a payment disclosure */ -UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp) +UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; @@ -158,7 +158,7 @@ UniValue z_getpaymentdisclosure(const UniValue& params, bool fHelp) /** * RPC call to validate a payment disclosure data blob. */ -UniValue z_validatepaymentdisclosure(const UniValue& params, bool fHelp) +UniValue z_validatepaymentdisclosure(const UniValue& params, bool fHelp, const CPubKey& mypk) { if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; From 8811b8633f537623284f320722a1e416c8991be4 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 12 Dec 2019 20:21:06 -0500 Subject: [PATCH 185/339] Add src/cc upstream changes --- src/cc/CCGateways.h | 20 +- src/cc/CCOracles.h | 10 +- src/cc/CCPegs.h | 16 +- src/cc/CCPrices.h | 1 + src/cc/CCassetstx.cpp | 16 +- src/cc/CCchannels.h | 12 +- src/cc/CCfaucet.h | 4 +- src/cc/CCinclude.h | 894 +++++++++++++++++++++++++++++++++----- src/cc/CCrewards.h | 1 + src/cc/CCtokens.cpp | 3 +- src/cc/CCtx.cpp | 143 ++++-- src/cc/CCutilbits.cpp | 26 +- src/cc/CCutils.cpp | 13 +- src/cc/COptCCParams.cpp | 116 +++++ src/cc/cclib.cpp | 2 +- src/cc/channels.cpp | 239 +++------- src/cc/customcc.cpp | 2 +- src/cc/dapps/oraclefeed.c | 108 ++--- src/cc/eval.h | 2 +- src/cc/faucet.cpp | 34 +- src/cc/gateways.cpp | 487 +++++---------------- src/cc/heir.cpp | 312 ++++++------- src/cc/oracles.cpp | 215 +++++---- src/cc/payments.cpp | 7 + src/cc/pegs.cpp | 500 ++++++++------------- src/cc/rewards.cpp | 54 ++- 26 files changed, 1852 insertions(+), 1385 deletions(-) create mode 100644 src/cc/COptCCParams.cpp diff --git a/src/cc/CCGateways.h b/src/cc/CCGateways.h index 8dfed186f..8793c0dc4 100644 --- a/src/cc/CCGateways.h +++ b/src/cc/CCGateways.h @@ -20,16 +20,16 @@ #include "CCinclude.h" bool GatewaysValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn); -std::string GatewaysBind(uint64_t txfee,std::string coin,uint256 tokenid,int64_t totalsupply,uint256 oracletxid,uint8_t M,uint8_t N,std::vector pubkeys,uint8_t p1,uint8_t p2,uint8_t p3,uint8_t p4); -std::string GatewaysDeposit(uint64_t txfee,uint256 bindtxid,int32_t height,std::string refcoin,uint256 cointxid,int32_t claimvout,std::string deposithex,std::vectorproof,CPubKey destpub,int64_t amount); -std::string GatewaysClaim(uint64_t txfee,uint256 bindtxid,std::string refcoin,uint256 deposittxid,CPubKey destpub,int64_t amount); -std::string GatewaysWithdraw(uint64_t txfee,uint256 bindtxid,std::string refcoin,CPubKey withdrawpub,int64_t amount); -std::string GatewaysPartialSign(uint64_t txfee,uint256 txidaddr,std::string refcoin,std::string hex); -std::string GatewaysCompleteSigning(uint64_t txfee,uint256 txidaddr,std::string refcoin,std::string hex); -std::string GatewaysMarkDone(uint64_t txfee,uint256 withdrawtxid,std::string refcoin); -UniValue GatewaysPendingDeposits(uint256 bindtxid,std::string refcoin); -UniValue GatewaysPendingWithdraws(uint256 bindtxid,std::string refcoin); -UniValue GatewaysProcessedWithdraws(uint256 bindtxid,std::string refcoin); +UniValue GatewaysBind(const CPubKey& pk, uint64_t txfee,std::string coin,uint256 tokenid,int64_t totalsupply,uint256 oracletxid,uint8_t M,uint8_t N,std::vector pubkeys,uint8_t p1,uint8_t p2,uint8_t p3,uint8_t p4); +UniValue GatewaysDeposit(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,int32_t height,std::string refcoin,uint256 cointxid,int32_t claimvout,std::string deposithex,std::vectorproof,CPubKey destpub,int64_t amount); +UniValue GatewaysClaim(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,std::string refcoin,uint256 deposittxid,CPubKey destpub,int64_t amount); +UniValue GatewaysWithdraw(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,std::string refcoin,CPubKey withdrawpub,int64_t amount); +UniValue GatewaysPartialSign(const CPubKey& pk, uint64_t txfee,uint256 txidaddr,std::string refcoin,std::string hex); +UniValue GatewaysCompleteSigning(const CPubKey& pk, uint64_t txfee,uint256 txidaddr,std::string refcoin,std::string hex); +UniValue GatewaysMarkDone(const CPubKey& pk, uint64_t txfee,uint256 withdrawtxid,std::string refcoin); +UniValue GatewaysPendingDeposits(const CPubKey& pk, uint256 bindtxid,std::string refcoin); +UniValue GatewaysPendingWithdraws(const CPubKey& pk, uint256 bindtxid,std::string refcoin); +UniValue GatewaysProcessedWithdraws(const CPubKey& pk, uint256 bindtxid,std::string refcoin); // CCcustom UniValue GatewaysInfo(uint256 bindtxid); diff --git a/src/cc/CCOracles.h b/src/cc/CCOracles.h index 2f2b702f4..10dbfae97 100644 --- a/src/cc/CCOracles.h +++ b/src/cc/CCOracles.h @@ -20,11 +20,11 @@ #include "CCinclude.h" bool OraclesValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn); -std::string OracleCreate(int64_t txfee,std::string name,std::string description,std::string format); -std::string OracleFund(int64_t txfee,uint256 oracletxid); -std::string OracleRegister(int64_t txfee,uint256 oracletxid,int64_t datafee); -std::string OracleSubscribe(int64_t txfee,uint256 oracletxid,CPubKey publisher,int64_t amount); -std::string OracleData(int64_t txfee,uint256 oracletxid,std::vector data); +UniValue OracleCreate(const CPubKey& pk, int64_t txfee,std::string name,std::string description,std::string format); +UniValue OracleFund(const CPubKey& pk, int64_t txfee,uint256 oracletxid); +UniValue OracleRegister(const CPubKey& pk, int64_t txfee,uint256 oracletxid,int64_t datafee); +UniValue OracleSubscribe(const CPubKey& pk, int64_t txfee,uint256 oracletxid,CPubKey publisher,int64_t amount); +UniValue OracleData(const CPubKey& pk, int64_t txfee,uint256 oracletxid,std::vector data); // CCcustom UniValue OracleDataSample(uint256 reforacletxid,uint256 txid); UniValue OracleDataSamples(uint256 reforacletxid,char* batonaddr,int32_t num); diff --git a/src/cc/CCPegs.h b/src/cc/CCPegs.h index e4d390d0e..78f1accac 100644 --- a/src/cc/CCPegs.h +++ b/src/cc/CCPegs.h @@ -22,14 +22,14 @@ bool PegsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn); // CCcustom -std::string PegsCreate(uint64_t txfee,int64_t amount,std::vector bindtxids); -std::string PegsFund(uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); -std::string PegsGet(uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); -std::string PegsRedeem(uint64_t txfee,uint256 pegstxid, uint256 tokenid); -std::string PegsLiquidate(uint64_t txfee,uint256 pegstxid, uint256 tokenid, uint256 liquidatetxid); -std::string PegsExchange(uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); -UniValue PegsAccountHistory(uint256 pegstxid); -UniValue PegsAccountInfo(uint256 pegstxid); +UniValue PegsCreate(const CPubKey& pk,uint64_t txfee,int64_t amount,std::vector bindtxids); +UniValue PegsFund(const CPubKey& pk,uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); +UniValue PegsGet(const CPubKey& pk,uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); +UniValue PegsRedeem(const CPubKey& pk,uint64_t txfee,uint256 pegstxid, uint256 tokenid); +UniValue PegsLiquidate(const CPubKey& pk,uint64_t txfee,uint256 pegstxid, uint256 tokenid, uint256 liquidatetxid); +UniValue PegsExchange(const CPubKey& pk,uint64_t txfee,uint256 pegstxid, uint256 tokenid, int64_t amount); +UniValue PegsAccountHistory(const CPubKey& pk,uint256 pegstxid); +UniValue PegsAccountInfo(const CPubKey& pk,uint256 pegstxid); UniValue PegsWorstAccounts(uint256 pegstxid); UniValue PegsInfo(uint256 pegstxid); diff --git a/src/cc/CCPrices.h b/src/cc/CCPrices.h index 3779111a6..554cf0eca 100644 --- a/src/cc/CCPrices.h +++ b/src/cc/CCPrices.h @@ -19,6 +19,7 @@ #include "komodo_defs.h" #include "CCinclude.h" + int32_t komodo_priceget(int64_t *buf64,int32_t ind,int32_t height,int32_t numblocks); extern void GetKomodoEarlytxidScriptPub(); extern CScript KOMODO_EARLYTXID_SCRIPTPUB; diff --git a/src/cc/CCassetstx.cpp b/src/cc/CCassetstx.cpp index 6788cbf1f..654f01a38 100644 --- a/src/cc/CCassetstx.cpp +++ b/src/cc/CCassetstx.cpp @@ -19,7 +19,6 @@ UniValue AssetOrders(uint256 refassetid, CPubKey pk, uint8_t additionalEvalCode) { - static uint256 zero; UniValue result(UniValue::VARR); struct CCcontract_info *cpAssets, assetsC; @@ -35,7 +34,7 @@ UniValue AssetOrders(uint256 refassetid, CPubKey pk, uint8_t additionalEvalCode) std::vector origpubkey; CTransaction ordertx; uint8_t funcid, evalCode; - char numstr[32], funcidstr[16], origaddr[64], origtokenaddr[64], assetidstr[65]; + char numstr[32], funcidstr[16], origaddr[64], origtokenaddr[64]; txid = it->first.txhash; LOGSTREAM("ccassets", CCLOG_DEBUG2, stream << "addOrders() checking txid=" << txid.GetHex() << std::endl); @@ -46,8 +45,8 @@ UniValue AssetOrders(uint256 refassetid, CPubKey pk, uint8_t additionalEvalCode) { LOGSTREAM("ccassets", CCLOG_DEBUG2, stream << "addOrders() checking ordertx.vout.size()=" << ordertx.vout.size() << " funcid=" << (char)(funcid ? funcid : ' ') << " assetid=" << assetid.GetHex() << std::endl); - if (refassetid != zero && assetid == refassetid || - pk != CPubKey() && pk == pubkey2pk(origpubkey) && (funcid == 'S' || funcid == 's')) + if (pk == CPubKey() && (refassetid == zeroid || assetid == refassetid) // tokenorders + || pk != CPubKey() && pk == pubkey2pk(origpubkey) && (funcid == 'S' || funcid == 's')) // mytokenorders, returns only asks (is this correct?) { LOGSTREAM("ccassets", CCLOG_DEBUG2, stream << "addOrders() it->first.index=" << it->first.index << " ordertx.vout[it->first.index].nValue=" << ordertx.vout[it->first.index].nValue << std::endl); @@ -61,7 +60,7 @@ UniValue AssetOrders(uint256 refassetid, CPubKey pk, uint8_t additionalEvalCode) funcidstr[0] = funcid; funcidstr[1] = 0; item.push_back(Pair("funcid", funcidstr)); - item.push_back(Pair("txid", uint256_str(assetidstr, txid))); + item.push_back(Pair("txid", txid.GetHex())); item.push_back(Pair("vout", (int64_t)it->first.index)); if (funcid == 'b' || funcid == 'B') { @@ -77,18 +76,17 @@ UniValue AssetOrders(uint256 refassetid, CPubKey pk, uint8_t additionalEvalCode) sprintf(numstr, "%llu", (long long)ordertx.vout[0].nValue); item.push_back(Pair("askamount", numstr)); } - if (origpubkey.size() == 33) + if (origpubkey.size() == CPubKey::COMPRESSED_PUBLIC_KEY_SIZE) { GetCCaddress(cp, origaddr, pubkey2pk(origpubkey)); item.push_back(Pair("origaddress", origaddr)); GetTokensCCaddress(cpTokens, origtokenaddr, pubkey2pk(origpubkey)); item.push_back(Pair("origtokenaddress", origtokenaddr)); - } if (assetid != zeroid) - item.push_back(Pair("tokenid", uint256_str(assetidstr, assetid))); + item.push_back(Pair("tokenid", assetid.GetHex())); if (assetid2 != zeroid) - item.push_back(Pair("otherid", uint256_str(assetidstr, assetid2))); + item.push_back(Pair("otherid", assetid2.GetHex())); if (price > 0) { if (funcid == 's' || funcid == 'S' || funcid == 'e' || funcid == 'e') diff --git a/src/cc/CCchannels.h b/src/cc/CCchannels.h index 10cb4d224..ecca145d3 100644 --- a/src/cc/CCchannels.h +++ b/src/cc/CCchannels.h @@ -21,12 +21,12 @@ #define CHANNELS_MAXPAYMENTS 1000 bool ChannelsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn); -std::string ChannelOpen(uint64_t txfee,CPubKey destpub,int32_t numpayments,int64_t payment,uint256 tokenid); -std::string ChannelPayment(uint64_t txfee,uint256 opentxid,int64_t amount, uint256 secret); -std::string ChannelClose(uint64_t txfee,uint256 opentxid); -std::string ChannelRefund(uint64_t txfee,uint256 opentxid,uint256 closetxid); -UniValue ChannelsList(); +UniValue ChannelOpen(const CPubKey& pk,uint64_t txfee,CPubKey destpub,int32_t numpayments,int64_t payment,uint256 tokenid); +UniValue ChannelPayment(const CPubKey& pk,uint64_t txfee,uint256 opentxid,int64_t amount, uint256 secret); +UniValue ChannelClose(const CPubKey& pk,uint64_t txfee,uint256 opentxid); +UniValue ChannelRefund(const CPubKey& pk,uint64_t txfee,uint256 opentxid,uint256 closetxid); +UniValue ChannelsList(const CPubKey& pk); // CCcustom -UniValue ChannelsInfo(uint256 opentxid); +UniValue ChannelsInfo(const CPubKey& pk,uint256 opentxid); #endif diff --git a/src/cc/CCfaucet.h b/src/cc/CCfaucet.h index 3cb6c66e5..af3237ab1 100644 --- a/src/cc/CCfaucet.h +++ b/src/cc/CCfaucet.h @@ -25,8 +25,8 @@ bool FaucetValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx, uint32_t nIn); // CCcustom -std::string FaucetFund(uint64_t txfee,int64_t funds); -std::string FaucetGet(uint64_t txfee); +UniValue FaucetFund(const CPubKey& mypk,uint64_t txfee,int64_t funds); +UniValue FaucetGet(const CPubKey& mypk,uint64_t txfee); UniValue FaucetInfo(); #endif diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index a2bb65e48..1d28e2cc9 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -16,26 +16,43 @@ #ifndef CC_INCLUDE_H #define CC_INCLUDE_H -/* -there are only a very few types in bitcoin. pay to pubkey, pay to pubkey hash and pay to script hash -p2pk, p2pkh, p2sh -there are actually more that are possible, but those three are 99%+ of bitcoin transactions -so you can pay to a pubkey, or to its hash. or to a script's hash. the last is how most of the more complex scripts are invoked. to spend a p2sh vout, you need to provide the redeemscript, this script's hash is what the p2sh address was. -all of the above are the standard bitcoin vout types and there should be plenty of materials about it -Encrypted by a verified device -what I did with the CC contracts is created a fourth type of vout, the CC vout. this is using the cryptoconditions standard and it is even a different signature mechanism. ed25519 instead of secp256k1. it is basically a big extension to the bitcoin script. There is a special opcode that is added that says it is a CC script. +/*! \file CCinclude.h +\brief A Documented file. -but it gets more interesting -each CC script has an evalcode -this is just an arbitrary number. but what it does is allows to create a self-contained universe of CC utxo that all have the same evalcode and that is how a faucet CC differentiates itself from a dice CC, the eval code is different - -one effect from using a different eval code is that even if the rest of the CC script is the same, the bitcoin address that is calculated is different. what this means is that for each pubkey, there is a unique address for each different eval code! -and this allows efficient segregation of one CC contracts transactions from another -the final part that will make it all clear how the funds can be locked inside the contract. this is what makes a contract, a contract. I put both the privkey and pubkey for a randomly chosen address and associate it with each CC contract. That means anybody can sign outputs for that privkey. However, it is a CC output, so in addition to the signature, whatever constraints a CC contract implements must also be satistifed. This allows funds to be locked and yet anybody is able to spend it, assuming they satisfy the CC's rules - -one other technical note is that komodod has the insight-explorer extensions built in. so it can lookup directly all transactions to any address. this is a key performance boosting thing as if it wasnt there, trying to get all the utxo for an address not in the wallet is quite time consuming +Details. */ +/// \mainpage Brief introduction into cryptocondition contracts +/// There are only a very few types in bitcoin: pay to pubkey, pay to pubkey hash and pay to script hash (p2pk, p2pkh, p2sh). +/// There are actually more that are possible, but those three are 99%+ of bitcoin transactions. +/// So you can pay to a pubkey, or to its hash or to a script's hash. The last is how most of the more complex scripts are invoked. To spend a p2sh vout, you need to provide the redeemscript, +/// this script's hash is what the p2sh address was. +/// All of the above are the standard bitcoin vout types and there should be plenty of materials about it. +/// +/// What I did with the cryptoconditions (CC) contracts (now rebranded as Antara modules) is created a fourth type of vout, the CC vout. This is using the cryptoconditions standard and it is even a different signature mechanism, +/// ed25519 instead of secp256k1. It is basically a big extension to the bitcoin script. There is a special opcode that is added that says it is a CC script. +/// +/// But it gets more interesting. Each CC script has an evalcode. +/// This is just an arbitrary number but what it does is allows to create a self-contained universe of CC utxo that all have the same evalcode and that is +/// how a faucet CC contract differentiates itself from a dice CC contract, the eval code is different. +/// +/// One effect from using a different eval code is that even if the rest of the CC script is the same, the bitcoin address that is calculated is different. +/// What this means is that for each pubkey, there is a unique address for each different eval code! +/// And this allows efficient segregation of one CC contracts transactions from another. +/// The final part that will make it all clear how the funds can be locked inside the contract. +/// This is what makes a contract, a contract. +/// I put both the privkey and pubkey for a randomly chosen address and associate it with each CC contract. +/// That means anybody can sign outputs for that privkey. +/// However, it is a CC output, so in addition to the signature, whatever constraints a CC contract implements must also be satistifed. +/// This allows funds to be locked and yet anybody is able to spend it, assuming they satisfy the CC's rules. +/// +/// One other technical note is that komodod has the insight-explorer extensions built in +/// so it can lookup directly all transactions to any address. +/// This is a key performance boosting thing as if it wasnt there, trying to get all the utxo for an address not in the wallet is quite time consuming. +/// +/// More information about Antara framework: +/// https://developers.komodoplatform.com/basic-docs/start-here/about-komodo-platform/product-introductions.html#smart-chains-antara + #include #include